@saltcorn/data 0.6.3-beta.2 → 0.6.4-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-plugin/index.d.ts +145 -128
- package/dist/base-plugin/index.d.ts.map +1 -1
- package/dist/base-plugin/types.d.ts +105 -85
- package/dist/base-plugin/types.d.ts.map +1 -1
- package/dist/base-plugin/types.js +40 -11
- package/dist/base-plugin/types.js.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.d.ts +3 -3
- package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.js +56 -6
- package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
- package/dist/base-plugin/viewtemplates/filter.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/filter.js +13 -0
- package/dist/base-plugin/viewtemplates/filter.js.map +1 -1
- package/dist/base-plugin/viewtemplates/list.d.ts +1 -1
- package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/list.js +64 -1
- package/dist/base-plugin/viewtemplates/list.js.map +1 -1
- package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/show.js +11 -8
- package/dist/base-plugin/viewtemplates/show.js.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +1 -0
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.js +27 -14
- package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +11 -3
- package/dist/contracts.js.map +1 -1
- package/dist/db/connect.d.ts.map +1 -1
- package/dist/db/connect.js +9 -2
- package/dist/db/connect.js.map +1 -1
- package/dist/db/reset_schema.d.ts.map +1 -1
- package/dist/db/reset_schema.js +21 -19
- package/dist/db/reset_schema.js.map +1 -1
- package/dist/db/state.d.ts +9 -10
- package/dist/db/state.d.ts.map +1 -1
- package/dist/db/state.js +14 -29
- package/dist/db/state.js.map +1 -1
- package/dist/models/backup.d.ts +1 -1
- package/dist/models/backup.d.ts.map +1 -1
- package/dist/models/backup.js +2 -0
- package/dist/models/backup.js.map +1 -1
- package/dist/models/config.d.ts +39 -179
- package/dist/models/config.d.ts.map +1 -1
- package/dist/models/config.js +79 -52
- package/dist/models/config.js.map +1 -1
- package/dist/models/crash.d.ts +40 -47
- package/dist/models/crash.d.ts.map +1 -1
- package/dist/models/crash.js +40 -39
- package/dist/models/crash.js.map +1 -1
- package/dist/models/discovery.d.ts +17 -25
- package/dist/models/discovery.d.ts.map +1 -1
- package/dist/models/discovery.js +38 -26
- package/dist/models/discovery.js.map +1 -1
- package/dist/models/email.d.ts +11 -13
- package/dist/models/email.d.ts.map +1 -1
- package/dist/models/email.js +19 -15
- package/dist/models/email.js.map +1 -1
- package/dist/models/eventlog.d.ts +1 -1
- package/dist/models/eventlog.d.ts.map +1 -1
- package/dist/models/eventlog.js.map +1 -1
- package/dist/models/expression.d.ts +39 -31
- package/dist/models/expression.d.ts.map +1 -1
- package/dist/models/expression.js +44 -29
- package/dist/models/expression.js.map +1 -1
- package/dist/models/field.d.ts +12 -47
- package/dist/models/field.d.ts.map +1 -1
- package/dist/models/field.js +3 -3
- package/dist/models/field.js.map +1 -1
- package/dist/models/fieldrepeat.d.ts +3 -0
- package/dist/models/fieldrepeat.d.ts.map +1 -1
- package/dist/models/fieldrepeat.js +2 -0
- package/dist/models/fieldrepeat.js.map +1 -1
- package/dist/models/file.d.ts +56 -58
- package/dist/models/file.d.ts.map +1 -1
- package/dist/models/file.js +25 -52
- package/dist/models/file.js.map +1 -1
- package/dist/models/index.d.ts +39 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js.map +1 -1
- package/dist/models/layout.d.ts +16 -31
- package/dist/models/layout.d.ts.map +1 -1
- package/dist/models/layout.js +2 -4
- package/dist/models/layout.js.map +1 -1
- package/dist/models/library.d.ts +2 -10
- package/dist/models/library.d.ts.map +1 -1
- package/dist/models/library.js.map +1 -1
- package/dist/models/pack.d.ts +40 -87
- package/dist/models/pack.d.ts.map +1 -1
- package/dist/models/pack.js +118 -89
- package/dist/models/pack.js.map +1 -1
- package/dist/models/page.d.ts +22 -47
- package/dist/models/page.d.ts.map +1 -1
- package/dist/models/page.js +19 -41
- package/dist/models/page.js.map +1 -1
- package/dist/models/plugin.d.ts +41 -65
- package/dist/models/plugin.d.ts.map +1 -1
- package/dist/models/plugin.js +19 -41
- package/dist/models/plugin.js.map +1 -1
- package/dist/models/random.d.ts +18 -21
- package/dist/models/random.d.ts.map +1 -1
- package/dist/models/random.js +31 -29
- package/dist/models/random.js.map +1 -1
- package/dist/models/role.d.ts +3 -9
- package/dist/models/role.d.ts.map +1 -1
- package/dist/models/role.js.map +1 -1
- package/dist/models/scheduler.d.ts +2 -8
- package/dist/models/scheduler.d.ts.map +1 -1
- package/dist/models/scheduler.js +18 -16
- package/dist/models/scheduler.js.map +1 -1
- package/dist/models/table.d.ts +12 -23
- package/dist/models/table.d.ts.map +1 -1
- package/dist/models/table.js +46 -23
- package/dist/models/table.js.map +1 -1
- package/dist/models/table_constraints.d.ts +44 -39
- package/dist/models/table_constraints.d.ts.map +1 -1
- package/dist/models/table_constraints.js +17 -33
- package/dist/models/table_constraints.js.map +1 -1
- package/dist/models/tenant.d.ts +16 -60
- package/dist/models/tenant.d.ts.map +1 -1
- package/dist/models/tenant.js +52 -30
- package/dist/models/tenant.js.map +1 -1
- package/dist/models/trigger.d.ts +2 -17
- package/dist/models/trigger.d.ts.map +1 -1
- package/dist/models/trigger.js +2 -2
- package/dist/models/trigger.js.map +1 -1
- package/dist/models/user.d.ts +110 -142
- package/dist/models/user.d.ts.map +1 -1
- package/dist/models/user.js +51 -71
- package/dist/models/user.js.map +1 -1
- package/dist/models/view.d.ts +7 -21
- package/dist/models/view.d.ts.map +1 -1
- package/dist/models/view.js +1 -1
- package/dist/models/view.js.map +1 -1
- package/dist/models/workflow.d.ts +4 -4
- package/dist/models/workflow.d.ts.map +1 -1
- package/dist/models/workflow.js.map +1 -1
- package/dist/plugin-helper.d.ts.map +1 -1
- package/dist/plugin-helper.js +58 -26
- package/dist/plugin-helper.js.map +1 -1
- package/dist/tests/actions.test.d.ts.map +1 -1
- package/dist/tests/actions.test.js +102 -82
- package/dist/tests/actions.test.js.map +1 -1
- package/dist/tests/assertions.d.ts +13 -0
- package/dist/tests/assertions.d.ts.map +1 -0
- package/dist/tests/assertions.js +35 -0
- package/dist/tests/assertions.js.map +1 -0
- package/dist/tests/auxtest.test.d.ts.map +1 -1
- package/dist/tests/auxtest.test.js +33 -29
- package/dist/tests/auxtest.test.js.map +1 -1
- package/dist/tests/backup.test.d.ts.map +1 -1
- package/dist/tests/backup.test.js +62 -49
- package/dist/tests/backup.test.js.map +1 -1
- package/dist/tests/calc.test.d.ts.map +1 -1
- package/dist/tests/calc.test.js +106 -88
- package/dist/tests/calc.test.js.map +1 -1
- package/dist/tests/config.test.d.ts.map +1 -1
- package/dist/tests/config.test.js +39 -36
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/discover.test.d.ts.map +1 -1
- package/dist/tests/discover.test.js +23 -17
- package/dist/tests/discover.test.js.map +1 -1
- package/dist/tests/exact_views.test.d.ts.map +1 -1
- package/dist/tests/exact_views.test.js +66 -25
- package/dist/tests/exact_views.test.js.map +1 -1
- package/dist/tests/field.test.d.ts.map +1 -1
- package/dist/tests/field.test.js +104 -93
- package/dist/tests/field.test.js.map +1 -1
- package/dist/tests/form.test.d.ts.map +1 -1
- package/dist/tests/form.test.js +71 -63
- package/dist/tests/form.test.js.map +1 -1
- package/dist/tests/mocks.d.ts +101 -105
- package/dist/tests/mocks.d.ts.map +1 -1
- package/dist/tests/mocks.js +19 -14
- package/dist/tests/mocks.js.map +1 -1
- package/dist/tests/models.test.d.ts.map +1 -1
- package/dist/tests/models.test.js +95 -80
- package/dist/tests/models.test.js.map +1 -1
- package/dist/tests/pack.test.d.ts.map +1 -1
- package/dist/tests/pack.test.js +54 -47
- package/dist/tests/pack.test.js.map +1 -1
- package/dist/tests/plugin.test.d.ts.map +1 -1
- package/dist/tests/plugin.test.js +31 -24
- package/dist/tests/plugin.test.js.map +1 -1
- package/dist/tests/random.test.d.ts.map +1 -1
- package/dist/tests/random.test.js +61 -50
- package/dist/tests/random.test.js.map +1 -1
- package/dist/tests/table.test.d.ts.map +1 -1
- package/dist/tests/table.test.js +557 -436
- package/dist/tests/table.test.js.map +1 -1
- package/dist/tests/tenant.test.d.ts.map +1 -1
- package/dist/tests/tenant.test.js +30 -23
- package/dist/tests/tenant.test.js.map +1 -1
- package/dist/tests/user.test.d.ts.map +1 -1
- package/dist/tests/user.test.js +128 -100
- package/dist/tests/user.test.js.map +1 -1
- package/dist/tests/view.test.d.ts.map +1 -1
- package/dist/tests/view.test.js +109 -85
- package/dist/tests/view.test.js.map +1 -1
- package/dist/tests/workflow.test.d.ts.map +1 -1
- package/dist/tests/workflow.test.js +40 -29
- package/dist/tests/workflow.test.js.map +1 -1
- package/dist/tsconfig.ref.tsbuildinfo +1 -1
- package/dist/utils.d.ts +29 -20
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +20 -5
- package/dist/utils.js.map +1 -1
- package/package.json +21 -11
- package/dist/coverage/lcov-report/block-navigation.d.ts +0 -2
- package/dist/coverage/lcov-report/block-navigation.d.ts.map +0 -1
- package/dist/coverage/lcov-report/block-navigation.js +0 -66
- package/dist/coverage/lcov-report/block-navigation.js.map +0 -1
- package/dist/coverage/lcov-report/prettify.d.ts +0 -1
- package/dist/coverage/lcov-report/prettify.d.ts.map +0 -1
- package/dist/coverage/lcov-report/prettify.js +0 -478
- package/dist/coverage/lcov-report/prettify.js.map +0 -1
- package/dist/coverage/lcov-report/sorter.d.ts +0 -2
- package/dist/coverage/lcov-report/sorter.d.ts.map +0 -1
- package/dist/coverage/lcov-report/sorter.js +0 -141
- package/dist/coverage/lcov-report/sorter.js.map +0 -1
package/dist/models/user.d.ts
CHANGED
|
@@ -1,15 +1,47 @@
|
|
|
1
|
-
|
|
1
|
+
import { Row, SelectOptions, Where } from "@saltcorn/db-common/internal";
|
|
2
|
+
import type { ErrorMessage, GenObj, SuccessMessage } from "@saltcorn/types/common_types";
|
|
2
3
|
/**
|
|
3
4
|
* User
|
|
4
5
|
* @category saltcorn-data
|
|
5
6
|
*/
|
|
6
7
|
declare class User {
|
|
8
|
+
email: string;
|
|
9
|
+
password: string;
|
|
10
|
+
language?: string;
|
|
11
|
+
_attributes?: any;
|
|
12
|
+
api_token?: string | null;
|
|
13
|
+
verification_token?: string;
|
|
14
|
+
verified_on?: Date;
|
|
15
|
+
disabled: boolean;
|
|
16
|
+
id?: number;
|
|
17
|
+
reset_password_token?: string | null;
|
|
18
|
+
reset_password_expiry?: Date | null;
|
|
19
|
+
role_id: number;
|
|
20
|
+
[key: string]: any;
|
|
21
|
+
/**
|
|
22
|
+
* User constructor
|
|
23
|
+
* @param {object} o
|
|
24
|
+
*/
|
|
25
|
+
constructor(o: UserCfg | User);
|
|
7
26
|
/**
|
|
8
27
|
* Get bcrypt hash for Password
|
|
9
28
|
* @param pw - password string
|
|
10
29
|
* @returns {Promise<string>}
|
|
11
30
|
*/
|
|
12
|
-
static hashPassword(pw:
|
|
31
|
+
static hashPassword(pw: string): Promise<string>;
|
|
32
|
+
/**
|
|
33
|
+
* Check password
|
|
34
|
+
* @param pw - password string
|
|
35
|
+
* @returns {boolean}
|
|
36
|
+
*/
|
|
37
|
+
checkPassword(pw: string): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Change password
|
|
40
|
+
* @param newpw - new password string
|
|
41
|
+
* @param expireToken - if true than force reset password token
|
|
42
|
+
* @returns {Promise<void>} no result
|
|
43
|
+
*/
|
|
44
|
+
changePasswordTo(newpw: string, expireToken?: boolean): Promise<void>;
|
|
13
45
|
/**
|
|
14
46
|
* Find or Create User
|
|
15
47
|
* @param k
|
|
@@ -17,71 +49,101 @@ declare class User {
|
|
|
17
49
|
* @param {object} [uo = {}]
|
|
18
50
|
* @returns {Promise<{session_object: {_attributes: {}}, _attributes: {}}|User|*|boolean|{error: string}|User>}
|
|
19
51
|
*/
|
|
20
|
-
static findOrCreateByAttribute(k:
|
|
21
|
-
session_object: {
|
|
22
|
-
_attributes: {};
|
|
23
|
-
};
|
|
24
|
-
_attributes: {};
|
|
25
|
-
} | User | any | boolean | {
|
|
26
|
-
error: string;
|
|
27
|
-
} | User>;
|
|
52
|
+
static findOrCreateByAttribute(k: string, v: any, uo?: any): Promise<User | false | ErrorMessage>;
|
|
28
53
|
/**
|
|
29
54
|
* Create user
|
|
30
55
|
* @param uo - user object
|
|
31
56
|
* @returns {Promise<{error: string}|User>}
|
|
32
57
|
*/
|
|
33
|
-
static create(uo:
|
|
34
|
-
|
|
35
|
-
|
|
58
|
+
static create(uo: GenObj): Promise<User | ErrorMessage>;
|
|
59
|
+
/**
|
|
60
|
+
* Create session object for user
|
|
61
|
+
* @type {{role_id: number, language, id, email, tenant: *}}
|
|
62
|
+
*/
|
|
63
|
+
get session_object(): any;
|
|
36
64
|
/**
|
|
37
65
|
* Authenticate User
|
|
38
66
|
* @param uo - user object
|
|
39
67
|
* @returns {Promise<boolean|User>}
|
|
40
68
|
*/
|
|
41
|
-
static authenticate(uo: any): Promise<
|
|
69
|
+
static authenticate(uo: any): Promise<User | false>;
|
|
42
70
|
/**
|
|
43
71
|
* Find users list
|
|
44
72
|
* @param where - where object
|
|
45
73
|
* @param selectopts - select options
|
|
46
74
|
* @returns {Promise<User[]>}
|
|
47
75
|
*/
|
|
48
|
-
static find(where:
|
|
76
|
+
static find(where: Where, selectopts?: SelectOptions): Promise<Array<User>>;
|
|
49
77
|
/**
|
|
50
78
|
* Find one user
|
|
51
79
|
* @param where - where object
|
|
52
80
|
* @returns {Promise<User|*>}
|
|
53
81
|
*/
|
|
54
|
-
static findOne(where:
|
|
82
|
+
static findOne(where: Where): Promise<User | undefined>;
|
|
55
83
|
/**
|
|
56
84
|
* Check that user table is not empty in database
|
|
57
85
|
* @deprecated use method count()
|
|
58
86
|
* @returns {Promise<boolean>} true if there are users in db
|
|
59
87
|
*/
|
|
60
88
|
static nonEmpty(): Promise<boolean>;
|
|
89
|
+
/**
|
|
90
|
+
* Delete user based on session object
|
|
91
|
+
* @returns {Promise<void>}
|
|
92
|
+
*/
|
|
93
|
+
delete(): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Set language for User in database
|
|
96
|
+
* @param language
|
|
97
|
+
* @returns {Promise<void>}
|
|
98
|
+
*/
|
|
99
|
+
set_language(language: string): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Update User
|
|
102
|
+
* @param row
|
|
103
|
+
* @returns {Promise<void>}
|
|
104
|
+
*/
|
|
105
|
+
update(row: Row): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Get new reset token
|
|
108
|
+
* @returns {Promise<*|string>}
|
|
109
|
+
*/
|
|
110
|
+
getNewResetToken(): Promise<string>;
|
|
111
|
+
/**
|
|
112
|
+
* Add new API token to user
|
|
113
|
+
* @returns {Promise<string>}
|
|
114
|
+
*/
|
|
115
|
+
getNewAPIToken(): Promise<string>;
|
|
116
|
+
/**
|
|
117
|
+
* Remove API token for user
|
|
118
|
+
* @returns {Promise<string>}
|
|
119
|
+
*/
|
|
120
|
+
removeAPIToken(): Promise<null>;
|
|
61
121
|
/**
|
|
62
122
|
* Validate password
|
|
63
123
|
* @param pw
|
|
64
124
|
* @returns {string}
|
|
65
125
|
*/
|
|
66
|
-
static unacceptable_password_reason(pw:
|
|
126
|
+
static unacceptable_password_reason(pw: string): string | undefined;
|
|
67
127
|
/**
|
|
68
128
|
* Validate email
|
|
69
129
|
* @param email
|
|
70
130
|
* @returns {boolean}
|
|
71
131
|
*/
|
|
72
|
-
static valid_email(email:
|
|
132
|
+
static valid_email(email: string): boolean;
|
|
73
133
|
/**
|
|
74
134
|
* Verification with token
|
|
75
135
|
* @param email - email sting
|
|
76
136
|
* @param verification_token - verification token string
|
|
77
137
|
* @returns {Promise<{error: string}|boolean>} true if verification passed, error string if not
|
|
78
138
|
*/
|
|
79
|
-
static verifyWithToken({ email, verification_token }: {
|
|
80
|
-
email:
|
|
81
|
-
verification_token:
|
|
82
|
-
}): Promise<
|
|
83
|
-
|
|
84
|
-
|
|
139
|
+
static verifyWithToken({ email, verification_token, }: {
|
|
140
|
+
email: string;
|
|
141
|
+
verification_token: string;
|
|
142
|
+
}): Promise<true | ErrorMessage>;
|
|
143
|
+
/**
|
|
144
|
+
* @returns {Promise<boolean>}
|
|
145
|
+
*/
|
|
146
|
+
set_to_verified(): Promise<true>;
|
|
85
147
|
/**
|
|
86
148
|
* Reset password using token
|
|
87
149
|
* @param email - email address string
|
|
@@ -90,107 +152,26 @@ declare class User {
|
|
|
90
152
|
* @returns {Promise<{error: string}|{success: boolean}>}
|
|
91
153
|
*/
|
|
92
154
|
static resetPasswordWithToken({ email, reset_password_token, password, }: {
|
|
93
|
-
email:
|
|
94
|
-
reset_password_token:
|
|
95
|
-
password:
|
|
96
|
-
}): Promise<
|
|
97
|
-
error: string;
|
|
98
|
-
} | {
|
|
99
|
-
success: boolean;
|
|
100
|
-
}>;
|
|
155
|
+
email: string;
|
|
156
|
+
reset_password_token: string;
|
|
157
|
+
password: string;
|
|
158
|
+
}): Promise<SuccessMessage | ErrorMessage>;
|
|
101
159
|
/**
|
|
102
160
|
* Count users in database
|
|
103
161
|
* @param where
|
|
104
162
|
* @returns {Promise<number>}
|
|
105
163
|
*/
|
|
106
|
-
static count(where
|
|
164
|
+
static count(where?: Where): Promise<number>;
|
|
107
165
|
/**
|
|
108
166
|
* Get available roles
|
|
109
167
|
* @returns {Promise<*>}
|
|
110
168
|
*/
|
|
111
|
-
static get_roles(): Promise<
|
|
169
|
+
static get_roles(): Promise<string[]>;
|
|
112
170
|
/**
|
|
113
171
|
* Generate password
|
|
114
172
|
* @returns {string}
|
|
115
173
|
*/
|
|
116
174
|
static generate_password(): string;
|
|
117
|
-
/**
|
|
118
|
-
* User constructor
|
|
119
|
-
* @param {object} o
|
|
120
|
-
*/
|
|
121
|
-
constructor(o: object);
|
|
122
|
-
email: any;
|
|
123
|
-
password: any;
|
|
124
|
-
language: any;
|
|
125
|
-
_attributes: any;
|
|
126
|
-
api_token: any;
|
|
127
|
-
verification_token: any;
|
|
128
|
-
verified_on: any;
|
|
129
|
-
disabled: boolean;
|
|
130
|
-
id: any;
|
|
131
|
-
reset_password_token: any;
|
|
132
|
-
reset_password_expiry: any;
|
|
133
|
-
role_id: number;
|
|
134
|
-
/**
|
|
135
|
-
* Check password
|
|
136
|
-
* @param pw - password string
|
|
137
|
-
* @returns {boolean}
|
|
138
|
-
*/
|
|
139
|
-
checkPassword(pw: any): boolean;
|
|
140
|
-
/**
|
|
141
|
-
* Change password
|
|
142
|
-
* @param newpw - new password string
|
|
143
|
-
* @param expireToken - if true than force reset password token
|
|
144
|
-
* @returns {Promise<void>} no result
|
|
145
|
-
*/
|
|
146
|
-
changePasswordTo(newpw: any, expireToken: any): Promise<void>;
|
|
147
|
-
/**
|
|
148
|
-
* Create session object for user
|
|
149
|
-
* @type {{role_id: number, language, id, email, tenant: *}}
|
|
150
|
-
*/
|
|
151
|
-
get session_object(): {
|
|
152
|
-
role_id: number;
|
|
153
|
-
language: any;
|
|
154
|
-
id: any;
|
|
155
|
-
email: any;
|
|
156
|
-
tenant: any;
|
|
157
|
-
};
|
|
158
|
-
/**
|
|
159
|
-
* Delete user based on session object
|
|
160
|
-
* @returns {Promise<void>}
|
|
161
|
-
*/
|
|
162
|
-
delete(): Promise<void>;
|
|
163
|
-
/**
|
|
164
|
-
* Set language for User in database
|
|
165
|
-
* @param language
|
|
166
|
-
* @returns {Promise<void>}
|
|
167
|
-
*/
|
|
168
|
-
set_language(language: any): Promise<void>;
|
|
169
|
-
/**
|
|
170
|
-
* Update User
|
|
171
|
-
* @param row
|
|
172
|
-
* @returns {Promise<void>}
|
|
173
|
-
*/
|
|
174
|
-
update(row: any): Promise<void>;
|
|
175
|
-
/**
|
|
176
|
-
* Get new reset token
|
|
177
|
-
* @returns {Promise<*|string>}
|
|
178
|
-
*/
|
|
179
|
-
getNewResetToken(): Promise<any | string>;
|
|
180
|
-
/**
|
|
181
|
-
* Add new API token to user
|
|
182
|
-
* @returns {Promise<string>}
|
|
183
|
-
*/
|
|
184
|
-
getNewAPIToken(): Promise<string>;
|
|
185
|
-
/**
|
|
186
|
-
* Remove API token for user
|
|
187
|
-
* @returns {Promise<string>}
|
|
188
|
-
*/
|
|
189
|
-
removeAPIToken(): Promise<string>;
|
|
190
|
-
/**
|
|
191
|
-
* @returns {Promise<boolean>}
|
|
192
|
-
*/
|
|
193
|
-
set_to_verified(): Promise<boolean>;
|
|
194
175
|
/**
|
|
195
176
|
* @returns {Promise<void>}
|
|
196
177
|
*/
|
|
@@ -198,38 +179,25 @@ declare class User {
|
|
|
198
179
|
/**
|
|
199
180
|
* @param {object} req
|
|
200
181
|
*/
|
|
201
|
-
relogin(req:
|
|
182
|
+
relogin(req: NonNullable<any>): void;
|
|
202
183
|
}
|
|
203
184
|
declare namespace User {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
export const changePasswordTo: any;
|
|
220
|
-
export const checkPassword: any;
|
|
221
|
-
}
|
|
222
|
-
namespace static_methods {
|
|
223
|
-
const find: any;
|
|
224
|
-
const findOne: any;
|
|
225
|
-
const nonEmpty: any;
|
|
226
|
-
const hashPassword: any;
|
|
227
|
-
const authenticate: any;
|
|
228
|
-
const verifyWithToken: any;
|
|
229
|
-
const resetPasswordWithToken: any;
|
|
230
|
-
const create: any;
|
|
231
|
-
const get_roles: any;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
185
|
+
type UserCfg = {
|
|
186
|
+
id?: number | string;
|
|
187
|
+
email: string;
|
|
188
|
+
password: string;
|
|
189
|
+
disabled?: boolean;
|
|
190
|
+
language?: string;
|
|
191
|
+
_attributes?: string | any;
|
|
192
|
+
api_token?: string;
|
|
193
|
+
verification_token?: string;
|
|
194
|
+
verified_on?: Date | number | string;
|
|
195
|
+
role_id?: number | string;
|
|
196
|
+
reset_password_token?: string;
|
|
197
|
+
reset_password_expiry?: Date | number | string;
|
|
198
|
+
[key: string]: any;
|
|
199
|
+
};
|
|
234
200
|
}
|
|
201
|
+
declare type UserCfg = User.UserCfg;
|
|
202
|
+
export = User;
|
|
235
203
|
//# sourceMappingURL=user.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../models/user.
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../models/user.ts"],"names":[],"mappings":"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"}
|
package/dist/models/user.js
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
/**
|
|
3
6
|
* @category saltcorn-data
|
|
4
7
|
* @module models/user
|
|
5
8
|
* @subcategory models
|
|
6
9
|
*/
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
10
|
+
const db_1 = __importDefault(require("../db"));
|
|
11
|
+
const bcryptjs_1 = require("bcryptjs");
|
|
12
|
+
const uuid_1 = require("uuid");
|
|
13
|
+
const dumb_passwords_1 = require("dumb-passwords");
|
|
14
|
+
const email_validator_1 = require("email-validator");
|
|
15
|
+
const generators_1 = __importDefault(require("@saltcorn/types/generators"));
|
|
16
|
+
const { generateString } = generators_1.default;
|
|
13
17
|
/**
|
|
14
18
|
* @param {object} o
|
|
15
19
|
* @returns {*}
|
|
@@ -37,21 +41,24 @@ class User {
|
|
|
37
41
|
: o._attributes || {};
|
|
38
42
|
this.api_token = o.api_token;
|
|
39
43
|
this.verification_token = o.verification_token;
|
|
40
|
-
this.verified_on =
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
this.verified_on =
|
|
45
|
+
typeof o.verified_on === "string" || typeof o.verified_on === "number"
|
|
46
|
+
? new Date(o.verified_on)
|
|
47
|
+
: o.verified_on;
|
|
43
48
|
this.disabled = !!o.disabled;
|
|
44
|
-
|
|
49
|
+
if (o.id)
|
|
50
|
+
this.id = +o.id;
|
|
45
51
|
this.reset_password_token = o.reset_password_token || null;
|
|
46
52
|
this.reset_password_expiry =
|
|
47
53
|
(typeof o.reset_password_expiry === "string" &&
|
|
48
54
|
o.reset_password_expiry.length > 0) ||
|
|
49
55
|
typeof o.reset_password_expiry === "number"
|
|
50
56
|
? new Date(o.reset_password_expiry)
|
|
51
|
-
: o.reset_password_expiry
|
|
57
|
+
: o.reset_password_expiry instanceof Date
|
|
58
|
+
? o.reset_password_expiry
|
|
59
|
+
: null;
|
|
52
60
|
this.role_id = o.role_id ? +o.role_id : 8;
|
|
53
61
|
Object.assign(this, safeUserFields(o));
|
|
54
|
-
contract.class(this);
|
|
55
62
|
}
|
|
56
63
|
/**
|
|
57
64
|
* Get bcrypt hash for Password
|
|
@@ -59,7 +66,7 @@ class User {
|
|
|
59
66
|
* @returns {Promise<string>}
|
|
60
67
|
*/
|
|
61
68
|
static async hashPassword(pw) {
|
|
62
|
-
return await
|
|
69
|
+
return await (0, bcryptjs_1.hash)(pw, 10);
|
|
63
70
|
}
|
|
64
71
|
/**
|
|
65
72
|
* Check password
|
|
@@ -67,7 +74,7 @@ class User {
|
|
|
67
74
|
* @returns {boolean}
|
|
68
75
|
*/
|
|
69
76
|
checkPassword(pw) {
|
|
70
|
-
return
|
|
77
|
+
return (0, bcryptjs_1.compareSync)(pw, this.password);
|
|
71
78
|
}
|
|
72
79
|
/**
|
|
73
80
|
* Change password
|
|
@@ -81,7 +88,7 @@ class User {
|
|
|
81
88
|
const upd = { password };
|
|
82
89
|
if (expireToken)
|
|
83
90
|
upd.reset_password_token = null;
|
|
84
|
-
await
|
|
91
|
+
await db_1.default.update("users", upd, this.id);
|
|
85
92
|
}
|
|
86
93
|
/**
|
|
87
94
|
* Find or Create User
|
|
@@ -134,7 +141,7 @@ class User {
|
|
|
134
141
|
const ex = await User.findOne({ email: u.email });
|
|
135
142
|
if (ex)
|
|
136
143
|
return { error: `User with this email already exists` };
|
|
137
|
-
const id = await
|
|
144
|
+
const id = await db_1.default.insert("users", {
|
|
138
145
|
email: u.email,
|
|
139
146
|
password: hashpw,
|
|
140
147
|
role_id: u.role_id,
|
|
@@ -153,7 +160,7 @@ class User {
|
|
|
153
160
|
id: this.id,
|
|
154
161
|
role_id: this.role_id,
|
|
155
162
|
language: this.language,
|
|
156
|
-
tenant:
|
|
163
|
+
tenant: db_1.default.getTenantSchema(),
|
|
157
164
|
};
|
|
158
165
|
Object.assign(so, safeUserFields(this));
|
|
159
166
|
return so;
|
|
@@ -184,7 +191,7 @@ class User {
|
|
|
184
191
|
* @returns {Promise<User[]>}
|
|
185
192
|
*/
|
|
186
193
|
static async find(where, selectopts) {
|
|
187
|
-
const us = await
|
|
194
|
+
const us = await db_1.default.select("users", where, selectopts);
|
|
188
195
|
return us.map((u) => new User(u));
|
|
189
196
|
}
|
|
190
197
|
/**
|
|
@@ -193,7 +200,7 @@ class User {
|
|
|
193
200
|
* @returns {Promise<User|*>}
|
|
194
201
|
*/
|
|
195
202
|
static async findOne(where) {
|
|
196
|
-
const u = await
|
|
203
|
+
const u = await db_1.default.selectMaybeOne("users", where);
|
|
197
204
|
return u ? new User(u) : u;
|
|
198
205
|
}
|
|
199
206
|
/**
|
|
@@ -202,7 +209,7 @@ class User {
|
|
|
202
209
|
* @returns {Promise<boolean>} true if there are users in db
|
|
203
210
|
*/
|
|
204
211
|
static async nonEmpty() {
|
|
205
|
-
const res = await
|
|
212
|
+
const res = await db_1.default.count("users");
|
|
206
213
|
return res > 0;
|
|
207
214
|
}
|
|
208
215
|
/**
|
|
@@ -210,9 +217,9 @@ class User {
|
|
|
210
217
|
* @returns {Promise<void>}
|
|
211
218
|
*/
|
|
212
219
|
async delete() {
|
|
213
|
-
const schema =
|
|
220
|
+
const schema = db_1.default.getTenantSchemaPrefix();
|
|
214
221
|
this.destroy_sessions();
|
|
215
|
-
await
|
|
222
|
+
await db_1.default.query(`delete FROM ${schema}users WHERE id = $1`, [this.id]);
|
|
216
223
|
}
|
|
217
224
|
/**
|
|
218
225
|
* Set language for User in database
|
|
@@ -228,18 +235,18 @@ class User {
|
|
|
228
235
|
* @returns {Promise<void>}
|
|
229
236
|
*/
|
|
230
237
|
async update(row) {
|
|
231
|
-
await
|
|
238
|
+
await db_1.default.update("users", row, this.id);
|
|
232
239
|
}
|
|
233
240
|
/**
|
|
234
241
|
* Get new reset token
|
|
235
242
|
* @returns {Promise<*|string>}
|
|
236
243
|
*/
|
|
237
244
|
async getNewResetToken() {
|
|
238
|
-
const reset_password_token_uuid =
|
|
245
|
+
const reset_password_token_uuid = (0, uuid_1.v4)();
|
|
239
246
|
const reset_password_expiry = new Date();
|
|
240
247
|
reset_password_expiry.setDate(new Date().getDate() + 1);
|
|
241
|
-
const reset_password_token = await
|
|
242
|
-
await
|
|
248
|
+
const reset_password_token = await (0, bcryptjs_1.hash)(reset_password_token_uuid, 10);
|
|
249
|
+
await db_1.default.update("users", { reset_password_token, reset_password_expiry }, this.id);
|
|
243
250
|
return reset_password_token_uuid;
|
|
244
251
|
}
|
|
245
252
|
/**
|
|
@@ -247,8 +254,8 @@ class User {
|
|
|
247
254
|
* @returns {Promise<string>}
|
|
248
255
|
*/
|
|
249
256
|
async getNewAPIToken() {
|
|
250
|
-
const api_token =
|
|
251
|
-
await
|
|
257
|
+
const api_token = (0, uuid_1.v4)();
|
|
258
|
+
await db_1.default.update("users", { api_token }, this.id);
|
|
252
259
|
this.api_token = api_token;
|
|
253
260
|
return api_token;
|
|
254
261
|
}
|
|
@@ -258,7 +265,7 @@ class User {
|
|
|
258
265
|
*/
|
|
259
266
|
async removeAPIToken() {
|
|
260
267
|
const api_token = null;
|
|
261
|
-
await
|
|
268
|
+
await db_1.default.update("users", { api_token }, this.id);
|
|
262
269
|
this.api_token = api_token;
|
|
263
270
|
return api_token;
|
|
264
271
|
}
|
|
@@ -272,7 +279,7 @@ class User {
|
|
|
272
279
|
return "Not a string";
|
|
273
280
|
if (pw.length < 8)
|
|
274
281
|
return "Too short";
|
|
275
|
-
if (
|
|
282
|
+
if ((0, dumb_passwords_1.check)(pw))
|
|
276
283
|
return "Too common";
|
|
277
284
|
}
|
|
278
285
|
/**
|
|
@@ -282,7 +289,7 @@ class User {
|
|
|
282
289
|
*/
|
|
283
290
|
// TBD that validation works
|
|
284
291
|
static valid_email(email) {
|
|
285
|
-
return
|
|
292
|
+
return (0, email_validator_1.validate)(email);
|
|
286
293
|
}
|
|
287
294
|
/**
|
|
288
295
|
* Verification with token
|
|
@@ -290,7 +297,7 @@ class User {
|
|
|
290
297
|
* @param verification_token - verification token string
|
|
291
298
|
* @returns {Promise<{error: string}|boolean>} true if verification passed, error string if not
|
|
292
299
|
*/
|
|
293
|
-
static async verifyWithToken({ email, verification_token }) {
|
|
300
|
+
static async verifyWithToken({ email, verification_token, }) {
|
|
294
301
|
if (typeof verification_token !== "string" ||
|
|
295
302
|
typeof email !== "string" ||
|
|
296
303
|
verification_token.length < 10 ||
|
|
@@ -310,7 +317,7 @@ class User {
|
|
|
310
317
|
const elevate_verified = +getState().getConfig("elevate_verified");
|
|
311
318
|
if (elevate_verified)
|
|
312
319
|
upd.role_id = Math.min(elevate_verified, this.role_id);
|
|
313
|
-
await
|
|
320
|
+
await db_1.default.update("users", upd, this.id);
|
|
314
321
|
Object.assign(this, upd);
|
|
315
322
|
const Trigger = require("./trigger");
|
|
316
323
|
Trigger.emitEvent("UserVerified", null, this, this);
|
|
@@ -331,8 +338,11 @@ class User {
|
|
|
331
338
|
error: "Invalid token or invalid token length or incorrect email",
|
|
332
339
|
};
|
|
333
340
|
const u = await User.findOne({ email });
|
|
334
|
-
if (u &&
|
|
335
|
-
|
|
341
|
+
if (u &&
|
|
342
|
+
u.reset_password_expiry &&
|
|
343
|
+
new Date() < u.reset_password_expiry &&
|
|
344
|
+
u.reset_password_token) {
|
|
345
|
+
const match = (0, bcryptjs_1.compareSync)(reset_password_token, u.reset_password_token);
|
|
336
346
|
if (match) {
|
|
337
347
|
if (User.unacceptable_password_reason(password))
|
|
338
348
|
return {
|
|
@@ -357,14 +367,14 @@ class User {
|
|
|
357
367
|
// TBD I think that method is simular to notEmppty() but more powerfull.
|
|
358
368
|
// TBD use some rules for naming of methods - e.g. this method will have name count_users or countUsers because of methods relay on roles in this class
|
|
359
369
|
static async count(where) {
|
|
360
|
-
return await
|
|
370
|
+
return await db_1.default.count("users", where || {});
|
|
361
371
|
}
|
|
362
372
|
/**
|
|
363
373
|
* Get available roles
|
|
364
374
|
* @returns {Promise<*>}
|
|
365
375
|
*/
|
|
366
376
|
static async get_roles() {
|
|
367
|
-
const rs = await
|
|
377
|
+
const rs = await db_1.default.select("_sc_roles", {}, { orderBy: "id" });
|
|
368
378
|
return rs;
|
|
369
379
|
}
|
|
370
380
|
/**
|
|
@@ -372,7 +382,7 @@ class User {
|
|
|
372
382
|
* @returns {string}
|
|
373
383
|
*/
|
|
374
384
|
static generate_password() {
|
|
375
|
-
const candidate =
|
|
385
|
+
const candidate = generateString().split(" ").join("");
|
|
376
386
|
// TBD low performance impact - un
|
|
377
387
|
if (candidate.length < 10)
|
|
378
388
|
return User.generate_password();
|
|
@@ -383,9 +393,9 @@ class User {
|
|
|
383
393
|
* @returns {Promise<void>}
|
|
384
394
|
*/
|
|
385
395
|
async destroy_sessions() {
|
|
386
|
-
if (!
|
|
387
|
-
const schema =
|
|
388
|
-
await
|
|
396
|
+
if (!db_1.default.isSQLite) {
|
|
397
|
+
const schema = db_1.default.getTenantSchema();
|
|
398
|
+
await db_1.default.query(`delete from _sc_session
|
|
389
399
|
where sess->'passport'->'user'->>'id' = $1
|
|
390
400
|
and sess->'passport'->'user'->>'tenant' = $2`, [`${this.id}`, schema]);
|
|
391
401
|
}
|
|
@@ -400,35 +410,5 @@ class User {
|
|
|
400
410
|
});
|
|
401
411
|
}
|
|
402
412
|
}
|
|
403
|
-
User.contract = {
|
|
404
|
-
variables: {
|
|
405
|
-
id: is.maybe(is.posint),
|
|
406
|
-
email: is.str,
|
|
407
|
-
//password: is.str,
|
|
408
|
-
disabled: is.bool,
|
|
409
|
-
language: is.maybe(is.str),
|
|
410
|
-
_attributes: is.maybe(is.obj({})),
|
|
411
|
-
role_id: is.posint,
|
|
412
|
-
reset_password_token: is.maybe(is.and(is.str, is.sat((s) => s.length > 10))),
|
|
413
|
-
reset_password_expiry: is.maybe(is.class("Date")),
|
|
414
|
-
},
|
|
415
|
-
methods: {
|
|
416
|
-
delete: is.fun([], is.promise(is.undefined)),
|
|
417
|
-
destroy_sessions: is.fun([], is.promise(is.undefined)),
|
|
418
|
-
changePasswordTo: is.fun(is.str, is.promise(is.undefined)),
|
|
419
|
-
checkPassword: is.fun(is.str, is.bool),
|
|
420
|
-
},
|
|
421
|
-
static_methods: {
|
|
422
|
-
find: is.fun(is.maybe(is.obj()), is.promise(is.array(is.class("User")))),
|
|
423
|
-
findOne: is.fun(is.obj(), is.promise(is.maybe(is.class("User")))),
|
|
424
|
-
nonEmpty: is.fun([], is.promise(is.bool)),
|
|
425
|
-
hashPassword: is.fun(is.str, is.promise(is.str)),
|
|
426
|
-
authenticate: is.fun(is.objVals(is.str), is.promise(is.or(is.class("User"), is.eq(false)))),
|
|
427
|
-
verifyWithToken: is.fun(is.obj({ email: is.str, verification_token: is.str }), is.promise(is.any)),
|
|
428
|
-
resetPasswordWithToken: is.fun(is.obj({ email: is.str, reset_password_token: is.str, password: is.str }), is.promise(is.any)),
|
|
429
|
-
create: is.fun(is.obj({ email: is.str }), is.promise(is.or(is.obj({ error: is.str }), is.class("User")))),
|
|
430
|
-
get_roles: is.fun([], is.promise(is.array(is.obj({ id: is.posint, role: is.str })))),
|
|
431
|
-
},
|
|
432
|
-
};
|
|
433
413
|
module.exports = User;
|
|
434
414
|
//# sourceMappingURL=user.js.map
|