@saltcorn/data 0.6.3-beta.0 → 0.6.3

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.
Files changed (152) hide show
  1. package/dist/base-plugin/fieldviews.d.ts.map +1 -1
  2. package/dist/base-plugin/fieldviews.js +2 -0
  3. package/dist/base-plugin/fieldviews.js.map +1 -1
  4. package/dist/base-plugin/index.d.ts +29 -29
  5. package/dist/base-plugin/types.d.ts.map +1 -1
  6. package/dist/base-plugin/types.js +9 -8
  7. package/dist/base-plugin/types.js.map +1 -1
  8. package/dist/base-plugin/viewtemplates/edit.d.ts +3 -3
  9. package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
  10. package/dist/base-plugin/viewtemplates/edit.js +28 -5
  11. package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
  12. package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
  13. package/dist/base-plugin/viewtemplates/show.js +10 -3
  14. package/dist/base-plugin/viewtemplates/show.js.map +1 -1
  15. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +2 -1
  16. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
  17. package/dist/base-plugin/viewtemplates/viewable_fields.js +32 -10
  18. package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
  19. package/dist/contracts.js +1 -1
  20. package/dist/contracts.js.map +1 -1
  21. package/dist/db/connect.d.ts.map +1 -1
  22. package/dist/db/connect.js +9 -2
  23. package/dist/db/connect.js.map +1 -1
  24. package/dist/db/index.d.ts +6 -0
  25. package/dist/db/index.d.ts.map +1 -1
  26. package/dist/db/index.js +6 -0
  27. package/dist/db/index.js.map +1 -1
  28. package/dist/db/state.d.ts +1 -0
  29. package/dist/db/state.d.ts.map +1 -1
  30. package/dist/db/state.js +13 -4
  31. package/dist/db/state.js.map +1 -1
  32. package/dist/migrate.js +1 -1
  33. package/dist/migrate.js.map +1 -1
  34. package/dist/migrations/202112282254.d.ts +3 -0
  35. package/dist/migrations/202112282254.d.ts.map +1 -0
  36. package/dist/migrations/202112282254.js +5 -0
  37. package/dist/migrations/202112282254.js.map +1 -0
  38. package/dist/models/backup.d.ts +3 -1
  39. package/dist/models/backup.d.ts.map +1 -1
  40. package/dist/models/backup.js +61 -61
  41. package/dist/models/backup.js.map +1 -1
  42. package/dist/models/config.d.ts +39 -179
  43. package/dist/models/config.d.ts.map +1 -1
  44. package/dist/models/config.js +77 -50
  45. package/dist/models/config.js.map +1 -1
  46. package/dist/models/crash.d.ts +40 -47
  47. package/dist/models/crash.d.ts.map +1 -1
  48. package/dist/models/crash.js +40 -39
  49. package/dist/models/crash.js.map +1 -1
  50. package/dist/models/email.d.ts +11 -13
  51. package/dist/models/email.d.ts.map +1 -1
  52. package/dist/models/email.js +19 -15
  53. package/dist/models/email.js.map +1 -1
  54. package/dist/models/expression.d.ts +37 -31
  55. package/dist/models/expression.d.ts.map +1 -1
  56. package/dist/models/expression.js +33 -20
  57. package/dist/models/expression.js.map +1 -1
  58. package/dist/models/field.d.ts +11 -10
  59. package/dist/models/field.d.ts.map +1 -1
  60. package/dist/models/field.js +13 -17
  61. package/dist/models/field.js.map +1 -1
  62. package/dist/models/fieldrepeat.d.ts +25 -20
  63. package/dist/models/fieldrepeat.d.ts.map +1 -1
  64. package/dist/models/fieldrepeat.js +8 -14
  65. package/dist/models/fieldrepeat.js.map +1 -1
  66. package/dist/models/file.d.ts +56 -58
  67. package/dist/models/file.d.ts.map +1 -1
  68. package/dist/models/file.js +25 -52
  69. package/dist/models/file.js.map +1 -1
  70. package/dist/models/form.d.ts +69 -50
  71. package/dist/models/form.d.ts.map +1 -1
  72. package/dist/models/form.js +49 -51
  73. package/dist/models/form.js.map +1 -1
  74. package/dist/models/index.d.ts +39 -0
  75. package/dist/models/index.d.ts.map +1 -1
  76. package/dist/models/index.js.map +1 -1
  77. package/dist/models/layout.d.ts +16 -31
  78. package/dist/models/layout.d.ts.map +1 -1
  79. package/dist/models/layout.js +2 -4
  80. package/dist/models/layout.js.map +1 -1
  81. package/dist/models/library.d.ts +1 -9
  82. package/dist/models/library.d.ts.map +1 -1
  83. package/dist/models/library.js.map +1 -1
  84. package/dist/models/pack.d.ts +37 -87
  85. package/dist/models/pack.d.ts.map +1 -1
  86. package/dist/models/pack.js +120 -87
  87. package/dist/models/pack.js.map +1 -1
  88. package/dist/models/page.d.ts +23 -47
  89. package/dist/models/page.d.ts.map +1 -1
  90. package/dist/models/page.js +19 -41
  91. package/dist/models/page.js.map +1 -1
  92. package/dist/models/plugin.d.ts +41 -65
  93. package/dist/models/plugin.d.ts.map +1 -1
  94. package/dist/models/plugin.js +17 -39
  95. package/dist/models/plugin.js.map +1 -1
  96. package/dist/models/role.d.ts +12 -9
  97. package/dist/models/role.d.ts.map +1 -1
  98. package/dist/models/role.js +6 -1
  99. package/dist/models/role.js.map +1 -1
  100. package/dist/models/scheduler.d.ts +8 -8
  101. package/dist/models/scheduler.d.ts.map +1 -1
  102. package/dist/models/scheduler.js +17 -14
  103. package/dist/models/scheduler.js.map +1 -1
  104. package/dist/models/table.d.ts +21 -20
  105. package/dist/models/table.d.ts.map +1 -1
  106. package/dist/models/table.js +98 -23
  107. package/dist/models/table.js.map +1 -1
  108. package/dist/models/table_constraints.d.ts +44 -39
  109. package/dist/models/table_constraints.d.ts.map +1 -1
  110. package/dist/models/table_constraints.js +13 -32
  111. package/dist/models/table_constraints.js.map +1 -1
  112. package/dist/models/trigger.d.ts +2 -17
  113. package/dist/models/trigger.d.ts.map +1 -1
  114. package/dist/models/trigger.js +1 -1
  115. package/dist/models/trigger.js.map +1 -1
  116. package/dist/models/user.d.ts +108 -142
  117. package/dist/models/user.d.ts.map +1 -1
  118. package/dist/models/user.js +51 -71
  119. package/dist/models/user.js.map +1 -1
  120. package/dist/models/view.d.ts +94 -98
  121. package/dist/models/view.d.ts.map +1 -1
  122. package/dist/models/view.js +103 -80
  123. package/dist/models/view.js.map +1 -1
  124. package/dist/models/workflow.d.ts +23 -21
  125. package/dist/models/workflow.d.ts.map +1 -1
  126. package/dist/models/workflow.js +9 -17
  127. package/dist/models/workflow.js.map +1 -1
  128. package/dist/plugin-helper.d.ts.map +1 -1
  129. package/dist/plugin-helper.js +31 -12
  130. package/dist/plugin-helper.js.map +1 -1
  131. package/dist/tests/exact_views.test.js +1 -1
  132. package/dist/tests/exact_views.test.js.map +1 -1
  133. package/dist/tests/table.test.js +81 -2
  134. package/dist/tests/table.test.js.map +1 -1
  135. package/dist/tsconfig.ref.tsbuildinfo +1 -1
  136. package/package.json +14 -5
  137. package/dist/common_types.d.ts +0 -28
  138. package/dist/common_types.d.ts.map +0 -1
  139. package/dist/common_types.js +0 -16
  140. package/dist/common_types.js.map +0 -1
  141. package/dist/coverage/lcov-report/block-navigation.d.ts +0 -2
  142. package/dist/coverage/lcov-report/block-navigation.d.ts.map +0 -1
  143. package/dist/coverage/lcov-report/block-navigation.js +0 -66
  144. package/dist/coverage/lcov-report/block-navigation.js.map +0 -1
  145. package/dist/coverage/lcov-report/prettify.d.ts +0 -1
  146. package/dist/coverage/lcov-report/prettify.d.ts.map +0 -1
  147. package/dist/coverage/lcov-report/prettify.js +0 -478
  148. package/dist/coverage/lcov-report/prettify.js.map +0 -1
  149. package/dist/coverage/lcov-report/sorter.d.ts +0 -2
  150. package/dist/coverage/lcov-report/sorter.d.ts.map +0 -1
  151. package/dist/coverage/lcov-report/sorter.js +0 -141
  152. package/dist/coverage/lcov-report/sorter.js.map +0 -1
@@ -1,15 +1,46 @@
1
- export = User;
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
+ /**
21
+ * User constructor
22
+ * @param {object} o
23
+ */
24
+ constructor(o: UserCfg | User);
7
25
  /**
8
26
  * Get bcrypt hash for Password
9
27
  * @param pw - password string
10
28
  * @returns {Promise<string>}
11
29
  */
12
- static hashPassword(pw: any): Promise<string>;
30
+ static hashPassword(pw: string): Promise<string>;
31
+ /**
32
+ * Check password
33
+ * @param pw - password string
34
+ * @returns {boolean}
35
+ */
36
+ checkPassword(pw: string): boolean;
37
+ /**
38
+ * Change password
39
+ * @param newpw - new password string
40
+ * @param expireToken - if true than force reset password token
41
+ * @returns {Promise<void>} no result
42
+ */
43
+ changePasswordTo(newpw: string, expireToken?: boolean): Promise<void>;
13
44
  /**
14
45
  * Find or Create User
15
46
  * @param k
@@ -17,71 +48,101 @@ declare class User {
17
48
  * @param {object} [uo = {}]
18
49
  * @returns {Promise<{session_object: {_attributes: {}}, _attributes: {}}|User|*|boolean|{error: string}|User>}
19
50
  */
20
- static findOrCreateByAttribute(k: any, v: any, uo?: object | undefined): Promise<{
21
- session_object: {
22
- _attributes: {};
23
- };
24
- _attributes: {};
25
- } | User | any | boolean | {
26
- error: string;
27
- } | User>;
51
+ static findOrCreateByAttribute(k: string, v: any, uo?: any): Promise<User | false | ErrorMessage>;
28
52
  /**
29
53
  * Create user
30
54
  * @param uo - user object
31
55
  * @returns {Promise<{error: string}|User>}
32
56
  */
33
- static create(uo: any): Promise<{
34
- error: string;
35
- } | User>;
57
+ static create(uo: GenObj): Promise<User | ErrorMessage>;
58
+ /**
59
+ * Create session object for user
60
+ * @type {{role_id: number, language, id, email, tenant: *}}
61
+ */
62
+ get session_object(): any;
36
63
  /**
37
64
  * Authenticate User
38
65
  * @param uo - user object
39
66
  * @returns {Promise<boolean|User>}
40
67
  */
41
- static authenticate(uo: any): Promise<boolean | User>;
68
+ static authenticate(uo: any): Promise<User | false>;
42
69
  /**
43
70
  * Find users list
44
71
  * @param where - where object
45
72
  * @param selectopts - select options
46
73
  * @returns {Promise<User[]>}
47
74
  */
48
- static find(where: any, selectopts: any): Promise<User[]>;
75
+ static find(where: Where, selectopts?: SelectOptions): Promise<Array<User>>;
49
76
  /**
50
77
  * Find one user
51
78
  * @param where - where object
52
79
  * @returns {Promise<User|*>}
53
80
  */
54
- static findOne(where: any): Promise<User | any>;
81
+ static findOne(where: Where): Promise<User | undefined>;
55
82
  /**
56
83
  * Check that user table is not empty in database
57
84
  * @deprecated use method count()
58
85
  * @returns {Promise<boolean>} true if there are users in db
59
86
  */
60
87
  static nonEmpty(): Promise<boolean>;
88
+ /**
89
+ * Delete user based on session object
90
+ * @returns {Promise<void>}
91
+ */
92
+ delete(): Promise<void>;
93
+ /**
94
+ * Set language for User in database
95
+ * @param language
96
+ * @returns {Promise<void>}
97
+ */
98
+ set_language(language: string): Promise<void>;
99
+ /**
100
+ * Update User
101
+ * @param row
102
+ * @returns {Promise<void>}
103
+ */
104
+ update(row: Row): Promise<void>;
105
+ /**
106
+ * Get new reset token
107
+ * @returns {Promise<*|string>}
108
+ */
109
+ getNewResetToken(): Promise<string>;
110
+ /**
111
+ * Add new API token to user
112
+ * @returns {Promise<string>}
113
+ */
114
+ getNewAPIToken(): Promise<string>;
115
+ /**
116
+ * Remove API token for user
117
+ * @returns {Promise<string>}
118
+ */
119
+ removeAPIToken(): Promise<null>;
61
120
  /**
62
121
  * Validate password
63
122
  * @param pw
64
123
  * @returns {string}
65
124
  */
66
- static unacceptable_password_reason(pw: any): string;
125
+ static unacceptable_password_reason(pw: string): string | undefined;
67
126
  /**
68
127
  * Validate email
69
128
  * @param email
70
129
  * @returns {boolean}
71
130
  */
72
- static valid_email(email: any): boolean;
131
+ static valid_email(email: string): boolean;
73
132
  /**
74
133
  * Verification with token
75
134
  * @param email - email sting
76
135
  * @param verification_token - verification token string
77
136
  * @returns {Promise<{error: string}|boolean>} true if verification passed, error string if not
78
137
  */
79
- static verifyWithToken({ email, verification_token }: {
80
- email: any;
81
- verification_token: any;
82
- }): Promise<{
83
- error: string;
84
- } | boolean>;
138
+ static verifyWithToken({ email, verification_token, }: {
139
+ email: string;
140
+ verification_token: string;
141
+ }): Promise<true | ErrorMessage>;
142
+ /**
143
+ * @returns {Promise<boolean>}
144
+ */
145
+ set_to_verified(): Promise<true>;
85
146
  /**
86
147
  * Reset password using token
87
148
  * @param email - email address string
@@ -90,107 +151,26 @@ declare class User {
90
151
  * @returns {Promise<{error: string}|{success: boolean}>}
91
152
  */
92
153
  static resetPasswordWithToken({ email, reset_password_token, password, }: {
93
- email: any;
94
- reset_password_token: any;
95
- password: any;
96
- }): Promise<{
97
- error: string;
98
- } | {
99
- success: boolean;
100
- }>;
154
+ email: string;
155
+ reset_password_token: string;
156
+ password: string;
157
+ }): Promise<SuccessMessage | ErrorMessage>;
101
158
  /**
102
159
  * Count users in database
103
160
  * @param where
104
161
  * @returns {Promise<number>}
105
162
  */
106
- static count(where: any): Promise<number>;
163
+ static count(where: Where): Promise<number>;
107
164
  /**
108
165
  * Get available roles
109
166
  * @returns {Promise<*>}
110
167
  */
111
- static get_roles(): Promise<any>;
168
+ static get_roles(): Promise<string[]>;
112
169
  /**
113
170
  * Generate password
114
171
  * @returns {string}
115
172
  */
116
173
  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
174
  /**
195
175
  * @returns {Promise<void>}
196
176
  */
@@ -198,38 +178,24 @@ declare class User {
198
178
  /**
199
179
  * @param {object} req
200
180
  */
201
- relogin(req: object): void;
181
+ relogin(req: NonNullable<any>): void;
202
182
  }
203
183
  declare namespace User {
204
- namespace contract {
205
- namespace variables {
206
- const id: any;
207
- const email: any;
208
- const disabled: any;
209
- const language: any;
210
- const _attributes: any;
211
- const role_id: any;
212
- const reset_password_token: any;
213
- const reset_password_expiry: any;
214
- }
215
- namespace methods {
216
- const _delete: any;
217
- export { _delete as delete };
218
- export const destroy_sessions: any;
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
- }
184
+ type UserCfg = {
185
+ id?: number | string;
186
+ email: string;
187
+ password: string;
188
+ disabled?: boolean;
189
+ language?: string;
190
+ _attributes?: string | any;
191
+ api_token?: string;
192
+ verification_token?: string;
193
+ verified_on?: Date | number | string;
194
+ role_id?: number | string;
195
+ reset_password_token?: string;
196
+ reset_password_expiry?: Date | number | string;
197
+ };
234
198
  }
199
+ declare type UserCfg = User.UserCfg;
200
+ export = User;
235
201
  //# sourceMappingURL=user.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../models/user.js"],"names":[],"mappings":";AAkCA;;;GAGG;AACH;IAkCE;;;;OAIG;IACH,8BAFa,QAAQ,MAAM,CAAC,CAI3B;IAyBD;;;;;;OAMG;IACH,yEAFa,QAAQ;QAAC,cAAc,EAAE;YAAC,WAAW,EAAE,EAAE,CAAA;SAAC,CAAC;QAAC,WAAW,EAAE,EAAE,CAAA;KAAC,GAAC,IAAI,SAAG,OAAO,GAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAC,IAAI,CAAC,CAyB7G;IAED;;;;OAIG;IACH,wBAFa,QAAQ;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAC,IAAI,CAAC,CAsBzC;IAkBD;;;;OAIG;IACH,8BAFa,QAAQ,OAAO,GAAC,IAAI,CAAC,CAWjC;IAED;;;;;OAKG;IACH,0CAFa,QAAQ,IAAI,EAAE,CAAC,CAK3B;IAED;;;;OAIG;IACH,4BAFa,QAAQ,IAAI,MAAE,CAAC,CAK3B;IAED;;;;OAIG;IACH,mBAFa,QAAQ,OAAO,CAAC,CAK5B;IAwED;;;;OAIG;IACH,8CAFa,MAAM,CAMlB;IAED;;;;OAIG;IAEH,gCAHa,OAAO,CAKnB;IAED;;;;;OAKG;IACH;;;QAFa,QAAQ;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAC,OAAO,CAAC,CAa5C;IAmBD;;;;;;OAMG;IACH;;;;QAFa,QAAQ;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAC,CAAC,CAkCvD;IAED;;;;OAIG;IAGH,0BAJa,QAAQ,MAAM,CAAC,CAM3B;IAED;;;OAGG;IACH,oBAFa,YAAU,CAKtB;IAED;;;OAGG;IACH,4BAFa,MAAM,CAOlB;IAhYD;;;OAGG;IACH,eAFW,MAAM,EA6BhB;IA1BC,WAAoB;IACpB,cAA0B;IAC1B,cAA0B;IAC1B,iBAGyB;IACzB,eAA4B;IAC5B,wBAA8C;IAC9C,iBAEiB;IACjB,kBAA4B;IAC5B,QAA6B;IAC7B,0BAA0D;IAC1D,2BAKqC;IACrC,gBAAyC;IAgB3C;;;;OAIG;IACH,wBAFa,OAAO,CAInB;IAED;;;;;OAKG;IACH,gDAFa,QAAQ,IAAI,CAAC,CAQzB;IA6DD;;;OAGG;IACH;iBAFoB,MAAM;;;;;MAYzB;IAiDD;;;OAGG;IACH,UAFa,QAAQ,IAAI,CAAC,CAMzB;IAED;;;;OAIG;IACH,6BAFa,QAAQ,IAAI,CAAC,CAIzB;IAED;;;;OAIG;IACH,kBAFa,QAAQ,IAAI,CAAC,CAIzB;IAED;;;OAGG;IACH,oBAFa,QAAQ,MAAE,MAAM,CAAC,CAgB7B;IAED;;;OAGG;IACH,kBAFa,QAAQ,MAAM,CAAC,CAO3B;IAED;;;OAGG;IACH,kBAFa,QAAQ,MAAM,CAAC,CAO3B;IA0CD;;OAEG;IACH,mBAFa,QAAQ,OAAO,CAAC,CAc5B;IA0ED;;OAEG;IACH,oBAFa,QAAQ,IAAI,CAAC,CAazB;IAED;;OAEG;IACH,aAFW,MAAM,QAMhB;CACF"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../models/user.ts"],"names":[],"mappings":"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"}
@@ -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 db = require("../db");
8
- const bcrypt = require("bcryptjs");
9
- const { contract, is } = require("contractis");
10
- const { v4: uuidv4 } = require("uuid");
11
- const dumbPasswords = require("dumb-passwords");
12
- const validator = require("email-validator");
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 = ["string", "number"].includes(typeof o.verified_on)
41
- ? new Date(o.verified_on)
42
- : o.verified_on;
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
- this.id = o.id ? +o.id : o.id;
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 || null;
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 bcrypt.hash(pw, 10);
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 bcrypt.compareSync(pw, this.password);
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 db.update("users", upd, this.id);
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 db.insert("users", {
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: db.getTenantSchema(),
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 db.select("users", where, selectopts);
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 db.selectMaybeOne("users", where);
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 db.count("users");
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 = db.getTenantSchemaPrefix();
220
+ const schema = db_1.default.getTenantSchemaPrefix();
214
221
  this.destroy_sessions();
215
- await db.query(`delete FROM ${schema}users WHERE id = $1`, [this.id]);
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 db.update("users", row, this.id);
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 = uuidv4();
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 bcrypt.hash(reset_password_token_uuid, 10);
242
- await db.update("users", { reset_password_token, reset_password_expiry }, this.id);
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 = uuidv4();
251
- await db.update("users", { api_token }, this.id);
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 db.update("users", { api_token }, this.id);
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 (dumbPasswords.check(pw))
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 validator.validate(email);
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 db.update("users", upd, this.id);
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 && new Date() < u.reset_password_expiry && u.reset_password_token) {
335
- const match = bcrypt.compareSync(reset_password_token, u.reset_password_token);
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 db.count("users", where || {});
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 db.select("_sc_roles", {}, { orderBy: "id" });
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 = is.str.generate().split(" ").join("");
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 (!db.isSQLite) {
387
- const schema = db.getTenantSchema();
388
- await db.query(`delete from _sc_session
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