@spinajs/rbac 2.0.46 → 2.0.50
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/README.md +11 -11
- package/lib/auth.d.ts +3 -2
- package/lib/auth.d.ts.map +1 -0
- package/lib/auth.js +24 -24
- package/lib/auth.js.map +1 -1
- package/lib/cli/ActivateUser.d.ts +1 -0
- package/lib/cli/ActivateUser.d.ts.map +1 -0
- package/lib/cli/ActivateUser.js +18 -21
- package/lib/cli/ActivateUser.js.map +1 -1
- package/lib/cli/BanUser.d.ts +1 -0
- package/lib/cli/BanUser.d.ts.map +1 -0
- package/lib/cli/BanUser.js +26 -29
- package/lib/cli/BanUser.js.map +1 -1
- package/lib/cli/ChangeUserPassword.d.ts +2 -1
- package/lib/cli/ChangeUserPassword.d.ts.map +1 -0
- package/lib/cli/ChangeUserPassword.js +26 -29
- package/lib/cli/ChangeUserPassword.js.map +1 -1
- package/lib/cli/ClearUserTimelineSchedule.d.ts +1 -0
- package/lib/cli/ClearUserTimelineSchedule.d.ts.map +1 -0
- package/lib/cli/ClearUserTimelineSchedule.js +16 -19
- package/lib/cli/ClearUserTimelineSchedule.js.map +1 -1
- package/lib/cli/CreateUser.d.ts +2 -1
- package/lib/cli/CreateUser.d.ts.map +1 -0
- package/lib/cli/CreateUser.js +27 -30
- package/lib/cli/CreateUser.js.map +1 -1
- package/lib/cli/DeleteUser.d.ts +1 -0
- package/lib/cli/DeleteUser.d.ts.map +1 -0
- package/lib/cli/DeleteUser.js +17 -20
- package/lib/cli/DeleteUser.js.map +1 -1
- package/lib/cli/FindUser.d.ts +1 -0
- package/lib/cli/FindUser.d.ts.map +1 -0
- package/lib/cli/FindUser.js +14 -17
- package/lib/cli/FindUser.js.map +1 -1
- package/lib/cli/GrantUserRole.d.ts +1 -0
- package/lib/cli/GrantUserRole.d.ts.map +1 -0
- package/lib/cli/GrantUserRole.js +20 -26
- package/lib/cli/GrantUserRole.js.map +1 -1
- package/lib/cli/LatestUserEvents.d.ts +1 -0
- package/lib/cli/LatestUserEvents.d.ts.map +1 -0
- package/lib/cli/LatestUserEvents.js +13 -16
- package/lib/cli/LatestUserEvents.js.map +1 -1
- package/lib/cli/RevokeUserRole.d.ts +1 -0
- package/lib/cli/RevokeUserRole.d.ts.map +1 -0
- package/lib/cli/RevokeUserRole.js +20 -26
- package/lib/cli/RevokeUserRole.js.map +1 -1
- package/lib/cli/UnbanUserSchedule.d.ts +1 -0
- package/lib/cli/UnbanUserSchedule.d.ts.map +1 -0
- package/lib/cli/UnbanUserSchedule.js +16 -19
- package/lib/cli/UnbanUserSchedule.js.map +1 -1
- package/lib/config/rbac.d.ts +1 -0
- package/lib/config/rbac.d.ts.map +1 -0
- package/lib/config/rbac.js +2 -4
- package/lib/config/rbac.js.map +1 -1
- package/lib/events/NewUser.d.ts +1 -0
- package/lib/events/NewUser.d.ts.map +1 -0
- package/lib/events/NewUser.js +4 -7
- package/lib/events/NewUser.js.map +1 -1
- package/lib/events/UserActivated.d.ts +1 -0
- package/lib/events/UserActivated.d.ts.map +1 -0
- package/lib/events/UserActivated.js +4 -7
- package/lib/events/UserActivated.js.map +1 -1
- package/lib/events/UserBanned.d.ts +1 -0
- package/lib/events/UserBanned.d.ts.map +1 -0
- package/lib/events/UserBanned.js +4 -7
- package/lib/events/UserBanned.js.map +1 -1
- package/lib/events/UserDeactivated.d.ts +1 -0
- package/lib/events/UserDeactivated.d.ts.map +1 -0
- package/lib/events/UserDeactivated.js +4 -7
- package/lib/events/UserDeactivated.js.map +1 -1
- package/lib/events/UserDeleted.d.ts +1 -0
- package/lib/events/UserDeleted.d.ts.map +1 -0
- package/lib/events/UserDeleted.js +4 -7
- package/lib/events/UserDeleted.js.map +1 -1
- package/lib/events/UserMetadataAdded.d.ts +1 -0
- package/lib/events/UserMetadataAdded.d.ts.map +1 -0
- package/lib/events/UserMetadataAdded.js +4 -7
- package/lib/events/UserMetadataAdded.js.map +1 -1
- package/lib/events/UserMetadataChanged.d.ts +1 -0
- package/lib/events/UserMetadataChanged.d.ts.map +1 -0
- package/lib/events/UserMetadataChanged.js +4 -7
- package/lib/events/UserMetadataChanged.js.map +1 -1
- package/lib/events/UserMetadataDeleted.d.ts +1 -0
- package/lib/events/UserMetadataDeleted.d.ts.map +1 -0
- package/lib/events/UserMetadataDeleted.js +4 -7
- package/lib/events/UserMetadataDeleted.js.map +1 -1
- package/lib/events/UserPasswordChanged.d.ts +1 -0
- package/lib/events/UserPasswordChanged.d.ts.map +1 -0
- package/lib/events/UserPasswordChanged.js +4 -7
- package/lib/events/UserPasswordChanged.js.map +1 -1
- package/lib/events/UserPropertyChanged.d.ts +1 -0
- package/lib/events/UserPropertyChanged.d.ts.map +1 -0
- package/lib/events/UserPropertyChanged.js +4 -7
- package/lib/events/UserPropertyChanged.js.map +1 -1
- package/lib/events/UserRoleGranted.d.ts +1 -0
- package/lib/events/UserRoleGranted.d.ts.map +1 -0
- package/lib/events/UserRoleGranted.js +4 -7
- package/lib/events/UserRoleGranted.js.map +1 -1
- package/lib/events/UserRoleRevoked.d.ts +1 -0
- package/lib/events/UserRoleRevoked.d.ts.map +1 -0
- package/lib/events/UserRoleRevoked.js +4 -7
- package/lib/events/UserRoleRevoked.js.map +1 -1
- package/lib/events/UserUnbanned.d.ts +1 -0
- package/lib/events/UserUnbanned.d.ts.map +1 -0
- package/lib/events/UserUnbanned.js +4 -7
- package/lib/events/UserUnbanned.js.map +1 -1
- package/lib/events/index.d.ts +14 -13
- package/lib/events/index.d.ts.map +1 -0
- package/lib/events/index.js +13 -29
- package/lib/events/index.js.map +1 -1
- package/lib/index.d.ts +13 -12
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +21 -39
- package/lib/index.js.map +1 -1
- package/lib/interfaces.d.ts +2 -1
- package/lib/interfaces.d.ts.map +1 -0
- package/lib/interfaces.js +8 -16
- package/lib/interfaces.js.map +1 -1
- package/lib/jobs/UnbanUser.d.ts +1 -0
- package/lib/jobs/UnbanUser.d.ts.map +1 -0
- package/lib/jobs/UnbanUser.js +14 -17
- package/lib/jobs/UnbanUser.js.map +1 -1
- package/lib/middleware.d.ts +1 -0
- package/lib/middleware.d.ts.map +1 -0
- package/lib/middleware.js +6 -9
- package/lib/middleware.js.map +1 -1
- package/lib/migrations/RBACInitial_2022_06_28_01_13_00.d.ts +1 -0
- package/lib/migrations/RBACInitial_2022_06_28_01_13_00.d.ts.map +1 -0
- package/lib/migrations/RBACInitial_2022_06_28_01_13_00.js +4 -7
- package/lib/migrations/RBACInitial_2022_06_28_01_13_00.js.map +1 -1
- package/lib/models/User.d.ts +4 -4
- package/lib/models/User.d.ts.map +1 -0
- package/lib/models/User.js +33 -37
- package/lib/models/User.js.map +1 -1
- package/lib/models/UserMetadata.d.ts +2 -1
- package/lib/models/UserMetadata.d.ts.map +1 -0
- package/lib/models/UserMetadata.js +9 -12
- package/lib/models/UserMetadata.js.map +1 -1
- package/lib/models/UserTimeline.d.ts +2 -1
- package/lib/models/UserTimeline.d.ts.map +1 -0
- package/lib/models/UserTimeline.js +11 -14
- package/lib/models/UserTimeline.js.map +1 -1
- package/lib/password.d.ts +2 -1
- package/lib/password.d.ts.map +1 -0
- package/lib/password.js +15 -41
- package/lib/password.js.map +1 -1
- package/lib/session.d.ts +2 -1
- package/lib/session.d.ts.map +1 -0
- package/lib/session.js +17 -23
- package/lib/session.js.map +1 -1
- package/package.json +64 -60
- package/lib/cli/ChangePassword.d.ts +0 -0
- package/lib/cli/ChangePassword.js +0 -1
- package/lib/cli/ChangePassword.js.map +0 -1
- package/lib/cli/Find.d.ts +0 -12
- package/lib/cli/Find.js +0 -45
- package/lib/cli/Find.js.map +0 -1
- package/lib/events/UserPropertyChange.d.ts +0 -7
- package/lib/events/UserPropertyChange.js +0 -17
- package/lib/events/UserPropertyChange.js.map +0 -1
- package/lib/messages/ChangedProperties.d.ts +0 -6
- package/lib/messages/ChangedProperties.js +0 -8
- package/lib/messages/ChangedProperties.js.map +0 -1
- package/lib/messages/NewUser.d.ts +0 -14
- package/lib/messages/NewUser.js +0 -21
- package/lib/messages/NewUser.js.map +0 -1
- package/lib/messages/UserActivated.d.ts +0 -7
- package/lib/messages/UserActivated.js +0 -13
- package/lib/messages/UserActivated.js.map +0 -1
- package/lib/messages/UserBanned.d.ts +0 -7
- package/lib/messages/UserBanned.js +0 -13
- package/lib/messages/UserBanned.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# `rbac`
|
|
2
|
-
|
|
3
|
-
> TODO: description
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
const rbac = require('rbac');
|
|
9
|
-
|
|
10
|
-
// TODO: DEMONSTRATE API
|
|
11
|
-
```
|
|
1
|
+
# `rbac`
|
|
2
|
+
|
|
3
|
+
> TODO: description
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
const rbac = require('rbac');
|
|
9
|
+
|
|
10
|
+
// TODO: DEMONSTRATE API
|
|
11
|
+
```
|
package/lib/auth.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AuthProvider, IAuthenticationResult, PasswordProvider } from './interfaces';
|
|
2
|
-
import { User } from './models/User';
|
|
1
|
+
import { AuthProvider, IAuthenticationResult, PasswordProvider } from './interfaces.js';
|
|
2
|
+
import { User } from './models/User.js';
|
|
3
3
|
import { IContainer } from '@spinajs/di';
|
|
4
4
|
export declare class SimpleDbAuthProvider implements AuthProvider<User> {
|
|
5
5
|
protected Container: IContainer;
|
|
@@ -13,3 +13,4 @@ export declare class SimpleDbAuthProvider implements AuthProvider<User> {
|
|
|
13
13
|
isActive(email: string): Promise<boolean>;
|
|
14
14
|
isDeleted(email: string): Promise<boolean>;
|
|
15
15
|
}
|
|
16
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACjH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAyB,UAAU,EAAc,MAAM,aAAa,CAAC;AAG5E,qBACa,oBAAqB,YAAW,YAAY,CAAC,IAAI,CAAC;IAE7D,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IAGhC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAEhC,MAAM,CAAC,WAAW,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASpD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAgDnF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMzC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAIxD"}
|
package/lib/auth.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,37 +7,35 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const di_1 = require("@spinajs/di");
|
|
16
|
-
const configuration_1 = require("@spinajs/configuration");
|
|
10
|
+
import { AthenticationErrorCodes, AuthProvider, PasswordProvider } from './interfaces.js';
|
|
11
|
+
import { User } from './models/User.js';
|
|
12
|
+
import { Autoinject, Container, Injectable } from '@spinajs/di';
|
|
13
|
+
import { AutoinjectService } from '@spinajs/configuration';
|
|
17
14
|
let SimpleDbAuthProvider = class SimpleDbAuthProvider {
|
|
18
15
|
async exists(userOrEmail) {
|
|
19
|
-
const result = await
|
|
16
|
+
const result = await User.where('Email', userOrEmail instanceof User ? userOrEmail.Email : userOrEmail).first();
|
|
20
17
|
if (result) {
|
|
21
18
|
return true;
|
|
22
19
|
}
|
|
23
20
|
return false;
|
|
24
21
|
}
|
|
25
22
|
async getByLogin(login) {
|
|
26
|
-
const result = await
|
|
23
|
+
const result = await User.where('Login', login).first();
|
|
27
24
|
return result;
|
|
28
25
|
}
|
|
29
26
|
async getByEmail(email) {
|
|
30
|
-
const result = await
|
|
27
|
+
const result = await User.where('Email', email).first();
|
|
31
28
|
return result;
|
|
32
29
|
}
|
|
33
30
|
async getByUUID(uuid) {
|
|
34
|
-
const result = await
|
|
31
|
+
const result = await User.where('Uuid', uuid).first();
|
|
35
32
|
return result;
|
|
36
33
|
}
|
|
37
34
|
async authenticate(email, password) {
|
|
38
|
-
const result = await
|
|
35
|
+
const result = await User.where({ Email: email, DeletedAt: null }).first();
|
|
39
36
|
const eInvalidCredentials = {
|
|
40
37
|
Error: {
|
|
41
|
-
Code:
|
|
38
|
+
Code: AthenticationErrorCodes.E_INVALID_CREDENTIALS,
|
|
42
39
|
Message: 'Invalid user credentials, or user not exist.',
|
|
43
40
|
},
|
|
44
41
|
};
|
|
@@ -51,13 +48,16 @@ let SimpleDbAuthProvider = class SimpleDbAuthProvider {
|
|
|
51
48
|
}
|
|
52
49
|
const valid = await this.PasswordProvider.verify(result.Password, password);
|
|
53
50
|
if (!valid) {
|
|
54
|
-
return
|
|
51
|
+
return {
|
|
52
|
+
User: undefined,
|
|
53
|
+
...eInvalidCredentials,
|
|
54
|
+
};
|
|
55
55
|
}
|
|
56
56
|
if (result.IsBanned) {
|
|
57
57
|
return {
|
|
58
58
|
User: result,
|
|
59
59
|
Error: {
|
|
60
|
-
Code:
|
|
60
|
+
Code: AthenticationErrorCodes.E_USER_BANNED,
|
|
61
61
|
},
|
|
62
62
|
};
|
|
63
63
|
}
|
|
@@ -65,7 +65,7 @@ let SimpleDbAuthProvider = class SimpleDbAuthProvider {
|
|
|
65
65
|
return {
|
|
66
66
|
User: result,
|
|
67
67
|
Error: {
|
|
68
|
-
Code:
|
|
68
|
+
Code: AthenticationErrorCodes.E_USER_NOT_ACTIVE,
|
|
69
69
|
},
|
|
70
70
|
};
|
|
71
71
|
}
|
|
@@ -74,28 +74,28 @@ let SimpleDbAuthProvider = class SimpleDbAuthProvider {
|
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
76
|
async isBanned(email) {
|
|
77
|
-
const result = await
|
|
77
|
+
const result = await User.where({ Email: email, IsBanned: true }).first();
|
|
78
78
|
return result !== null;
|
|
79
79
|
}
|
|
80
80
|
async isActive(email) {
|
|
81
|
-
const result = await
|
|
81
|
+
const result = await User.where({ Email: email, IsActive: true }).first();
|
|
82
82
|
return result !== null;
|
|
83
83
|
}
|
|
84
84
|
async isDeleted(email) {
|
|
85
|
-
const result = await
|
|
85
|
+
const result = await User.where('Email', email).whereNotNull('DeletedAt').first();
|
|
86
86
|
return result !== null;
|
|
87
87
|
}
|
|
88
88
|
};
|
|
89
89
|
__decorate([
|
|
90
|
-
|
|
90
|
+
Autoinject(Container),
|
|
91
91
|
__metadata("design:type", Object)
|
|
92
92
|
], SimpleDbAuthProvider.prototype, "Container", void 0);
|
|
93
93
|
__decorate([
|
|
94
|
-
|
|
95
|
-
__metadata("design:type",
|
|
94
|
+
AutoinjectService('rbac.password'),
|
|
95
|
+
__metadata("design:type", PasswordProvider)
|
|
96
96
|
], SimpleDbAuthProvider.prototype, "PasswordProvider", void 0);
|
|
97
97
|
SimpleDbAuthProvider = __decorate([
|
|
98
|
-
|
|
98
|
+
Injectable(AuthProvider)
|
|
99
99
|
], SimpleDbAuthProvider);
|
|
100
|
-
|
|
100
|
+
export { SimpleDbAuthProvider };
|
|
101
101
|
//# sourceMappingURL=auth.js.map
|
package/lib/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivateUser.d.ts","sourceRoot":"","sources":["../../src/cli/ActivateUser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAY,UAAU,EAAW,MAAM,cAAc,CAAC;AAK7D,qBAGa,YAAa,SAAQ,UAAU;IAE1C,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;IAEhB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAavE"}
|
package/lib/cli/ActivateUser.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,21 +7,19 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
exports.ActivateUser = void 0;
|
|
13
|
-
const UserDeactivated_1 = require("./../events/UserDeactivated");
|
|
10
|
+
import { UserDeactivated } from './../events/UserDeactivated.js';
|
|
14
11
|
//import { UserBannedMessage } from './../messages/UserBanned';
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
let ActivateUser = class ActivateUser extends
|
|
12
|
+
import { QueueClient } from '@spinajs/Queue';
|
|
13
|
+
import { Log, Logger } from '@spinajs/log';
|
|
14
|
+
import { Argument, CliCommand, Command } from '@spinajs/cli';
|
|
15
|
+
import { Autoinject } from '@spinajs/di';
|
|
16
|
+
import { User } from '../models/User.js';
|
|
17
|
+
import { UserActivated } from '../events/UserActivated.js';
|
|
18
|
+
let ActivateUser = class ActivateUser extends CliCommand {
|
|
22
19
|
async execute(idOrUuid, active) {
|
|
23
|
-
const result = await
|
|
20
|
+
const result = await User.update({ IsActive: active }).where('Id', idOrUuid).orWhere('Uuid', idOrUuid);
|
|
24
21
|
if (result.RowsAffected > 0) {
|
|
25
|
-
const event = active ? new
|
|
22
|
+
const event = active ? new UserActivated(idOrUuid) : new UserDeactivated(idOrUuid);
|
|
26
23
|
this.Queue.emit(event);
|
|
27
24
|
this.Log.success(`User activation status changed to ${active}`);
|
|
28
25
|
}
|
|
@@ -32,17 +29,17 @@ let ActivateUser = class ActivateUser extends cli_1.CliCommand {
|
|
|
32
29
|
}
|
|
33
30
|
};
|
|
34
31
|
__decorate([
|
|
35
|
-
|
|
36
|
-
__metadata("design:type",
|
|
32
|
+
Logger('rbac'),
|
|
33
|
+
__metadata("design:type", Log)
|
|
37
34
|
], ActivateUser.prototype, "Log", void 0);
|
|
38
35
|
__decorate([
|
|
39
|
-
|
|
40
|
-
__metadata("design:type",
|
|
36
|
+
Autoinject(QueueClient),
|
|
37
|
+
__metadata("design:type", QueueClient)
|
|
41
38
|
], ActivateUser.prototype, "Queue", void 0);
|
|
42
39
|
ActivateUser = __decorate([
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
Command('rbac:user-activate', 'Sets active or inactive user'),
|
|
41
|
+
Argument('idOrUuid', 'numeric id or uuid'),
|
|
42
|
+
Argument('active', ' true / false', false, (opt) => (opt.toLowerCase() === 'true' ? true : false))
|
|
46
43
|
], ActivateUser);
|
|
47
|
-
|
|
44
|
+
export { ActivateUser };
|
|
48
45
|
//# sourceMappingURL=ActivateUser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivateUser.js","sourceRoot":"","sources":["../../src/cli/ActivateUser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ActivateUser.js","sourceRoot":"","sources":["../../src/cli/ActivateUser.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,+DAA+D;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAKpD,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,UAAU;IAOnC,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,MAAe;QACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEvG,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;YAEnF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEvB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,qCAAqC,MAAM,EAAE,CAAC,CAAC;SACjE;aAAM;YACL,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,QAAQ,QAAQ,CAAC,CAAC;SACrD;IACH,CAAC;CACF,CAAA;AAnBC;IAAC,MAAM,CAAC,MAAM,CAAC;8BACA,GAAG;yCAAC;AAEnB;IAAC,UAAU,CAAC,WAAW,CAAC;8BACP,WAAW;2CAAC;AALlB,YAAY;IAHxB,OAAO,CAAC,oBAAoB,EAAE,8BAA8B,CAAC;IAC7D,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;GAC9F,YAAY,CAoBxB;SApBY,YAAY"}
|
package/lib/cli/BanUser.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BanUser.d.ts","sourceRoot":"","sources":["../../src/cli/BanUser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAY,UAAU,EAAW,MAAM,cAAc,CAAC;AAQ7D,qBAIa,OAAQ,SAAQ,UAAU;IAErC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;IAEhB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA8BtF"}
|
package/lib/cli/BanUser.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,31 +7,29 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const luxon_1 = require("luxon");
|
|
23
|
-
let BanUser = class BanUser extends cli_1.CliCommand {
|
|
10
|
+
import { UserUnbanned } from './../events/UserUnbanned.js';
|
|
11
|
+
import { QueueClient } from '@spinajs/Queue';
|
|
12
|
+
import { Log, Logger } from '@spinajs/log';
|
|
13
|
+
import { Argument, CliCommand, Command } from '@spinajs/cli';
|
|
14
|
+
import { Autoinject } from '@spinajs/di';
|
|
15
|
+
import { User } from '../models/User.js';
|
|
16
|
+
import { UserBanned } from '../events/UserBanned.js';
|
|
17
|
+
import { UserMetadata } from '../models/UserMetadata.js';
|
|
18
|
+
import { UnbanUser } from '../jobs/UnbanUser.js';
|
|
19
|
+
import { DateTime } from 'luxon';
|
|
20
|
+
let BanUser = class BanUser extends CliCommand {
|
|
24
21
|
async execute(idOrUuid, ban, duration) {
|
|
25
|
-
const user = await
|
|
22
|
+
const user = await User.where('Id', idOrUuid).orWhere('Uuid', idOrUuid).firstOrThrow(new Error('User not found'));
|
|
26
23
|
user.IsBanned = ban;
|
|
27
24
|
await user.update();
|
|
28
25
|
if (ban) {
|
|
29
26
|
await (user.Metadata['ban:duration'] = duration);
|
|
30
|
-
await (user.Metadata['ban:issued'] =
|
|
31
|
-
this.Queue.emit(new
|
|
27
|
+
await (user.Metadata['ban:issued'] = DateTime.now().toISO());
|
|
28
|
+
this.Queue.emit(new UserBanned(idOrUuid, duration));
|
|
32
29
|
if (duration !== 0) {
|
|
33
30
|
// schedule job with delay equals ban duration
|
|
34
31
|
// to automattically unban user after this time
|
|
35
|
-
const job = new
|
|
32
|
+
const job = new UnbanUser(idOrUuid);
|
|
36
33
|
job.ScheduleDelay = duration * 60 * 1000;
|
|
37
34
|
this.Queue.emit(job);
|
|
38
35
|
}
|
|
@@ -40,25 +37,25 @@ let BanUser = class BanUser extends cli_1.CliCommand {
|
|
|
40
37
|
}
|
|
41
38
|
else {
|
|
42
39
|
// cleanup meta
|
|
43
|
-
await
|
|
44
|
-
this.Queue.emit(new
|
|
40
|
+
await UserMetadata.destroy().where('Key', 'like', 'user:ban:%').andWhere('User', user);
|
|
41
|
+
this.Queue.emit(new UserUnbanned(idOrUuid));
|
|
45
42
|
this.Log.warn(`No user with id: ${idOrUuid} found`);
|
|
46
43
|
}
|
|
47
44
|
}
|
|
48
45
|
};
|
|
49
46
|
__decorate([
|
|
50
|
-
|
|
51
|
-
__metadata("design:type",
|
|
47
|
+
Logger('rbac'),
|
|
48
|
+
__metadata("design:type", Log)
|
|
52
49
|
], BanUser.prototype, "Log", void 0);
|
|
53
50
|
__decorate([
|
|
54
|
-
|
|
55
|
-
__metadata("design:type",
|
|
51
|
+
Autoinject(QueueClient),
|
|
52
|
+
__metadata("design:type", QueueClient)
|
|
56
53
|
], BanUser.prototype, "Queue", void 0);
|
|
57
54
|
BanUser = __decorate([
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
Command('rbac:user-ban', 'Sets active or inactive user'),
|
|
56
|
+
Argument('idOrUuid', 'numeric id or uuid'),
|
|
57
|
+
Argument('ban', ' true / false', false, (opt) => (opt.toLowerCase() === 'true' ? true : false)),
|
|
58
|
+
Argument('duration', 'how long should ban last ( in minutes )', 24 * 60, (opt) => parseInt(opt))
|
|
62
59
|
], BanUser);
|
|
63
|
-
|
|
60
|
+
export { BanUser };
|
|
64
61
|
//# sourceMappingURL=BanUser.js.map
|
package/lib/cli/BanUser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BanUser.js","sourceRoot":"","sources":["../../src/cli/BanUser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BanUser.js","sourceRoot":"","sources":["../../src/cli/BanUser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { QueueClient } from '@spinajs/Queue';
|
|
2
2
|
import { Log } from '@spinajs/log';
|
|
3
3
|
import { CliCommand } from '@spinajs/cli';
|
|
4
|
-
import { PasswordProvider, PasswordValidationProvider } from '../interfaces';
|
|
4
|
+
import { PasswordProvider, PasswordValidationProvider } from '../interfaces.js';
|
|
5
5
|
export declare class ChangeUserPassword extends CliCommand {
|
|
6
6
|
protected Log: Log;
|
|
7
7
|
protected Queue: QueueClient;
|
|
@@ -9,3 +9,4 @@ export declare class ChangeUserPassword extends CliCommand {
|
|
|
9
9
|
protected PasswordValidation: PasswordValidationProvider;
|
|
10
10
|
execute(idOrUuid: string, newPassword: string): Promise<void>;
|
|
11
11
|
}
|
|
12
|
+
//# sourceMappingURL=ChangeUserPassword.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChangeUserPassword.d.ts","sourceRoot":"","sources":["../../src/cli/ChangeUserPassword.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAY,UAAU,EAAW,MAAM,cAAc,CAAC;AAG7D,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAIhF,qBAGa,kBAAmB,SAAQ,UAAU;IAEhD,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;IAG7B,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAG7C,SAAS,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IAE5C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiB3E"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,52 +7,50 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const configuration_1 = require("@spinajs/configuration");
|
|
22
|
-
let ChangeUserPassword = class ChangeUserPassword extends cli_1.CliCommand {
|
|
10
|
+
import { ResourceNotFound, InvalidArgument } from '../../../exceptions/lib/index.js';
|
|
11
|
+
import { QueueClient } from '@spinajs/Queue';
|
|
12
|
+
import { Log, Logger } from '@spinajs/log';
|
|
13
|
+
import { Argument, CliCommand, Command } from '@spinajs/cli';
|
|
14
|
+
import { Autoinject } from '@spinajs/di';
|
|
15
|
+
import { User } from '../models/User.js';
|
|
16
|
+
import { PasswordProvider, PasswordValidationProvider } from '../interfaces.js';
|
|
17
|
+
import { UserPasswordChanged } from '../events/UserPasswordChanged.js';
|
|
18
|
+
import { AutoinjectService } from '@spinajs/configuration';
|
|
19
|
+
let ChangeUserPassword = class ChangeUserPassword extends CliCommand {
|
|
23
20
|
async execute(idOrUuid, newPassword) {
|
|
24
|
-
const user = await
|
|
21
|
+
const user = await User.where('Id', idOrUuid)
|
|
25
22
|
.orWhere('Uuid', idOrUuid)
|
|
26
|
-
.firstOrThrow(new
|
|
23
|
+
.firstOrThrow(new ResourceNotFound(`No user with id ${idOrUuid} found`));
|
|
27
24
|
if (!this.PasswordValidation.check(newPassword)) {
|
|
28
|
-
throw new
|
|
25
|
+
throw new InvalidArgument(`New password does not match password rules, change passowrd or check rbac.password.validation config entry for password rules`);
|
|
29
26
|
}
|
|
30
27
|
const hashedPassword = await this.PasswordProvider.hash(newPassword);
|
|
31
28
|
user.Password = hashedPassword;
|
|
32
29
|
await user.update();
|
|
33
|
-
await this.Queue.emit(new
|
|
30
|
+
await this.Queue.emit(new UserPasswordChanged(idOrUuid));
|
|
34
31
|
this.Log.success(`User password changed !`);
|
|
35
32
|
}
|
|
36
33
|
};
|
|
37
34
|
__decorate([
|
|
38
|
-
|
|
39
|
-
__metadata("design:type",
|
|
35
|
+
Logger('rbac'),
|
|
36
|
+
__metadata("design:type", Log)
|
|
40
37
|
], ChangeUserPassword.prototype, "Log", void 0);
|
|
41
38
|
__decorate([
|
|
42
|
-
|
|
43
|
-
__metadata("design:type",
|
|
39
|
+
Autoinject(QueueClient),
|
|
40
|
+
__metadata("design:type", QueueClient)
|
|
44
41
|
], ChangeUserPassword.prototype, "Queue", void 0);
|
|
45
42
|
__decorate([
|
|
46
|
-
|
|
47
|
-
__metadata("design:type",
|
|
43
|
+
AutoinjectService('rbac.password'),
|
|
44
|
+
__metadata("design:type", PasswordProvider)
|
|
48
45
|
], ChangeUserPassword.prototype, "PasswordProvider", void 0);
|
|
49
46
|
__decorate([
|
|
50
|
-
|
|
51
|
-
__metadata("design:type",
|
|
47
|
+
AutoinjectService('rbac.validation'),
|
|
48
|
+
__metadata("design:type", PasswordValidationProvider)
|
|
52
49
|
], ChangeUserPassword.prototype, "PasswordValidation", void 0);
|
|
53
50
|
ChangeUserPassword = __decorate([
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
Command('rbac:user-change-password', 'Sets active or inactive user'),
|
|
52
|
+
Argument('idOrUuid', 'numeric id or uuid'),
|
|
53
|
+
Argument('newPassword', 'new password')
|
|
57
54
|
], ChangeUserPassword);
|
|
58
|
-
|
|
55
|
+
export { ChangeUserPassword };
|
|
59
56
|
//# sourceMappingURL=ChangeUserPassword.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangeUserPassword.js","sourceRoot":"","sources":["../../src/cli/ChangeUserPassword.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChangeUserPassword.js","sourceRoot":"","sources":["../../src/cli/ChangeUserPassword.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAKpD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,UAAU;IAazC,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,WAAmB;QACxD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC;aAC1C,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;aACzB,YAAY,CAAC,IAAI,gBAAgB,CAAC,mBAAmB,QAAQ,QAAQ,CAAC,CAAC,CAAC;QAE3E,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YAC/C,MAAM,IAAI,eAAe,CAAC,+HAA+H,CAAC,CAAC;SAC5J;QAED,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;QAC/B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEzD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC9C,CAAC;CACF,CAAA;AA7BC;IAAC,MAAM,CAAC,MAAM,CAAC;8BACA,GAAG;+CAAC;AAEnB;IAAC,UAAU,CAAC,WAAW,CAAC;8BACP,WAAW;iDAAC;AAE7B;IAAC,iBAAiB,CAAC,eAAe,CAAC;8BACP,gBAAgB;4DAAC;AAE7C;IAAC,iBAAiB,CAAC,iBAAiB,CAAC;8BACP,0BAA0B;8DAAC;AAX9C,kBAAkB;IAH9B,OAAO,CAAC,2BAA2B,EAAE,8BAA8B,CAAC;IACpE,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;GAC3B,kBAAkB,CA8B9B;SA9BY,kBAAkB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClearUserTimelineSchedule.d.ts","sourceRoot":"","sources":["../../src/cli/ClearUserTimelineSchedule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAW,MAAM,cAAc,CAAC;AAMnD,qBACa,kBAAmB,SAAQ,UAAU;IAEhD,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAG/B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAEjB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA4BtC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,20 +7,18 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const luxon_1 = require("luxon");
|
|
19
|
-
let ChangeUserPassword = class ChangeUserPassword extends cli_1.CliCommand {
|
|
10
|
+
import { Log, Logger } from '@spinajs/log';
|
|
11
|
+
import { CliCommand, Command } from '@spinajs/cli';
|
|
12
|
+
import { Config } from '@spinajs/configuration';
|
|
13
|
+
import { CronJob } from 'cron';
|
|
14
|
+
import { UserAction } from '../models/UserTimeline.js';
|
|
15
|
+
import { DateTime } from 'luxon';
|
|
16
|
+
let ChangeUserPassword = class ChangeUserPassword extends CliCommand {
|
|
20
17
|
async execute() {
|
|
21
|
-
new
|
|
22
|
-
const result = await
|
|
18
|
+
new CronJob(this.CronSchedule, async () => {
|
|
19
|
+
const result = await UserAction.destroy()
|
|
23
20
|
.where('Persistent', false)
|
|
24
|
-
.andWhere('CreatedAt', '<=',
|
|
21
|
+
.andWhere('CreatedAt', '<=', DateTime.now().plus({
|
|
25
22
|
minutes: -this.TimelineTTL,
|
|
26
23
|
}));
|
|
27
24
|
if (result && result.RowsAffected > 0) {
|
|
@@ -37,19 +34,19 @@ let ChangeUserPassword = class ChangeUserPassword extends cli_1.CliCommand {
|
|
|
37
34
|
}
|
|
38
35
|
};
|
|
39
36
|
__decorate([
|
|
40
|
-
|
|
41
|
-
__metadata("design:type",
|
|
37
|
+
Logger('rbac'),
|
|
38
|
+
__metadata("design:type", Log)
|
|
42
39
|
], ChangeUserPassword.prototype, "Log", void 0);
|
|
43
40
|
__decorate([
|
|
44
|
-
|
|
41
|
+
Config('rbac.timeline.schedule'),
|
|
45
42
|
__metadata("design:type", String)
|
|
46
43
|
], ChangeUserPassword.prototype, "CronSchedule", void 0);
|
|
47
44
|
__decorate([
|
|
48
|
-
|
|
45
|
+
Config('rbac.timeline.ttl'),
|
|
49
46
|
__metadata("design:type", Number)
|
|
50
47
|
], ChangeUserPassword.prototype, "TimelineTTL", void 0);
|
|
51
48
|
ChangeUserPassword = __decorate([
|
|
52
|
-
|
|
49
|
+
Command('rbac:cleanup-schedule', 'Starts a schedule with cleanup tasks')
|
|
53
50
|
], ChangeUserPassword);
|
|
54
|
-
|
|
51
|
+
export { ChangeUserPassword };
|
|
55
52
|
//# sourceMappingURL=ClearUserTimelineSchedule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClearUserTimelineSchedule.js","sourceRoot":"","sources":["../../src/cli/ClearUserTimelineSchedule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ClearUserTimelineSchedule.js","sourceRoot":"","sources":["../../src/cli/ClearUserTimelineSchedule.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG1B,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,UAAU;IAUzC,KAAK,CAAC,OAAO;QAClB,IAAI,OAAO,CACT,IAAI,CAAC,YAAY,EACjB,KAAK,IAAI,EAAE;YACT,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE;iBACtC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC;iBAC1B,QAAQ,CACP,WAAW,EACX,IAAI,EACJ,QAAQ,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;AArCC;IAAC,MAAM,CAAC,MAAM,CAAC;8BACA,GAAG;+CAAC;AAEnB;IAAC,MAAM,CAAC,wBAAwB,CAAC;;wDACF;AAE/B;IAAC,MAAM,CAAC,mBAAmB,CAAC;;uDACE;AARnB,kBAAkB;IAD9B,OAAO,CAAC,uBAAuB,EAAE,sCAAsC,CAAC;GAC5D,kBAAkB,CAsC9B;SAtCY,kBAAkB"}
|
package/lib/cli/CreateUser.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { QueueClient } from '@spinajs/queue';
|
|
2
2
|
import { Log } from '@spinajs/log';
|
|
3
3
|
import { CliCommand } from '@spinajs/cli';
|
|
4
|
-
import { PasswordProvider } from '../interfaces';
|
|
4
|
+
import { PasswordProvider } from '../interfaces.js';
|
|
5
5
|
interface UserCreationOptions {
|
|
6
6
|
email: string;
|
|
7
7
|
roles: string;
|
|
@@ -15,3 +15,4 @@ export declare class CreateUser extends CliCommand {
|
|
|
15
15
|
execute(options: UserCreationOptions): Promise<void>;
|
|
16
16
|
}
|
|
17
17
|
export {};
|
|
18
|
+
//# sourceMappingURL=CreateUser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateUser.d.ts","sourceRoot":"","sources":["../../src/cli/CreateUser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAmB,MAAM,cAAc,CAAC;AAK3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAKa,UAAW,SAAQ,UAAU;IAExC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAG7C,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;IAEhB,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAgClE"}
|