@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.
Files changed (219) hide show
  1. package/dist/base-plugin/index.d.ts +145 -128
  2. package/dist/base-plugin/index.d.ts.map +1 -1
  3. package/dist/base-plugin/types.d.ts +105 -85
  4. package/dist/base-plugin/types.d.ts.map +1 -1
  5. package/dist/base-plugin/types.js +40 -11
  6. package/dist/base-plugin/types.js.map +1 -1
  7. package/dist/base-plugin/viewtemplates/edit.d.ts +3 -3
  8. package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
  9. package/dist/base-plugin/viewtemplates/edit.js +56 -6
  10. package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
  11. package/dist/base-plugin/viewtemplates/filter.d.ts.map +1 -1
  12. package/dist/base-plugin/viewtemplates/filter.js +13 -0
  13. package/dist/base-plugin/viewtemplates/filter.js.map +1 -1
  14. package/dist/base-plugin/viewtemplates/list.d.ts +1 -1
  15. package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -1
  16. package/dist/base-plugin/viewtemplates/list.js +64 -1
  17. package/dist/base-plugin/viewtemplates/list.js.map +1 -1
  18. package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
  19. package/dist/base-plugin/viewtemplates/show.js +11 -8
  20. package/dist/base-plugin/viewtemplates/show.js.map +1 -1
  21. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +1 -0
  22. package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
  23. package/dist/base-plugin/viewtemplates/viewable_fields.js +27 -14
  24. package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
  25. package/dist/contracts.d.ts.map +1 -1
  26. package/dist/contracts.js +11 -3
  27. package/dist/contracts.js.map +1 -1
  28. package/dist/db/connect.d.ts.map +1 -1
  29. package/dist/db/connect.js +9 -2
  30. package/dist/db/connect.js.map +1 -1
  31. package/dist/db/reset_schema.d.ts.map +1 -1
  32. package/dist/db/reset_schema.js +21 -19
  33. package/dist/db/reset_schema.js.map +1 -1
  34. package/dist/db/state.d.ts +9 -10
  35. package/dist/db/state.d.ts.map +1 -1
  36. package/dist/db/state.js +14 -29
  37. package/dist/db/state.js.map +1 -1
  38. package/dist/models/backup.d.ts +1 -1
  39. package/dist/models/backup.d.ts.map +1 -1
  40. package/dist/models/backup.js +2 -0
  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 +79 -52
  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/discovery.d.ts +17 -25
  51. package/dist/models/discovery.d.ts.map +1 -1
  52. package/dist/models/discovery.js +38 -26
  53. package/dist/models/discovery.js.map +1 -1
  54. package/dist/models/email.d.ts +11 -13
  55. package/dist/models/email.d.ts.map +1 -1
  56. package/dist/models/email.js +19 -15
  57. package/dist/models/email.js.map +1 -1
  58. package/dist/models/eventlog.d.ts +1 -1
  59. package/dist/models/eventlog.d.ts.map +1 -1
  60. package/dist/models/eventlog.js.map +1 -1
  61. package/dist/models/expression.d.ts +39 -31
  62. package/dist/models/expression.d.ts.map +1 -1
  63. package/dist/models/expression.js +44 -29
  64. package/dist/models/expression.js.map +1 -1
  65. package/dist/models/field.d.ts +12 -47
  66. package/dist/models/field.d.ts.map +1 -1
  67. package/dist/models/field.js +3 -3
  68. package/dist/models/field.js.map +1 -1
  69. package/dist/models/fieldrepeat.d.ts +3 -0
  70. package/dist/models/fieldrepeat.d.ts.map +1 -1
  71. package/dist/models/fieldrepeat.js +2 -0
  72. package/dist/models/fieldrepeat.js.map +1 -1
  73. package/dist/models/file.d.ts +56 -58
  74. package/dist/models/file.d.ts.map +1 -1
  75. package/dist/models/file.js +25 -52
  76. package/dist/models/file.js.map +1 -1
  77. package/dist/models/index.d.ts +39 -0
  78. package/dist/models/index.d.ts.map +1 -1
  79. package/dist/models/index.js.map +1 -1
  80. package/dist/models/layout.d.ts +16 -31
  81. package/dist/models/layout.d.ts.map +1 -1
  82. package/dist/models/layout.js +2 -4
  83. package/dist/models/layout.js.map +1 -1
  84. package/dist/models/library.d.ts +2 -10
  85. package/dist/models/library.d.ts.map +1 -1
  86. package/dist/models/library.js.map +1 -1
  87. package/dist/models/pack.d.ts +40 -87
  88. package/dist/models/pack.d.ts.map +1 -1
  89. package/dist/models/pack.js +118 -89
  90. package/dist/models/pack.js.map +1 -1
  91. package/dist/models/page.d.ts +22 -47
  92. package/dist/models/page.d.ts.map +1 -1
  93. package/dist/models/page.js +19 -41
  94. package/dist/models/page.js.map +1 -1
  95. package/dist/models/plugin.d.ts +41 -65
  96. package/dist/models/plugin.d.ts.map +1 -1
  97. package/dist/models/plugin.js +19 -41
  98. package/dist/models/plugin.js.map +1 -1
  99. package/dist/models/random.d.ts +18 -21
  100. package/dist/models/random.d.ts.map +1 -1
  101. package/dist/models/random.js +31 -29
  102. package/dist/models/random.js.map +1 -1
  103. package/dist/models/role.d.ts +3 -9
  104. package/dist/models/role.d.ts.map +1 -1
  105. package/dist/models/role.js.map +1 -1
  106. package/dist/models/scheduler.d.ts +2 -8
  107. package/dist/models/scheduler.d.ts.map +1 -1
  108. package/dist/models/scheduler.js +18 -16
  109. package/dist/models/scheduler.js.map +1 -1
  110. package/dist/models/table.d.ts +12 -23
  111. package/dist/models/table.d.ts.map +1 -1
  112. package/dist/models/table.js +46 -23
  113. package/dist/models/table.js.map +1 -1
  114. package/dist/models/table_constraints.d.ts +44 -39
  115. package/dist/models/table_constraints.d.ts.map +1 -1
  116. package/dist/models/table_constraints.js +17 -33
  117. package/dist/models/table_constraints.js.map +1 -1
  118. package/dist/models/tenant.d.ts +16 -60
  119. package/dist/models/tenant.d.ts.map +1 -1
  120. package/dist/models/tenant.js +52 -30
  121. package/dist/models/tenant.js.map +1 -1
  122. package/dist/models/trigger.d.ts +2 -17
  123. package/dist/models/trigger.d.ts.map +1 -1
  124. package/dist/models/trigger.js +2 -2
  125. package/dist/models/trigger.js.map +1 -1
  126. package/dist/models/user.d.ts +110 -142
  127. package/dist/models/user.d.ts.map +1 -1
  128. package/dist/models/user.js +51 -71
  129. package/dist/models/user.js.map +1 -1
  130. package/dist/models/view.d.ts +7 -21
  131. package/dist/models/view.d.ts.map +1 -1
  132. package/dist/models/view.js +1 -1
  133. package/dist/models/view.js.map +1 -1
  134. package/dist/models/workflow.d.ts +4 -4
  135. package/dist/models/workflow.d.ts.map +1 -1
  136. package/dist/models/workflow.js.map +1 -1
  137. package/dist/plugin-helper.d.ts.map +1 -1
  138. package/dist/plugin-helper.js +58 -26
  139. package/dist/plugin-helper.js.map +1 -1
  140. package/dist/tests/actions.test.d.ts.map +1 -1
  141. package/dist/tests/actions.test.js +102 -82
  142. package/dist/tests/actions.test.js.map +1 -1
  143. package/dist/tests/assertions.d.ts +13 -0
  144. package/dist/tests/assertions.d.ts.map +1 -0
  145. package/dist/tests/assertions.js +35 -0
  146. package/dist/tests/assertions.js.map +1 -0
  147. package/dist/tests/auxtest.test.d.ts.map +1 -1
  148. package/dist/tests/auxtest.test.js +33 -29
  149. package/dist/tests/auxtest.test.js.map +1 -1
  150. package/dist/tests/backup.test.d.ts.map +1 -1
  151. package/dist/tests/backup.test.js +62 -49
  152. package/dist/tests/backup.test.js.map +1 -1
  153. package/dist/tests/calc.test.d.ts.map +1 -1
  154. package/dist/tests/calc.test.js +106 -88
  155. package/dist/tests/calc.test.js.map +1 -1
  156. package/dist/tests/config.test.d.ts.map +1 -1
  157. package/dist/tests/config.test.js +39 -36
  158. package/dist/tests/config.test.js.map +1 -1
  159. package/dist/tests/discover.test.d.ts.map +1 -1
  160. package/dist/tests/discover.test.js +23 -17
  161. package/dist/tests/discover.test.js.map +1 -1
  162. package/dist/tests/exact_views.test.d.ts.map +1 -1
  163. package/dist/tests/exact_views.test.js +66 -25
  164. package/dist/tests/exact_views.test.js.map +1 -1
  165. package/dist/tests/field.test.d.ts.map +1 -1
  166. package/dist/tests/field.test.js +104 -93
  167. package/dist/tests/field.test.js.map +1 -1
  168. package/dist/tests/form.test.d.ts.map +1 -1
  169. package/dist/tests/form.test.js +71 -63
  170. package/dist/tests/form.test.js.map +1 -1
  171. package/dist/tests/mocks.d.ts +101 -105
  172. package/dist/tests/mocks.d.ts.map +1 -1
  173. package/dist/tests/mocks.js +19 -14
  174. package/dist/tests/mocks.js.map +1 -1
  175. package/dist/tests/models.test.d.ts.map +1 -1
  176. package/dist/tests/models.test.js +95 -80
  177. package/dist/tests/models.test.js.map +1 -1
  178. package/dist/tests/pack.test.d.ts.map +1 -1
  179. package/dist/tests/pack.test.js +54 -47
  180. package/dist/tests/pack.test.js.map +1 -1
  181. package/dist/tests/plugin.test.d.ts.map +1 -1
  182. package/dist/tests/plugin.test.js +31 -24
  183. package/dist/tests/plugin.test.js.map +1 -1
  184. package/dist/tests/random.test.d.ts.map +1 -1
  185. package/dist/tests/random.test.js +61 -50
  186. package/dist/tests/random.test.js.map +1 -1
  187. package/dist/tests/table.test.d.ts.map +1 -1
  188. package/dist/tests/table.test.js +557 -436
  189. package/dist/tests/table.test.js.map +1 -1
  190. package/dist/tests/tenant.test.d.ts.map +1 -1
  191. package/dist/tests/tenant.test.js +30 -23
  192. package/dist/tests/tenant.test.js.map +1 -1
  193. package/dist/tests/user.test.d.ts.map +1 -1
  194. package/dist/tests/user.test.js +128 -100
  195. package/dist/tests/user.test.js.map +1 -1
  196. package/dist/tests/view.test.d.ts.map +1 -1
  197. package/dist/tests/view.test.js +109 -85
  198. package/dist/tests/view.test.js.map +1 -1
  199. package/dist/tests/workflow.test.d.ts.map +1 -1
  200. package/dist/tests/workflow.test.js +40 -29
  201. package/dist/tests/workflow.test.js.map +1 -1
  202. package/dist/tsconfig.ref.tsbuildinfo +1 -1
  203. package/dist/utils.d.ts +29 -20
  204. package/dist/utils.d.ts.map +1 -1
  205. package/dist/utils.js +20 -5
  206. package/dist/utils.js.map +1 -1
  207. package/package.json +21 -11
  208. package/dist/coverage/lcov-report/block-navigation.d.ts +0 -2
  209. package/dist/coverage/lcov-report/block-navigation.d.ts.map +0 -1
  210. package/dist/coverage/lcov-report/block-navigation.js +0 -66
  211. package/dist/coverage/lcov-report/block-navigation.js.map +0 -1
  212. package/dist/coverage/lcov-report/prettify.d.ts +0 -1
  213. package/dist/coverage/lcov-report/prettify.d.ts.map +0 -1
  214. package/dist/coverage/lcov-report/prettify.js +0 -478
  215. package/dist/coverage/lcov-report/prettify.js.map +0 -1
  216. package/dist/coverage/lcov-report/sorter.d.ts +0 -2
  217. package/dist/coverage/lcov-report/sorter.d.ts.map +0 -1
  218. package/dist/coverage/lcov-report/sorter.js +0 -141
  219. package/dist/coverage/lcov-report/sorter.js.map +0 -1
@@ -1,15 +1,47 @@
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
+ [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: any): Promise<string>;
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: any, v: any, uo?: object | undefined): Promise<{
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: any): Promise<{
34
- error: string;
35
- } | User>;
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<boolean | User>;
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: any, selectopts: any): Promise<User[]>;
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: any): Promise<User | any>;
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: any): string;
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: any): boolean;
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: any;
81
- verification_token: any;
82
- }): Promise<{
83
- error: string;
84
- } | boolean>;
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: any;
94
- reset_password_token: any;
95
- password: any;
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: any): Promise<number>;
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<any>;
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: object): void;
182
+ relogin(req: NonNullable<any>): void;
202
183
  }
203
184
  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
- }
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.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