@ackplus/nest-auth 0.0.30 → 0.0.32
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/package.json +1 -1
- package/src/lib/session/services/base-session.service.js +5 -3
- package/src/lib/session/services/base-session.service.js.map +1 -1
- package/src/lib/user/entities/auth-identity.entity.d.ts +2 -1
- package/src/lib/user/entities/auth-identity.entity.js +1 -1
- package/src/lib/user/entities/auth-identity.entity.js.map +1 -1
- package/src/lib/user/entities/user.entity.d.ts +4 -2
- package/src/lib/user/entities/user.entity.js +44 -2
- package/src/lib/user/entities/user.entity.js.map +1 -1
package/package.json
CHANGED
|
@@ -22,20 +22,22 @@ let BaseSessionService = class BaseSessionService {
|
|
|
22
22
|
getSessionOptions() {
|
|
23
23
|
return this.sessionOptions;
|
|
24
24
|
}
|
|
25
|
-
createSessionFromUser(user, extraData = {}) {
|
|
25
|
+
async createSessionFromUser(user, extraData = {}) {
|
|
26
26
|
const { deviceName, ipAddress, browser } = request_context_1.RequestContext.getDeviceInfo();
|
|
27
27
|
const { isMfaVerified = false } = extraData;
|
|
28
28
|
if (!user) {
|
|
29
29
|
throw new common_1.UnauthorizedException('User not found');
|
|
30
30
|
}
|
|
31
31
|
const expiresAt = new Date(Date.now() + (0, ms_1.default)(this.authModuleOptions.session.sessionExpiry));
|
|
32
|
+
const roles = await user.getRoles();
|
|
33
|
+
const permissions = await user.getPermissions();
|
|
32
34
|
const session = {
|
|
33
35
|
userId: user.id,
|
|
34
36
|
data: {
|
|
35
37
|
user,
|
|
36
38
|
isMfaVerified: isMfaVerified,
|
|
37
|
-
roles
|
|
38
|
-
permissions
|
|
39
|
+
roles,
|
|
40
|
+
permissions,
|
|
39
41
|
},
|
|
40
42
|
userAgent: [browser, deviceName].join(' - '),
|
|
41
43
|
ipAddress,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-session.service.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/session/services/base-session.service.ts"],"names":[],"mappings":";;;;AAAA,2CAAmE;AACnE,yDAA2D;AAC3D,2CAAwC;AACxC,2EAAuE;AACvE,oDAAoB;AACpB,mCAA8B;AAE9B,+FAAqG;AAK9F,IAAe,kBAAkB,GAAjC,MAAe,kBAAkB;IAGpC,YAEuB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAEvD,MAAM,qBAAqB,GAAmB;YAC1C,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;YACtC,kBAAkB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;YAClC,WAAW,EAAE,8CAAkB,CAAC,QAAQ;SAC3C,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACnG,CAAC;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,qBAAqB,CAAC,IAAU,EAAE,YAAyC,EAAE;
|
|
1
|
+
{"version":3,"file":"base-session.service.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/session/services/base-session.service.ts"],"names":[],"mappings":";;;;AAAA,2CAAmE;AACnE,yDAA2D;AAC3D,2CAAwC;AACxC,2EAAuE;AACvE,oDAAoB;AACpB,mCAA8B;AAE9B,+FAAqG;AAK9F,IAAe,kBAAkB,GAAjC,MAAe,kBAAkB;IAGpC,YAEuB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAEvD,MAAM,qBAAqB,GAAmB;YAC1C,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;YACtC,kBAAkB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;YAClC,WAAW,EAAE,8CAAkB,CAAC,QAAQ;SAC3C,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACnG,CAAC;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAAU,EAAE,YAAyC,EAAE;QAC/E,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,gCAAc,CAAC,aAAa,EAAE,CAAC;QAC1E,MAAM,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,SAAS,CAAC;QAE5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,IAAI,8BAAqB,CAAC,gBAAgB,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAA,YAAE,EAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QAE1F,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAGhD,MAAM,OAAO,GAAmB;YAC5B,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,IAAI,EAAE;gBACF,IAAI;gBACJ,aAAa,EAAE,aAAa;gBAC5B,KAAK;gBACL,WAAW;aACd;YACD,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5C,SAAS;YACT,UAAU;YACV,SAAS;YACT,UAAU,EAAE,IAAI,IAAI,EAAE;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE;SACxB,CAAC;QAEF,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,wBAAwB,CAAC,OAAuB;QAC5C,MAAM,UAAU,GAAmB;YAC/B,GAAG,IAAA,aAAI,EAAC,OAAO,EAAE,IAAI,CAAC;YACtB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAA,YAAE,EAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACrF,CAAC;QAEF,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;CAWJ,CAAA;AAvEqB,gDAAkB;6BAAlB,kBAAkB;IADvC,IAAA,mBAAU,GAAE;IAKJ,mBAAA,IAAA,eAAM,EAAC,oCAAmB,CAAC,CAAA;;GAJd,kBAAkB,CAuEvC"}
|
|
@@ -4,7 +4,7 @@ exports.AuthIdentity = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const typeorm_1 = require("typeorm");
|
|
6
6
|
const user_entity_1 = require("./user.entity");
|
|
7
|
-
let AuthIdentity = class AuthIdentity {
|
|
7
|
+
let AuthIdentity = class AuthIdentity extends typeorm_1.BaseEntity {
|
|
8
8
|
};
|
|
9
9
|
exports.AuthIdentity = AuthIdentity;
|
|
10
10
|
tslib_1.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-identity.entity.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/user/entities/auth-identity.entity.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"auth-identity.entity.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/user/entities/auth-identity.entity.ts"],"names":[],"mappings":";;;;AAAA,qCAAoJ;AACpJ,+CAAqC;AAG9B,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,oBAAU;CA0B3C,CAAA;AA1BY,oCAAY;AAErB;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;wCACpB;AAGX;IADC,IAAA,gBAAM,GAAE;;8CACQ;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACR;AAGnB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;8CACjC;AAG9B;IADC,IAAA,0BAAgB,GAAE;sCACR,IAAI;+CAAC;AAGhB;IADC,IAAA,0BAAgB,GAAE;sCACR,IAAI;+CAAC;AAIhB;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAU,EAAC,CAAC,QAAsB,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;;4CACvC;AAIf;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,kBAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC9C,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;sCACzB,kBAAI;0CAAC;uBAzBF,YAAY;IADxB,IAAA,gBAAM,EAAC,sBAAsB,CAAC;GAClB,YAAY,CA0BxB"}
|
|
@@ -29,8 +29,10 @@ export declare class User extends BaseEntity {
|
|
|
29
29
|
emailTenant: string;
|
|
30
30
|
phoneTenant: string;
|
|
31
31
|
updateTenantFields(): void;
|
|
32
|
-
getPermissions(): string[]
|
|
33
|
-
getRoles(): string[]
|
|
32
|
+
getPermissions(): Promise<string[]>;
|
|
33
|
+
getRoles(): Promise<string[]>;
|
|
34
|
+
assignRoles(roles: string | string[]): Promise<void>;
|
|
35
|
+
findOrCreateIdentity(provider: string, providerId: string): Promise<AuthIdentity>;
|
|
34
36
|
validatePassword(password: string): Promise<boolean>;
|
|
35
37
|
setPassword(password: string): Promise<void>;
|
|
36
38
|
}
|
|
@@ -16,19 +16,61 @@ let User = class User extends typeorm_1.BaseEntity {
|
|
|
16
16
|
this.emailTenant = this.email ? `${this.email}:${this.tenantId || 'global'}` : null;
|
|
17
17
|
this.phoneTenant = this.phone ? `${this.phone}:${this.tenantId || 'global'}` : null;
|
|
18
18
|
}
|
|
19
|
-
getPermissions() {
|
|
19
|
+
async getPermissions() {
|
|
20
|
+
if (!this.roles) {
|
|
21
|
+
this.roles = await role_entity_1.Role.find({
|
|
22
|
+
select: {
|
|
23
|
+
id: true,
|
|
24
|
+
name: true,
|
|
25
|
+
permissions: {
|
|
26
|
+
id: true,
|
|
27
|
+
name: true
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
relations: ['permissions'],
|
|
31
|
+
where: { users: { id: this.id }, tenantId: this.tenantId }
|
|
32
|
+
});
|
|
33
|
+
}
|
|
20
34
|
return (0, lodash_1.chain)(this.roles)
|
|
21
35
|
.map(role => (0, lodash_1.map)(role.permissions, 'name'))
|
|
22
36
|
.flatten()
|
|
23
37
|
.uniq()
|
|
24
38
|
.value();
|
|
25
39
|
}
|
|
26
|
-
getRoles() {
|
|
40
|
+
async getRoles() {
|
|
41
|
+
if (!this.roles) {
|
|
42
|
+
this.roles = await role_entity_1.Role.find({
|
|
43
|
+
select: {
|
|
44
|
+
id: true,
|
|
45
|
+
name: true,
|
|
46
|
+
},
|
|
47
|
+
where: { users: { id: this.id }, tenantId: this.tenantId }
|
|
48
|
+
});
|
|
49
|
+
}
|
|
27
50
|
return (0, lodash_1.chain)(this.roles)
|
|
28
51
|
.map(role => role.name)
|
|
29
52
|
.uniq()
|
|
30
53
|
.value();
|
|
31
54
|
}
|
|
55
|
+
async assignRoles(roles) {
|
|
56
|
+
this.roles = await role_entity_1.Role.find({
|
|
57
|
+
where: { name: (0, typeorm_1.In)(Array.isArray(roles) ? roles : [roles]), tenantId: this.tenantId }
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async findOrCreateIdentity(provider, providerId) {
|
|
61
|
+
const existingIdentity = await auth_identity_entity_1.AuthIdentity.findOne({
|
|
62
|
+
where: { provider, providerId, userId: this.id }
|
|
63
|
+
});
|
|
64
|
+
if (existingIdentity) {
|
|
65
|
+
return existingIdentity;
|
|
66
|
+
}
|
|
67
|
+
const identity = new auth_identity_entity_1.AuthIdentity();
|
|
68
|
+
identity.provider = provider;
|
|
69
|
+
identity.providerId = providerId;
|
|
70
|
+
identity.user = this;
|
|
71
|
+
await identity.save();
|
|
72
|
+
return identity;
|
|
73
|
+
}
|
|
32
74
|
async validatePassword(password) {
|
|
33
75
|
if (!this.passwordHash)
|
|
34
76
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/user/entities/user.entity.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/user/entities/user.entity.ts"],"names":[],"mappings":"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"}
|