@drax/identity-back 0.30.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/dist/config/IdentityConfig.js +0 -0
  2. package/dist/controllers/RoleController.js +1 -1
  3. package/dist/controllers/TenantController.js +0 -0
  4. package/dist/controllers/UserApiKeyController.js +0 -0
  5. package/dist/controllers/UserController.js +0 -0
  6. package/dist/errors/BadCredentialsError.js +0 -0
  7. package/dist/factory/RoleServiceFactory.js +0 -0
  8. package/dist/factory/TenantServiceFactory.js +0 -0
  9. package/dist/factory/UserApiKeyServiceFactory.js +0 -0
  10. package/dist/factory/UserServiceFactory.js +0 -0
  11. package/dist/graphql/index.js +0 -0
  12. package/dist/graphql/resolvers/role.resolvers.js +0 -0
  13. package/dist/graphql/resolvers/tenant.resolvers.js +0 -0
  14. package/dist/graphql/resolvers/user-api-key.resolvers.js +0 -0
  15. package/dist/graphql/resolvers/user.resolvers.js +0 -0
  16. package/dist/index.js +0 -0
  17. package/dist/interfaces/IRoleRepository.js +0 -0
  18. package/dist/interfaces/ITenantRepository.js +0 -0
  19. package/dist/interfaces/IUserApiKeyRepository.js +0 -0
  20. package/dist/interfaces/IUserRepository.js +0 -0
  21. package/dist/middleware/apiKeyMiddleware.js +0 -0
  22. package/dist/middleware/jwtMiddleware.js +5 -1
  23. package/dist/middleware/rbacMiddleware.js +0 -0
  24. package/dist/models/RoleModel.js +0 -0
  25. package/dist/models/TenantModel.js +0 -0
  26. package/dist/models/UserApiKeyModel.js +0 -0
  27. package/dist/models/UserGroupModel.js +0 -0
  28. package/dist/models/UserModel.js +0 -0
  29. package/dist/permissions/IdentityPermissions.js +0 -0
  30. package/dist/permissions/RolePermissions.js +0 -0
  31. package/dist/permissions/TenantPermissions.js +0 -0
  32. package/dist/permissions/UserApiKeyPermissions.js +0 -0
  33. package/dist/permissions/UserPermissions.js +1 -0
  34. package/dist/permissions/index.js +0 -0
  35. package/dist/rbac/Rbac.js +0 -0
  36. package/dist/repository/mongo/RoleMongoRepository.js +0 -0
  37. package/dist/repository/mongo/TenantMongoRepository.js +0 -0
  38. package/dist/repository/mongo/UserApiKeyMongoRepository.js +0 -0
  39. package/dist/repository/mongo/UserMongoRepository.js +4 -1
  40. package/dist/repository/sqlite/RoleSqliteRepository.js +0 -0
  41. package/dist/repository/sqlite/TenantSqliteRepository.js +0 -0
  42. package/dist/repository/sqlite/UserApiKeySqliteRepository.js +0 -0
  43. package/dist/repository/sqlite/UserSqliteRepository.js +0 -0
  44. package/dist/routes/RoleRoutes.js +0 -0
  45. package/dist/routes/TenantRoutes.js +0 -0
  46. package/dist/routes/UserApiKeyRoutes.js +0 -0
  47. package/dist/routes/UserRoutes.js +0 -0
  48. package/dist/schemas/UserSchema.js +2 -1
  49. package/dist/services/PermissionService.js +0 -0
  50. package/dist/services/RoleService.js +0 -0
  51. package/dist/services/TenantService.js +0 -0
  52. package/dist/services/UserApiKeyService.js +0 -0
  53. package/dist/services/UserService.js +0 -0
  54. package/dist/setup/CreateOrUpdateRole.js +0 -0
  55. package/dist/setup/CreateUserIfNotExist.js +0 -0
  56. package/dist/setup/LoadIdentityConfigFromEnv.js +0 -0
  57. package/dist/setup/LoadPermissions.js +0 -0
  58. package/dist/setup/RecoveryUserPassword.js +0 -0
  59. package/dist/utils/AuthUtils.js +0 -0
  60. package/package.json +7 -7
  61. package/src/controllers/RoleController.ts +1 -1
  62. package/src/middleware/jwtMiddleware.ts +6 -1
  63. package/src/permissions/UserPermissions.ts +1 -0
  64. package/src/repository/mongo/UserMongoRepository.ts +4 -1
  65. package/src/schemas/UserSchema.ts +2 -1
  66. package/tsconfig.tsbuildinfo +1 -1
  67. package/types/config/IdentityConfig.d.ts +0 -0
  68. package/types/config/IdentityConfig.d.ts.map +0 -0
  69. package/types/controllers/RoleController.d.ts +0 -0
  70. package/types/controllers/RoleController.d.ts.map +0 -0
  71. package/types/controllers/TenantController.d.ts +0 -0
  72. package/types/controllers/TenantController.d.ts.map +0 -0
  73. package/types/controllers/UserApiKeyController.d.ts +0 -0
  74. package/types/controllers/UserApiKeyController.d.ts.map +0 -0
  75. package/types/controllers/UserController.d.ts +0 -0
  76. package/types/controllers/UserController.d.ts.map +0 -0
  77. package/types/errors/BadCredentialsError.d.ts +0 -0
  78. package/types/errors/BadCredentialsError.d.ts.map +0 -0
  79. package/types/factory/RoleServiceFactory.d.ts +0 -0
  80. package/types/factory/RoleServiceFactory.d.ts.map +0 -0
  81. package/types/factory/TenantServiceFactory.d.ts +0 -0
  82. package/types/factory/TenantServiceFactory.d.ts.map +0 -0
  83. package/types/factory/UserApiKeyServiceFactory.d.ts +1 -1
  84. package/types/factory/UserApiKeyServiceFactory.d.ts.map +0 -0
  85. package/types/factory/UserServiceFactory.d.ts +0 -0
  86. package/types/factory/UserServiceFactory.d.ts.map +0 -0
  87. package/types/graphql/index.d.ts +0 -0
  88. package/types/graphql/index.d.ts.map +0 -0
  89. package/types/graphql/resolvers/role.resolvers.d.ts +0 -0
  90. package/types/graphql/resolvers/role.resolvers.d.ts.map +0 -0
  91. package/types/graphql/resolvers/tenant.resolvers.d.ts +0 -0
  92. package/types/graphql/resolvers/tenant.resolvers.d.ts.map +0 -0
  93. package/types/graphql/resolvers/user-api-key.resolvers.d.ts +0 -0
  94. package/types/graphql/resolvers/user-api-key.resolvers.d.ts.map +0 -0
  95. package/types/graphql/resolvers/user.resolvers.d.ts +0 -0
  96. package/types/graphql/resolvers/user.resolvers.d.ts.map +0 -0
  97. package/types/index.d.ts +0 -0
  98. package/types/index.d.ts.map +0 -0
  99. package/types/interfaces/IRoleRepository.d.ts +0 -0
  100. package/types/interfaces/IRoleRepository.d.ts.map +0 -0
  101. package/types/interfaces/ITenantRepository.d.ts +0 -0
  102. package/types/interfaces/ITenantRepository.d.ts.map +0 -0
  103. package/types/interfaces/IUserApiKeyRepository.d.ts +0 -0
  104. package/types/interfaces/IUserApiKeyRepository.d.ts.map +0 -0
  105. package/types/interfaces/IUserRepository.d.ts +0 -0
  106. package/types/interfaces/IUserRepository.d.ts.map +0 -0
  107. package/types/middleware/apiKeyMiddleware.d.ts +0 -0
  108. package/types/middleware/apiKeyMiddleware.d.ts.map +0 -0
  109. package/types/middleware/jwtMiddleware.d.ts +0 -0
  110. package/types/middleware/jwtMiddleware.d.ts.map +1 -1
  111. package/types/middleware/rbacMiddleware.d.ts +0 -0
  112. package/types/middleware/rbacMiddleware.d.ts.map +0 -0
  113. package/types/models/RoleModel.d.ts +0 -0
  114. package/types/models/RoleModel.d.ts.map +0 -0
  115. package/types/models/TenantModel.d.ts +0 -0
  116. package/types/models/TenantModel.d.ts.map +0 -0
  117. package/types/models/UserApiKeyModel.d.ts +0 -0
  118. package/types/models/UserApiKeyModel.d.ts.map +0 -0
  119. package/types/models/UserGroupModel.d.ts +0 -0
  120. package/types/models/UserGroupModel.d.ts.map +0 -0
  121. package/types/models/UserModel.d.ts +0 -0
  122. package/types/models/UserModel.d.ts.map +0 -0
  123. package/types/permissions/IdentityPermissions.d.ts +0 -0
  124. package/types/permissions/IdentityPermissions.d.ts.map +0 -0
  125. package/types/permissions/RolePermissions.d.ts +0 -0
  126. package/types/permissions/RolePermissions.d.ts.map +0 -0
  127. package/types/permissions/TenantPermissions.d.ts +0 -0
  128. package/types/permissions/TenantPermissions.d.ts.map +0 -0
  129. package/types/permissions/UserApiKeyPermissions.d.ts +0 -0
  130. package/types/permissions/UserApiKeyPermissions.d.ts.map +0 -0
  131. package/types/permissions/UserPermissions.d.ts +1 -0
  132. package/types/permissions/UserPermissions.d.ts.map +1 -1
  133. package/types/permissions/index.d.ts +1 -0
  134. package/types/permissions/index.d.ts.map +1 -1
  135. package/types/rbac/Rbac.d.ts +0 -0
  136. package/types/rbac/Rbac.d.ts.map +0 -0
  137. package/types/repository/mongo/RoleMongoRepository.d.ts +0 -0
  138. package/types/repository/mongo/RoleMongoRepository.d.ts.map +0 -0
  139. package/types/repository/mongo/TenantMongoRepository.d.ts +0 -0
  140. package/types/repository/mongo/TenantMongoRepository.d.ts.map +0 -0
  141. package/types/repository/mongo/UserApiKeyMongoRepository.d.ts +0 -0
  142. package/types/repository/mongo/UserApiKeyMongoRepository.d.ts.map +0 -0
  143. package/types/repository/mongo/UserMongoRepository.d.ts +9 -1
  144. package/types/repository/mongo/UserMongoRepository.d.ts.map +1 -1
  145. package/types/repository/sqlite/RoleSqliteRepository.d.ts +0 -0
  146. package/types/repository/sqlite/RoleSqliteRepository.d.ts.map +0 -0
  147. package/types/repository/sqlite/TenantSqliteRepository.d.ts +0 -0
  148. package/types/repository/sqlite/TenantSqliteRepository.d.ts.map +0 -0
  149. package/types/repository/sqlite/UserApiKeySqliteRepository.d.ts +0 -0
  150. package/types/repository/sqlite/UserApiKeySqliteRepository.d.ts.map +0 -0
  151. package/types/repository/sqlite/UserSqliteRepository.d.ts +0 -0
  152. package/types/repository/sqlite/UserSqliteRepository.d.ts.map +0 -0
  153. package/types/routes/RoleRoutes.d.ts +0 -0
  154. package/types/routes/RoleRoutes.d.ts.map +0 -0
  155. package/types/routes/TenantRoutes.d.ts +0 -0
  156. package/types/routes/TenantRoutes.d.ts.map +0 -0
  157. package/types/routes/UserApiKeyRoutes.d.ts +0 -0
  158. package/types/routes/UserApiKeyRoutes.d.ts.map +0 -0
  159. package/types/routes/UserRoutes.d.ts +0 -0
  160. package/types/routes/UserRoutes.d.ts.map +0 -0
  161. package/types/schemas/RegisterSchema.d.ts +4 -4
  162. package/types/schemas/RoleSchema.d.ts +6 -6
  163. package/types/schemas/TenantSchema.d.ts +4 -4
  164. package/types/schemas/UserApiKeySchema.d.ts +4 -4
  165. package/types/schemas/UserSchema.d.ts +32 -6
  166. package/types/schemas/UserSchema.d.ts.map +1 -1
  167. package/types/services/PermissionService.d.ts +0 -0
  168. package/types/services/PermissionService.d.ts.map +0 -0
  169. package/types/services/RoleService.d.ts +0 -0
  170. package/types/services/RoleService.d.ts.map +0 -0
  171. package/types/services/TenantService.d.ts +0 -0
  172. package/types/services/TenantService.d.ts.map +0 -0
  173. package/types/services/UserApiKeyService.d.ts +0 -0
  174. package/types/services/UserApiKeyService.d.ts.map +0 -0
  175. package/types/services/UserService.d.ts +0 -0
  176. package/types/services/UserService.d.ts.map +0 -0
  177. package/types/setup/CreateOrUpdateRole.d.ts +0 -0
  178. package/types/setup/CreateOrUpdateRole.d.ts.map +0 -0
  179. package/types/setup/CreateUserIfNotExist.d.ts +0 -0
  180. package/types/setup/CreateUserIfNotExist.d.ts.map +0 -0
  181. package/types/setup/LoadIdentityConfigFromEnv.d.ts +0 -0
  182. package/types/setup/LoadIdentityConfigFromEnv.d.ts.map +0 -0
  183. package/types/setup/LoadPermissions.d.ts +0 -0
  184. package/types/setup/LoadPermissions.d.ts.map +0 -0
  185. package/types/setup/RecoveryUserPassword.d.ts +0 -0
  186. package/types/setup/RecoveryUserPassword.d.ts.map +0 -0
  187. package/types/utils/AuthUtils.d.ts +0 -0
  188. package/types/utils/AuthUtils.d.ts.map +0 -0
  189. package/dist/factory/UserRegistryServiceFactory.js +0 -24
  190. package/dist/interfaces/IRbac.js +0 -1
  191. package/dist/routes/UserAvatarRoutes.js +0 -70
  192. package/dist/zod/EndpointZod.js +0 -9
  193. package/dist/zod/RoleZod.js +0 -8
  194. package/dist/zod/TenantSchema.js +0 -12
  195. package/dist/zod/TenantZod.js +0 -10
  196. package/dist/zod/UserApiKeyZod.js +0 -13
  197. package/dist/zod/UserZod.js +0 -18
  198. package/test.db +0 -0
  199. package/types/factory/UserRegistryServiceFactory.d.ts +0 -4
  200. package/types/factory/UserRegistryServiceFactory.d.ts.map +0 -1
  201. package/types/interfaces/IRbac.d.ts +0 -16
  202. package/types/interfaces/IRbac.d.ts.map +0 -1
  203. package/types/routes/UserAvatarRoutes.d.ts +0 -4
  204. package/types/routes/UserAvatarRoutes.d.ts.map +0 -1
  205. package/types/zod/EndpointZod.d.ts +0 -20
  206. package/types/zod/EndpointZod.d.ts.map +0 -1
  207. package/types/zod/RoleZod.d.ts +0 -10
  208. package/types/zod/RoleZod.d.ts.map +0 -1
  209. package/types/zod/TenantSchema.d.ts +0 -26
  210. package/types/zod/TenantSchema.d.ts.map +0 -1
  211. package/types/zod/TenantZod.d.ts +0 -20
  212. package/types/zod/TenantZod.d.ts.map +0 -1
  213. package/types/zod/UserApiKeyZod.d.ts +0 -36
  214. package/types/zod/UserApiKeyZod.d.ts.map +0 -1
  215. package/types/zod/UserZod.d.ts +0 -53
  216. package/types/zod/UserZod.d.ts.map +0 -1
File without changes
@@ -28,7 +28,7 @@ class RoleController extends AbstractFastifyController {
28
28
  const roleService = RoleServiceFactory();
29
29
  let roles = await roleService.fetchAll();
30
30
  if (request.rbac.getRole?.childRoles?.length > 0) {
31
- return roles.filter(role => request.rbac.getRole.childRoles.some(childRole => childRole._id === role._id));
31
+ return roles.filter(role => request.rbac.getRole.childRoles.some(childRole => childRole._id?.toString() === role._id?.toString()));
32
32
  }
33
33
  else {
34
34
  return roles;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/index.js CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -6,7 +6,8 @@ function jwtMiddleware(request, reply, done) {
6
6
  if (request.headers['authorization'] && bearerRegExp.test(request.headers['authorization'])) {
7
7
  token = request.headers?.authorization?.replace(/Bearer /i, "");
8
8
  }
9
- if (token) {
9
+ const routerPath = request.url;
10
+ if (routerPath != '/api/auth/login' && token) {
10
11
  const authUser = AuthUtils.verifyToken(token);
11
12
  if (authUser) {
12
13
  request.authUser = authUser;
@@ -17,6 +18,9 @@ function jwtMiddleware(request, reply, done) {
17
18
  }
18
19
  catch (e) {
19
20
  console.error(e);
21
+ if (e.name === 'TokenExpiredError') {
22
+ reply.code(498).send({ error: 'JWT expirado' });
23
+ }
20
24
  reply.code(401).send({ error: 'Token JWT inválido' });
21
25
  }
22
26
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -5,6 +5,7 @@ var UserPermissions;
5
5
  UserPermissions["Delete"] = "user:delete";
6
6
  UserPermissions["View"] = "user:view";
7
7
  UserPermissions["Manage"] = "user:manage";
8
+ UserPermissions["ChangePassword"] = "user:changePassword";
8
9
  UserPermissions["SwitchTenant"] = "user:switchTenant";
9
10
  })(UserPermissions || (UserPermissions = {}));
10
11
  export default UserPermissions;
File without changes
package/dist/rbac/Rbac.js CHANGED
File without changes
File without changes
File without changes
@@ -6,7 +6,10 @@ class UserMongoRepository extends AbstractMongoRepository {
6
6
  constructor() {
7
7
  super();
8
8
  this._searchFields = ['name', 'username', 'email', 'phone'];
9
- this._populateFields = ['role', 'tenant'];
9
+ this._populateFields = [
10
+ { path: 'role', populate: { path: 'childRoles' } },
11
+ { path: 'tenant' },
12
+ ];
10
13
  this._model = UserModel;
11
14
  this._lean = true;
12
15
  this.roleRepository = new RoleMongoRepository();
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -26,7 +26,8 @@ const UserSchema = UserBaseSchema
26
26
  _id: string(),
27
27
  id: string().optional(),
28
28
  name: string(),
29
- permissions: array(string())
29
+ permissions: array(string()),
30
+ childRoles: array(object({ _id: string(), name: string() })).optional()
30
31
  }).optional(),
31
32
  active: boolean(),
32
33
  tenant: object({
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.30.0",
6
+ "version": "0.33.0",
7
7
  "description": "Identity module for user management, authentication and authorization.",
8
8
  "main": "dist/index.js",
9
9
  "types": "types/index.d.ts",
@@ -28,11 +28,11 @@
28
28
  "author": "Cristian Incarnato & Drax Team",
29
29
  "license": "ISC",
30
30
  "dependencies": {
31
- "@drax/common-back": "^0.30.0",
32
- "@drax/crud-back": "^0.30.0",
33
- "@drax/crud-share": "^0.30.0",
34
- "@drax/email-back": "^0.30.0",
35
- "@drax/identity-share": "^0.30.0",
31
+ "@drax/common-back": "^0.33.0",
32
+ "@drax/crud-back": "^0.33.0",
33
+ "@drax/crud-share": "^0.33.0",
34
+ "@drax/email-back": "^0.33.0",
35
+ "@drax/identity-share": "^0.33.0",
36
36
  "bcryptjs": "^2.4.3",
37
37
  "graphql": "^16.8.2",
38
38
  "jsonwebtoken": "^9.0.2"
@@ -63,5 +63,5 @@
63
63
  "debug": "0"
64
64
  }
65
65
  },
66
- "gitHead": "f7f06578327be29f20dcb7e2c8a2eac9e9145cab"
66
+ "gitHead": "2a006597a635f61776d252f92bb3899371244379"
67
67
  }
@@ -36,7 +36,7 @@ class RoleController extends AbstractFastifyController<IRole, IRoleBase, IRoleBa
36
36
  const roleService = RoleServiceFactory()
37
37
  let roles = await roleService.fetchAll()
38
38
  if(request.rbac.getRole?.childRoles?.length > 0) {
39
- return roles.filter(role => request.rbac.getRole.childRoles.some(childRole => childRole._id === role._id));
39
+ return roles.filter(role => request.rbac.getRole.childRoles.some(childRole => childRole._id?.toString() === role._id?.toString()));
40
40
  }else{
41
41
  return roles
42
42
  }
@@ -11,7 +11,9 @@ function jwtMiddleware (request, reply, done) {
11
11
  token = request.headers?.authorization?.replace(/Bearer /i, "")
12
12
  }
13
13
 
14
- if(token){
14
+ const routerPath = request.url
15
+
16
+ if(routerPath != '/api/auth/login' && token){
15
17
  const authUser = AuthUtils.verifyToken(token) as IJwtUser
16
18
  if(authUser){
17
19
  request.authUser = authUser
@@ -21,6 +23,9 @@ function jwtMiddleware (request, reply, done) {
21
23
  done()
22
24
  }catch (e) {
23
25
  console.error(e)
26
+ if (e.name === 'TokenExpiredError') {
27
+ reply.code(498).send({ error: 'JWT expirado' });
28
+ }
24
29
  reply.code(401).send({ error: 'Token JWT inválido' });
25
30
  }
26
31
  }
@@ -4,6 +4,7 @@ enum UserPermissions {
4
4
  Delete = "user:delete",
5
5
  View = "user:view",
6
6
  Manage = "user:manage",
7
+ ChangePassword = "user:changePassword",
7
8
  SwitchTenant = "user:switchTenant",
8
9
  }
9
10
 
@@ -17,7 +17,10 @@ class UserMongoRepository extends AbstractMongoRepository<IUser,IUserCreate,IUse
17
17
  protected roleRepository: RoleMongoRepository;
18
18
 
19
19
  protected _searchFields = ['name','username','email','phone']
20
- protected _populateFields = ['role','tenant']
20
+ protected _populateFields = [
21
+ {path: 'role', populate: {path: 'childRoles'} },
22
+ {path: 'tenant'},
23
+ ]
21
24
  protected _model = UserModel
22
25
  protected _lean = true
23
26
 
@@ -33,7 +33,8 @@ const UserSchema = UserBaseSchema
33
33
  _id: string(),
34
34
  id: string().optional(),
35
35
  name: string(),
36
- permissions: array(string())
36
+ permissions: array(string()),
37
+ childRoles: array(object({_id: string(), name:string()})).optional()
37
38
  }).optional(),
38
39
  active: boolean(),
39
40
  tenant: object({