@laboratory-one/api-components 0.0.23 → 0.0.25

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 (296) hide show
  1. package/dist/src/ability/ability.factory.d.ts +5 -0
  2. package/dist/src/ability/ability.factory.d.ts.map +1 -0
  3. package/dist/src/ability/ability.factory.js +22 -0
  4. package/dist/src/ability/ability.factory.js.map +1 -0
  5. package/dist/src/ability/ability.module.d.ts +3 -0
  6. package/dist/src/ability/ability.module.d.ts.map +1 -0
  7. package/dist/src/ability/ability.module.js +16 -0
  8. package/dist/src/ability/ability.module.js.map +1 -0
  9. package/dist/src/ability/ability.util.d.ts +7 -0
  10. package/dist/src/ability/ability.util.d.ts.map +1 -0
  11. package/dist/src/ability/ability.util.js +30 -0
  12. package/dist/src/ability/ability.util.js.map +1 -0
  13. package/dist/src/ability/action.enum.d.ts +9 -0
  14. package/dist/src/ability/action.enum.d.ts.map +1 -0
  15. package/dist/src/ability/action.enum.js +11 -0
  16. package/dist/src/ability/action.enum.js.map +1 -0
  17. package/dist/src/ability/app-ability.type.d.ts +7 -0
  18. package/dist/src/ability/app-ability.type.d.ts.map +1 -0
  19. package/dist/src/ability/app-ability.type.js +3 -0
  20. package/dist/src/ability/app-ability.type.js.map +1 -0
  21. package/dist/src/ability/index.d.ts +7 -0
  22. package/dist/src/ability/index.d.ts.map +1 -0
  23. package/dist/src/ability/index.js +10 -0
  24. package/dist/src/ability/index.js.map +1 -0
  25. package/dist/src/ability/services.enum.d.ts +7 -0
  26. package/dist/src/ability/services.enum.d.ts.map +1 -0
  27. package/dist/src/ability/services.enum.js +9 -0
  28. package/dist/src/ability/services.enum.js.map +1 -0
  29. package/dist/src/cron/cron.module.d.ts.map +1 -0
  30. package/dist/src/cron/cron.module.js.map +1 -0
  31. package/dist/src/cron/cron.service.d.ts.map +1 -0
  32. package/dist/src/cron/cron.service.js.map +1 -0
  33. package/dist/src/cron/cron.util.d.ts.map +1 -0
  34. package/dist/src/cron/cron.util.js.map +1 -0
  35. package/dist/src/cron/index.d.ts.map +1 -0
  36. package/dist/src/cron/index.js.map +1 -0
  37. package/dist/src/decorator/index.d.ts +3 -0
  38. package/dist/src/decorator/index.d.ts.map +1 -0
  39. package/dist/src/decorator/index.js +6 -0
  40. package/dist/src/decorator/index.js.map +1 -0
  41. package/dist/src/decorator/policies.decorator.d.ts +4 -0
  42. package/dist/src/decorator/policies.decorator.d.ts.map +1 -0
  43. package/dist/src/decorator/policies.decorator.js +8 -0
  44. package/dist/src/decorator/policies.decorator.js.map +1 -0
  45. package/dist/src/decorator/policies.handler.d.ts +9 -0
  46. package/dist/src/decorator/policies.handler.d.ts.map +1 -0
  47. package/dist/src/decorator/policies.handler.js +14 -0
  48. package/dist/src/decorator/policies.handler.js.map +1 -0
  49. package/dist/src/enums/humanDay.enum.d.ts.map +1 -0
  50. package/dist/src/enums/humanDay.enum.js.map +1 -0
  51. package/dist/src/enums/index.d.ts.map +1 -0
  52. package/dist/src/enums/index.js.map +1 -0
  53. package/dist/src/enums/serverDay.enum.d.ts.map +1 -0
  54. package/dist/src/enums/serverDay.enum.js.map +1 -0
  55. package/dist/src/guard/auth.guard.d.ts.map +1 -0
  56. package/dist/src/guard/auth.guard.js.map +1 -0
  57. package/dist/src/guard/index.d.ts +3 -0
  58. package/dist/src/guard/index.d.ts.map +1 -0
  59. package/{src → dist/src}/guard/index.js +1 -0
  60. package/dist/src/guard/index.js.map +1 -0
  61. package/dist/src/guard/policies.guard.d.ts +11 -0
  62. package/dist/src/guard/policies.guard.d.ts.map +1 -0
  63. package/dist/src/guard/policies.guard.js +44 -0
  64. package/dist/src/guard/policies.guard.js.map +1 -0
  65. package/dist/src/health/dtos/health.response.dto.d.ts.map +1 -0
  66. package/dist/src/health/dtos/health.response.dto.js.map +1 -0
  67. package/dist/src/health/dtos/index.d.ts.map +1 -0
  68. package/dist/src/health/dtos/index.js.map +1 -0
  69. package/dist/src/health/health.controller.d.ts.map +1 -0
  70. package/dist/src/health/health.controller.js.map +1 -0
  71. package/dist/src/health/health.module.d.ts.map +1 -0
  72. package/dist/src/health/health.module.js.map +1 -0
  73. package/dist/src/health/health.service.d.ts.map +1 -0
  74. package/dist/src/health/health.service.js.map +1 -0
  75. package/dist/src/health/index.d.ts.map +1 -0
  76. package/dist/src/health/index.js.map +1 -0
  77. package/dist/src/middleware/index.d.ts.map +1 -0
  78. package/dist/src/middleware/index.js.map +1 -0
  79. package/dist/src/middleware/logger.middleware.d.ts.map +1 -0
  80. package/dist/src/middleware/logger.middleware.js.map +1 -0
  81. package/dist/src/prisma/index.d.ts.map +1 -0
  82. package/dist/src/prisma/index.js.map +1 -0
  83. package/dist/src/prisma/prisma.module.d.ts.map +1 -0
  84. package/dist/src/prisma/prisma.module.js.map +1 -0
  85. package/dist/src/prisma/prisma.service.d.ts.map +1 -0
  86. package/dist/src/prisma/prisma.service.js.map +1 -0
  87. package/dist/src/push/index.d.ts.map +1 -0
  88. package/dist/src/push/index.js.map +1 -0
  89. package/dist/src/push/push.module.d.ts.map +1 -0
  90. package/dist/src/push/push.module.js.map +1 -0
  91. package/dist/src/push/push.service.d.ts.map +1 -0
  92. package/dist/src/push/push.service.js.map +1 -0
  93. package/dist/src/search/index.d.ts.map +1 -0
  94. package/dist/src/search/index.js.map +1 -0
  95. package/dist/src/search/search.module.d.ts.map +1 -0
  96. package/dist/src/search/search.module.js.map +1 -0
  97. package/dist/src/search/search.service.d.ts.map +1 -0
  98. package/dist/src/search/search.service.js.map +1 -0
  99. package/dist/src/services/index.d.ts.map +1 -0
  100. package/dist/src/services/index.js.map +1 -0
  101. package/dist/src/services/instrument-sentry.d.ts.map +1 -0
  102. package/dist/src/services/instrument-sentry.js.map +1 -0
  103. package/dist/src/types/index.d.ts +5 -0
  104. package/dist/src/types/index.d.ts.map +1 -0
  105. package/{src → dist/src}/types/index.js +2 -0
  106. package/dist/src/types/index.js.map +1 -0
  107. package/dist/src/types/policy.type.d.ts +8 -0
  108. package/dist/src/types/policy.type.d.ts.map +1 -0
  109. package/dist/src/types/policy.type.js +3 -0
  110. package/dist/src/types/policy.type.js.map +1 -0
  111. package/dist/src/types/req.type.d.ts.map +1 -0
  112. package/dist/src/types/req.type.js.map +1 -0
  113. package/dist/src/types/reqWithUser.type.d.ts +4 -0
  114. package/dist/src/types/reqWithUser.type.d.ts.map +1 -0
  115. package/dist/src/types/reqWithUser.type.js +3 -0
  116. package/dist/src/types/reqWithUser.type.js.map +1 -0
  117. package/dist/src/types/success.response.dto.d.ts.map +1 -0
  118. package/dist/src/types/success.response.dto.js.map +1 -0
  119. package/dist/src/utils/datetime.util.d.ts.map +1 -0
  120. package/dist/src/utils/datetime.util.js.map +1 -0
  121. package/dist/src/utils/error.util.d.ts.map +1 -0
  122. package/dist/src/utils/error.util.js.map +1 -0
  123. package/{src → dist/src}/utils/index.d.ts +0 -1
  124. package/dist/src/utils/index.d.ts.map +1 -0
  125. package/{src → dist/src}/utils/index.js +0 -1
  126. package/dist/src/utils/index.js.map +1 -0
  127. package/dist/src/utils/input.util.d.ts.map +1 -0
  128. package/dist/src/utils/input.util.js.map +1 -0
  129. package/dist/src/utils/noop.util.d.ts.map +1 -0
  130. package/dist/src/utils/noop.util.js.map +1 -0
  131. package/dist/src/utils/string.util.d.ts.map +1 -0
  132. package/dist/src/utils/string.util.js.map +1 -0
  133. package/dist/src/utils/version.util.d.ts.map +1 -0
  134. package/dist/src/utils/version.util.js.map +1 -0
  135. package/dist/tsconfig.tsbuildinfo +1 -0
  136. package/package.json +12 -100
  137. package/src/ability/ability.factory.ts +19 -0
  138. package/src/ability/ability.module.ts +8 -0
  139. package/src/ability/ability.util.ts +37 -0
  140. package/src/ability/action.enum.ts +9 -0
  141. package/src/ability/app-ability.type.ts +7 -0
  142. package/src/ability/index.ts +6 -0
  143. package/src/ability/services.enum.ts +7 -0
  144. package/src/decorator/index.ts +2 -0
  145. package/src/decorator/policies.decorator.ts +7 -0
  146. package/src/decorator/policies.handler.ts +16 -0
  147. package/src/guard/index.ts +1 -0
  148. package/src/guard/policies.guard.ts +65 -0
  149. package/src/types/index.ts +2 -0
  150. package/src/types/policy.type.ts +9 -0
  151. package/src/types/reqWithUser.type.ts +3 -0
  152. package/src/utils/index.ts +0 -1
  153. package/src/auth/auth.module.d.ts +0 -3
  154. package/src/auth/auth.module.js +0 -18
  155. package/src/auth/auth.module.ts +0 -10
  156. package/src/auth/auth.service.d.ts +0 -18
  157. package/src/auth/auth.service.js +0 -65
  158. package/src/auth/auth.service.ts +0 -80
  159. package/src/auth/index.d.ts +0 -3
  160. package/src/auth/index.js +0 -6
  161. package/src/auth/index.ts +0 -2
  162. package/src/guard/index.d.ts +0 -2
  163. package/src/types/index.d.ts +0 -3
  164. package/src/user/dtos/delete-user.request.dto.d.ts +0 -4
  165. package/src/user/dtos/delete-user.request.dto.js +0 -15
  166. package/src/user/dtos/delete-user.request.dto.ts +0 -8
  167. package/src/user/dtos/get-user.response.dto.d.ts +0 -7
  168. package/src/user/dtos/get-user.response.dto.js +0 -32
  169. package/src/user/dtos/get-user.response.dto.ts +0 -22
  170. package/src/user/dtos/index.d.ts +0 -9
  171. package/src/user/dtos/index.js +0 -12
  172. package/src/user/dtos/index.ts +0 -8
  173. package/src/user/dtos/phone-login-verify.request.dto.d.ts +0 -6
  174. package/src/user/dtos/phone-login-verify.request.dto.js +0 -25
  175. package/src/user/dtos/phone-login-verify.request.dto.ts +0 -16
  176. package/src/user/dtos/phone-login.request.dto.d.ts +0 -4
  177. package/src/user/dtos/phone-login.request.dto.js +0 -15
  178. package/src/user/dtos/phone-login.request.dto.ts +0 -8
  179. package/src/user/dtos/phone-login.response.dto.d.ts +0 -5
  180. package/src/user/dtos/phone-login.response.dto.js +0 -20
  181. package/src/user/dtos/phone-login.response.dto.ts +0 -12
  182. package/src/user/dtos/register.request.dto.d.ts +0 -5
  183. package/src/user/dtos/register.request.dto.js +0 -20
  184. package/src/user/dtos/register.request.dto.ts +0 -12
  185. package/src/user/dtos/register.response.dto.d.ts +0 -5
  186. package/src/user/dtos/register.response.dto.js +0 -16
  187. package/src/user/dtos/register.response.dto.ts +0 -10
  188. package/src/user/dtos/update-user.request.dto.d.ts +0 -8
  189. package/src/user/dtos/update-user.request.dto.js +0 -40
  190. package/src/user/dtos/update-user.request.dto.ts +0 -29
  191. package/src/user/index.d.ts +0 -7
  192. package/src/user/index.js +0 -10
  193. package/src/user/index.ts +0 -6
  194. package/src/user/schemas/delete-user.schema.d.ts +0 -5
  195. package/src/user/schemas/delete-user.schema.js +0 -9
  196. package/src/user/schemas/delete-user.schema.ts +0 -7
  197. package/src/user/schemas/index.d.ts +0 -6
  198. package/src/user/schemas/index.js +0 -9
  199. package/src/user/schemas/index.ts +0 -5
  200. package/src/user/schemas/phone-login-verify.schema.d.ts +0 -7
  201. package/src/user/schemas/phone-login-verify.schema.js +0 -11
  202. package/src/user/schemas/phone-login-verify.schema.ts +0 -9
  203. package/src/user/schemas/phone-login.schema.d.ts +0 -5
  204. package/src/user/schemas/phone-login.schema.js +0 -9
  205. package/src/user/schemas/phone-login.schema.ts +0 -7
  206. package/src/user/schemas/signup.schema.d.ts +0 -6
  207. package/src/user/schemas/signup.schema.js +0 -10
  208. package/src/user/schemas/signup.schema.ts +0 -8
  209. package/src/user/schemas/update-user.schema.d.ts +0 -9
  210. package/src/user/schemas/update-user.schema.js +0 -15
  211. package/src/user/schemas/update-user.schema.ts +0 -13
  212. package/src/user/user.controller.d.ts +0 -22
  213. package/src/user/user.controller.js +0 -279
  214. package/src/user/user.controller.ts +0 -321
  215. package/src/user/user.module.d.ts +0 -3
  216. package/src/user/user.module.js +0 -22
  217. package/src/user/user.module.ts +0 -16
  218. package/src/user/user.service.d.ts +0 -15
  219. package/src/user/user.service.js +0 -62
  220. package/src/user/user.service.ts +0 -68
  221. package/src/user/user.util.d.ts +0 -3
  222. package/src/user/user.util.js +0 -8
  223. package/src/user/user.util.ts +0 -5
  224. package/src/utils/schema.util.d.ts +0 -13
  225. package/src/utils/schema.util.js +0 -16
  226. package/src/utils/schema.util.ts +0 -13
  227. /package/{src → dist/src}/cron/cron.module.d.ts +0 -0
  228. /package/{src → dist/src}/cron/cron.module.js +0 -0
  229. /package/{src → dist/src}/cron/cron.service.d.ts +0 -0
  230. /package/{src → dist/src}/cron/cron.service.js +0 -0
  231. /package/{src → dist/src}/cron/cron.util.d.ts +0 -0
  232. /package/{src → dist/src}/cron/cron.util.js +0 -0
  233. /package/{src → dist/src}/cron/index.d.ts +0 -0
  234. /package/{src → dist/src}/cron/index.js +0 -0
  235. /package/{src → dist/src}/enums/humanDay.enum.d.ts +0 -0
  236. /package/{src → dist/src}/enums/humanDay.enum.js +0 -0
  237. /package/{src → dist/src}/enums/index.d.ts +0 -0
  238. /package/{src → dist/src}/enums/index.js +0 -0
  239. /package/{src → dist/src}/enums/serverDay.enum.d.ts +0 -0
  240. /package/{src → dist/src}/enums/serverDay.enum.js +0 -0
  241. /package/{src → dist/src}/guard/auth.guard.d.ts +0 -0
  242. /package/{src → dist/src}/guard/auth.guard.js +0 -0
  243. /package/{src → dist/src}/health/dtos/health.response.dto.d.ts +0 -0
  244. /package/{src → dist/src}/health/dtos/health.response.dto.js +0 -0
  245. /package/{src → dist/src}/health/dtos/index.d.ts +0 -0
  246. /package/{src → dist/src}/health/dtos/index.js +0 -0
  247. /package/{src → dist/src}/health/health.controller.d.ts +0 -0
  248. /package/{src → dist/src}/health/health.controller.js +0 -0
  249. /package/{src → dist/src}/health/health.module.d.ts +0 -0
  250. /package/{src → dist/src}/health/health.module.js +0 -0
  251. /package/{src → dist/src}/health/health.service.d.ts +0 -0
  252. /package/{src → dist/src}/health/health.service.js +0 -0
  253. /package/{src → dist/src}/health/index.d.ts +0 -0
  254. /package/{src → dist/src}/health/index.js +0 -0
  255. /package/{src → dist/src}/middleware/index.d.ts +0 -0
  256. /package/{src → dist/src}/middleware/index.js +0 -0
  257. /package/{src → dist/src}/middleware/logger.middleware.d.ts +0 -0
  258. /package/{src → dist/src}/middleware/logger.middleware.js +0 -0
  259. /package/{src → dist/src}/prisma/index.d.ts +0 -0
  260. /package/{src → dist/src}/prisma/index.js +0 -0
  261. /package/{src → dist/src}/prisma/prisma.module.d.ts +0 -0
  262. /package/{src → dist/src}/prisma/prisma.module.js +0 -0
  263. /package/{src → dist/src}/prisma/prisma.service.d.ts +0 -0
  264. /package/{src → dist/src}/prisma/prisma.service.js +0 -0
  265. /package/{src → dist/src}/push/index.d.ts +0 -0
  266. /package/{src → dist/src}/push/index.js +0 -0
  267. /package/{src → dist/src}/push/push.module.d.ts +0 -0
  268. /package/{src → dist/src}/push/push.module.js +0 -0
  269. /package/{src → dist/src}/push/push.service.d.ts +0 -0
  270. /package/{src → dist/src}/push/push.service.js +0 -0
  271. /package/{src → dist/src}/search/index.d.ts +0 -0
  272. /package/{src → dist/src}/search/index.js +0 -0
  273. /package/{src → dist/src}/search/search.module.d.ts +0 -0
  274. /package/{src → dist/src}/search/search.module.js +0 -0
  275. /package/{src → dist/src}/search/search.service.d.ts +0 -0
  276. /package/{src → dist/src}/search/search.service.js +0 -0
  277. /package/{src → dist/src}/services/index.d.ts +0 -0
  278. /package/{src → dist/src}/services/index.js +0 -0
  279. /package/{src → dist/src}/services/instrument-sentry.d.ts +0 -0
  280. /package/{src → dist/src}/services/instrument-sentry.js +0 -0
  281. /package/{src → dist/src}/types/req.type.d.ts +0 -0
  282. /package/{src → dist/src}/types/req.type.js +0 -0
  283. /package/{src → dist/src}/types/success.response.dto.d.ts +0 -0
  284. /package/{src → dist/src}/types/success.response.dto.js +0 -0
  285. /package/{src → dist/src}/utils/datetime.util.d.ts +0 -0
  286. /package/{src → dist/src}/utils/datetime.util.js +0 -0
  287. /package/{src → dist/src}/utils/error.util.d.ts +0 -0
  288. /package/{src → dist/src}/utils/error.util.js +0 -0
  289. /package/{src → dist/src}/utils/input.util.d.ts +0 -0
  290. /package/{src → dist/src}/utils/input.util.js +0 -0
  291. /package/{src → dist/src}/utils/noop.util.d.ts +0 -0
  292. /package/{src → dist/src}/utils/noop.util.js +0 -0
  293. /package/{src → dist/src}/utils/string.util.d.ts +0 -0
  294. /package/{src → dist/src}/utils/string.util.js +0 -0
  295. /package/{src → dist/src}/utils/version.util.d.ts +0 -0
  296. /package/{src → dist/src}/utils/version.util.js +0 -0
@@ -1,279 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UserController = void 0;
4
- const tslib_1 = require("tslib");
5
- const common_1 = require("@nestjs/common");
6
- const jwt_1 = require("@nestjs/jwt");
7
- const swagger_1 = require("@nestjs/swagger");
8
- const client_1 = require("@prisma/client");
9
- const auth_1 = require("../auth");
10
- const user_service_1 = require("./user.service");
11
- const dtos_1 = require("./dtos");
12
- const push_1 = require("../push");
13
- const utils_1 = require("../utils");
14
- const guard_1 = require("../guard");
15
- const types = tslib_1.__importStar(require("../types"));
16
- const schemas_1 = require("./schemas");
17
- let UserController = class UserController {
18
- constructor(userService, authService, pushService, jwtService) {
19
- this.userService = userService;
20
- this.authService = authService;
21
- this.pushService = pushService;
22
- this.jwtService = jwtService;
23
- }
24
- async phoneLogin(dto) {
25
- try {
26
- const parsedDto = schemas_1.phoneLoginSchema.parse(dto);
27
- const phoneNumber = (0, utils_1.cleanPhoneNumber)(parsedDto.phoneNumber);
28
- const user = await this.userService.findOneByPhoneNumber(parsedDto.phoneNumber);
29
- if (!user) {
30
- const newUser = await this.userService.create({
31
- phoneNumber,
32
- });
33
- if (!newUser) {
34
- (0, utils_1.handleError)('Error creating user');
35
- }
36
- }
37
- const res = await this.authService.phoneLoginOrCreate(phoneNumber);
38
- return {
39
- methodId: res.phone_id,
40
- phoneNumber,
41
- };
42
- }
43
- catch (error) {
44
- (0, utils_1.handleError)(error);
45
- }
46
- }
47
- async phoneLoginVerify(dto) {
48
- try {
49
- const parsedDto = schemas_1.phoneLoginVerifySchema.parse(dto);
50
- const res = await this.authService.phoneAuthenticate({
51
- methodId: parsedDto.methodId,
52
- code: parsedDto.code,
53
- });
54
- const user = await this.userService.findOneByPhoneNumber(parsedDto.phoneNumber);
55
- await this.userService.update(user.id, {
56
- externalId: res.user_id,
57
- });
58
- const payload = { userId: user.id };
59
- const token = await this.jwtService.signAsync(payload);
60
- return Object.assign(Object.assign({}, user), { token });
61
- }
62
- catch (error) {
63
- (0, utils_1.handleError)(error);
64
- }
65
- }
66
- async signup(dto) {
67
- const cleanedDTO = {
68
- email: (0, utils_1.cleanStringAndLowercase)(dto.email),
69
- password: (0, utils_1.cleanString)(dto.password),
70
- };
71
- const res = await this.authService.signup(cleanedDTO);
72
- if (!res) {
73
- (0, utils_1.handleError)('Error creating user');
74
- }
75
- const user = await this.userService.create({
76
- phoneNumber: res.user_id,
77
- email: cleanedDTO.email,
78
- externalId: res.user_id,
79
- });
80
- if (!user) {
81
- (0, utils_1.handleError)('Error creating user');
82
- }
83
- const payload = { userId: user.id };
84
- const token = await this.jwtService.signAsync(payload);
85
- return Object.assign(Object.assign({}, user), { token });
86
- }
87
- async login(dto) {
88
- const cleanedDTO = {
89
- email: (0, utils_1.cleanStringAndLowercase)(dto.email),
90
- password: dto.password.trim(),
91
- };
92
- const res = await this.authService.login(cleanedDTO);
93
- if (!res) {
94
- (0, utils_1.handleError)('Error logging in');
95
- }
96
- const user = await this.userService.findOneByEmail(cleanedDTO.email);
97
- if (!user) {
98
- (0, utils_1.handleError)('Error logging in');
99
- }
100
- const payload = { userId: user.id };
101
- const token = await this.jwtService.signAsync(payload);
102
- return Object.assign(Object.assign({}, user), { token });
103
- }
104
- async getSelf(req) {
105
- try {
106
- const user = await this.userService.findOneByUserId(req.user.userId);
107
- return user;
108
- }
109
- catch (error) {
110
- (0, utils_1.handleError)(error);
111
- }
112
- }
113
- async edit(dto, req) {
114
- try {
115
- const cleanDto = {
116
- phoneNumber: dto.phoneNumber
117
- ? (0, utils_1.cleanPhoneNumber)(dto.phoneNumber)
118
- : undefined,
119
- fullName: dto.fullName
120
- ? (0, utils_1.cleanStringAndLowercase)(dto.fullName)
121
- : undefined,
122
- pushToken: dto.pushToken ? (0, utils_1.cleanString)(dto.pushToken) : undefined,
123
- tz: dto.tz ? (0, utils_1.utcOffsetToHours)(dto.tz) : undefined,
124
- };
125
- const user = await this.userService.update(req.user.userId, cleanDto);
126
- return user;
127
- }
128
- catch (error) {
129
- (0, utils_1.handleError)(error);
130
- }
131
- }
132
- async pushTest(req) {
133
- try {
134
- const user = await this.userService.findOneByUserId(req.user.userId);
135
- if (user.pushToken) {
136
- const messages = this.pushService.createMessages({
137
- body: 'Test push',
138
- pushTokens: [user.pushToken],
139
- });
140
- await this.pushService.sendMessages(messages);
141
- }
142
- }
143
- catch (error) {
144
- (0, utils_1.handleError)(error);
145
- }
146
- }
147
- async delete(req, dto) {
148
- try {
149
- const parsedDto = schemas_1.deleteUserSchema.parse(dto);
150
- const user = await this.userService.findOneByUserId(req.user.userId);
151
- if (!user) {
152
- (0, utils_1.handleError)('User not found');
153
- }
154
- if (parsedDto.phoneNumber !== user.phoneNumber) {
155
- (0, utils_1.handleError)('Invalid email');
156
- }
157
- await this.authService.delete(user.externalId);
158
- await this.userService.update(req.user.userId, {
159
- status: client_1.UserStatus.DELETED,
160
- email: user.externalId,
161
- phoneNumber: user.externalId,
162
- });
163
- }
164
- catch (error) {
165
- (0, utils_1.handleError)(error);
166
- }
167
- }
168
- };
169
- exports.UserController = UserController;
170
- tslib_1.__decorate([
171
- (0, common_1.Post)('phone-login'),
172
- (0, swagger_1.ApiResponse)({
173
- status: 200,
174
- description: 'loginOrCreate successful',
175
- type: dtos_1.PhoneLoginResponseDto,
176
- }),
177
- tslib_1.__param(0, (0, common_1.Body)()),
178
- tslib_1.__metadata("design:type", Function),
179
- tslib_1.__metadata("design:paramtypes", [dtos_1.PhoneLoginRequestDto]),
180
- tslib_1.__metadata("design:returntype", Promise)
181
- ], UserController.prototype, "phoneLogin", null);
182
- tslib_1.__decorate([
183
- (0, common_1.Post)('phone-login-verify'),
184
- (0, swagger_1.ApiResponse)({
185
- status: 200,
186
- description: 'loginOrCreate successful',
187
- type: dtos_1.RegisterResponseDto,
188
- }),
189
- tslib_1.__param(0, (0, common_1.Body)()),
190
- tslib_1.__metadata("design:type", Function),
191
- tslib_1.__metadata("design:paramtypes", [dtos_1.PhoneLoginVerifyRequestDto]),
192
- tslib_1.__metadata("design:returntype", Promise)
193
- ], UserController.prototype, "phoneLoginVerify", null);
194
- tslib_1.__decorate([
195
- (0, common_1.Post)('signup'),
196
- (0, swagger_1.ApiResponse)({
197
- status: 200,
198
- description: 'loginOrCreate successful',
199
- type: dtos_1.RegisterResponseDto,
200
- }),
201
- tslib_1.__param(0, (0, common_1.Body)()),
202
- tslib_1.__metadata("design:type", Function),
203
- tslib_1.__metadata("design:paramtypes", [dtos_1.RegisterRequestDto]),
204
- tslib_1.__metadata("design:returntype", Promise)
205
- ], UserController.prototype, "signup", null);
206
- tslib_1.__decorate([
207
- (0, common_1.Post)('login'),
208
- (0, swagger_1.ApiResponse)({
209
- status: 200,
210
- description: 'loginOrCreate successful',
211
- type: dtos_1.RegisterResponseDto,
212
- }),
213
- tslib_1.__param(0, (0, common_1.Body)()),
214
- tslib_1.__metadata("design:type", Function),
215
- tslib_1.__metadata("design:paramtypes", [dtos_1.RegisterRequestDto]),
216
- tslib_1.__metadata("design:returntype", Promise)
217
- ], UserController.prototype, "login", null);
218
- tslib_1.__decorate([
219
- (0, common_1.UseGuards)(guard_1.AuthGuard),
220
- (0, common_1.Get)('self'),
221
- (0, swagger_1.ApiResponse)({
222
- status: 200,
223
- description: 'get self successful',
224
- type: dtos_1.GetUserResponseDto,
225
- }),
226
- tslib_1.__param(0, (0, common_1.Request)()),
227
- tslib_1.__metadata("design:type", Function),
228
- tslib_1.__metadata("design:paramtypes", [Object]),
229
- tslib_1.__metadata("design:returntype", Promise)
230
- ], UserController.prototype, "getSelf", null);
231
- tslib_1.__decorate([
232
- (0, common_1.UseGuards)(guard_1.AuthGuard),
233
- (0, common_1.Post)('update'),
234
- (0, swagger_1.ApiResponse)({
235
- status: 200,
236
- description: 'update user successful',
237
- type: dtos_1.GetUserResponseDto,
238
- }),
239
- tslib_1.__param(0, (0, common_1.Body)()),
240
- tslib_1.__param(1, (0, common_1.Request)()),
241
- tslib_1.__metadata("design:type", Function),
242
- tslib_1.__metadata("design:paramtypes", [dtos_1.UpdateUserRequestDto, Object]),
243
- tslib_1.__metadata("design:returntype", Promise)
244
- ], UserController.prototype, "edit", null);
245
- tslib_1.__decorate([
246
- (0, common_1.UseGuards)(guard_1.AuthGuard),
247
- (0, common_1.Post)('pushTest'),
248
- (0, swagger_1.ApiResponse)({
249
- status: 200,
250
- description: 'push test successful',
251
- }),
252
- tslib_1.__param(0, (0, common_1.Request)()),
253
- tslib_1.__metadata("design:type", Function),
254
- tslib_1.__metadata("design:paramtypes", [Object]),
255
- tslib_1.__metadata("design:returntype", Promise)
256
- ], UserController.prototype, "pushTest", null);
257
- tslib_1.__decorate([
258
- (0, common_1.UseGuards)(guard_1.AuthGuard),
259
- (0, common_1.Post)('delete'),
260
- (0, swagger_1.ApiResponse)({
261
- status: 200,
262
- description: 'delete user successful',
263
- type: dtos_1.GetUserResponseDto,
264
- }),
265
- tslib_1.__param(0, (0, common_1.Request)()),
266
- tslib_1.__param(1, (0, common_1.Body)()),
267
- tslib_1.__metadata("design:type", Function),
268
- tslib_1.__metadata("design:paramtypes", [Object, dtos_1.DeleteUserRequestDto]),
269
- tslib_1.__metadata("design:returntype", Promise)
270
- ], UserController.prototype, "delete", null);
271
- exports.UserController = UserController = tslib_1.__decorate([
272
- (0, swagger_1.ApiTags)('User'),
273
- (0, common_1.Controller)('user'),
274
- tslib_1.__metadata("design:paramtypes", [user_service_1.UserService,
275
- auth_1.AuthService,
276
- push_1.PushService,
277
- jwt_1.JwtService])
278
- ], UserController);
279
- //# sourceMappingURL=user.controller.js.map
@@ -1,321 +0,0 @@
1
- import {
2
- Body,
3
- Controller,
4
- Get,
5
- Post,
6
- Request,
7
- UseGuards,
8
- } from '@nestjs/common';
9
- import { JwtService } from '@nestjs/jwt';
10
- import { ApiResponse, ApiTags } from '@nestjs/swagger';
11
- import { User, UserStatus } from '@prisma/client';
12
- import { ExpoPushMessage } from 'expo-server-sdk';
13
- import * as stytch from 'stytch';
14
- import { ZodObject } from 'zod';
15
-
16
- import { AuthService } from '../auth';
17
- import { UserService } from './user.service';
18
- import {
19
- GetUserResponseDto,
20
- UpdateUserRequestDto,
21
- RegisterResponseDto,
22
- DeleteUserRequestDto,
23
- PhoneLoginRequestDto,
24
- PhoneLoginResponseDto,
25
- PhoneLoginVerifyRequestDto,
26
- RegisterRequestDto,
27
- } from './dtos';
28
- import { PushService } from '../push';
29
- import {
30
- cleanPhoneNumber,
31
- cleanString,
32
- cleanStringAndLowercase,
33
- handleError,
34
- utcOffsetToHours,
35
- } from '../utils';
36
- import { AuthGuard } from '../guard';
37
- import * as types from '../types';
38
- import {
39
- deleteUserSchema,
40
- phoneLoginSchema,
41
- phoneLoginVerifySchema,
42
- } from './schemas';
43
-
44
- @ApiTags('User')
45
- @Controller('user')
46
- export class UserController {
47
- constructor(
48
- private userService: UserService,
49
- private authService: AuthService,
50
- private pushService: PushService,
51
- private jwtService: JwtService,
52
- ) {}
53
-
54
- @Post('phone-login')
55
- @ApiResponse({
56
- status: 200,
57
- description: 'loginOrCreate successful',
58
- type: PhoneLoginResponseDto,
59
- })
60
- async phoneLogin(
61
- @Body() dto: PhoneLoginRequestDto,
62
- ): Promise<PhoneLoginResponseDto> {
63
- try {
64
- const parsedDto: PhoneLoginRequestDto = phoneLoginSchema.parse(
65
- dto,
66
- ) as PhoneLoginRequestDto;
67
-
68
- const phoneNumber: string = cleanPhoneNumber(parsedDto.phoneNumber);
69
-
70
- const user: User = await this.userService.findOneByPhoneNumber(
71
- parsedDto.phoneNumber,
72
- );
73
-
74
- if (!user) {
75
- const newUser: User = await this.userService.create({
76
- phoneNumber,
77
- });
78
-
79
- if (!newUser) {
80
- handleError('Error creating user');
81
- }
82
-
83
- // this is where you can do other user setup
84
- }
85
-
86
- const res: stytch.OTPsSmsLoginOrCreateResponse =
87
- await this.authService.phoneLoginOrCreate(phoneNumber);
88
-
89
- return {
90
- methodId: res.phone_id,
91
- phoneNumber,
92
- };
93
- } catch (error) {
94
- handleError(error);
95
- }
96
- }
97
-
98
- @Post('phone-login-verify')
99
- @ApiResponse({
100
- status: 200,
101
- description: 'loginOrCreate successful',
102
- type: RegisterResponseDto,
103
- })
104
- async phoneLoginVerify(
105
- @Body() dto: PhoneLoginVerifyRequestDto,
106
- ): Promise<RegisterResponseDto> {
107
- try {
108
- const parsedDto: PhoneLoginVerifyRequestDto =
109
- phoneLoginVerifySchema.parse(dto) as PhoneLoginVerifyRequestDto;
110
-
111
- const res: stytch.OTPsAuthenticateResponse =
112
- await this.authService.phoneAuthenticate({
113
- methodId: parsedDto.methodId,
114
- code: parsedDto.code,
115
- });
116
-
117
- const user: User = await this.userService.findOneByPhoneNumber(
118
- parsedDto.phoneNumber,
119
- );
120
-
121
- await this.userService.update(user.id, {
122
- externalId: res.user_id,
123
- });
124
-
125
- const payload = { userId: user.id };
126
- const token: string = await this.jwtService.signAsync(payload);
127
-
128
- return {
129
- ...user,
130
- token,
131
- };
132
- } catch (error) {
133
- handleError(error);
134
- }
135
- }
136
-
137
- @Post('signup')
138
- @ApiResponse({
139
- status: 200,
140
- description: 'loginOrCreate successful',
141
- type: RegisterResponseDto,
142
- })
143
- async signup(@Body() dto: RegisterRequestDto): Promise<RegisterResponseDto> {
144
- const cleanedDTO: RegisterRequestDto = {
145
- email: cleanStringAndLowercase(dto.email),
146
- password: cleanString(dto.password),
147
- };
148
-
149
- const res: stytch.PasswordsCreateResponse =
150
- await this.authService.signup(cleanedDTO);
151
-
152
- if (!res) {
153
- handleError('Error creating user');
154
- }
155
-
156
- const user: User = await this.userService.create({
157
- phoneNumber: res.user_id, // use phone number as placeholder
158
- email: cleanedDTO.email,
159
- externalId: res.user_id,
160
- });
161
-
162
- if (!user) {
163
- handleError('Error creating user');
164
- }
165
-
166
- const payload = { userId: user.id };
167
- const token: string = await this.jwtService.signAsync(payload);
168
-
169
- return {
170
- ...user,
171
- token,
172
- };
173
- }
174
-
175
- @Post('login')
176
- @ApiResponse({
177
- status: 200,
178
- description: 'loginOrCreate successful',
179
- type: RegisterResponseDto,
180
- })
181
- async login(@Body() dto: RegisterRequestDto): Promise<RegisterResponseDto> {
182
- const cleanedDTO: RegisterRequestDto = {
183
- email: cleanStringAndLowercase(dto.email),
184
- password: dto.password.trim(),
185
- };
186
-
187
- const res: boolean = await this.authService.login(cleanedDTO);
188
-
189
- if (!res) {
190
- handleError('Error logging in');
191
- }
192
-
193
- const user: User = await this.userService.findOneByEmail(cleanedDTO.email);
194
-
195
- if (!user) {
196
- handleError('Error logging in');
197
- }
198
-
199
- const payload = { userId: user.id };
200
- const token: string = await this.jwtService.signAsync(payload);
201
-
202
- return {
203
- ...user,
204
- token,
205
- };
206
- }
207
-
208
- @UseGuards(AuthGuard)
209
- @Get('self')
210
- @ApiResponse({
211
- status: 200,
212
- description: 'get self successful',
213
- type: GetUserResponseDto,
214
- })
215
- async getSelf(@Request() req: types.reqType): Promise<GetUserResponseDto> {
216
- try {
217
- const user: User = await this.userService.findOneByUserId(
218
- req.user.userId,
219
- );
220
-
221
- return user as GetUserResponseDto;
222
- } catch (error) {
223
- handleError(error);
224
- }
225
- }
226
-
227
- @UseGuards(AuthGuard)
228
- @Post('update')
229
- @ApiResponse({
230
- status: 200,
231
- description: 'update user successful',
232
- type: GetUserResponseDto,
233
- })
234
- async edit(
235
- @Body() dto: UpdateUserRequestDto,
236
- @Request() req: types.reqType,
237
- ): Promise<GetUserResponseDto> {
238
- try {
239
- const cleanDto: UpdateUserRequestDto = {
240
- phoneNumber: dto.phoneNumber
241
- ? cleanPhoneNumber(dto.phoneNumber)
242
- : undefined,
243
- fullName: dto.fullName
244
- ? cleanStringAndLowercase(dto.fullName)
245
- : undefined,
246
- pushToken: dto.pushToken ? cleanString(dto.pushToken) : undefined,
247
- tz: dto.tz ? utcOffsetToHours(dto.tz) : undefined,
248
- };
249
-
250
- const user: User = await this.userService.update(
251
- req.user.userId,
252
- cleanDto,
253
- );
254
-
255
- return user as GetUserResponseDto;
256
- } catch (error) {
257
- handleError(error);
258
- }
259
- }
260
-
261
- @UseGuards(AuthGuard)
262
- @Post('pushTest')
263
- @ApiResponse({
264
- status: 200,
265
- description: 'push test successful',
266
- })
267
- async pushTest(@Request() req: types.reqType): Promise<void> {
268
- try {
269
- const user: User = await this.userService.findOneByUserId(
270
- req.user.userId,
271
- );
272
-
273
- if (user.pushToken) {
274
- const messages: ExpoPushMessage[] = this.pushService.createMessages({
275
- body: 'Test push',
276
- pushTokens: [user.pushToken],
277
- });
278
- await this.pushService.sendMessages(messages);
279
- }
280
- } catch (error) {
281
- handleError(error);
282
- }
283
- }
284
-
285
- @UseGuards(AuthGuard)
286
- @Post('delete')
287
- @ApiResponse({
288
- status: 200,
289
- description: 'delete user successful',
290
- type: GetUserResponseDto,
291
- })
292
- async delete(
293
- @Request() req: types.reqType,
294
- @Body() dto: DeleteUserRequestDto,
295
- ): Promise<void> {
296
- try {
297
- const parsedDto = (deleteUserSchema as ZodObject<any>).parse(dto);
298
-
299
- const user: User = await this.userService.findOneByUserId(
300
- req.user.userId,
301
- );
302
-
303
- if (!user) {
304
- handleError('User not found');
305
- }
306
-
307
- if (parsedDto.phoneNumber !== user.phoneNumber) {
308
- handleError('Invalid email');
309
- }
310
-
311
- await this.authService.delete(user.externalId);
312
- await this.userService.update(req.user.userId, {
313
- status: UserStatus.DELETED,
314
- email: user.externalId,
315
- phoneNumber: user.externalId,
316
- });
317
- } catch (error) {
318
- handleError(error);
319
- }
320
- }
321
- }
@@ -1,3 +0,0 @@
1
- export declare class UserModule {
2
- }
3
- //# sourceMappingURL=user.module.d.ts.map
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UserModule = void 0;
4
- const tslib_1 = require("tslib");
5
- const common_1 = require("@nestjs/common");
6
- const prisma_module_1 = require("../prisma/prisma.module");
7
- const auth_module_1 = require("../auth/auth.module");
8
- const user_controller_1 = require("./user.controller");
9
- const user_service_1 = require("./user.service");
10
- const push_module_1 = require("../push/push.module");
11
- let UserModule = class UserModule {
12
- };
13
- exports.UserModule = UserModule;
14
- exports.UserModule = UserModule = tslib_1.__decorate([
15
- (0, common_1.Module)({
16
- imports: [prisma_module_1.PrismaModule, auth_module_1.AuthModule, push_module_1.PushModule],
17
- controllers: [user_controller_1.UserController],
18
- providers: [user_service_1.UserService],
19
- exports: [user_service_1.UserService],
20
- })
21
- ], UserModule);
22
- //# sourceMappingURL=user.module.js.map
@@ -1,16 +0,0 @@
1
- import { Module } from '@nestjs/common';
2
-
3
- import { PrismaModule } from '../prisma/prisma.module';
4
- import { AuthModule } from '../auth/auth.module';
5
-
6
- import { UserController } from './user.controller';
7
- import { UserService } from './user.service';
8
- import { PushModule } from '../push/push.module';
9
-
10
- @Module({
11
- imports: [PrismaModule, AuthModule, PushModule],
12
- controllers: [UserController],
13
- providers: [UserService],
14
- exports: [UserService],
15
- })
16
- export class UserModule {}
@@ -1,15 +0,0 @@
1
- import { Prisma, User } from '@prisma/client';
2
- import { PrismaService } from '../prisma';
3
- export declare class UserService {
4
- private prisma;
5
- private readonly logger;
6
- constructor(prisma: PrismaService);
7
- create(data: Prisma.UserCreateInput): Promise<User>;
8
- findOneByEmail(email: string): Promise<User>;
9
- findOneByPhoneNumber(phoneNumber: string): Promise<User>;
10
- findOneByUserId(userId: string): Promise<User>;
11
- findMany(): Promise<User[]>;
12
- findManyByTz(tz: number): Promise<User[]>;
13
- update(id: string, data: Prisma.UserUpdateInput): Promise<User>;
14
- }
15
- //# sourceMappingURL=user.service.d.ts.map