@spinajs/rbac 2.0.38 → 2.0.45
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/auth.d.ts +10 -3
- package/lib/auth.js +64 -8
- package/lib/auth.js.map +1 -1
- package/lib/cli/ActivateUser.d.ts +8 -0
- package/lib/cli/ActivateUser.js +48 -0
- package/lib/cli/ActivateUser.js.map +1 -0
- package/lib/cli/BanUser.d.ts +8 -0
- package/lib/cli/BanUser.js +64 -0
- package/lib/cli/BanUser.js.map +1 -0
- package/lib/cli/ChangePassword.d.ts +0 -0
- package/lib/cli/ChangePassword.js +1 -0
- package/lib/cli/ChangePassword.js.map +1 -0
- package/lib/cli/ChangeUserPassword.d.ts +11 -0
- package/lib/cli/ChangeUserPassword.js +59 -0
- package/lib/cli/ChangeUserPassword.js.map +1 -0
- package/lib/cli/ClearUserTimelineSchedule.d.ts +8 -0
- package/lib/cli/ClearUserTimelineSchedule.js +55 -0
- package/lib/cli/ClearUserTimelineSchedule.js.map +1 -0
- package/lib/cli/CreateUser.d.ts +17 -0
- package/lib/cli/CreateUser.js +72 -0
- package/lib/cli/CreateUser.js.map +1 -0
- package/lib/cli/DeleteUser.d.ts +8 -0
- package/lib/cli/DeleteUser.js +41 -0
- package/lib/cli/DeleteUser.js.map +1 -0
- package/lib/cli/Find.d.ts +12 -0
- package/lib/cli/Find.js +45 -0
- package/lib/cli/Find.js.map +1 -0
- package/lib/cli/FindUser.d.ts +12 -0
- package/lib/cli/FindUser.js +45 -0
- package/lib/cli/FindUser.js.map +1 -0
- package/lib/cli/GrantUserRole.d.ts +8 -0
- package/lib/cli/GrantUserRole.js +48 -0
- package/lib/cli/GrantUserRole.js.map +1 -0
- package/lib/cli/LatestUserEvents.d.ts +6 -0
- package/lib/cli/LatestUserEvents.js +38 -0
- package/lib/cli/LatestUserEvents.js.map +1 -0
- package/lib/cli/RevokeUserRole.d.ts +8 -0
- package/lib/cli/RevokeUserRole.js +47 -0
- package/lib/cli/RevokeUserRole.js.map +1 -0
- package/lib/cli/UnbanUserSchedule.d.ts +8 -0
- package/lib/cli/UnbanUserSchedule.js +55 -0
- package/lib/cli/UnbanUserSchedule.js.map +1 -0
- package/lib/config/rbac.js +67 -2
- package/lib/config/rbac.js.map +1 -1
- package/lib/events/NewUser.d.ts +12 -0
- package/lib/events/NewUser.js +17 -0
- package/lib/events/NewUser.js.map +1 -0
- package/lib/events/UserActivated.d.ts +5 -0
- package/lib/events/UserActivated.js +25 -0
- package/lib/events/UserActivated.js.map +1 -0
- package/lib/events/UserBanned.d.ts +6 -0
- package/lib/events/UserBanned.js +26 -0
- package/lib/events/UserBanned.js.map +1 -0
- package/lib/events/UserDeactivated.d.ts +5 -0
- package/lib/events/UserDeactivated.js +25 -0
- package/lib/events/UserDeactivated.js.map +1 -0
- package/lib/events/UserDeleted.d.ts +5 -0
- package/lib/events/UserDeleted.js +25 -0
- package/lib/events/UserDeleted.js.map +1 -0
- package/lib/events/UserMetadataAdded.d.ts +5 -0
- package/lib/events/UserMetadataAdded.js +25 -0
- package/lib/events/UserMetadataAdded.js.map +1 -0
- package/lib/events/UserMetadataChanged.d.ts +5 -0
- package/lib/events/UserMetadataChanged.js +25 -0
- package/lib/events/UserMetadataChanged.js.map +1 -0
- package/lib/events/UserMetadataDeleted.d.ts +5 -0
- package/lib/events/UserMetadataDeleted.js +25 -0
- package/lib/events/UserMetadataDeleted.js.map +1 -0
- package/lib/events/UserPasswordChanged.d.ts +5 -0
- package/lib/events/UserPasswordChanged.js +25 -0
- package/lib/events/UserPasswordChanged.js.map +1 -0
- package/lib/events/UserPropertyChange.d.ts +7 -0
- package/lib/events/UserPropertyChange.js +17 -0
- package/lib/events/UserPropertyChange.js.map +1 -0
- package/lib/events/UserPropertyChanged.d.ts +7 -0
- package/lib/events/UserPropertyChanged.js +17 -0
- package/lib/events/UserPropertyChanged.js.map +1 -0
- package/lib/events/UserRoleGranted.d.ts +6 -0
- package/lib/events/UserRoleGranted.js +26 -0
- package/lib/events/UserRoleGranted.js.map +1 -0
- package/lib/events/UserRoleRevoked.d.ts +6 -0
- package/lib/events/UserRoleRevoked.js +26 -0
- package/lib/events/UserRoleRevoked.js.map +1 -0
- package/lib/events/UserUnbanned.d.ts +5 -0
- package/lib/events/UserUnbanned.js +25 -0
- package/lib/events/UserUnbanned.js.map +1 -0
- package/lib/events/index.d.ts +13 -0
- package/lib/events/index.js +30 -0
- package/lib/events/index.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/interfaces.d.ts +151 -6
- package/lib/interfaces.js +31 -2
- package/lib/interfaces.js.map +1 -1
- package/lib/jobs/UnbanUser.d.ts +9 -0
- package/lib/jobs/UnbanUser.js +44 -0
- package/lib/jobs/UnbanUser.js.map +1 -0
- package/lib/messages/ChangedProperties.d.ts +6 -0
- package/lib/messages/ChangedProperties.js +8 -0
- package/lib/messages/ChangedProperties.js.map +1 -0
- package/lib/messages/NewUser.d.ts +14 -0
- package/lib/messages/NewUser.js +21 -0
- package/lib/messages/NewUser.js.map +1 -0
- package/lib/messages/UserActivated.d.ts +7 -0
- package/lib/messages/UserActivated.js +13 -0
- package/lib/messages/UserActivated.js.map +1 -0
- package/lib/messages/UserBanned.d.ts +7 -0
- package/lib/messages/UserBanned.js +13 -0
- package/lib/messages/UserBanned.js.map +1 -0
- package/lib/middleware.d.ts +4 -0
- package/lib/middleware.js +23 -0
- package/lib/middleware.js.map +1 -0
- package/lib/migrations/RBACInitial_2022_06_28_01_13_00.js +17 -1
- package/lib/migrations/RBACInitial_2022_06_28_01_13_00.js.map +1 -1
- package/lib/models/User.d.ts +40 -2
- package/lib/models/User.js +139 -4
- package/lib/models/User.js.map +1 -1
- package/lib/models/UserMetadata.d.ts +3 -6
- package/lib/models/UserMetadata.js +4 -12
- package/lib/models/UserMetadata.js.map +1 -1
- package/lib/models/UserTimeline.d.ts +28 -0
- package/lib/models/UserTimeline.js +47 -0
- package/lib/models/UserTimeline.js.map +1 -0
- package/lib/password.d.ts +10 -1
- package/lib/password.js +27 -1
- package/lib/password.js.map +1 -1
- package/lib/session.d.ts +3 -3
- package/lib/session.js +20 -6
- package/lib/session.js.map +1 -1
- package/package.json +12 -10
package/lib/cli/Find.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CreateUser = void 0;
|
|
13
|
+
const log_1 = require("@spinajs/log");
|
|
14
|
+
const cli_1 = require("@spinajs/cli");
|
|
15
|
+
const User_1 = require("../models/User");
|
|
16
|
+
let CreateUser = class CreateUser extends cli_1.CliCommand {
|
|
17
|
+
async execute(options) {
|
|
18
|
+
let query = null;
|
|
19
|
+
if (options.email) {
|
|
20
|
+
query = User_1.User.where('Email', 'like', `%${options.email}`);
|
|
21
|
+
}
|
|
22
|
+
if (options.login) {
|
|
23
|
+
query = User_1.User.where('Login', 'like', `%${options.login}`);
|
|
24
|
+
}
|
|
25
|
+
if (options.idOrUuid) {
|
|
26
|
+
query = User_1.User.where('Id', options.idOrUuid).orWhere('Uuid', options.idOrUuid);
|
|
27
|
+
}
|
|
28
|
+
const user = await query;
|
|
29
|
+
user.forEach((x) => {
|
|
30
|
+
this.Log.info(`User : ${x.Id}, ${x.Uuid}, email: ${x.Email}, login: ${x.Login}, active: ${x.IsActive}, banned: ${x.IsBanned}, CreatedAt: ${x.CreatedAt.toISO()}`);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
__decorate([
|
|
35
|
+
(0, log_1.Logger)('rbac'),
|
|
36
|
+
__metadata("design:type", log_1.Log)
|
|
37
|
+
], CreateUser.prototype, "Log", void 0);
|
|
38
|
+
CreateUser = __decorate([
|
|
39
|
+
(0, cli_1.Command)('rbac:user-active', 'Sets active or inactive user'),
|
|
40
|
+
(0, cli_1.Option)('-i, --idOrUuid <idOrUuid>', false, 'numeric id or uuid'),
|
|
41
|
+
(0, cli_1.Option)('-l, --login <login>', false, 'login'),
|
|
42
|
+
(0, cli_1.Option)('-e, --email <email>', false, 'email')
|
|
43
|
+
], CreateUser);
|
|
44
|
+
exports.CreateUser = CreateUser;
|
|
45
|
+
//# sourceMappingURL=Find.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Find.js","sourceRoot":"","sources":["../../src/cli/Find.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAA2C;AAC3C,sCAA2D;AAC3D,yCAAsC;AAYtC,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,gBAAU;IAIjC,KAAK,CAAC,OAAO,CAAC,OAAmB;QACtC,IAAI,KAAK,GAAG,IAAI,CAAC;QAEjB,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,KAAK,GAAG,WAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;SAC1D;QAED,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,KAAK,GAAG,WAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;SAC1D;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,KAAK,GAAG,WAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC9E;QAED,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;QAEzB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,QAAQ,aAAa,CAAC,CAAC,QAAQ,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpK,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAvBC;IADC,IAAA,YAAM,EAAC,MAAM,CAAC;8BACA,SAAG;uCAAC;AAFR,UAAU;IAJtB,IAAA,aAAO,EAAC,kBAAkB,EAAE,8BAA8B,CAAC;IAC3D,IAAA,YAAM,EAAC,2BAA2B,EAAE,KAAK,EAAE,oBAAoB,CAAC;IAChE,IAAA,YAAM,EAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,CAAC;IAC7C,IAAA,YAAM,EAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,CAAC;GACjC,UAAU,CAyBtB;AAzBY,gCAAU"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Log } from '@spinajs/log';
|
|
2
|
+
import { CliCommand } from '@spinajs/cli';
|
|
3
|
+
interface UserOption {
|
|
4
|
+
idOrUuid?: string;
|
|
5
|
+
login?: string;
|
|
6
|
+
email?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class CreateUser extends CliCommand {
|
|
9
|
+
protected Log: Log;
|
|
10
|
+
execute(options: UserOption): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CreateUser = void 0;
|
|
13
|
+
const log_1 = require("@spinajs/log");
|
|
14
|
+
const cli_1 = require("@spinajs/cli");
|
|
15
|
+
const User_1 = require("../models/User");
|
|
16
|
+
let CreateUser = class CreateUser extends cli_1.CliCommand {
|
|
17
|
+
async execute(options) {
|
|
18
|
+
let query = null;
|
|
19
|
+
if (options.email) {
|
|
20
|
+
query = User_1.User.where('Email', 'like', `%${options.email}`);
|
|
21
|
+
}
|
|
22
|
+
if (options.login) {
|
|
23
|
+
query = User_1.User.where('Login', 'like', `%${options.login}`);
|
|
24
|
+
}
|
|
25
|
+
if (options.idOrUuid) {
|
|
26
|
+
query = User_1.User.where('Id', options.idOrUuid).orWhere('Uuid', options.idOrUuid);
|
|
27
|
+
}
|
|
28
|
+
const user = await query;
|
|
29
|
+
user.forEach((x) => {
|
|
30
|
+
this.Log.info(`User : ${x.Id}, ${x.Uuid}, email: ${x.Email}, login: ${x.Login}, active: ${x.IsActive}, banned: ${x.IsBanned}, CreatedAt: ${x.CreatedAt.toISO()}`);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
__decorate([
|
|
35
|
+
(0, log_1.Logger)('rbac'),
|
|
36
|
+
__metadata("design:type", log_1.Log)
|
|
37
|
+
], CreateUser.prototype, "Log", void 0);
|
|
38
|
+
CreateUser = __decorate([
|
|
39
|
+
(0, cli_1.Command)('rbac:user-find', 'Sets active or inactive user'),
|
|
40
|
+
(0, cli_1.Option)('-i, --idOrUuid <idOrUuid>', false, 'numeric id or uuid'),
|
|
41
|
+
(0, cli_1.Option)('-l, --login <login>', false, 'login'),
|
|
42
|
+
(0, cli_1.Option)('-e, --email <email>', false, 'email')
|
|
43
|
+
], CreateUser);
|
|
44
|
+
exports.CreateUser = CreateUser;
|
|
45
|
+
//# sourceMappingURL=FindUser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FindUser.js","sourceRoot":"","sources":["../../src/cli/FindUser.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAA2C;AAC3C,sCAA2D;AAC3D,yCAAsC;AAYtC,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,gBAAU;IAIjC,KAAK,CAAC,OAAO,CAAC,OAAmB;QACtC,IAAI,KAAK,GAAG,IAAI,CAAC;QAEjB,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,KAAK,GAAG,WAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;SAC1D;QAED,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,KAAK,GAAG,WAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;SAC1D;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,KAAK,GAAG,WAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC9E;QAED,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;QAEzB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,QAAQ,aAAa,CAAC,CAAC,QAAQ,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpK,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAvBC;IADC,IAAA,YAAM,EAAC,MAAM,CAAC;8BACA,SAAG;uCAAC;AAFR,UAAU;IAJtB,IAAA,aAAO,EAAC,gBAAgB,EAAE,8BAA8B,CAAC;IACzD,IAAA,YAAM,EAAC,2BAA2B,EAAE,KAAK,EAAE,oBAAoB,CAAC;IAChE,IAAA,YAAM,EAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,CAAC;IAC7C,IAAA,YAAM,EAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,CAAC;GACjC,UAAU,CAyBtB;AAzBY,gCAAU"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { QueueClient } from '@spinajs/Queue';
|
|
2
|
+
import { Log } from '@spinajs/log';
|
|
3
|
+
import { CliCommand } from '@spinajs/cli';
|
|
4
|
+
export declare class GrantUserRole extends CliCommand {
|
|
5
|
+
protected Log: Log;
|
|
6
|
+
protected Queue: QueueClient;
|
|
7
|
+
execute(idOrUuid: string, role: string): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.GrantUserRole = void 0;
|
|
16
|
+
const Queue_1 = require("@spinajs/Queue");
|
|
17
|
+
const log_1 = require("@spinajs/log");
|
|
18
|
+
const cli_1 = require("@spinajs/cli");
|
|
19
|
+
const di_1 = require("@spinajs/di");
|
|
20
|
+
const User_1 = require("../models/User");
|
|
21
|
+
const UserRoleGranted_1 = require("../events/UserRoleGranted");
|
|
22
|
+
const exceptions_1 = require("@spinajs/exceptions");
|
|
23
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
24
|
+
let GrantUserRole = class GrantUserRole extends cli_1.CliCommand {
|
|
25
|
+
async execute(idOrUuid, role) {
|
|
26
|
+
const result = await User_1.User.where('Id', idOrUuid).orWhere('Uuid', idOrUuid).firstOrThrow(new exceptions_1.ResourceNotFound('User with given id or uuid not found in db'));
|
|
27
|
+
result.Role.push(role);
|
|
28
|
+
result.Role = lodash_1.default.uniq(result.Role);
|
|
29
|
+
await result.update();
|
|
30
|
+
this.Queue.emit(new UserRoleGranted_1.UserRoleGranted(idOrUuid, role));
|
|
31
|
+
this.Log.success(`User role granted !`);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
__decorate([
|
|
35
|
+
(0, log_1.Logger)('rbac'),
|
|
36
|
+
__metadata("design:type", log_1.Log)
|
|
37
|
+
], GrantUserRole.prototype, "Log", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
(0, di_1.Autoinject)(Queue_1.QueueClient),
|
|
40
|
+
__metadata("design:type", Queue_1.QueueClient)
|
|
41
|
+
], GrantUserRole.prototype, "Queue", void 0);
|
|
42
|
+
GrantUserRole = __decorate([
|
|
43
|
+
(0, cli_1.Command)('rbac:user-grant', 'Grants role to user'),
|
|
44
|
+
(0, cli_1.Argument)('idOrUuid', 'numeric id or uuid'),
|
|
45
|
+
(0, cli_1.Argument)('role', 'user role')
|
|
46
|
+
], GrantUserRole);
|
|
47
|
+
exports.GrantUserRole = GrantUserRole;
|
|
48
|
+
//# sourceMappingURL=GrantUserRole.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GrantUserRole.js","sourceRoot":"","sources":["../../src/cli/GrantUserRole.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0CAA6C;AAC7C,sCAA2C;AAC3C,sCAA6D;AAC7D,oCAAyC;AACzC,yCAAsC;AACtC,+DAA4D;AAC5D,oDAAuD;AACvD,oDAAuB;AAKvB,IAAa,aAAa,GAA1B,MAAa,aAAc,SAAQ,gBAAU;IAOpC,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,IAAY;QACjD,MAAM,MAAM,GAAG,MAAM,WAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,YAAY,CAAC,IAAI,6BAAgB,CAAC,4CAA4C,CAAC,CAAC,CAAC;QAE3J,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,CAAC,IAAI,GAAG,gBAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QAEtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,iCAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AAjBC;IADC,IAAA,YAAM,EAAC,MAAM,CAAC;8BACA,SAAG;0CAAC;AAGnB;IADC,IAAA,eAAU,EAAC,mBAAW,CAAC;8BACP,mBAAW;4CAAC;AALlB,aAAa;IAHzB,IAAA,aAAO,EAAC,iBAAiB,EAAE,qBAAqB,CAAC;IACjD,IAAA,cAAQ,EAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,IAAA,cAAQ,EAAC,MAAM,EAAE,WAAW,CAAC;GACjB,aAAa,CAmBzB;AAnBY,sCAAa"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.LatestUserEvents = void 0;
|
|
13
|
+
const log_1 = require("@spinajs/log");
|
|
14
|
+
const cli_1 = require("@spinajs/cli");
|
|
15
|
+
const UserTimeline_1 = require("../models/UserTimeline");
|
|
16
|
+
const User_1 = require("../models/User");
|
|
17
|
+
let LatestUserEvents = class LatestUserEvents extends cli_1.CliCommand {
|
|
18
|
+
async execute(idOrUuid, count) {
|
|
19
|
+
const user = await User_1.User.where('Id', idOrUuid)
|
|
20
|
+
.orWhere('Uuid', idOrUuid)
|
|
21
|
+
.firstOrThrow(new Error(`No user with id ${idOrUuid}`));
|
|
22
|
+
const timeline = await UserTimeline_1.UserAction.where({ User: user }).take(count).orderByDescending('CreatedAt');
|
|
23
|
+
timeline.forEach((x) => {
|
|
24
|
+
this.Log.info(`Event ${x.Action}, date: ${x.CreatedAt.toISO()}, persistent: ${x.Persistent}, data: ${x.Data}`);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, log_1.Logger)('console'),
|
|
30
|
+
__metadata("design:type", log_1.Log)
|
|
31
|
+
], LatestUserEvents.prototype, "Log", void 0);
|
|
32
|
+
LatestUserEvents = __decorate([
|
|
33
|
+
(0, cli_1.Command)('rbac:user-events', 'Shows latest user timelinet events'),
|
|
34
|
+
(0, cli_1.Argument)('idOrUuid', 'numeric id or uuid'),
|
|
35
|
+
(0, cli_1.Argument)('count', 'how many entries should we get', 10, (opt) => parseInt(opt))
|
|
36
|
+
], LatestUserEvents);
|
|
37
|
+
exports.LatestUserEvents = LatestUserEvents;
|
|
38
|
+
//# sourceMappingURL=LatestUserEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LatestUserEvents.js","sourceRoot":"","sources":["../../src/cli/LatestUserEvents.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAA2C;AAC3C,sCAA6D;AAC7D,yDAAoD;AACpD,yCAAsC;AAKtC,IAAa,gBAAgB,GAA7B,MAAa,gBAAiB,SAAQ,gBAAU;IAIvC,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,KAAa;QAClD,MAAM,IAAI,GAAG,MAAM,WAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC;aAC1C,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;aACzB,YAAY,CAAC,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE1D,MAAM,QAAQ,GAAG,MAAM,yBAAU,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAEnG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,UAAU,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACjH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAbC;IADC,IAAA,YAAM,EAAC,SAAS,CAAC;8BACH,SAAG;6CAAC;AAFR,gBAAgB;IAH5B,IAAA,aAAO,EAAC,kBAAkB,EAAE,oCAAoC,CAAC;IACjE,IAAA,cAAQ,EAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,IAAA,cAAQ,EAAC,OAAO,EAAE,gCAAgC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;GACnE,gBAAgB,CAe5B;AAfY,4CAAgB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { QueueClient } from '@spinajs/Queue';
|
|
2
|
+
import { Log } from '@spinajs/log';
|
|
3
|
+
import { CliCommand } from '@spinajs/cli';
|
|
4
|
+
export declare class RevokeUserRole extends CliCommand {
|
|
5
|
+
protected Log: Log;
|
|
6
|
+
protected Queue: QueueClient;
|
|
7
|
+
execute(idOrUuid: string, role: string): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.RevokeUserRole = void 0;
|
|
16
|
+
const Queue_1 = require("@spinajs/Queue");
|
|
17
|
+
const log_1 = require("@spinajs/log");
|
|
18
|
+
const cli_1 = require("@spinajs/cli");
|
|
19
|
+
const di_1 = require("@spinajs/di");
|
|
20
|
+
const User_1 = require("../models/User");
|
|
21
|
+
const UserRoleRevoked_1 = require("../events/UserRoleRevoked");
|
|
22
|
+
const exceptions_1 = require("@spinajs/exceptions");
|
|
23
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
24
|
+
let RevokeUserRole = class RevokeUserRole extends cli_1.CliCommand {
|
|
25
|
+
async execute(idOrUuid, role) {
|
|
26
|
+
const result = await User_1.User.where('Id', idOrUuid).orWhere('Uuid', idOrUuid).firstOrThrow(new exceptions_1.ResourceNotFound('User with given id or uuid not found in db'));
|
|
27
|
+
result.Role = lodash_1.default.remove(result.Role, role);
|
|
28
|
+
await result.update();
|
|
29
|
+
this.Queue.emit(new UserRoleRevoked_1.UserRoleRevoked(idOrUuid, role));
|
|
30
|
+
this.Log.success(`User role revoked !`);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, log_1.Logger)('rbac'),
|
|
35
|
+
__metadata("design:type", log_1.Log)
|
|
36
|
+
], RevokeUserRole.prototype, "Log", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, di_1.Autoinject)(Queue_1.QueueClient),
|
|
39
|
+
__metadata("design:type", Queue_1.QueueClient)
|
|
40
|
+
], RevokeUserRole.prototype, "Queue", void 0);
|
|
41
|
+
RevokeUserRole = __decorate([
|
|
42
|
+
(0, cli_1.Command)('rbac:user-revoke', 'Sets active or inactive user'),
|
|
43
|
+
(0, cli_1.Argument)('idOrUuid', 'numeric id or uuid'),
|
|
44
|
+
(0, cli_1.Argument)('role', 'user role')
|
|
45
|
+
], RevokeUserRole);
|
|
46
|
+
exports.RevokeUserRole = RevokeUserRole;
|
|
47
|
+
//# sourceMappingURL=RevokeUserRole.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RevokeUserRole.js","sourceRoot":"","sources":["../../src/cli/RevokeUserRole.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0CAA6C;AAC7C,sCAA2C;AAC3C,sCAA6D;AAC7D,oCAAyC;AACzC,yCAAsC;AACtC,+DAA4D;AAC5D,oDAAuD;AACvD,oDAAuB;AAKvB,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,gBAAU;IAOrC,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,IAAY;QACjD,MAAM,MAAM,GAAG,MAAM,WAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,YAAY,CAAC,IAAI,6BAAgB,CAAC,4CAA4C,CAAC,CAAC,CAAC;QAE3J,MAAM,CAAC,IAAI,GAAG,gBAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QAEtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,iCAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC1C,CAAC;CACF,CAAA;AAhBC;IADC,IAAA,YAAM,EAAC,MAAM,CAAC;8BACA,SAAG;2CAAC;AAGnB;IADC,IAAA,eAAU,EAAC,mBAAW,CAAC;8BACP,mBAAW;6CAAC;AALlB,cAAc;IAH1B,IAAA,aAAO,EAAC,kBAAkB,EAAE,8BAA8B,CAAC;IAC3D,IAAA,cAAQ,EAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,IAAA,cAAQ,EAAC,MAAM,EAAE,WAAW,CAAC;GACjB,cAAc,CAkB1B;AAlBY,wCAAc"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.UnbanUserSchedule = void 0;
|
|
13
|
+
const log_1 = require("@spinajs/log");
|
|
14
|
+
const cli_1 = require("@spinajs/cli");
|
|
15
|
+
const configuration_1 = require("@spinajs/configuration");
|
|
16
|
+
const cron_1 = require("cron");
|
|
17
|
+
const UserTimeline_1 = require("../models/UserTimeline");
|
|
18
|
+
const luxon_1 = require("luxon");
|
|
19
|
+
let UnbanUserSchedule = class UnbanUserSchedule extends cli_1.CliCommand {
|
|
20
|
+
async execute() {
|
|
21
|
+
new cron_1.CronJob(this.CronSchedule, async () => {
|
|
22
|
+
const result = await UserTimeline_1.UserAction.destroy()
|
|
23
|
+
.where('Persistent', false)
|
|
24
|
+
.andWhere('CreatedAt', '<=', luxon_1.DateTime.now().plus({
|
|
25
|
+
minutes: -this.TimelineTTL,
|
|
26
|
+
}));
|
|
27
|
+
if (result && result.RowsAffected > 0) {
|
|
28
|
+
this.Log.info(`Deleted ${result.RowsAffected} user timeline events`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
this.Log.info(`No user timeline events do delete this time`);
|
|
32
|
+
}
|
|
33
|
+
}, () => {
|
|
34
|
+
this.Log.info('rbac:cleanup-schedule stopped');
|
|
35
|
+
}, true);
|
|
36
|
+
this.Log.success(`User password changed !`);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, log_1.Logger)('rbac'),
|
|
41
|
+
__metadata("design:type", log_1.Log)
|
|
42
|
+
], UnbanUserSchedule.prototype, "Log", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, configuration_1.Config)('rbac.timeline.schedule'),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], UnbanUserSchedule.prototype, "CronSchedule", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, configuration_1.Config)('rbac.timeline.ttl'),
|
|
49
|
+
__metadata("design:type", Number)
|
|
50
|
+
], UnbanUserSchedule.prototype, "TimelineTTL", void 0);
|
|
51
|
+
UnbanUserSchedule = __decorate([
|
|
52
|
+
(0, cli_1.Command)('rbac:unban-schedule', 'Starts a schedule that automatically unbabns users')
|
|
53
|
+
], UnbanUserSchedule);
|
|
54
|
+
exports.UnbanUserSchedule = UnbanUserSchedule;
|
|
55
|
+
//# sourceMappingURL=UnbanUserSchedule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnbanUserSchedule.js","sourceRoot":"","sources":["../../src/cli/UnbanUserSchedule.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAA2C;AAC3C,sCAAmD;AACnD,0DAAgD;AAChD,+BAA+B;AAC/B,yDAAoD;AACpD,iCAAiC;AAGjC,IAAa,iBAAiB,GAA9B,MAAa,iBAAkB,SAAQ,gBAAU;IAUxC,KAAK,CAAC,OAAO;QAClB,IAAI,cAAO,CACT,IAAI,CAAC,YAAY,EACjB,KAAK,IAAI,EAAE;YACT,MAAM,MAAM,GAAG,MAAM,yBAAU,CAAC,OAAO,EAAE;iBACtC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC;iBAC1B,QAAQ,CACP,WAAW,EACX,IAAI,EACJ,gBAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;gBAClB,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW;aAC3B,CAAC,CACH,CAAC;YAEJ,IAAI,MAAM,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE;gBACrC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,YAAY,uBAAuB,CAAC,CAAC;aACtE;iBAAM;gBACL,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;aAC9D;QACH,CAAC,EACD,GAAG,EAAE;YACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACjD,CAAC,EACD,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC9C,CAAC;CACF,CAAA;AApCC;IADC,IAAA,YAAM,EAAC,MAAM,CAAC;8BACA,SAAG;8CAAC;AAGnB;IADC,IAAA,sBAAM,EAAC,wBAAwB,CAAC;;uDACF;AAG/B;IADC,IAAA,sBAAM,EAAC,mBAAmB,CAAC;;sDACE;AARnB,iBAAiB;IAD7B,IAAA,aAAO,EAAC,qBAAqB,EAAE,oDAAoD,CAAC;GACxE,iBAAiB,CAsC7B;AAtCY,8CAAiB"}
|
package/lib/config/rbac.js
CHANGED
|
@@ -7,11 +7,48 @@ function dir(path) {
|
|
|
7
7
|
module.exports = {
|
|
8
8
|
system: {
|
|
9
9
|
dirs: {
|
|
10
|
-
|
|
11
|
-
models: [dir('./../models')],
|
|
10
|
+
cli: [dir('./../cli')],
|
|
12
11
|
},
|
|
13
12
|
},
|
|
13
|
+
queue: {
|
|
14
|
+
routing: {
|
|
15
|
+
NewUser: { connection: 'rbac-user-empty-queue' },
|
|
16
|
+
UserActivated: { connection: 'rbac-user-empty-queue' },
|
|
17
|
+
UserBanned: { connection: 'rbac-user-empty-queue' },
|
|
18
|
+
UserDeactivated: { connection: 'rbac-user-empty-queue' },
|
|
19
|
+
UserDeleted: { connection: 'rbac-user-empty-queue' },
|
|
20
|
+
UserLoginFailed: { connection: 'rbac-user-empty-queue' },
|
|
21
|
+
UserMetadataAdded: { connection: 'rbac-user-empty-queue' },
|
|
22
|
+
UserMetadataChanged: { connection: 'rbac-user-empty-queue' },
|
|
23
|
+
UserMetadataDeleted: { connection: 'rbac-user-empty-queue' },
|
|
24
|
+
UserPropertyChanged: { connection: 'rbac-user-empty-queue' },
|
|
25
|
+
UserUnbanned: { connection: 'rbac-user-empty-queue' },
|
|
26
|
+
UserPasswordChanged: { connection: 'rbac-user-empty-queue' },
|
|
27
|
+
UserRoleGranted: { connection: 'rbac-user-empty-queue' },
|
|
28
|
+
UserRoleRevoked: { connection: 'rbac-user-empty-queue' },
|
|
29
|
+
},
|
|
30
|
+
// by default all events from rbac module are routed to rbac-user-empty-queue
|
|
31
|
+
// and is using empty sink ( no events are sent )
|
|
32
|
+
connections: [
|
|
33
|
+
{
|
|
34
|
+
name: 'rbac-user-empty-queue',
|
|
35
|
+
service: 'BlackHoleQueueClient',
|
|
36
|
+
defaultQueueChannel: 'rbac-jobs',
|
|
37
|
+
defaultTopicChannel: 'rbac-events',
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
},
|
|
14
41
|
rbac: {
|
|
42
|
+
timeline: {
|
|
43
|
+
schedule: '1 0 */1 * *',
|
|
44
|
+
ttl: 24 * 60,
|
|
45
|
+
},
|
|
46
|
+
users: {
|
|
47
|
+
// when user is created, should he confirm email
|
|
48
|
+
// if false, user is acvite at creation,
|
|
49
|
+
// when true, first, user will be sent confirmation email
|
|
50
|
+
emailConfimationOnCreation: false,
|
|
51
|
+
},
|
|
15
52
|
// default roles to manage users & guest account
|
|
16
53
|
roles: [
|
|
17
54
|
{
|
|
@@ -43,8 +80,36 @@ module.exports = {
|
|
|
43
80
|
},
|
|
44
81
|
},
|
|
45
82
|
defaultRole: 'guest',
|
|
83
|
+
auth: {
|
|
84
|
+
service: 'SimpleDbAuthProvider',
|
|
85
|
+
},
|
|
86
|
+
password: {
|
|
87
|
+
service: 'BasicPasswordProvider',
|
|
88
|
+
validation: {
|
|
89
|
+
service: 'BasicPasswordValidationProvider',
|
|
90
|
+
rule: {
|
|
91
|
+
// UNCOMMENT ONE OF BELOW OR MODIFY
|
|
92
|
+
// VALIDATION RULE IS JSON SCHEMA
|
|
93
|
+
// Minimum eight characters, at least one letter and one number
|
|
94
|
+
pattern: '^(?=.*[A-Za-z])(?=.*d)[A-Za-zd]{8,}$',
|
|
95
|
+
// Minimum eight characters, at least one letter, one number and one special character:
|
|
96
|
+
// pattern: '^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$',
|
|
97
|
+
// Minimum eight characters, at least one uppercase letter, one lowercase letter and one number
|
|
98
|
+
// pattern: '^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$',
|
|
99
|
+
// Minimum eight characters, at least one uppercase letter, one lowercase letter and one number
|
|
100
|
+
// pattern: '^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$',
|
|
101
|
+
type: 'string',
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
/**
|
|
105
|
+
* Should password expire after some time ?
|
|
106
|
+
*/
|
|
107
|
+
passwordExpirationTime: 0,
|
|
108
|
+
},
|
|
46
109
|
session: {
|
|
110
|
+
service: 'MemorySessionStore',
|
|
47
111
|
// 2h session expiration time
|
|
112
|
+
// time in minutes
|
|
48
113
|
expiration: 120,
|
|
49
114
|
},
|
|
50
115
|
},
|
package/lib/config/rbac.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rbac.js","sourceRoot":"","sources":["../../src/config/rbac.ts"],"names":[],"mappings":";;AAAA,+BAAgD;AAEhD,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,IAAA,cAAO,EAAC,IAAA,gBAAS,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,
|
|
1
|
+
{"version":3,"file":"rbac.js","sourceRoot":"","sources":["../../src/config/rbac.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { QueueEvent } from '@spinajs/queue';
|
|
2
|
+
import { DateTime } from 'luxon';
|
|
3
|
+
export declare class UserRegisteredMessage extends QueueEvent {
|
|
4
|
+
Uuid: string;
|
|
5
|
+
Email: string;
|
|
6
|
+
Login: string;
|
|
7
|
+
Role: string[];
|
|
8
|
+
RegisteredAt: DateTime;
|
|
9
|
+
IsBanned: boolean;
|
|
10
|
+
IsActive: boolean;
|
|
11
|
+
Metadata: {};
|
|
12
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.UserRegisteredMessage = void 0;
|
|
10
|
+
const queue_1 = require("@spinajs/queue");
|
|
11
|
+
let UserRegisteredMessage = class UserRegisteredMessage extends queue_1.QueueEvent {
|
|
12
|
+
};
|
|
13
|
+
UserRegisteredMessage = __decorate([
|
|
14
|
+
(0, queue_1.Event)()
|
|
15
|
+
], UserRegisteredMessage);
|
|
16
|
+
exports.UserRegisteredMessage = UserRegisteredMessage;
|
|
17
|
+
//# sourceMappingURL=NewUser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewUser.js","sourceRoot":"","sources":["../../src/events/NewUser.ts"],"names":[],"mappings":";;;;;;;;;AAAA,0CAAmD;AAInD,IAAa,qBAAqB,GAAlC,MAAa,qBAAsB,SAAQ,kBAAU;CAgBpD,CAAA;AAhBY,qBAAqB;IADjC,IAAA,aAAK,GAAE;GACK,qBAAqB,CAgBjC;AAhBY,sDAAqB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.UserActivated = void 0;
|
|
13
|
+
const queue_1 = require("@spinajs/queue");
|
|
14
|
+
let UserActivated = class UserActivated extends queue_1.QueueEvent {
|
|
15
|
+
constructor(UserUUID) {
|
|
16
|
+
super();
|
|
17
|
+
this.UserUUID = UserUUID;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
UserActivated = __decorate([
|
|
21
|
+
(0, queue_1.Event)(),
|
|
22
|
+
__metadata("design:paramtypes", [String])
|
|
23
|
+
], UserActivated);
|
|
24
|
+
exports.UserActivated = UserActivated;
|
|
25
|
+
//# sourceMappingURL=UserActivated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserActivated.js","sourceRoot":"","sources":["../../src/events/UserActivated.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAmD;AAGnD,IAAa,aAAa,GAA1B,MAAa,aAAc,SAAQ,kBAAU;IAC3C,YAAmB,QAAgB;QACjC,KAAK,EAAE,CAAC;QADS,aAAQ,GAAR,QAAQ,CAAQ;IAEnC,CAAC;CACF,CAAA;AAJY,aAAa;IADzB,IAAA,aAAK,GAAE;;GACK,aAAa,CAIzB;AAJY,sCAAa"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.UserBanned = void 0;
|
|
13
|
+
const queue_1 = require("@spinajs/queue");
|
|
14
|
+
let UserBanned = class UserBanned extends queue_1.QueueEvent {
|
|
15
|
+
constructor(UserUUID, duration) {
|
|
16
|
+
super();
|
|
17
|
+
this.UserUUID = UserUUID;
|
|
18
|
+
this.duration = duration;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
UserBanned = __decorate([
|
|
22
|
+
(0, queue_1.Event)(),
|
|
23
|
+
__metadata("design:paramtypes", [String, Number])
|
|
24
|
+
], UserBanned);
|
|
25
|
+
exports.UserBanned = UserBanned;
|
|
26
|
+
//# sourceMappingURL=UserBanned.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserBanned.js","sourceRoot":"","sources":["../../src/events/UserBanned.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAmD;AAGnD,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,kBAAU;IACxC,YAAmB,QAAgB,EAAS,QAAgB;QAC1D,KAAK,EAAE,CAAC;QADS,aAAQ,GAAR,QAAQ,CAAQ;QAAS,aAAQ,GAAR,QAAQ,CAAQ;IAE5D,CAAC;CACF,CAAA;AAJY,UAAU;IADtB,IAAA,aAAK,GAAE;;GACK,UAAU,CAItB;AAJY,gCAAU"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.UserDeactivated = void 0;
|
|
13
|
+
const queue_1 = require("@spinajs/queue");
|
|
14
|
+
let UserDeactivated = class UserDeactivated extends queue_1.QueueEvent {
|
|
15
|
+
constructor(UserUUID) {
|
|
16
|
+
super();
|
|
17
|
+
this.UserUUID = UserUUID;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
UserDeactivated = __decorate([
|
|
21
|
+
(0, queue_1.Event)(),
|
|
22
|
+
__metadata("design:paramtypes", [String])
|
|
23
|
+
], UserDeactivated);
|
|
24
|
+
exports.UserDeactivated = UserDeactivated;
|
|
25
|
+
//# sourceMappingURL=UserDeactivated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserDeactivated.js","sourceRoot":"","sources":["../../src/events/UserDeactivated.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAmD;AAGnD,IAAa,eAAe,GAA5B,MAAa,eAAgB,SAAQ,kBAAU;IAC7C,YAAmB,QAAgB;QACjC,KAAK,EAAE,CAAC;QADS,aAAQ,GAAR,QAAQ,CAAQ;IAEnC,CAAC;CACF,CAAA;AAJY,eAAe;IAD3B,IAAA,aAAK,GAAE;;GACK,eAAe,CAI3B;AAJY,0CAAe"}
|