@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 +2 -1
- package/dist/rbac/Rbac.js +3 -0
- package/dist/repository/mongo/RoleMongoRepository.js +1 -1
- package/dist/repository/mongo/TenantMongoRepository.js +1 -1
- package/dist/repository/mongo/UserApiKeyMongoRepository.js +1 -1
- package/dist/repository/mongo/UserMongoRepository.js +1 -1
- package/dist/setup/CreateTenantIfNotExist.js +12 -0
- package/dist/setup/CreateUserIfNotExist.js +6 -0
- package/package.json +7 -7
- package/src/index.ts +2 -0
- package/src/rbac/Rbac.ts +4 -0
- package/src/repository/mongo/RoleMongoRepository.ts +1 -1
- package/src/repository/mongo/TenantMongoRepository.ts +1 -1
- package/src/repository/mongo/UserApiKeyMongoRepository.ts +1 -1
- package/src/repository/mongo/UserMongoRepository.ts +1 -1
- package/src/setup/CreateTenantIfNotExist.ts +18 -0
- package/src/setup/CreateUserIfNotExist.ts +8 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/types/index.d.ts +2 -1
- package/types/index.d.ts.map +1 -1
- package/types/rbac/Rbac.d.ts +1 -0
- package/types/rbac/Rbac.d.ts.map +1 -1
- package/types/setup/CreateTenantIfNotExist.d.ts +5 -0
- package/types/setup/CreateTenantIfNotExist.d.ts.map +1 -0
- package/types/setup/CreateUserIfNotExist.d.ts.map +1 -1
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
|
@@ -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": "
|
|
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": "^
|
|
32
|
-
"@drax/crud-back": "^
|
|
33
|
-
"@drax/crud-share": "^
|
|
34
|
-
"@drax/email-back": "^
|
|
35
|
-
"@drax/identity-share": "^
|
|
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": "
|
|
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
|
@@ -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
|