@spinajs/rbac 2.0.180 → 2.0.181
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/lib/cjs/auth.d.ts +15 -15
- package/lib/cjs/auth.js +103 -103
- package/lib/cjs/auth.js.map +1 -1
- package/lib/cjs/cli/ActivateUser.d.ts +8 -8
- package/lib/cjs/cli/ActivateUser.js +47 -47
- package/lib/cjs/cli/ActivateUser.js.map +1 -1
- package/lib/cjs/cli/BanUser.d.ts +8 -8
- package/lib/cjs/cli/BanUser.js +63 -63
- package/lib/cjs/cli/BanUser.js.map +1 -1
- package/lib/cjs/cli/ChangeUserPassword.d.ts +11 -11
- package/lib/cjs/cli/ChangeUserPassword.js +58 -58
- package/lib/cjs/cli/ChangeUserPassword.js.map +1 -1
- package/lib/cjs/cli/ClearUserTimelineSchedule.d.ts +8 -8
- package/lib/cjs/cli/ClearUserTimelineSchedule.js +54 -54
- package/lib/cjs/cli/ClearUserTimelineSchedule.js.map +1 -1
- package/lib/cjs/cli/CreateUser.d.ts +17 -17
- package/lib/cjs/cli/CreateUser.js +69 -69
- package/lib/cjs/cli/CreateUser.js.map +1 -1
- package/lib/cjs/cli/DeleteUser.d.ts +8 -8
- package/lib/cjs/cli/DeleteUser.js +40 -40
- package/lib/cjs/cli/DeleteUser.js.map +1 -1
- package/lib/cjs/cli/FindUser.d.ts +12 -12
- package/lib/cjs/cli/FindUser.js +44 -44
- package/lib/cjs/cli/FindUser.js.map +1 -1
- package/lib/cjs/cli/GrantUserRole.d.ts +8 -8
- package/lib/cjs/cli/GrantUserRole.js +47 -47
- package/lib/cjs/cli/GrantUserRole.js.map +1 -1
- package/lib/cjs/cli/LatestUserEvents.d.ts +6 -6
- package/lib/cjs/cli/LatestUserEvents.js +37 -37
- package/lib/cjs/cli/LatestUserEvents.js.map +1 -1
- package/lib/cjs/cli/RevokeUserRole.d.ts +8 -8
- package/lib/cjs/cli/RevokeUserRole.js +46 -46
- package/lib/cjs/cli/RevokeUserRole.js.map +1 -1
- package/lib/cjs/cli/UnbanUserSchedule.d.ts +8 -8
- package/lib/cjs/cli/UnbanUserSchedule.js +54 -54
- package/lib/cjs/cli/UnbanUserSchedule.js.map +1 -1
- package/lib/cjs/config/rbac.d.ts +115 -115
- package/lib/cjs/config/rbac.js +120 -120
- package/lib/cjs/decorators/Resource.d.ts +8 -8
- package/lib/cjs/decorators/Resource.js +17 -17
- package/lib/cjs/events/NewUser.d.ts +12 -12
- package/lib/cjs/events/NewUser.js +16 -16
- package/lib/cjs/events/NewUser.js.map +1 -1
- package/lib/cjs/events/UserActivated.d.ts +5 -5
- package/lib/cjs/events/UserActivated.js +24 -24
- package/lib/cjs/events/UserActivated.js.map +1 -1
- package/lib/cjs/events/UserBanned.d.ts +6 -6
- package/lib/cjs/events/UserBanned.js +25 -25
- package/lib/cjs/events/UserBanned.js.map +1 -1
- package/lib/cjs/events/UserDeactivated.d.ts +5 -5
- package/lib/cjs/events/UserDeactivated.js +24 -24
- package/lib/cjs/events/UserDeactivated.js.map +1 -1
- package/lib/cjs/events/UserDeleted.d.ts +5 -5
- package/lib/cjs/events/UserDeleted.js +24 -24
- package/lib/cjs/events/UserDeleted.js.map +1 -1
- package/lib/cjs/events/UserMetadataAdded.d.ts +5 -5
- package/lib/cjs/events/UserMetadataAdded.js +24 -24
- package/lib/cjs/events/UserMetadataAdded.js.map +1 -1
- package/lib/cjs/events/UserMetadataChanged.d.ts +5 -5
- package/lib/cjs/events/UserMetadataChanged.js +24 -24
- package/lib/cjs/events/UserMetadataChanged.js.map +1 -1
- package/lib/cjs/events/UserMetadataDeleted.d.ts +5 -5
- package/lib/cjs/events/UserMetadataDeleted.js +24 -24
- package/lib/cjs/events/UserMetadataDeleted.js.map +1 -1
- package/lib/cjs/events/UserPasswordChanged.d.ts +5 -5
- package/lib/cjs/events/UserPasswordChanged.js +24 -24
- package/lib/cjs/events/UserPasswordChanged.js.map +1 -1
- package/lib/cjs/events/UserPropertyChanged.d.ts +7 -7
- package/lib/cjs/events/UserPropertyChanged.js +16 -16
- package/lib/cjs/events/UserPropertyChanged.js.map +1 -1
- package/lib/cjs/events/UserRoleGranted.d.ts +6 -6
- package/lib/cjs/events/UserRoleGranted.js +25 -25
- package/lib/cjs/events/UserRoleGranted.js.map +1 -1
- package/lib/cjs/events/UserRoleRevoked.d.ts +6 -6
- package/lib/cjs/events/UserRoleRevoked.js +25 -25
- package/lib/cjs/events/UserRoleRevoked.js.map +1 -1
- package/lib/cjs/events/UserUnbanned.d.ts +5 -5
- package/lib/cjs/events/UserUnbanned.js +24 -24
- package/lib/cjs/events/UserUnbanned.js.map +1 -1
- package/lib/cjs/events/index.d.ts +13 -13
- package/lib/cjs/events/index.js +29 -29
- package/lib/cjs/index.d.ts +20 -20
- package/lib/cjs/index.js +85 -85
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/interfaces.d.ts +259 -259
- package/lib/cjs/interfaces.js +45 -45
- package/lib/cjs/interfaces.js.map +1 -1
- package/lib/cjs/jobs/UnbanUser.d.ts +9 -9
- package/lib/cjs/jobs/UnbanUser.js +43 -43
- package/lib/cjs/jobs/UnbanUser.js.map +1 -1
- package/lib/cjs/middleware.d.ts +5 -5
- package/lib/cjs/middleware.js +24 -24
- package/lib/cjs/middleware.js.map +1 -1
- package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.d.ts +5 -5
- package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.js +56 -56
- package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.js.map +1 -1
- package/lib/cjs/models/User.d.ts +96 -96
- package/lib/cjs/models/User.js +229 -229
- package/lib/cjs/models/User.js.map +1 -1
- package/lib/cjs/models/UserMetadata.d.ts +9 -9
- package/lib/cjs/models/UserMetadata.js +32 -32
- package/lib/cjs/models/UserMetadata.js.map +1 -1
- package/lib/cjs/models/UserTimeline.d.ts +28 -28
- package/lib/cjs/models/UserTimeline.js +46 -46
- package/lib/cjs/models/UserTimeline.js.map +1 -1
- package/lib/cjs/password.d.ts +25 -25
- package/lib/cjs/password.js +91 -91
- package/lib/cjs/password.js.map +1 -1
- package/lib/cjs/session.d.ts +33 -33
- package/lib/cjs/session.js +100 -100
- package/lib/cjs/session.js.map +1 -1
- package/lib/mjs/auth.d.ts +15 -15
- package/lib/mjs/auth.js +100 -100
- package/lib/mjs/auth.js.map +1 -1
- package/lib/mjs/cli/ActivateUser.d.ts +8 -8
- package/lib/mjs/cli/ActivateUser.js +44 -44
- package/lib/mjs/cli/ActivateUser.js.map +1 -1
- package/lib/mjs/cli/BanUser.d.ts +8 -8
- package/lib/mjs/cli/BanUser.js +60 -60
- package/lib/mjs/cli/BanUser.js.map +1 -1
- package/lib/mjs/cli/ChangeUserPassword.d.ts +11 -11
- package/lib/mjs/cli/ChangeUserPassword.js +55 -55
- package/lib/mjs/cli/ChangeUserPassword.js.map +1 -1
- package/lib/mjs/cli/ClearUserTimelineSchedule.d.ts +8 -8
- package/lib/mjs/cli/ClearUserTimelineSchedule.js +51 -51
- package/lib/mjs/cli/ClearUserTimelineSchedule.js.map +1 -1
- package/lib/mjs/cli/CreateUser.d.ts +17 -17
- package/lib/mjs/cli/CreateUser.js +66 -66
- package/lib/mjs/cli/CreateUser.js.map +1 -1
- package/lib/mjs/cli/DeleteUser.d.ts +8 -8
- package/lib/mjs/cli/DeleteUser.js +37 -37
- package/lib/mjs/cli/DeleteUser.js.map +1 -1
- package/lib/mjs/cli/FindUser.d.ts +12 -12
- package/lib/mjs/cli/FindUser.js +41 -41
- package/lib/mjs/cli/FindUser.js.map +1 -1
- package/lib/mjs/cli/GrantUserRole.d.ts +8 -8
- package/lib/mjs/cli/GrantUserRole.js +41 -41
- package/lib/mjs/cli/GrantUserRole.js.map +1 -1
- package/lib/mjs/cli/LatestUserEvents.d.ts +6 -6
- package/lib/mjs/cli/LatestUserEvents.js +34 -34
- package/lib/mjs/cli/LatestUserEvents.js.map +1 -1
- package/lib/mjs/cli/RevokeUserRole.d.ts +8 -8
- package/lib/mjs/cli/RevokeUserRole.js +40 -40
- package/lib/mjs/cli/RevokeUserRole.js.map +1 -1
- package/lib/mjs/cli/UnbanUserSchedule.d.ts +8 -8
- package/lib/mjs/cli/UnbanUserSchedule.js +51 -51
- package/lib/mjs/cli/UnbanUserSchedule.js.map +1 -1
- package/lib/mjs/config/rbac.d.ts +115 -115
- package/lib/mjs/config/rbac.js +118 -118
- package/lib/mjs/decorators/Resource.d.ts +8 -8
- package/lib/mjs/decorators/Resource.js +13 -13
- package/lib/mjs/events/NewUser.d.ts +12 -12
- package/lib/mjs/events/NewUser.js +13 -13
- package/lib/mjs/events/NewUser.js.map +1 -1
- package/lib/mjs/events/UserActivated.d.ts +5 -5
- package/lib/mjs/events/UserActivated.js +21 -21
- package/lib/mjs/events/UserActivated.js.map +1 -1
- package/lib/mjs/events/UserBanned.d.ts +6 -6
- package/lib/mjs/events/UserBanned.js +22 -22
- package/lib/mjs/events/UserBanned.js.map +1 -1
- package/lib/mjs/events/UserDeactivated.d.ts +5 -5
- package/lib/mjs/events/UserDeactivated.js +21 -21
- package/lib/mjs/events/UserDeactivated.js.map +1 -1
- package/lib/mjs/events/UserDeleted.d.ts +5 -5
- package/lib/mjs/events/UserDeleted.js +21 -21
- package/lib/mjs/events/UserDeleted.js.map +1 -1
- package/lib/mjs/events/UserMetadataAdded.d.ts +5 -5
- package/lib/mjs/events/UserMetadataAdded.js +21 -21
- package/lib/mjs/events/UserMetadataAdded.js.map +1 -1
- package/lib/mjs/events/UserMetadataChanged.d.ts +5 -5
- package/lib/mjs/events/UserMetadataChanged.js +21 -21
- package/lib/mjs/events/UserMetadataChanged.js.map +1 -1
- package/lib/mjs/events/UserMetadataDeleted.d.ts +5 -5
- package/lib/mjs/events/UserMetadataDeleted.js +21 -21
- package/lib/mjs/events/UserMetadataDeleted.js.map +1 -1
- package/lib/mjs/events/UserPasswordChanged.d.ts +5 -5
- package/lib/mjs/events/UserPasswordChanged.js +21 -21
- package/lib/mjs/events/UserPasswordChanged.js.map +1 -1
- package/lib/mjs/events/UserPropertyChanged.d.ts +7 -7
- package/lib/mjs/events/UserPropertyChanged.js +13 -13
- package/lib/mjs/events/UserPropertyChanged.js.map +1 -1
- package/lib/mjs/events/UserRoleGranted.d.ts +6 -6
- package/lib/mjs/events/UserRoleGranted.js +22 -22
- package/lib/mjs/events/UserRoleGranted.js.map +1 -1
- package/lib/mjs/events/UserRoleRevoked.d.ts +6 -6
- package/lib/mjs/events/UserRoleRevoked.js +22 -22
- package/lib/mjs/events/UserRoleRevoked.js.map +1 -1
- package/lib/mjs/events/UserUnbanned.d.ts +5 -5
- package/lib/mjs/events/UserUnbanned.js +21 -21
- package/lib/mjs/events/UserUnbanned.js.map +1 -1
- package/lib/mjs/events/index.d.ts +13 -13
- package/lib/mjs/events/index.js +13 -13
- package/lib/mjs/index.d.ts +20 -20
- package/lib/mjs/index.js +64 -64
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/interfaces.d.ts +259 -259
- package/lib/mjs/interfaces.js +37 -37
- package/lib/mjs/interfaces.js.map +1 -1
- package/lib/mjs/jobs/UnbanUser.d.ts +9 -9
- package/lib/mjs/jobs/UnbanUser.js +40 -40
- package/lib/mjs/jobs/UnbanUser.js.map +1 -1
- package/lib/mjs/middleware.d.ts +5 -5
- package/lib/mjs/middleware.js +21 -21
- package/lib/mjs/middleware.js.map +1 -1
- package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.d.ts +5 -5
- package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.js +53 -53
- package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.js.map +1 -1
- package/lib/mjs/models/User.d.ts +96 -96
- package/lib/mjs/models/User.js +225 -225
- package/lib/mjs/models/User.js.map +1 -1
- package/lib/mjs/models/UserMetadata.d.ts +9 -9
- package/lib/mjs/models/UserMetadata.js +29 -29
- package/lib/mjs/models/UserMetadata.js.map +1 -1
- package/lib/mjs/models/UserTimeline.d.ts +28 -28
- package/lib/mjs/models/UserTimeline.js +43 -43
- package/lib/mjs/models/UserTimeline.js.map +1 -1
- package/lib/mjs/password.d.ts +25 -25
- package/lib/mjs/password.js +65 -65
- package/lib/mjs/password.js.map +1 -1
- package/lib/mjs/session.d.ts +33 -33
- package/lib/mjs/session.js +94 -94
- package/lib/mjs/session.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +10 -10
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { BelongsTo, Connection, CreatedAt, Model, ModelBase, Primary, SingleRelation } from '@spinajs/orm';
|
|
11
|
-
import { DateTime } from 'luxon';
|
|
12
|
-
/**
|
|
13
|
-
* Timeline table for storing user actions / interactions
|
|
14
|
-
* eg. login attempts, failed logins, resource deletions, alterations etc.
|
|
15
|
-
*/
|
|
16
|
-
let UserAction = class UserAction extends ModelBase {
|
|
17
|
-
asNumber() {
|
|
18
|
-
return parseInt(this.Data, 10);
|
|
19
|
-
}
|
|
20
|
-
asFloat() {
|
|
21
|
-
return parseFloat(this.Data);
|
|
22
|
-
}
|
|
23
|
-
asJsonObject() {
|
|
24
|
-
return JSON.parse(this.Data);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
__decorate([
|
|
28
|
-
Primary(),
|
|
29
|
-
__metadata("design:type", Number)
|
|
30
|
-
], UserAction.prototype, "Id", void 0);
|
|
31
|
-
__decorate([
|
|
32
|
-
BelongsTo('User'),
|
|
33
|
-
__metadata("design:type", SingleRelation)
|
|
34
|
-
], UserAction.prototype, "User", void 0);
|
|
35
|
-
__decorate([
|
|
36
|
-
CreatedAt(),
|
|
37
|
-
__metadata("design:type", DateTime)
|
|
38
|
-
], UserAction.prototype, "CreatedAt", void 0);
|
|
39
|
-
UserAction = __decorate([
|
|
40
|
-
Connection('default'),
|
|
41
|
-
Model('user_actions')
|
|
42
|
-
], UserAction);
|
|
43
|
-
export { UserAction };
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { BelongsTo, Connection, CreatedAt, Model, ModelBase, Primary, SingleRelation } from '@spinajs/orm';
|
|
11
|
+
import { DateTime } from 'luxon';
|
|
12
|
+
/**
|
|
13
|
+
* Timeline table for storing user actions / interactions
|
|
14
|
+
* eg. login attempts, failed logins, resource deletions, alterations etc.
|
|
15
|
+
*/
|
|
16
|
+
let UserAction = class UserAction extends ModelBase {
|
|
17
|
+
asNumber() {
|
|
18
|
+
return parseInt(this.Data, 10);
|
|
19
|
+
}
|
|
20
|
+
asFloat() {
|
|
21
|
+
return parseFloat(this.Data);
|
|
22
|
+
}
|
|
23
|
+
asJsonObject() {
|
|
24
|
+
return JSON.parse(this.Data);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
__decorate([
|
|
28
|
+
Primary(),
|
|
29
|
+
__metadata("design:type", Number)
|
|
30
|
+
], UserAction.prototype, "Id", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
BelongsTo('User'),
|
|
33
|
+
__metadata("design:type", SingleRelation)
|
|
34
|
+
], UserAction.prototype, "User", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
CreatedAt(),
|
|
37
|
+
__metadata("design:type", DateTime)
|
|
38
|
+
], UserAction.prototype, "CreatedAt", void 0);
|
|
39
|
+
UserAction = __decorate([
|
|
40
|
+
Connection('default'),
|
|
41
|
+
Model('user_actions')
|
|
42
|
+
], UserAction);
|
|
43
|
+
export { UserAction };
|
|
44
44
|
//# sourceMappingURL=UserTimeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserTimeline.js","sourceRoot":"","sources":["../../../src/models/UserTimeline.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC3G,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC;;;GAGG;AAGI,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,SAAqB;IAwB5C,QAAQ;QACb,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,OAAO;QACZ,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAM,CAAC;IACpC,CAAC;CAIF,CAAA;
|
|
1
|
+
{"version":3,"file":"UserTimeline.js","sourceRoot":"","sources":["../../../src/models/UserTimeline.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC3G,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC;;;GAGG;AAGI,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,SAAqB;IAwB5C,QAAQ;QACb,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,OAAO;QACZ,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAM,CAAC;IACpC,CAAC;CAIF,CAAA;AApCQ;IADN,OAAO,EAAE;;sCACQ;AAGX;IADN,SAAS,CAAC,MAAM,CAAC;8BACL,cAAc;wCAAO;AAgC3B;IADN,SAAS,EAAE;8BACM,QAAQ;6CAAC;AArChB,UAAU;IAFtB,UAAU,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,cAAc,CAAC;GACT,UAAU,CAsCtB"}
|
package/lib/mjs/password.d.ts
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { PasswordProvider, PasswordValidationProvider } from './interfaces.js';
|
|
2
|
-
import { DataValidator } from '@spinajs/validation';
|
|
3
|
-
/**
|
|
4
|
-
* Simple password service that use argon2 hash alghoritm and entropy-string to generate password
|
|
5
|
-
*/
|
|
6
|
-
export declare class BasicPasswordProvider implements PasswordProvider {
|
|
7
|
-
hash(input: string): Promise<string>;
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* Checks if hash is valid for given password
|
|
11
|
-
*
|
|
12
|
-
* @param hash - hash to validate
|
|
13
|
-
* @param password - password to validate
|
|
14
|
-
*/
|
|
15
|
-
verify(hash: string, password: string): Promise<boolean>;
|
|
16
|
-
generate(): string;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Simple password validation service based on JSON schema validation
|
|
20
|
-
*/
|
|
21
|
-
export declare class BasicPasswordValidationProvider extends PasswordValidationProvider {
|
|
22
|
-
protected ValidationSchema: object;
|
|
23
|
-
protected Validator: DataValidator;
|
|
24
|
-
check(password: string): boolean;
|
|
25
|
-
}
|
|
1
|
+
import { PasswordProvider, PasswordValidationProvider } from './interfaces.js';
|
|
2
|
+
import { DataValidator } from '@spinajs/validation';
|
|
3
|
+
/**
|
|
4
|
+
* Simple password service that use argon2 hash alghoritm and entropy-string to generate password
|
|
5
|
+
*/
|
|
6
|
+
export declare class BasicPasswordProvider implements PasswordProvider {
|
|
7
|
+
hash(input: string): Promise<string>;
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* Checks if hash is valid for given password
|
|
11
|
+
*
|
|
12
|
+
* @param hash - hash to validate
|
|
13
|
+
* @param password - password to validate
|
|
14
|
+
*/
|
|
15
|
+
verify(hash: string, password: string): Promise<boolean>;
|
|
16
|
+
generate(): string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Simple password validation service based on JSON schema validation
|
|
20
|
+
*/
|
|
21
|
+
export declare class BasicPasswordValidationProvider extends PasswordValidationProvider {
|
|
22
|
+
protected ValidationSchema: object;
|
|
23
|
+
protected Validator: DataValidator;
|
|
24
|
+
check(password: string): boolean;
|
|
25
|
+
}
|
|
26
26
|
//# sourceMappingURL=password.d.ts.map
|
package/lib/mjs/password.js
CHANGED
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
// tslint:disable-next-line: no-var-requires
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
import { PasswordProvider, PasswordValidationProvider } from './interfaces.js';
|
|
12
|
-
import * as argon from 'argon2';
|
|
13
|
-
import { Autoinject, Injectable } from '@spinajs/di';
|
|
14
|
-
import { Config } from '@spinajs/configuration';
|
|
15
|
-
import { DataValidator } from '@spinajs/validation';
|
|
16
|
-
import { Entropy, charset32 } from 'entropy-string';
|
|
17
|
-
/**
|
|
18
|
-
* Simple password service that use argon2 hash alghoritm and entropy-string to generate password
|
|
19
|
-
*/
|
|
20
|
-
let BasicPasswordProvider = class BasicPasswordProvider {
|
|
21
|
-
async hash(input) {
|
|
22
|
-
// uses default argon settings, no need to tweak
|
|
23
|
-
return await argon.hash(input);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* Checks if hash is valid for given password
|
|
28
|
-
*
|
|
29
|
-
* @param hash - hash to validate
|
|
30
|
-
* @param password - password to validate
|
|
31
|
-
*/
|
|
32
|
-
async verify(hash, password) {
|
|
33
|
-
return await argon.verify(hash, password);
|
|
34
|
-
}
|
|
35
|
-
generate() {
|
|
36
|
-
// generates password with entropy of 60 bits ( balance of ease vs value )
|
|
37
|
-
const random = new Entropy({ charset: charset32 });
|
|
38
|
-
return random.string(60);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
BasicPasswordProvider = __decorate([
|
|
42
|
-
Injectable(PasswordProvider)
|
|
43
|
-
], BasicPasswordProvider);
|
|
44
|
-
export { BasicPasswordProvider };
|
|
45
|
-
/**
|
|
46
|
-
* Simple password validation service based on JSON schema validation
|
|
47
|
-
*/
|
|
48
|
-
let BasicPasswordValidationProvider = class BasicPasswordValidationProvider extends PasswordValidationProvider {
|
|
49
|
-
check(password) {
|
|
50
|
-
const [result] = this.Validator.tryValidate(this.ValidationSchema, password);
|
|
51
|
-
return result;
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
__decorate([
|
|
55
|
-
Config('rbac.password.validation.rule'),
|
|
56
|
-
__metadata("design:type", Object)
|
|
57
|
-
], BasicPasswordValidationProvider.prototype, "ValidationSchema", void 0);
|
|
58
|
-
__decorate([
|
|
59
|
-
Autoinject(),
|
|
60
|
-
__metadata("design:type", DataValidator)
|
|
61
|
-
], BasicPasswordValidationProvider.prototype, "Validator", void 0);
|
|
62
|
-
BasicPasswordValidationProvider = __decorate([
|
|
63
|
-
Injectable(PasswordValidationProvider)
|
|
64
|
-
], BasicPasswordValidationProvider);
|
|
65
|
-
export { BasicPasswordValidationProvider };
|
|
1
|
+
// tslint:disable-next-line: no-var-requires
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
import { PasswordProvider, PasswordValidationProvider } from './interfaces.js';
|
|
12
|
+
import * as argon from 'argon2';
|
|
13
|
+
import { Autoinject, Injectable } from '@spinajs/di';
|
|
14
|
+
import { Config } from '@spinajs/configuration';
|
|
15
|
+
import { DataValidator } from '@spinajs/validation';
|
|
16
|
+
import { Entropy, charset32 } from 'entropy-string';
|
|
17
|
+
/**
|
|
18
|
+
* Simple password service that use argon2 hash alghoritm and entropy-string to generate password
|
|
19
|
+
*/
|
|
20
|
+
let BasicPasswordProvider = class BasicPasswordProvider {
|
|
21
|
+
async hash(input) {
|
|
22
|
+
// uses default argon settings, no need to tweak
|
|
23
|
+
return await argon.hash(input);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
*
|
|
27
|
+
* Checks if hash is valid for given password
|
|
28
|
+
*
|
|
29
|
+
* @param hash - hash to validate
|
|
30
|
+
* @param password - password to validate
|
|
31
|
+
*/
|
|
32
|
+
async verify(hash, password) {
|
|
33
|
+
return await argon.verify(hash, password);
|
|
34
|
+
}
|
|
35
|
+
generate() {
|
|
36
|
+
// generates password with entropy of 60 bits ( balance of ease vs value )
|
|
37
|
+
const random = new Entropy({ charset: charset32 });
|
|
38
|
+
return random.string(60);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
BasicPasswordProvider = __decorate([
|
|
42
|
+
Injectable(PasswordProvider)
|
|
43
|
+
], BasicPasswordProvider);
|
|
44
|
+
export { BasicPasswordProvider };
|
|
45
|
+
/**
|
|
46
|
+
* Simple password validation service based on JSON schema validation
|
|
47
|
+
*/
|
|
48
|
+
let BasicPasswordValidationProvider = class BasicPasswordValidationProvider extends PasswordValidationProvider {
|
|
49
|
+
check(password) {
|
|
50
|
+
const [result] = this.Validator.tryValidate(this.ValidationSchema, password);
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
__decorate([
|
|
55
|
+
Config('rbac.password.validation.rule'),
|
|
56
|
+
__metadata("design:type", Object)
|
|
57
|
+
], BasicPasswordValidationProvider.prototype, "ValidationSchema", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
Autoinject(),
|
|
60
|
+
__metadata("design:type", DataValidator)
|
|
61
|
+
], BasicPasswordValidationProvider.prototype, "Validator", void 0);
|
|
62
|
+
BasicPasswordValidationProvider = __decorate([
|
|
63
|
+
Injectable(PasswordValidationProvider)
|
|
64
|
+
], BasicPasswordValidationProvider);
|
|
65
|
+
export { BasicPasswordValidationProvider };
|
|
66
66
|
//# sourceMappingURL=password.js.map
|
package/lib/mjs/password.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/password.ts"],"names":[],"mappings":"AAAA,4CAA4C;;;;;;;;;;AAE5C,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,KAAK,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACzB,KAAK,CAAC,IAAI,CAAC,KAAa;QAC7B,gDAAgD;QAChD,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,QAAgB;QAChD,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAEM,QAAQ;QACb,0EAA0E;QAC1E,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;CACF,CAAA;AAtBY,qBAAqB;IADjC,UAAU,CAAC,gBAAgB,CAAC;GAChB,qBAAqB,CAsBjC
|
|
1
|
+
{"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/password.ts"],"names":[],"mappings":"AAAA,4CAA4C;;;;;;;;;;AAE5C,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,KAAK,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACzB,KAAK,CAAC,IAAI,CAAC,KAAa;QAC7B,gDAAgD;QAChD,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,QAAgB;QAChD,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAEM,QAAQ;QACb,0EAA0E;QAC1E,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;CACF,CAAA;AAtBY,qBAAqB;IADjC,UAAU,CAAC,gBAAgB,CAAC;GAChB,qBAAqB,CAsBjC;;AAED;;GAEG;AAEI,IAAM,+BAA+B,GAArC,MAAM,+BAAgC,SAAQ,0BAA0B;IAOtE,KAAK,CAAC,QAAgB;QAC3B,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAe,CAAC,CAAC;QACpF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AATW;IADT,MAAM,CAAC,+BAA+B,CAAC;;yEACL;AAGzB;IADT,UAAU,EAAE;8BACQ,aAAa;kEAAC;AALxB,+BAA+B;IAD3C,UAAU,CAAC,0BAA0B,CAAC;GAC1B,+BAA+B,CAW3C"}
|
package/lib/mjs/session.d.ts
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { DateTime } from 'luxon';
|
|
2
|
-
import { SessionProvider, ISession } from './interfaces.js';
|
|
3
|
-
/**
|
|
4
|
-
* Session base class
|
|
5
|
-
*/
|
|
6
|
-
export declare class Session implements ISession {
|
|
7
|
-
protected SessionExpirationTime: number;
|
|
8
|
-
SessionId: string;
|
|
9
|
-
/**
|
|
10
|
-
* Expiration time for session, if null it does not expire
|
|
11
|
-
*/
|
|
12
|
-
Expiration: DateTime;
|
|
13
|
-
Data: Map<string, unknown>;
|
|
14
|
-
Creation: DateTime;
|
|
15
|
-
constructor(session?: Partial<ISession>);
|
|
16
|
-
/**
|
|
17
|
-
* Extends lifetime of session
|
|
18
|
-
*
|
|
19
|
-
* @param seconds - hom mutch to extend
|
|
20
|
-
*/
|
|
21
|
-
extend(seconds?: number): void;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Simple session storage in memory, for testing or rapid prototyping
|
|
25
|
-
*/
|
|
26
|
-
export declare class MemorySessionStore extends SessionProvider<ISession> {
|
|
27
|
-
protected Sessions: Map<string, ISession>;
|
|
28
|
-
truncate(): Promise<void>;
|
|
29
|
-
touch(session: ISession): Promise<void>;
|
|
30
|
-
restore(sessionId: string): Promise<ISession | null>;
|
|
31
|
-
delete(sessionId: string): Promise<void>;
|
|
32
|
-
save(idOrSession: ISession | string, data?: object): Promise<void>;
|
|
33
|
-
}
|
|
1
|
+
import { DateTime } from 'luxon';
|
|
2
|
+
import { SessionProvider, ISession } from './interfaces.js';
|
|
3
|
+
/**
|
|
4
|
+
* Session base class
|
|
5
|
+
*/
|
|
6
|
+
export declare class Session implements ISession {
|
|
7
|
+
protected SessionExpirationTime: number;
|
|
8
|
+
SessionId: string;
|
|
9
|
+
/**
|
|
10
|
+
* Expiration time for session, if null it does not expire
|
|
11
|
+
*/
|
|
12
|
+
Expiration: DateTime;
|
|
13
|
+
Data: Map<string, unknown>;
|
|
14
|
+
Creation: DateTime;
|
|
15
|
+
constructor(session?: Partial<ISession>);
|
|
16
|
+
/**
|
|
17
|
+
* Extends lifetime of session
|
|
18
|
+
*
|
|
19
|
+
* @param seconds - hom mutch to extend
|
|
20
|
+
*/
|
|
21
|
+
extend(seconds?: number): void;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Simple session storage in memory, for testing or rapid prototyping
|
|
25
|
+
*/
|
|
26
|
+
export declare class MemorySessionStore extends SessionProvider<ISession> {
|
|
27
|
+
protected Sessions: Map<string, ISession>;
|
|
28
|
+
truncate(): Promise<void>;
|
|
29
|
+
touch(session: ISession): Promise<void>;
|
|
30
|
+
restore(sessionId: string): Promise<ISession | null>;
|
|
31
|
+
delete(sessionId: string): Promise<void>;
|
|
32
|
+
save(idOrSession: ISession | string, data?: object): Promise<void>;
|
|
33
|
+
}
|
|
34
34
|
//# sourceMappingURL=session.d.ts.map
|
package/lib/mjs/session.js
CHANGED
|
@@ -1,95 +1,95 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { DateTime } from 'luxon';
|
|
11
|
-
import { SessionProvider } from './interfaces.js';
|
|
12
|
-
import { Injectable, NewInstance } from '@spinajs/di';
|
|
13
|
-
import { Config } from '@spinajs/configuration';
|
|
14
|
-
import { v4 as uuidv4 } from 'uuid';
|
|
15
|
-
import _ from 'lodash';
|
|
16
|
-
/**
|
|
17
|
-
* Session base class
|
|
18
|
-
*/
|
|
19
|
-
let Session = class Session {
|
|
20
|
-
constructor(session) {
|
|
21
|
-
this.SessionId = uuidv4();
|
|
22
|
-
/**
|
|
23
|
-
* Expiration time for session, if null it does not expire
|
|
24
|
-
*/
|
|
25
|
-
this.Expiration = null;
|
|
26
|
-
this.Data = new Map();
|
|
27
|
-
this.Creation = DateTime.now();
|
|
28
|
-
if (session) {
|
|
29
|
-
Object.assign(this, session);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Extends lifetime of session
|
|
34
|
-
*
|
|
35
|
-
* @param seconds - hom mutch to extend
|
|
36
|
-
*/
|
|
37
|
-
extend(seconds) {
|
|
38
|
-
this.Expiration = DateTime.now().plus({ seconds: seconds ? seconds : this.SessionExpirationTime });
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
__decorate([
|
|
42
|
-
Config('rbac.session.expiration'),
|
|
43
|
-
__metadata("design:type", Number)
|
|
44
|
-
], Session.prototype, "SessionExpirationTime", void 0);
|
|
45
|
-
Session = __decorate([
|
|
46
|
-
NewInstance(),
|
|
47
|
-
__metadata("design:paramtypes", [Object])
|
|
48
|
-
], Session);
|
|
49
|
-
export { Session };
|
|
50
|
-
/**
|
|
51
|
-
* Simple session storage in memory, for testing or rapid prototyping
|
|
52
|
-
*/
|
|
53
|
-
let MemorySessionStore = class MemorySessionStore extends SessionProvider {
|
|
54
|
-
constructor() {
|
|
55
|
-
super(...arguments);
|
|
56
|
-
this.Sessions = new Map();
|
|
57
|
-
}
|
|
58
|
-
async truncate() {
|
|
59
|
-
this.Sessions = new Map();
|
|
60
|
-
}
|
|
61
|
-
async touch(session) {
|
|
62
|
-
return this.save(session);
|
|
63
|
-
}
|
|
64
|
-
async restore(sessionId) {
|
|
65
|
-
if (this.Sessions.has(sessionId)) {
|
|
66
|
-
const session = this.Sessions.get(sessionId);
|
|
67
|
-
if (!session.Expiration || session.Expiration > DateTime.now()) {
|
|
68
|
-
return session;
|
|
69
|
-
}
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
async delete(sessionId) {
|
|
75
|
-
if (this.Sessions.has(sessionId)) {
|
|
76
|
-
this.Sessions.delete(sessionId);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
async save(idOrSession, data) {
|
|
80
|
-
if (_.isString(idOrSession)) {
|
|
81
|
-
const s = this.Sessions.get(idOrSession);
|
|
82
|
-
for (const key in data) {
|
|
83
|
-
s.Data.set(key, data[key]);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
this.Sessions.set(idOrSession.SessionId, idOrSession);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
MemorySessionStore = __decorate([
|
|
92
|
-
Injectable(SessionProvider)
|
|
93
|
-
], MemorySessionStore);
|
|
94
|
-
export { MemorySessionStore };
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { DateTime } from 'luxon';
|
|
11
|
+
import { SessionProvider } from './interfaces.js';
|
|
12
|
+
import { Injectable, NewInstance } from '@spinajs/di';
|
|
13
|
+
import { Config } from '@spinajs/configuration';
|
|
14
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
15
|
+
import _ from 'lodash';
|
|
16
|
+
/**
|
|
17
|
+
* Session base class
|
|
18
|
+
*/
|
|
19
|
+
let Session = class Session {
|
|
20
|
+
constructor(session) {
|
|
21
|
+
this.SessionId = uuidv4();
|
|
22
|
+
/**
|
|
23
|
+
* Expiration time for session, if null it does not expire
|
|
24
|
+
*/
|
|
25
|
+
this.Expiration = null;
|
|
26
|
+
this.Data = new Map();
|
|
27
|
+
this.Creation = DateTime.now();
|
|
28
|
+
if (session) {
|
|
29
|
+
Object.assign(this, session);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Extends lifetime of session
|
|
34
|
+
*
|
|
35
|
+
* @param seconds - hom mutch to extend
|
|
36
|
+
*/
|
|
37
|
+
extend(seconds) {
|
|
38
|
+
this.Expiration = DateTime.now().plus({ seconds: seconds ? seconds : this.SessionExpirationTime });
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
__decorate([
|
|
42
|
+
Config('rbac.session.expiration'),
|
|
43
|
+
__metadata("design:type", Number)
|
|
44
|
+
], Session.prototype, "SessionExpirationTime", void 0);
|
|
45
|
+
Session = __decorate([
|
|
46
|
+
NewInstance(),
|
|
47
|
+
__metadata("design:paramtypes", [Object])
|
|
48
|
+
], Session);
|
|
49
|
+
export { Session };
|
|
50
|
+
/**
|
|
51
|
+
* Simple session storage in memory, for testing or rapid prototyping
|
|
52
|
+
*/
|
|
53
|
+
let MemorySessionStore = class MemorySessionStore extends SessionProvider {
|
|
54
|
+
constructor() {
|
|
55
|
+
super(...arguments);
|
|
56
|
+
this.Sessions = new Map();
|
|
57
|
+
}
|
|
58
|
+
async truncate() {
|
|
59
|
+
this.Sessions = new Map();
|
|
60
|
+
}
|
|
61
|
+
async touch(session) {
|
|
62
|
+
return this.save(session);
|
|
63
|
+
}
|
|
64
|
+
async restore(sessionId) {
|
|
65
|
+
if (this.Sessions.has(sessionId)) {
|
|
66
|
+
const session = this.Sessions.get(sessionId);
|
|
67
|
+
if (!session.Expiration || session.Expiration > DateTime.now()) {
|
|
68
|
+
return session;
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
async delete(sessionId) {
|
|
75
|
+
if (this.Sessions.has(sessionId)) {
|
|
76
|
+
this.Sessions.delete(sessionId);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async save(idOrSession, data) {
|
|
80
|
+
if (_.isString(idOrSession)) {
|
|
81
|
+
const s = this.Sessions.get(idOrSession);
|
|
82
|
+
for (const key in data) {
|
|
83
|
+
s.Data.set(key, data[key]);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this.Sessions.set(idOrSession.SessionId, idOrSession);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
MemorySessionStore = __decorate([
|
|
92
|
+
Injectable(SessionProvider)
|
|
93
|
+
], MemorySessionStore);
|
|
94
|
+
export { MemorySessionStore };
|
|
95
95
|
//# sourceMappingURL=session.js.map
|
package/lib/mjs/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,eAAe,EAAY,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB;;GAEG;AAEI,IAAM,OAAO,GAAb,MAAM,OAAO;IAelB,YAAY,OAA2B;QAXhC,cAAS,GAAW,MAAM,EAAE,CAAC;QAEpC;;WAEG;QACI,eAAU,GAAa,IAAI,CAAC;QAE5B,SAAI,GAAyB,IAAI,GAAG,EAAE,CAAC;QAEvC,aAAQ,GAAa,QAAQ,CAAC,GAAG,EAAE,CAAC;QAGzC,IAAI,OAAO,EAAE;YACX,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC9B;IACH,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,OAAgB;QAC5B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACrG,CAAC;CACF,CAAA;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
|