@drax/identity-back 2.9.0 → 3.0.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.
package/dist/index.js CHANGED
@@ -26,6 +26,7 @@ import { apiKeyMiddleware } from "./middleware/apiKeyMiddleware.js";
26
26
  import IdentityConfig from "./config/IdentityConfig.js";
27
27
  import BadCredentialsError from "./errors/BadCredentialsError.js";
28
28
  import CreateUserIfNotExist from "./setup/CreateUserIfNotExist.js";
29
+ import CreateTenantIfNotExist from "./setup/CreateTenantIfNotExist.js";
29
30
  import CreateOrUpdateRole from "./setup/CreateOrUpdateRole.js";
30
31
  import LoadPermissions from "./setup/LoadPermissions.js";
31
32
  import LoadIdentityConfigFromEnv from "./setup/LoadIdentityConfigFromEnv.js";
@@ -89,4 +90,4 @@ IdentityConfig,
89
90
  //Errors
90
91
  BadCredentialsError,
91
92
  //Setup
92
- LoadIdentityConfigFromEnv, LoadPermissions, CreateOrUpdateRole, CreateUserIfNotExist, RecoveryUserPassword };
93
+ LoadIdentityConfigFromEnv, LoadPermissions, CreateOrUpdateRole, CreateUserIfNotExist, CreateTenantIfNotExist, RecoveryUserPassword };
package/dist/rbac/Rbac.js CHANGED
@@ -41,6 +41,9 @@ class Rbac {
41
41
  get roleName() {
42
42
  return this?.authUser?.roleName;
43
43
  }
44
+ get hasTenant() {
45
+ return !!this?.authUser?.tenantId;
46
+ }
44
47
  get tenantId() {
45
48
  return this?.authUser?.tenantId?.toString();
46
49
  }
@@ -28,7 +28,7 @@ class RoleMongoRepository extends AbstractMongoRepository {
28
28
  query['$or'] = this._searchFields.map(field => ({ [field]: new RegExp(search.toString(), 'i') }));
29
29
  }
30
30
  }
31
- MongooseQueryFilter.applyFilters(query, filters);
31
+ MongooseQueryFilter.applyFilters(query, filters, RoleModel);
32
32
  const sort = MongooseSort.applySort(orderBy, order);
33
33
  return RoleModel.find(query).limit(limit).sort(sort).cursor();
34
34
  }
@@ -27,7 +27,7 @@ class TenantMongoRepository extends AbstractMongoRepository {
27
27
  query['$or'] = this._searchFields.map(field => ({ [field]: new RegExp(search.toString(), 'i') }));
28
28
  }
29
29
  }
30
- MongooseQueryFilter.applyFilters(query, filters);
30
+ MongooseQueryFilter.applyFilters(query, filters, TenantModel);
31
31
  const sort = MongooseSort.applySort(orderBy, order);
32
32
  return TenantModel.find(query).limit(limit).sort(sort).cursor();
33
33
  }
@@ -37,7 +37,7 @@ class UserApiKeyMongoRepository extends AbstractMongoRepository {
37
37
  query['$or'] = this._searchFields.map(field => ({ [field]: new RegExp(search.toString(), 'i') }));
38
38
  }
39
39
  }
40
- MongooseQueryFilter.applyFilters(query, filters);
40
+ MongooseQueryFilter.applyFilters(query, filters, UserApiKeyModel);
41
41
  const sort = MongooseSort.applySort(orderBy, order);
42
42
  const populate = ['user', 'user.tenant', 'user.role', 'createdBy'];
43
43
  const lean = this._lean;
@@ -121,7 +121,7 @@ class UserMongoRepository extends AbstractMongoRepository {
121
121
  query['$or'] = this._searchFields.map(field => ({ [field]: new RegExp(search.toString(), 'i') }));
122
122
  }
123
123
  }
124
- MongooseQueryFilter.applyFilters(query, filters);
124
+ MongooseQueryFilter.applyFilters(query, filters, UserModel);
125
125
  const sort = MongooseSort.applySort(orderBy, order);
126
126
  return UserModel.find(query).populate(['role', 'tenant']).limit(limit).sort(sort).cursor();
127
127
  }
@@ -0,0 +1,12 @@
1
+ import TenantServiceFactory from "../factory/TenantServiceFactory.js";
2
+ async function CreateTenantIfNotExist(tenantData) {
3
+ const tenantService = TenantServiceFactory();
4
+ const tenant = await tenantService.findByName(tenantData.name);
5
+ if (!tenant) {
6
+ const r = await tenantService.create(tenantData);
7
+ console.log("Tenant Created. Name: " + tenantData.name);
8
+ return r;
9
+ }
10
+ }
11
+ export default CreateTenantIfNotExist;
12
+ export { CreateTenantIfNotExist };
@@ -1,8 +1,10 @@
1
1
  import RoleServiceFactory from "../factory/RoleServiceFactory.js";
2
2
  import UserServiceFactory from "../factory/UserServiceFactory.js";
3
+ import TenantServiceFactory from "../factory/TenantServiceFactory.js";
3
4
  async function CreateUserIfNotExist(userData) {
4
5
  const userService = UserServiceFactory();
5
6
  const roleService = RoleServiceFactory();
7
+ const tenantService = TenantServiceFactory();
6
8
  const user = await userService.findByUsername(userData.username);
7
9
  if (user) {
8
10
  return user;
@@ -10,6 +12,10 @@ async function CreateUserIfNotExist(userData) {
10
12
  else {
11
13
  const role = await roleService.findByName(userData.role);
12
14
  userData.role = role._id.toString();
15
+ if (userData.tenant) {
16
+ const tenant = await tenantService.findByName(userData.tenant);
17
+ userData.tenant = tenant._id.toString();
18
+ }
13
19
  const r = await userService.create(userData);
14
20
  console.log("User Created. Username: " + userData.username);
15
21
  return r;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "2.9.0",
6
+ "version": "3.0.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": "^2.8.0",
32
- "@drax/crud-back": "^2.9.0",
33
- "@drax/crud-share": "^2.8.0",
34
- "@drax/email-back": "^2.0.0",
35
- "@drax/identity-share": "^2.0.0",
31
+ "@drax/common-back": "^3.0.0",
32
+ "@drax/crud-back": "^3.0.0",
33
+ "@drax/crud-share": "^3.0.0",
34
+ "@drax/email-back": "^3.0.0",
35
+ "@drax/identity-share": "^3.0.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": "2bc9b59a45c762bd32403dce14db2693be34dcc7"
66
+ "gitHead": "63ae718b24ea25ae80b1a9a5dfb84a3abbb95199"
67
67
  }
package/src/index.ts CHANGED
@@ -32,6 +32,7 @@ import IdentityConfig from "./config/IdentityConfig.js";
32
32
  import BadCredentialsError from "./errors/BadCredentialsError.js";
33
33
 
34
34
  import CreateUserIfNotExist from "./setup/CreateUserIfNotExist.js";
35
+ import CreateTenantIfNotExist from "./setup/CreateTenantIfNotExist.js";
35
36
  import CreateOrUpdateRole from "./setup/CreateOrUpdateRole.js";
36
37
  import LoadPermissions from "./setup/LoadPermissions.js";
37
38
  import LoadIdentityConfigFromEnv from "./setup/LoadIdentityConfigFromEnv.js";
@@ -197,6 +198,7 @@ export {
197
198
  LoadPermissions,
198
199
  CreateOrUpdateRole,
199
200
  CreateUserIfNotExist,
201
+ CreateTenantIfNotExist,
200
202
  RecoveryUserPassword
201
203
  }
202
204
 
package/src/rbac/Rbac.ts CHANGED
@@ -56,6 +56,10 @@ class Rbac implements IRbac{
56
56
  return this?.authUser?.roleName
57
57
  }
58
58
 
59
+ get hasTenant(): boolean {
60
+ return !!this?.authUser?.tenantId;
61
+ }
62
+
59
63
  get tenantId(): string | undefined {
60
64
  return this?.authUser?.tenantId?.toString();
61
65
  }
@@ -47,7 +47,7 @@ class RoleMongoRepository extends AbstractMongoRepository<IRole, IRoleBase,IRole
47
47
  }
48
48
  }
49
49
 
50
- MongooseQueryFilter.applyFilters(query, filters)
50
+ MongooseQueryFilter.applyFilters(query, filters,RoleModel)
51
51
 
52
52
  const sort = MongooseSort.applySort(orderBy, order)
53
53
 
@@ -41,7 +41,7 @@ class TenantMongoRepository extends AbstractMongoRepository<ITenant, ITenantBase
41
41
  }
42
42
  }
43
43
 
44
- MongooseQueryFilter.applyFilters(query, filters)
44
+ MongooseQueryFilter.applyFilters(query, filters, TenantModel)
45
45
 
46
46
  const sort = MongooseSort.applySort(orderBy, order)
47
47
 
@@ -59,7 +59,7 @@ class UserApiKeyMongoRepository extends AbstractMongoRepository<IUserApiKey,IUse
59
59
  }
60
60
  }
61
61
 
62
- MongooseQueryFilter.applyFilters(query, filters)
62
+ MongooseQueryFilter.applyFilters(query, filters, UserApiKeyModel)
63
63
 
64
64
  const sort = MongooseSort.applySort(orderBy, order)
65
65
  const populate = ['user', 'user.tenant', 'user.role', 'createdBy']
@@ -153,7 +153,7 @@ class UserMongoRepository extends AbstractMongoRepository<IUser,IUserCreate,IUse
153
153
  }
154
154
  }
155
155
 
156
- MongooseQueryFilter.applyFilters(query, filters)
156
+ MongooseQueryFilter.applyFilters(query, filters, UserModel)
157
157
 
158
158
  const sort = MongooseSort.applySort(orderBy, order)
159
159
 
@@ -0,0 +1,18 @@
1
+ import type {ITenantBase, ITenant} from "@drax/identity-share"
2
+ import TenantServiceFactory from "../factory/TenantServiceFactory.js"
3
+
4
+ async function CreateTenantIfNotExist(tenantData: ITenantBase):Promise<ITenant> {
5
+ const tenantService = TenantServiceFactory()
6
+ const tenant = await tenantService.findByName(tenantData.name)
7
+
8
+ if(!tenant){
9
+ const r = await tenantService.create(tenantData)
10
+ console.log("Tenant Created. Name: "+ tenantData.name)
11
+ return r
12
+ }
13
+ }
14
+
15
+ export default CreateTenantIfNotExist
16
+ export {
17
+ CreateTenantIfNotExist
18
+ }
@@ -1,16 +1,24 @@
1
1
  import RoleServiceFactory from "../factory/RoleServiceFactory.js"
2
2
  import UserServiceFactory from "../factory/UserServiceFactory.js"
3
+ import TenantServiceFactory from "../factory/TenantServiceFactory.js"
3
4
  import {IUserCreate, IUser} from "@drax/identity-share";
4
5
 
5
6
  async function CreateUserIfNotExist(userData: IUserCreate): Promise<IUser> {
6
7
  const userService = UserServiceFactory()
7
8
  const roleService = RoleServiceFactory()
9
+ const tenantService = TenantServiceFactory()
8
10
  const user = await userService.findByUsername(userData.username)
9
11
  if (user) {
10
12
  return user
11
13
  } else {
12
14
  const role = await roleService.findByName(userData.role as string)
13
15
  userData.role = role._id.toString()
16
+
17
+ if(userData.tenant){
18
+ const tenant = await tenantService.findByName(userData.tenant as string)
19
+ userData.tenant = tenant._id.toString()
20
+ }
21
+
14
22
  const r = await userService.create(userData)
15
23
  console.log("User Created. Username: " + userData.username)
16
24
  return r