@spinajs/rbac 2.0.185 → 2.0.187

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 (321) hide show
  1. package/lib/cjs/actions.d.ts +75 -0
  2. package/lib/cjs/actions.d.ts.map +1 -0
  3. package/lib/cjs/actions.js +266 -0
  4. package/lib/cjs/actions.js.map +1 -0
  5. package/lib/cjs/auth.d.ts +5 -5
  6. package/lib/cjs/auth.d.ts.map +1 -1
  7. package/lib/cjs/auth.js +24 -51
  8. package/lib/cjs/auth.js.map +1 -1
  9. package/lib/cjs/cli/ActivateUser.d.ts.map +1 -1
  10. package/lib/cjs/cli/ActivateUser.js +6 -11
  11. package/lib/cjs/cli/ActivateUser.js.map +1 -1
  12. package/lib/cjs/cli/BanUser.d.ts +1 -3
  13. package/lib/cjs/cli/BanUser.d.ts.map +1 -1
  14. package/lib/cjs/cli/BanUser.js +9 -34
  15. package/lib/cjs/cli/BanUser.js.map +1 -1
  16. package/lib/cjs/cli/ChangeUserPassword.d.ts +0 -5
  17. package/lib/cjs/cli/ChangeUserPassword.d.ts.map +1 -1
  18. package/lib/cjs/cli/ChangeUserPassword.js +8 -29
  19. package/lib/cjs/cli/ChangeUserPassword.js.map +1 -1
  20. package/lib/cjs/cli/CreateUser.d.ts +0 -4
  21. package/lib/cjs/cli/CreateUser.d.ts.map +1 -1
  22. package/lib/cjs/cli/CreateUser.js +6 -37
  23. package/lib/cjs/cli/CreateUser.js.map +1 -1
  24. package/lib/cjs/cli/DeleteUser.d.ts.map +1 -1
  25. package/lib/cjs/cli/DeleteUser.js +13 -6
  26. package/lib/cjs/cli/DeleteUser.js.map +1 -1
  27. package/lib/cjs/cli/FindUser.d.ts +1 -7
  28. package/lib/cjs/cli/FindUser.d.ts.map +1 -1
  29. package/lib/cjs/cli/FindUser.js +8 -18
  30. package/lib/cjs/cli/FindUser.js.map +1 -1
  31. package/lib/cjs/cli/GrantUserRole.d.ts +0 -2
  32. package/lib/cjs/cli/GrantUserRole.d.ts.map +1 -1
  33. package/lib/cjs/cli/GrantUserRole.js +13 -18
  34. package/lib/cjs/cli/GrantUserRole.js.map +1 -1
  35. package/lib/cjs/cli/RevokeUserRole.d.ts +0 -2
  36. package/lib/cjs/cli/RevokeUserRole.d.ts.map +1 -1
  37. package/lib/cjs/cli/RevokeUserRole.js +13 -17
  38. package/lib/cjs/cli/RevokeUserRole.js.map +1 -1
  39. package/lib/cjs/cli/UnbanUserSchedule.d.ts.map +1 -1
  40. package/lib/cjs/cli/UnbanUserSchedule.js +1 -15
  41. package/lib/cjs/cli/UnbanUserSchedule.js.map +1 -1
  42. package/lib/cjs/config/rbac.d.ts +45 -16
  43. package/lib/cjs/config/rbac.d.ts.map +1 -1
  44. package/lib/cjs/config/rbac.js +44 -10
  45. package/lib/cjs/config/rbac.js.map +1 -1
  46. package/lib/cjs/events/UserActivated.d.ts +2 -4
  47. package/lib/cjs/events/UserActivated.d.ts.map +1 -1
  48. package/lib/cjs/events/UserActivated.js +3 -10
  49. package/lib/cjs/events/UserActivated.js.map +1 -1
  50. package/lib/cjs/events/UserBanned.d.ts +2 -5
  51. package/lib/cjs/events/UserBanned.d.ts.map +1 -1
  52. package/lib/cjs/events/UserBanned.js +3 -11
  53. package/lib/cjs/events/UserBanned.js.map +1 -1
  54. package/lib/{mjs/events/NewUser.d.ts → cjs/events/UserCreated.d.ts} +4 -3
  55. package/lib/cjs/events/UserCreated.d.ts.map +1 -0
  56. package/lib/cjs/events/{UserMetadataDeleted.js → UserCreated.js} +10 -10
  57. package/lib/cjs/events/UserCreated.js.map +1 -0
  58. package/lib/cjs/events/UserDeactivated.d.ts +2 -4
  59. package/lib/cjs/events/UserDeactivated.d.ts.map +1 -1
  60. package/lib/cjs/events/UserDeactivated.js +3 -10
  61. package/lib/cjs/events/UserDeactivated.js.map +1 -1
  62. package/lib/cjs/events/UserDeleted.d.ts +2 -4
  63. package/lib/cjs/events/UserDeleted.d.ts.map +1 -1
  64. package/lib/cjs/events/UserDeleted.js +3 -10
  65. package/lib/cjs/events/UserDeleted.js.map +1 -1
  66. package/lib/cjs/events/UserEvent.d.ts +7 -0
  67. package/lib/cjs/events/UserEvent.d.ts.map +1 -0
  68. package/lib/cjs/events/{UserMetadataAdded.js → UserEvent.js} +10 -9
  69. package/lib/cjs/events/UserEvent.js.map +1 -0
  70. package/lib/cjs/events/UserLogged.d.ts +4 -0
  71. package/lib/cjs/events/UserLogged.d.ts.map +1 -0
  72. package/lib/cjs/events/{NewUser.js → UserLogged.js} +7 -6
  73. package/lib/cjs/events/UserLogged.js.map +1 -0
  74. package/lib/cjs/events/UserLoginFailed.d.ts +7 -0
  75. package/lib/cjs/events/UserLoginFailed.d.ts.map +1 -0
  76. package/lib/cjs/events/{UserMetadataChanged.js → UserLoginFailed.js} +12 -10
  77. package/lib/cjs/events/UserLoginFailed.js.map +1 -0
  78. package/lib/cjs/events/UserMetadataChange.d.ts +14 -0
  79. package/lib/cjs/events/UserMetadataChange.d.ts.map +1 -0
  80. package/lib/cjs/events/UserMetadataChange.js +28 -0
  81. package/lib/cjs/events/UserMetadataChange.js.map +1 -0
  82. package/lib/cjs/events/UserPasswordChangeRequest.d.ts +4 -0
  83. package/lib/cjs/events/UserPasswordChangeRequest.d.ts.map +1 -0
  84. package/lib/cjs/events/UserPasswordChangeRequest.js +18 -0
  85. package/lib/cjs/events/UserPasswordChangeRequest.js.map +1 -0
  86. package/lib/cjs/events/UserPasswordChanged.d.ts +2 -4
  87. package/lib/cjs/events/UserPasswordChanged.d.ts.map +1 -1
  88. package/lib/cjs/events/UserPasswordChanged.js +3 -10
  89. package/lib/cjs/events/UserPasswordChanged.js.map +1 -1
  90. package/lib/cjs/events/UserPropertyChanged.d.ts +2 -6
  91. package/lib/cjs/events/UserPropertyChanged.d.ts.map +1 -1
  92. package/lib/cjs/events/UserPropertyChanged.js +6 -5
  93. package/lib/cjs/events/UserPropertyChanged.js.map +1 -1
  94. package/lib/cjs/events/UserRoleGranted.d.ts +5 -4
  95. package/lib/cjs/events/UserRoleGranted.d.ts.map +1 -1
  96. package/lib/cjs/events/UserRoleGranted.js +7 -5
  97. package/lib/cjs/events/UserRoleGranted.js.map +1 -1
  98. package/lib/cjs/events/UserRoleRevoked.d.ts +5 -4
  99. package/lib/cjs/events/UserRoleRevoked.d.ts.map +1 -1
  100. package/lib/cjs/events/UserRoleRevoked.js +7 -5
  101. package/lib/cjs/events/UserRoleRevoked.js.map +1 -1
  102. package/lib/cjs/events/UserUnbanned.d.ts +2 -4
  103. package/lib/cjs/events/UserUnbanned.d.ts.map +1 -1
  104. package/lib/cjs/events/UserUnbanned.js +3 -10
  105. package/lib/cjs/events/UserUnbanned.js.map +1 -1
  106. package/lib/cjs/events/index.d.ts +4 -4
  107. package/lib/cjs/events/index.d.ts.map +1 -1
  108. package/lib/cjs/events/index.js +4 -4
  109. package/lib/cjs/events/index.js.map +1 -1
  110. package/lib/cjs/index.d.ts +1 -1
  111. package/lib/cjs/index.d.ts.map +1 -1
  112. package/lib/cjs/index.js +1 -1
  113. package/lib/cjs/index.js.map +1 -1
  114. package/lib/cjs/interfaces.d.ts +11 -33
  115. package/lib/cjs/interfaces.d.ts.map +1 -1
  116. package/lib/cjs/interfaces.js +4 -4
  117. package/lib/cjs/interfaces.js.map +1 -1
  118. package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.d.ts.map +1 -1
  119. package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.js +3 -14
  120. package/lib/cjs/migrations/RBACInitial_2022_06_28_01_13_00.js.map +1 -1
  121. package/lib/cjs/models/User.d.ts +94 -28
  122. package/lib/cjs/models/User.d.ts.map +1 -1
  123. package/lib/cjs/models/User.js +150 -105
  124. package/lib/cjs/models/User.js.map +1 -1
  125. package/lib/cjs/models/UserMetadata.d.ts +2 -6
  126. package/lib/cjs/models/UserMetadata.d.ts.map +1 -1
  127. package/lib/cjs/models/UserMetadata.js +1 -9
  128. package/lib/cjs/models/UserMetadata.js.map +1 -1
  129. package/lib/cjs/session.d.ts +1 -1
  130. package/lib/cjs/session.d.ts.map +1 -1
  131. package/lib/cjs/session.js +6 -6
  132. package/lib/cjs/session.js.map +1 -1
  133. package/lib/mjs/actions.d.ts +75 -0
  134. package/lib/mjs/actions.d.ts.map +1 -0
  135. package/lib/mjs/actions.js +242 -0
  136. package/lib/mjs/actions.js.map +1 -0
  137. package/lib/mjs/auth.d.ts +5 -5
  138. package/lib/mjs/auth.d.ts.map +1 -1
  139. package/lib/mjs/auth.js +24 -51
  140. package/lib/mjs/auth.js.map +1 -1
  141. package/lib/mjs/cli/ActivateUser.d.ts.map +1 -1
  142. package/lib/mjs/cli/ActivateUser.js +6 -11
  143. package/lib/mjs/cli/ActivateUser.js.map +1 -1
  144. package/lib/mjs/cli/BanUser.d.ts +1 -3
  145. package/lib/mjs/cli/BanUser.d.ts.map +1 -1
  146. package/lib/mjs/cli/BanUser.js +9 -34
  147. package/lib/mjs/cli/BanUser.js.map +1 -1
  148. package/lib/mjs/cli/ChangeUserPassword.d.ts +0 -5
  149. package/lib/mjs/cli/ChangeUserPassword.d.ts.map +1 -1
  150. package/lib/mjs/cli/ChangeUserPassword.js +8 -29
  151. package/lib/mjs/cli/ChangeUserPassword.js.map +1 -1
  152. package/lib/mjs/cli/CreateUser.d.ts +0 -4
  153. package/lib/mjs/cli/CreateUser.d.ts.map +1 -1
  154. package/lib/mjs/cli/CreateUser.js +6 -37
  155. package/lib/mjs/cli/CreateUser.js.map +1 -1
  156. package/lib/mjs/cli/DeleteUser.d.ts.map +1 -1
  157. package/lib/mjs/cli/DeleteUser.js +13 -6
  158. package/lib/mjs/cli/DeleteUser.js.map +1 -1
  159. package/lib/mjs/cli/FindUser.d.ts +1 -7
  160. package/lib/mjs/cli/FindUser.d.ts.map +1 -1
  161. package/lib/mjs/cli/FindUser.js +8 -18
  162. package/lib/mjs/cli/FindUser.js.map +1 -1
  163. package/lib/mjs/cli/GrantUserRole.d.ts +0 -2
  164. package/lib/mjs/cli/GrantUserRole.d.ts.map +1 -1
  165. package/lib/mjs/cli/GrantUserRole.js +13 -15
  166. package/lib/mjs/cli/GrantUserRole.js.map +1 -1
  167. package/lib/mjs/cli/RevokeUserRole.d.ts +0 -2
  168. package/lib/mjs/cli/RevokeUserRole.d.ts.map +1 -1
  169. package/lib/mjs/cli/RevokeUserRole.js +13 -14
  170. package/lib/mjs/cli/RevokeUserRole.js.map +1 -1
  171. package/lib/mjs/cli/UnbanUserSchedule.d.ts.map +1 -1
  172. package/lib/mjs/cli/UnbanUserSchedule.js +1 -15
  173. package/lib/mjs/cli/UnbanUserSchedule.js.map +1 -1
  174. package/lib/mjs/config/rbac.d.ts +45 -16
  175. package/lib/mjs/config/rbac.d.ts.map +1 -1
  176. package/lib/mjs/config/rbac.js +44 -10
  177. package/lib/mjs/config/rbac.js.map +1 -1
  178. package/lib/mjs/events/UserActivated.d.ts +2 -4
  179. package/lib/mjs/events/UserActivated.d.ts.map +1 -1
  180. package/lib/mjs/events/UserActivated.js +4 -11
  181. package/lib/mjs/events/UserActivated.js.map +1 -1
  182. package/lib/mjs/events/UserBanned.d.ts +2 -5
  183. package/lib/mjs/events/UserBanned.d.ts.map +1 -1
  184. package/lib/mjs/events/UserBanned.js +4 -12
  185. package/lib/mjs/events/UserBanned.js.map +1 -1
  186. package/lib/{cjs/events/NewUser.d.ts → mjs/events/UserCreated.d.ts} +4 -3
  187. package/lib/mjs/events/UserCreated.d.ts.map +1 -0
  188. package/lib/mjs/events/{UserMetadataChanged.js → UserCreated.js} +10 -10
  189. package/lib/mjs/events/UserCreated.js.map +1 -0
  190. package/lib/mjs/events/UserDeactivated.d.ts +2 -4
  191. package/lib/mjs/events/UserDeactivated.d.ts.map +1 -1
  192. package/lib/mjs/events/UserDeactivated.js +4 -11
  193. package/lib/mjs/events/UserDeactivated.js.map +1 -1
  194. package/lib/mjs/events/UserDeleted.d.ts +2 -4
  195. package/lib/mjs/events/UserDeleted.d.ts.map +1 -1
  196. package/lib/mjs/events/UserDeleted.js +4 -11
  197. package/lib/mjs/events/UserDeleted.js.map +1 -1
  198. package/lib/mjs/events/UserEvent.d.ts +7 -0
  199. package/lib/mjs/events/UserEvent.d.ts.map +1 -0
  200. package/lib/mjs/events/{UserMetadataAdded.js → UserEvent.js} +9 -8
  201. package/lib/mjs/events/UserEvent.js.map +1 -0
  202. package/lib/mjs/events/UserLogged.d.ts +4 -0
  203. package/lib/mjs/events/UserLogged.d.ts.map +1 -0
  204. package/lib/mjs/events/{NewUser.js → UserLogged.js} +7 -6
  205. package/lib/mjs/events/UserLogged.js.map +1 -0
  206. package/lib/mjs/events/UserLoginFailed.d.ts +7 -0
  207. package/lib/mjs/events/UserLoginFailed.d.ts.map +1 -0
  208. package/lib/mjs/events/{UserMetadataDeleted.js → UserLoginFailed.js} +12 -10
  209. package/lib/mjs/events/UserLoginFailed.js.map +1 -0
  210. package/lib/mjs/events/UserMetadataChange.d.ts +14 -0
  211. package/lib/mjs/events/UserMetadataChange.d.ts.map +1 -0
  212. package/lib/mjs/events/UserMetadataChange.js +25 -0
  213. package/lib/mjs/events/UserMetadataChange.js.map +1 -0
  214. package/lib/mjs/events/UserPasswordChangeRequest.d.ts +4 -0
  215. package/lib/mjs/events/UserPasswordChangeRequest.d.ts.map +1 -0
  216. package/lib/mjs/events/UserPasswordChangeRequest.js +15 -0
  217. package/lib/mjs/events/UserPasswordChangeRequest.js.map +1 -0
  218. package/lib/mjs/events/UserPasswordChanged.d.ts +2 -4
  219. package/lib/mjs/events/UserPasswordChanged.d.ts.map +1 -1
  220. package/lib/mjs/events/UserPasswordChanged.js +4 -11
  221. package/lib/mjs/events/UserPasswordChanged.js.map +1 -1
  222. package/lib/mjs/events/UserPropertyChanged.d.ts +2 -6
  223. package/lib/mjs/events/UserPropertyChanged.d.ts.map +1 -1
  224. package/lib/mjs/events/UserPropertyChanged.js +6 -5
  225. package/lib/mjs/events/UserPropertyChanged.js.map +1 -1
  226. package/lib/mjs/events/UserRoleGranted.d.ts +5 -4
  227. package/lib/mjs/events/UserRoleGranted.d.ts.map +1 -1
  228. package/lib/mjs/events/UserRoleGranted.js +8 -6
  229. package/lib/mjs/events/UserRoleGranted.js.map +1 -1
  230. package/lib/mjs/events/UserRoleRevoked.d.ts +5 -4
  231. package/lib/mjs/events/UserRoleRevoked.d.ts.map +1 -1
  232. package/lib/mjs/events/UserRoleRevoked.js +8 -6
  233. package/lib/mjs/events/UserRoleRevoked.js.map +1 -1
  234. package/lib/mjs/events/UserUnbanned.d.ts +2 -4
  235. package/lib/mjs/events/UserUnbanned.d.ts.map +1 -1
  236. package/lib/mjs/events/UserUnbanned.js +4 -11
  237. package/lib/mjs/events/UserUnbanned.js.map +1 -1
  238. package/lib/mjs/events/index.d.ts +4 -4
  239. package/lib/mjs/events/index.d.ts.map +1 -1
  240. package/lib/mjs/events/index.js +4 -4
  241. package/lib/mjs/events/index.js.map +1 -1
  242. package/lib/mjs/index.d.ts +1 -1
  243. package/lib/mjs/index.d.ts.map +1 -1
  244. package/lib/mjs/index.js +1 -1
  245. package/lib/mjs/index.js.map +1 -1
  246. package/lib/mjs/interfaces.d.ts +11 -33
  247. package/lib/mjs/interfaces.d.ts.map +1 -1
  248. package/lib/mjs/interfaces.js +4 -4
  249. package/lib/mjs/interfaces.js.map +1 -1
  250. package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.d.ts.map +1 -1
  251. package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.js +3 -14
  252. package/lib/mjs/migrations/RBACInitial_2022_06_28_01_13_00.js.map +1 -1
  253. package/lib/mjs/models/User.d.ts +94 -28
  254. package/lib/mjs/models/User.d.ts.map +1 -1
  255. package/lib/mjs/models/User.js +150 -105
  256. package/lib/mjs/models/User.js.map +1 -1
  257. package/lib/mjs/models/UserMetadata.d.ts +2 -6
  258. package/lib/mjs/models/UserMetadata.d.ts.map +1 -1
  259. package/lib/mjs/models/UserMetadata.js +2 -10
  260. package/lib/mjs/models/UserMetadata.js.map +1 -1
  261. package/lib/mjs/session.d.ts +1 -1
  262. package/lib/mjs/session.d.ts.map +1 -1
  263. package/lib/mjs/session.js +5 -5
  264. package/lib/mjs/session.js.map +1 -1
  265. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  266. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  267. package/package.json +16 -18
  268. package/lib/cjs/cli/ClearUserTimelineSchedule.d.ts +0 -9
  269. package/lib/cjs/cli/ClearUserTimelineSchedule.d.ts.map +0 -1
  270. package/lib/cjs/cli/ClearUserTimelineSchedule.js +0 -55
  271. package/lib/cjs/cli/ClearUserTimelineSchedule.js.map +0 -1
  272. package/lib/cjs/cli/LatestUserEvents.d.ts +0 -7
  273. package/lib/cjs/cli/LatestUserEvents.d.ts.map +0 -1
  274. package/lib/cjs/cli/LatestUserEvents.js +0 -38
  275. package/lib/cjs/cli/LatestUserEvents.js.map +0 -1
  276. package/lib/cjs/events/NewUser.d.ts.map +0 -1
  277. package/lib/cjs/events/NewUser.js.map +0 -1
  278. package/lib/cjs/events/UserMetadataAdded.d.ts +0 -6
  279. package/lib/cjs/events/UserMetadataAdded.d.ts.map +0 -1
  280. package/lib/cjs/events/UserMetadataAdded.js.map +0 -1
  281. package/lib/cjs/events/UserMetadataChanged.d.ts +0 -6
  282. package/lib/cjs/events/UserMetadataChanged.d.ts.map +0 -1
  283. package/lib/cjs/events/UserMetadataChanged.js.map +0 -1
  284. package/lib/cjs/events/UserMetadataDeleted.d.ts +0 -6
  285. package/lib/cjs/events/UserMetadataDeleted.d.ts.map +0 -1
  286. package/lib/cjs/events/UserMetadataDeleted.js.map +0 -1
  287. package/lib/cjs/jobs/UnbanUser.d.ts +0 -10
  288. package/lib/cjs/jobs/UnbanUser.d.ts.map +0 -1
  289. package/lib/cjs/jobs/UnbanUser.js +0 -44
  290. package/lib/cjs/jobs/UnbanUser.js.map +0 -1
  291. package/lib/cjs/models/UserTimeline.d.ts +0 -29
  292. package/lib/cjs/models/UserTimeline.d.ts.map +0 -1
  293. package/lib/cjs/models/UserTimeline.js +0 -47
  294. package/lib/cjs/models/UserTimeline.js.map +0 -1
  295. package/lib/mjs/cli/ClearUserTimelineSchedule.d.ts +0 -9
  296. package/lib/mjs/cli/ClearUserTimelineSchedule.d.ts.map +0 -1
  297. package/lib/mjs/cli/ClearUserTimelineSchedule.js +0 -52
  298. package/lib/mjs/cli/ClearUserTimelineSchedule.js.map +0 -1
  299. package/lib/mjs/cli/LatestUserEvents.d.ts +0 -7
  300. package/lib/mjs/cli/LatestUserEvents.d.ts.map +0 -1
  301. package/lib/mjs/cli/LatestUserEvents.js +0 -35
  302. package/lib/mjs/cli/LatestUserEvents.js.map +0 -1
  303. package/lib/mjs/events/NewUser.d.ts.map +0 -1
  304. package/lib/mjs/events/NewUser.js.map +0 -1
  305. package/lib/mjs/events/UserMetadataAdded.d.ts +0 -6
  306. package/lib/mjs/events/UserMetadataAdded.d.ts.map +0 -1
  307. package/lib/mjs/events/UserMetadataAdded.js.map +0 -1
  308. package/lib/mjs/events/UserMetadataChanged.d.ts +0 -6
  309. package/lib/mjs/events/UserMetadataChanged.d.ts.map +0 -1
  310. package/lib/mjs/events/UserMetadataChanged.js.map +0 -1
  311. package/lib/mjs/events/UserMetadataDeleted.d.ts +0 -6
  312. package/lib/mjs/events/UserMetadataDeleted.d.ts.map +0 -1
  313. package/lib/mjs/events/UserMetadataDeleted.js.map +0 -1
  314. package/lib/mjs/jobs/UnbanUser.d.ts +0 -10
  315. package/lib/mjs/jobs/UnbanUser.d.ts.map +0 -1
  316. package/lib/mjs/jobs/UnbanUser.js +0 -41
  317. package/lib/mjs/jobs/UnbanUser.js.map +0 -1
  318. package/lib/mjs/models/UserTimeline.d.ts +0 -29
  319. package/lib/mjs/models/UserTimeline.d.ts.map +0 -1
  320. package/lib/mjs/models/UserTimeline.js +0 -44
  321. package/lib/mjs/models/UserTimeline.js.map +0 -1
@@ -1,28 +1,12 @@
1
1
  import { DateTime } from 'luxon';
2
- import { ModelBase, Relation, OneToManyRelationList, QueryScope, ISelectQueryBuilder } from '@spinajs/orm';
3
- import { Permission } from 'accesscontrol';
2
+ import { ModelBase, QueryScope, ISelectQueryBuilder, MetadataRelation } from '@spinajs/orm';
3
+ import { AccessControl, Permission } from 'accesscontrol';
4
4
  import { UserMetadata } from './UserMetadata.js';
5
- import { UserAction } from './UserTimeline.js';
6
- declare class UserMetadataRelation extends OneToManyRelationList<UserMetadata, User> {
7
- /**
8
- *
9
- * Checks if metadata exists, its DB first, it will only check DB for existence
10
- *
11
- * @param key - key to find
12
- * @returns {true|false}
13
- */
14
- exists(key: string): Promise<boolean>;
15
- /**
16
- *
17
- * Deletes meta from DB
18
- *
19
- * @param key - meta key do delete or regexp
20
- */
21
- delete(key: string): Promise<void>;
22
- get(key: string): Promise<any>;
23
- [index: string]: any;
24
- }
25
5
  export declare class UserQueryScopes implements QueryScope {
6
+ whereUser(this: ISelectQueryBuilder<User[]> & UserQueryScopes, userOrEmail: User | string): ISelectQueryBuilder<User[]> & UserQueryScopes;
7
+ checkIsBanned(this: ISelectQueryBuilder<User[]> & UserQueryScopes): Promise<boolean>;
8
+ checkIsActive(this: ISelectQueryBuilder<User[]> & UserQueryScopes): Promise<boolean>;
9
+ notDeleted(this: ISelectQueryBuilder<User[]> & UserQueryScopes): ISelectQueryBuilder<User[]> & UserQueryScopes;
26
10
  /**
27
11
  *
28
12
  * Fetch users that are not banned, are active & email confirmed, not deleted
@@ -30,7 +14,40 @@ export declare class UserQueryScopes implements QueryScope {
30
14
  */
31
15
  isActiveUser(this: ISelectQueryBuilder<User[]> & UserQueryScopes): ISelectQueryBuilder<User[]> & UserQueryScopes;
32
16
  whereEmail(this: ISelectQueryBuilder<User[]> & UserQueryScopes, email: string): ISelectQueryBuilder<User[]> & UserQueryScopes;
33
- whereLogin(this: ISelectQueryBuilder<User[]> & UserQueryScopes, email: string): ISelectQueryBuilder<User[]> & UserQueryScopes;
17
+ whereLogin(this: ISelectQueryBuilder<User[]> & UserQueryScopes, login: string): ISelectQueryBuilder<User[]> & UserQueryScopes;
18
+ whereUuid(this: ISelectQueryBuilder<User[]> & UserQueryScopes, uuid: string): ISelectQueryBuilder<User[]> & UserQueryScopes;
19
+ /**
20
+ * Tries to get user by ONE OF:
21
+ * - UUID
22
+ * - EMAIL
23
+ * - LOGIN
24
+ * - ID
25
+ *
26
+ * @param identifier - login ,email, uuid or id
27
+ * @returns
28
+ */
29
+ whereAnything(this: ISelectQueryBuilder<User[] | User> & UserQueryScopes, identifier: string | number): ISelectQueryBuilder<User | User[]> & UserQueryScopes;
30
+ }
31
+ /**
32
+ * Common user metadata keys
33
+ */
34
+ export declare enum USER_COMMON_METADATA {
35
+ /** BAN RELATED META KEYS */
36
+ USER_BAN_IS_BANNED = "user:ban:is_banned",
37
+ USER_BAN_START_DATE = "user:ban:start_date",
38
+ USER_BAN_DURATION = "user:ban:duration",
39
+ USER_BAN_REASON = "user:ban:reason",
40
+ /** USER GENERAL INFO */
41
+ USER_AVATAR = "user:avatar",
42
+ USER_PHONE = "user:phone",
43
+ USER_NEWSLETTER_ENABLED = "user:newsletter:enabled",
44
+ /** 2fa token */
45
+ USER_2FA_TOKEN = "user:2fa:token",
46
+ /** Reset password */
47
+ USER_PWD_RESET = "user:pwd:reset",
48
+ USER_PWD_RESET_START_DATE = "user:pwd_reset:start_date",
49
+ USER_PWD_RESET_WAIT_TIME = "user:pwd_reset:wait_time",
50
+ USER_PWD_RESET_TOKEN = "user:pwd_reset:token"
34
51
  }
35
52
  /**
36
53
  * Base model for users used by auth and ACL system
@@ -38,7 +55,13 @@ export declare class UserQueryScopes implements QueryScope {
38
55
  * To add / extend fields simply extend this model and register as default user model in ACL service
39
56
  */
40
57
  export declare class User extends ModelBase {
58
+ /**
59
+ * By default should not return password & id
60
+ * Id - to not expose internal id and predict users id / count
61
+ * Instead id should be replaced with uuid when exposing to end user / app
62
+ */
41
63
  protected _hidden: string[];
64
+ protected _ac: AccessControl;
42
65
  static readonly _queryScopes: UserQueryScopes;
43
66
  constructor(data?: Partial<User>);
44
67
  Id: number;
@@ -52,7 +75,6 @@ export declare class User extends ModelBase {
52
75
  * Displayed name ( for others to see )
53
76
  */
54
77
  Login: string;
55
- IsBanned: boolean;
56
78
  /**
57
79
  * User role
58
80
  */
@@ -72,31 +94,75 @@ export declare class User extends ModelBase {
72
94
  LastLoginAt: DateTime;
73
95
  /**
74
96
  * Account is fully active (eg. passed registration)
97
+ * Do not use it to ban users, active user still can have banned status
75
98
  */
76
99
  IsActive: boolean;
77
100
  /**
78
101
  * User additional information. Can be anything
79
102
  */
80
- Metadata: UserMetadataRelation;
81
- Actions: Relation<UserAction, User>;
103
+ Metadata: MetadataRelation<UserMetadata, User>;
82
104
  get IsGuest(): boolean;
105
+ get IsBanned(): boolean;
83
106
  can(resource: string, permission: string): Permission;
84
107
  /**
85
- * Shorthand for check if user can read any resource
108
+ * Shorthand for check if user can read any of specified resource
86
109
  * @param resource
87
110
  * @returns
88
111
  */
89
112
  canReadAny(resource: string): Permission;
113
+ /**
114
+ * Shortcut for check if user can read own resource
115
+ *
116
+ * @param resource
117
+ * @returns
118
+ */
90
119
  canReadOwn(resource: string): Permission;
120
+ /**
121
+ * Shortcut for check if user can update any resource
122
+ *
123
+ * @param resource
124
+ * @returns
125
+ */
91
126
  canUpdateAny(resource: string): Permission;
127
+ /**
128
+ * Shortcut for check if user can update own resource
129
+ * @param resource
130
+ * @returns
131
+ */
92
132
  canUpdateOwn(resource: string): Permission;
133
+ /**
134
+ * Shortcut for check if user can delete any resource
135
+ * @param resource
136
+ * @returns
137
+ */
93
138
  canDeleteAny(resource: string): Permission;
139
+ /**
140
+ * Shourtcut for check if user can delete own resource
141
+ * @param resource
142
+ * @returns
143
+ */
94
144
  canDeleteOwn(resource: string): Permission;
145
+ /**
146
+ * Shortcut for check if user can create any resource
147
+ * @param resource
148
+ * @returns
149
+ */
95
150
  canCreateAny(resource: string): Permission;
151
+ /**
152
+ * Shourtcut for check if user can create own resource
153
+ * @param resource
154
+ * @returns
155
+ */
96
156
  canCreateOwn(resource: string): Permission;
97
157
  static getByLogin(login: string): Promise<User>;
98
158
  static getByEmail(email: string): Promise<User>;
99
159
  static getByUuid(uuid: string): Promise<User>;
160
+ /**
161
+ * Tries to get user by any identifier
162
+ *
163
+ * @param identifier login, email, id or uuid
164
+ * @returns
165
+ */
166
+ static getByAnything(identifier: string | number): Promise<User>;
100
167
  }
101
- export {};
102
168
  //# sourceMappingURL=User.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"User.d.ts","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,SAAS,EAA8D,QAAQ,EAAwB,qBAAqB,EAAuB,UAAU,EAAmB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnO,OAAO,EAAiB,UAAU,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,cAAM,oBAAqB,SAAQ,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC;IAC1E;;;;;;OAMG;IACU,MAAM,CAAC,GAAG,EAAE,MAAM;IAO/B;;;;;OAKG;IACU,MAAM,CAAC,GAAG,EAAE,MAAM;IASlB,GAAG,CAAC,GAAG,EAAE,MAAM;IAoB5B,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAkDD,qBAAa,eAAgB,YAAW,UAAU;IAChD;;;;OAIG;IACI,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,CAAC,GAAG,eAAe;IAOhE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,CAAC,GAAG,eAAe,EAAE,KAAK,EAAE,MAAM;IAM7E,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,CAAC,GAAG,eAAe,EAAE,KAAK,EAAE,MAAM;CAKrF;AAED;;;;GAIG;AACH,qBAEa,IAAK,SAAQ,SAAS;IACjC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAsB;IAEjD,gBAAuB,YAAY,EAAE,eAAe,CAAyB;gBAE1D,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC;IAShC,EAAE,EAAE,MAAM,CAAC;IAGX,IAAI,EAAE,MAAM,CAAC;IAEb,KAAK,EAAE,MAAM,CAAC;IAErB;;OAEG;IACI,QAAQ,EAAE,MAAM,CAAC;IAExB;;OAEG;IACI,KAAK,EAAE,MAAM,CAAC;IAEd,QAAQ,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACI,IAAI,EAAE,MAAM,EAAE,CAAC;IAEtB;;OAEG;IAEI,SAAS,EAAE,QAAQ,CAAC;IAE3B;;OAEG;IAEI,YAAY,EAAE,QAAQ,CAAC;IAE9B;;OAEG;IAEI,SAAS,EAAE,QAAQ,CAAC;IAGpB,WAAW,EAAE,QAAQ,CAAC;IAE7B;;OAEG;IACI,QAAQ,EAAE,OAAO,CAAC;IAEzB;;OAEG;IAII,QAAQ,EAAE,oBAAoB,CAAC;IAG/B,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAE3C,IAAW,OAAO,IAAI,OAAO,CAE5B;IAEM,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU;IAK5D;;;;OAIG;IACI,UAAU,CAAC,QAAQ,EAAE,MAAM;IAG3B,UAAU,CAAC,QAAQ,EAAE,MAAM;IAI3B,YAAY,CAAC,QAAQ,EAAE,MAAM;IAI7B,YAAY,CAAC,QAAQ,EAAE,MAAM;IAI7B,YAAY,CAAC,QAAQ,EAAE,MAAM;IAI7B,YAAY,CAAC,QAAQ,EAAE,MAAM;IAI7B,YAAY,CAAC,QAAQ,EAAE,MAAM;IAI7B,YAAY,CAAC,QAAQ,EAAE,MAAM;WAItB,UAAU,CAAC,KAAK,EAAE,MAAM;WAIxB,UAAU,CAAC,KAAK,EAAE,MAAM;WAIxB,SAAS,CAAC,IAAI,EAAE,MAAM;CAOrC"}
1
+ {"version":3,"file":"User.d.ts","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"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"}
@@ -9,97 +9,38 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  var User_1;
11
11
  import { DateTime } from 'luxon';
12
- import { ModelBase, Primary, Connection, Model, CreatedAt, SoftDelete, HasMany, Relation, Uuid, DateTime as DT, OneToManyRelationList, InsertBehaviour } from '@spinajs/orm';
12
+ import { ModelBase, Primary, Connection, Model, Set, CreatedAt, SoftDelete, HasMany, Uuid, DateTime as DT, MetadataRelation, RawQuery } from '@spinajs/orm';
13
13
  import { DI } from '@spinajs/di';
14
14
  import { UserMetadata } from './UserMetadata.js';
15
- import { UserAction } from './UserTimeline.js';
16
15
  import { v4 as uuidv4 } from 'uuid';
17
- class UserMetadataRelation extends OneToManyRelationList {
18
- /**
19
- *
20
- * Checks if metadata exists, its DB first, it will only check DB for existence
21
- *
22
- * @param key - key to find
23
- * @returns {true|false}
24
- */
25
- async exists(key) {
26
- return await UserMetadata.where({
27
- User: this.owner,
28
- Key: key,
29
- }).resultExists();
16
+ import { _check_arg, _gt, _non_nil, _is_email, _non_empty, _trim, _is_number, _or, _is_string, _to_int, _default, _is_uuid, _is_object } from '@spinajs/util';
17
+ import { _cfg } from '@spinajs/configuration';
18
+ export class UserQueryScopes {
19
+ whereUser(userOrEmail) {
20
+ _check_arg(_or(_is_object(_non_nil()), _is_string(_trim(), _non_empty())))(userOrEmail, 'userOrEmail');
21
+ return this.where('Email', userOrEmail instanceof User ? userOrEmail.Email : userOrEmail);
30
22
  }
31
- /**
32
- *
33
- * Deletes meta from DB
34
- *
35
- * @param key - meta key do delete or regexp
36
- */
37
- async delete(key) {
38
- await UserMetadata.destroy().where({
39
- Key: key,
40
- User: this.owner.Id,
41
- });
23
+ async checkIsBanned() {
24
+ const banned = await this.clearColumns()
25
+ .count('*', 'BannedCount')
26
+ .setAlias('banned_count')
27
+ .whereExist(UserMetadata.query().where(function () {
28
+ this.where('Key', USER_COMMON_METADATA.USER_BAN_IS_BANNED);
29
+ this.where('Value', 'true');
30
+ this.where(new RawQuery('user_id = banned_count.Id'));
31
+ }))
32
+ .asRaw();
33
+ return banned[0].BannedCount > 0;
34
+ }
35
+ async checkIsActive() {
36
+ const active = await this.clearColumns().count('*', 'ActiveCount').where('IsActive', true).asRaw();
37
+ return active[0].ActiveCount > 0;
42
38
  }
43
- async get(key) {
44
- const found = this.find((x) => x.Key === key);
45
- if (found) {
46
- return found.Value;
47
- }
48
- return await UserMetadata.where({
49
- User: this.owner,
50
- Key: key,
51
- })
52
- .first()
53
- .then((res) => {
54
- if (res) {
55
- return res.Value;
56
- }
57
- return null;
39
+ notDeleted() {
40
+ return this.where({
41
+ DeletedAt: null,
58
42
  });
59
43
  }
60
- }
61
- function UserMetadataRelationFactory(model, desc, container) {
62
- const repository = container.resolve(UserMetadataRelation, [model, desc.TargetModel, desc, []]);
63
- const proxy = {
64
- set: (target, prop, value) => {
65
- if (target[prop]) {
66
- return (target[prop] = value);
67
- }
68
- return (async () => {
69
- const userMeta = new UserMetadata();
70
- userMeta.User.Value = model;
71
- userMeta.Key = prop;
72
- userMeta.Value = value;
73
- await UserMetadata.insert(userMeta, InsertBehaviour.InsertOrUpdate);
74
- })();
75
- },
76
- get: (target, prop) => {
77
- if (target[prop]) {
78
- return target[prop];
79
- }
80
- return (async () => {
81
- // check for metadata entries
82
- const found = target.find((x) => x.Key === prop);
83
- if (found) {
84
- return found.Value;
85
- }
86
- return await UserMetadata.where({
87
- User: model,
88
- Key: prop,
89
- })
90
- .first()
91
- .then((res) => {
92
- if (res) {
93
- return res.Value;
94
- }
95
- return null;
96
- });
97
- })();
98
- },
99
- };
100
- return new Proxy(repository, proxy);
101
- }
102
- export class UserQueryScopes {
103
44
  /**
104
45
  *
105
46
  * Fetch users that are not banned, are active & email confirmed, not deleted
@@ -112,16 +53,68 @@ export class UserQueryScopes {
112
53
  });
113
54
  }
114
55
  whereEmail(email) {
56
+ email = _check_arg(_trim(), _non_empty(), _is_email())(email, 'email');
115
57
  return this.where({
116
58
  Email: email,
117
59
  });
118
60
  }
119
- whereLogin(email) {
61
+ whereLogin(login) {
62
+ login = _check_arg(_trim(), _non_empty())(login, 'login');
120
63
  return this.where({
121
- Email: email,
64
+ Login: login,
65
+ });
66
+ }
67
+ whereUuid(uuid) {
68
+ uuid = _check_arg(_trim(), _is_uuid())(uuid, 'uuid');
69
+ return this.where({
70
+ Uuid: uuid,
71
+ });
72
+ }
73
+ /**
74
+ * Tries to get user by ONE OF:
75
+ * - UUID
76
+ * - EMAIL
77
+ * - LOGIN
78
+ * - ID
79
+ *
80
+ * @param identifier - login ,email, uuid or id
81
+ * @returns
82
+ */
83
+ whereAnything(identifier) {
84
+ identifier = _check_arg(_or(_is_number(_gt(0)), _to_int(), _is_string(_trim(), _non_empty())))(identifier, 'identifier');
85
+ return this.when(typeof identifier === 'number', function () {
86
+ this.where('Id', identifier);
87
+ }, function () {
88
+ this.where('Uuid', identifier).orWhere('Email', identifier).orWhere('Login', identifier);
122
89
  });
123
90
  }
124
91
  }
92
+ /**
93
+ * Common user metadata keys
94
+ */
95
+ export var USER_COMMON_METADATA;
96
+ (function (USER_COMMON_METADATA) {
97
+ /** BAN RELATED META KEYS */
98
+ USER_COMMON_METADATA["USER_BAN_IS_BANNED"] = "user:ban:is_banned";
99
+ USER_COMMON_METADATA["USER_BAN_START_DATE"] = "user:ban:start_date";
100
+ USER_COMMON_METADATA["USER_BAN_DURATION"] = "user:ban:duration";
101
+ USER_COMMON_METADATA["USER_BAN_REASON"] = "user:ban:reason";
102
+ /** USER GENERAL INFO */
103
+ USER_COMMON_METADATA["USER_AVATAR"] = "user:avatar";
104
+ USER_COMMON_METADATA["USER_PHONE"] = "user:phone";
105
+ USER_COMMON_METADATA["USER_NEWSLETTER_ENABLED"] = "user:newsletter:enabled";
106
+ /** 2fa token */
107
+ USER_COMMON_METADATA["USER_2FA_TOKEN"] = "user:2fa:token";
108
+ /** Reset password */
109
+ // is reset password in progress
110
+ USER_COMMON_METADATA["USER_PWD_RESET"] = "user:pwd:reset";
111
+ // start date of reset password
112
+ USER_COMMON_METADATA["USER_PWD_RESET_START_DATE"] = "user:pwd_reset:start_date";
113
+ // wait time for reset password
114
+ USER_COMMON_METADATA["USER_PWD_RESET_WAIT_TIME"] = "user:pwd_reset:wait_time";
115
+ // reset password token
116
+ USER_COMMON_METADATA["USER_PWD_RESET_TOKEN"] = "user:pwd_reset:token";
117
+ })(USER_COMMON_METADATA || (USER_COMMON_METADATA = {}));
125
118
  /**
126
119
  * Base model for users used by auth and ACL system
127
120
  *
@@ -130,59 +123,113 @@ export class UserQueryScopes {
130
123
  let User = User_1 = class User extends ModelBase {
131
124
  constructor(data) {
132
125
  super(data);
126
+ /**
127
+ * By default should not return password & id
128
+ * Id - to not expose internal id and predict users id / count
129
+ * Instead id should be replaced with uuid when exposing to end user / app
130
+ */
133
131
  this._hidden = ['Password', 'Id'];
134
- if (this.Uuid === undefined) {
135
- this.Uuid = uuidv4();
136
- }
132
+ this.Uuid = _check_arg(_default(uuidv4()))(this.Uuid, 'uuid');
133
+ this.Role = _check_arg(_default([_cfg('rbac.defaultRole')()]))(this.Role, 'role');
134
+ this._ac = DI.get('AccessControl');
137
135
  }
138
136
  get IsGuest() {
139
137
  return this.Role.indexOf('guest') !== -1 || this.Role.length === 0;
140
138
  }
139
+ get IsBanned() {
140
+ return this.Metadata[USER_COMMON_METADATA.USER_BAN_IS_BANNED] === true;
141
+ }
141
142
  can(resource, permission) {
142
- const ac = DI.get('AccessControl');
143
- return ac.can(this.Role)[permission](resource);
143
+ resource = _check_arg(_trim(), _non_empty())(resource, 'resource');
144
+ permission = _check_arg(_trim(), _non_empty())(permission, 'permission');
145
+ return this._ac.can(this.Role)[permission](resource);
144
146
  }
145
147
  /**
146
- * Shorthand for check if user can read any resource
148
+ * Shorthand for check if user can read any of specified resource
147
149
  * @param resource
148
150
  * @returns
149
151
  */
150
152
  canReadAny(resource) {
151
153
  return this.can(resource, 'readAny');
152
154
  }
155
+ /**
156
+ * Shortcut for check if user can read own resource
157
+ *
158
+ * @param resource
159
+ * @returns
160
+ */
153
161
  canReadOwn(resource) {
154
162
  return this.can(resource, 'readOwn');
155
163
  }
164
+ /**
165
+ * Shortcut for check if user can update any resource
166
+ *
167
+ * @param resource
168
+ * @returns
169
+ */
156
170
  canUpdateAny(resource) {
157
171
  return this.can(resource, 'updateAny');
158
172
  }
173
+ /**
174
+ * Shortcut for check if user can update own resource
175
+ * @param resource
176
+ * @returns
177
+ */
159
178
  canUpdateOwn(resource) {
160
179
  return this.can(resource, 'updateOwn');
161
180
  }
181
+ /**
182
+ * Shortcut for check if user can delete any resource
183
+ * @param resource
184
+ * @returns
185
+ */
162
186
  canDeleteAny(resource) {
163
187
  return this.can(resource, 'deleteAny');
164
188
  }
189
+ /**
190
+ * Shourtcut for check if user can delete own resource
191
+ * @param resource
192
+ * @returns
193
+ */
165
194
  canDeleteOwn(resource) {
166
195
  return this.can(resource, 'deleteOwn');
167
196
  }
197
+ /**
198
+ * Shortcut for check if user can create any resource
199
+ * @param resource
200
+ * @returns
201
+ */
168
202
  canCreateAny(resource) {
169
203
  return this.can(resource, 'createAny');
170
204
  }
205
+ /**
206
+ * Shourtcut for check if user can create own resource
207
+ * @param resource
208
+ * @returns
209
+ */
171
210
  canCreateOwn(resource) {
172
211
  return this.can(resource, 'createOwn');
173
212
  }
174
213
  static getByLogin(login) {
214
+ login = _check_arg(_trim(), _non_empty())(login, 'login');
175
215
  return User_1.query().whereLogin(login).first();
176
216
  }
177
217
  static getByEmail(email) {
218
+ email = _check_arg(_trim(), _non_empty(), _is_email())(email, 'email');
178
219
  return User_1.query().whereEmail(email).first();
179
220
  }
180
221
  static getByUuid(uuid) {
181
- return User_1.query()
182
- .where({
183
- Uuid: uuid,
184
- })
185
- .first();
222
+ uuid = _check_arg(_trim(), _is_uuid())(uuid, 'uuid');
223
+ return User_1.query().whereUuid(uuid).first();
224
+ }
225
+ /**
226
+ * Tries to get user by any identifier
227
+ *
228
+ * @param identifier login, email, id or uuid
229
+ * @returns
230
+ */
231
+ static getByAnything(identifier) {
232
+ return User_1.query().whereAnything(identifier).first();
186
233
  }
187
234
  };
188
235
  User._queryScopes = new UserQueryScopes();
@@ -194,6 +241,10 @@ __decorate([
194
241
  Uuid(),
195
242
  __metadata("design:type", String)
196
243
  ], User.prototype, "Uuid", void 0);
244
+ __decorate([
245
+ Set(),
246
+ __metadata("design:type", Array)
247
+ ], User.prototype, "Role", void 0);
197
248
  __decorate([
198
249
  CreatedAt(),
199
250
  __metadata("design:type", DateTime)
@@ -211,15 +262,9 @@ __decorate([
211
262
  __metadata("design:type", DateTime)
212
263
  ], User.prototype, "LastLoginAt", void 0);
213
264
  __decorate([
214
- HasMany(UserMetadata, {
215
- factory: UserMetadataRelationFactory,
216
- }),
217
- __metadata("design:type", UserMetadataRelation)
265
+ HasMany(UserMetadata),
266
+ __metadata("design:type", MetadataRelation)
218
267
  ], User.prototype, "Metadata", void 0);
219
- __decorate([
220
- HasMany(UserAction),
221
- __metadata("design:type", Relation)
222
- ], User.prototype, "Actions", void 0);
223
268
  User = User_1 = __decorate([
224
269
  Connection('default'),
225
270
  Model('users'),
@@ -1 +1 @@
1
- {"version":3,"file":"User.js","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"User.js","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,6 @@
1
- import { ModelBase, SingleRelation } from '@spinajs/orm';
1
+ import { MetadataModel, SingleRelation } from '@spinajs/orm';
2
2
  import type { User } from './User.js';
3
- export declare class UserMetadata extends ModelBase {
4
- Id: number;
5
- Key: string;
6
- Type: 'number' | 'float' | 'string' | 'json' | 'boolean' | 'datetime';
7
- Value: any;
3
+ export declare class UserMetadata extends MetadataModel<UserMetadata> {
8
4
  User: SingleRelation<User>;
9
5
  }
10
6
  //# sourceMappingURL=UserMetadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserMetadata.d.ts","sourceRoot":"","sources":["../../../src/models/UserMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,SAAS,EAAW,cAAc,EAAsB,MAAM,cAAc,CAAC;AAEpH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,qBAEa,YAAa,SAAQ,SAAS;IAElC,EAAE,EAAE,MAAM,CAAC;IAEX,GAAG,EAAE,MAAM,CAAC;IAEZ,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAGtE,KAAK,EAAE,GAAG,CAAC;IAGX,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;CACnC"}
1
+ {"version":3,"file":"UserMetadata.d.ts","sourceRoot":"","sources":["../../../src/models/UserMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE3F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,qBAEa,YAAa,SAAQ,aAAa,CAAC,YAAY,CAAC;IAEpD,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;CACnC"}
@@ -7,17 +7,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { BelongsTo, Connection, Model, ModelBase, Primary, SingleRelation, UniversalConverter } from '@spinajs/orm';
11
- let UserMetadata = class UserMetadata extends ModelBase {
10
+ import { BelongsTo, Connection, Model, MetadataModel, SingleRelation } from '@spinajs/orm';
11
+ let UserMetadata = class UserMetadata extends MetadataModel {
12
12
  };
13
- __decorate([
14
- Primary(),
15
- __metadata("design:type", Number)
16
- ], UserMetadata.prototype, "Id", void 0);
17
- __decorate([
18
- UniversalConverter('Type'),
19
- __metadata("design:type", Object)
20
- ], UserMetadata.prototype, "Value", void 0);
21
13
  __decorate([
22
14
  BelongsTo('User'),
23
15
  __metadata("design:type", SingleRelation)
@@ -1 +1 @@
1
- {"version":3,"file":"UserMetadata.js","sourceRoot":"","sources":["../../../src/models/UserMetadata.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAM7G,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,SAAS;CAa1C,CAAA;AAXQ;IADN,OAAO,EAAE;;wCACQ;AAOX;IADN,kBAAkB,CAAC,MAAM,CAAC;;2CACT;AAGX;IADN,SAAS,CAAC,MAAM,CAAC;8BACL,cAAc;0CAAO;AAZvB,YAAY;IAFxB,UAAU,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,gBAAgB,CAAC;GACX,YAAY,CAaxB"}
1
+ {"version":3,"file":"UserMetadata.js","sourceRoot":"","sources":["../../../src/models/UserMetadata.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAMpF,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,aAA2B;CAG5D,CAAA;AADQ;IADN,SAAS,CAAC,MAAM,CAAC;8BACL,cAAc;0CAAO;AAFvB,YAAY;IAFxB,UAAU,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,gBAAgB,CAAC;GACX,YAAY,CAGxB"}
@@ -3,7 +3,7 @@ import { SessionProvider, ISession } from './interfaces.js';
3
3
  /**
4
4
  * Session base class
5
5
  */
6
- export declare class Session implements ISession {
6
+ export declare class UserSession implements ISession {
7
7
  protected SessionExpirationTime: number;
8
8
  SessionId: string;
9
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAM5D;;GAEG;AACH,qBACa,OAAQ,YAAW,QAAQ;IAEtC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEjC,SAAS,EAAE,MAAM,CAAY;IAEpC;;OAEG;IACI,UAAU,EAAE,QAAQ,CAAQ;IAE5B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;IAEvC,QAAQ,EAAE,QAAQ,CAAkB;gBAE/B,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;IAMvC;;;;OAIG;IACI,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED;;GAEG;AACH,qBACa,kBAAmB,SAAQ,eAAe,CAAC,QAAQ,CAAC;IAC/D,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAA+B;IAE3D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,KAAK,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAYpD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAWhF"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAM5D;;GAEG;AACH,qBACa,WAAY,YAAW,QAAQ;IAE1C,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEjC,SAAS,EAAE,MAAM,CAAY;IAEpC;;OAEG;IACI,UAAU,EAAE,QAAQ,CAAQ;IAE5B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;IAEvC,QAAQ,EAAE,QAAQ,CAAkB;gBAE/B,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;IAMvC;;;;OAIG;IACI,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED;;GAEG;AACH,qBACa,kBAAmB,SAAQ,eAAe,CAAC,QAAQ,CAAC;IAC/D,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAA+B;IAE3D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,KAAK,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAYpD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAWhF"}