feat: implement identity and security features
- Added account types and privileged account types constants. - Created admin user controller for updating user security fields. - Developed role assignment controller for managing user roles. - Implemented validation middleware for request schemas. - Defined user role and auth session models for database interactions. - Created services for authentication, email notifications, and OTP handling. - Developed OAuth service for Google and Apple authentication. - Added JWT utility functions for token generation and verification. - Implemented comprehensive tests for authentication, session management, and password policies. - Created migration for updating user schema and adding new tables for auth sessions and user identities.
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
const db = require("../models");
|
||||
const User = db.User;
|
||||
const RolePermission = db.rolePermission;
|
||||
const UserRole = db.UserRole;
|
||||
const UserPermission = db.userPermission;
|
||||
|
||||
const {
|
||||
@@ -32,10 +33,11 @@ const getEffectivePermissions = async (userId) => {
|
||||
const user = await User.findByPk(userId);
|
||||
if (!user) return [];
|
||||
|
||||
const rolePermissions = await RolePermission.findAll({
|
||||
where: { role_id: user.roleID },
|
||||
const roles = await UserRole.findAll({ where: { user_id: userId }, attributes: ["role_id"] });
|
||||
const rolePermissions = roles.length ? await RolePermission.findAll({
|
||||
where: { role_id: roles.map((role) => role.role_id) },
|
||||
attributes: ["permission_id"]
|
||||
});
|
||||
}) : [];
|
||||
|
||||
const userPermissions = await UserPermission.findAll({
|
||||
where: { user_id: userId },
|
||||
@@ -68,4 +70,4 @@ const getEffectivePermissions = async (userId) => {
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = { getEffectivePermissions };
|
||||
module.exports = { getEffectivePermissions };
|
||||
|
||||
Reference in New Issue
Block a user