create-warlock 4.0.10 → 4.0.29

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 (66) hide show
  1. package/package.json +1 -1
  2. package/templates/warlock/.prettierignore +4 -0
  3. package/templates/warlock/.prettierrc +8 -0
  4. package/templates/warlock/.prettierrc.json +11 -11
  5. package/templates/warlock/eslint.config.js +98 -0
  6. package/templates/warlock/package.json +27 -25
  7. package/templates/warlock/warlock.config.ts +2 -2
  8. package/templates/warlock/.eslintrc.json +0 -44
  9. package/templates/warlock/eslint.config.mjs +0 -76
  10. package/templates/warlock/src/app/main.ts +0 -12
  11. package/templates/warlock/src/app/posts/controllers/create-post.controller.ts +0 -22
  12. package/templates/warlock/src/app/posts/controllers/get-all-posts.controller.ts +0 -13
  13. package/templates/warlock/src/app/posts/controllers/get-post.controller.ts +0 -28
  14. package/templates/warlock/src/app/posts/models/index.ts +0 -1
  15. package/templates/warlock/src/app/posts/models/post/index.ts +0 -1
  16. package/templates/warlock/src/app/posts/models/post/post.model.ts +0 -32
  17. package/templates/warlock/src/app/posts/output/post.output.ts +0 -12
  18. package/templates/warlock/src/app/posts/repositories/posts.repository.ts +0 -26
  19. package/templates/warlock/src/app/posts/routes.ts +0 -12
  20. package/templates/warlock/src/app/posts/services/posts.service.ts +0 -28
  21. package/templates/warlock/src/app/posts/types/index.ts +0 -6
  22. package/templates/warlock/src/app/posts/utils/locales.ts +0 -8
  23. package/templates/warlock/src/app/posts/validation/create-post.validation.ts +0 -8
  24. package/templates/warlock/src/app/posts/validation/get-post.validation.ts +0 -7
  25. package/templates/warlock/src/app/users/controllers/auth/activate-account.controller.ts +0 -49
  26. package/templates/warlock/src/app/users/controllers/auth/admin-login.controller.ts +0 -39
  27. package/templates/warlock/src/app/users/controllers/auth/create-account-simple.controller.ts +0 -23
  28. package/templates/warlock/src/app/users/controllers/auth/create-account.controller.ts +0 -23
  29. package/templates/warlock/src/app/users/controllers/auth/forget-password.controller.ts +0 -39
  30. package/templates/warlock/src/app/users/controllers/auth/login.controller.ts +0 -32
  31. package/templates/warlock/src/app/users/controllers/auth/logout.controller.ts +0 -10
  32. package/templates/warlock/src/app/users/controllers/auth/resend-activation-code.controller.ts +0 -45
  33. package/templates/warlock/src/app/users/controllers/auth/reset-password.controller.ts +0 -43
  34. package/templates/warlock/src/app/users/controllers/auth/verify-forget-password-code.controller.ts +0 -18
  35. package/templates/warlock/src/app/users/controllers/profile/change-password.controller.ts +0 -31
  36. package/templates/warlock/src/app/users/controllers/profile/my-profile.controller.ts +0 -10
  37. package/templates/warlock/src/app/users/controllers/profile/update-profile.controller.ts +0 -25
  38. package/templates/warlock/src/app/users/controllers/users.restful.ts +0 -26
  39. package/templates/warlock/src/app/users/events/attach-user-to-response.ts +0 -18
  40. package/templates/warlock/src/app/users/events/register-current-user-to-model-authors.ts +0 -28
  41. package/templates/warlock/src/app/users/events/update-authors.ts +0 -19
  42. package/templates/warlock/src/app/users/mail/send-forget-password-email.ts +0 -20
  43. package/templates/warlock/src/app/users/models/user/index.ts +0 -1
  44. package/templates/warlock/src/app/users/models/user/migrations/20-10-2024_07-59-54-user.migration.ts +0 -15
  45. package/templates/warlock/src/app/users/models/user/user.model.ts +0 -59
  46. package/templates/warlock/src/app/users/output/user.output.ts +0 -12
  47. package/templates/warlock/src/app/users/repositories/users.repository.ts +0 -27
  48. package/templates/warlock/src/app/users/routes.ts +0 -51
  49. package/templates/warlock/src/app/users/services/create-account.service.ts +0 -16
  50. package/templates/warlock/src/app/users/services/login.service.ts +0 -16
  51. package/templates/warlock/src/app/users/utils/locales.ts +0 -16
  52. package/templates/warlock/src/app/users/validation/activate-account.validation.ts +0 -8
  53. package/templates/warlock/src/app/users/validation/admin-login.validation.ts +0 -8
  54. package/templates/warlock/src/app/users/validation/create-account.validation.ts +0 -10
  55. package/templates/warlock/src/app/users/validation/login.validation.ts +0 -8
  56. package/templates/warlock/src/app/utils/output.ts +0 -17
  57. package/templates/warlock/src/app/utils/router.ts +0 -104
  58. package/templates/warlock/src/config/app.ts +0 -12
  59. package/templates/warlock/src/config/auth.ts +0 -16
  60. package/templates/warlock/src/config/cache.ts +0 -40
  61. package/templates/warlock/src/config/database.ts +0 -18
  62. package/templates/warlock/src/config/http.ts +0 -22
  63. package/templates/warlock/src/config/log.ts +0 -19
  64. package/templates/warlock/src/config/mail.ts +0 -16
  65. package/templates/warlock/src/config/uploads.ts +0 -12
  66. package/templates/warlock/src/config/validation.ts +0 -78
@@ -1,39 +0,0 @@
1
- import type { Request, Response } from "@warlock.js/core";
2
- import { User } from "app/users/models/user";
3
- import { loginUserService } from "app/users/services/login.service";
4
- import {
5
- adminLoginSchema,
6
- type AdminLoginData,
7
- } from "app/users/validation/admin-login.validation";
8
-
9
- export default async function adminLoginController(
10
- request: Request<AdminLoginData>,
11
- response: Response,
12
- ) {
13
- const user = request.user;
14
-
15
- const loginData = await loginUserService(user);
16
-
17
- return response.success(loginData);
18
- }
19
-
20
- adminLoginController.validation = {
21
- schema: adminLoginSchema,
22
- validate: async (request: Request, response: Response) => {
23
- const user = await User.attempt(request.validated());
24
-
25
- if (!user) {
26
- return response.badRequest({
27
- error: "Invalid credentials",
28
- });
29
- }
30
-
31
- if (!user.get("isActive")) {
32
- return response.badRequest({
33
- error: "Your account is suspended!",
34
- });
35
- }
36
-
37
- request.user = user;
38
- },
39
- };
@@ -1,23 +0,0 @@
1
- import { Random } from "@mongez/reinforcements";
2
- import { UniqueRule, type Request, type Response } from "@warlock.js/core";
3
- import { User } from "app/users/models/user";
4
-
5
- export default async function createAccount(
6
- request: Request,
7
- response: Response,
8
- ) {
9
- User.create({
10
- ...request.validated(),
11
- activationCode: Random.int(100000, 999999),
12
- });
13
-
14
- return response.success();
15
- }
16
-
17
- createAccount.validation = {
18
- rules: {
19
- name: ["required", "minLength:2"],
20
- email: ["required", "email", new UniqueRule(User)],
21
- password: ["required", "minLength:8"],
22
- },
23
- };
@@ -1,23 +0,0 @@
1
- import type { Request, RequestHandler, Response } from "@warlock.js/core";
2
- import type { User } from "app/users/models/user";
3
- import { createAccountService } from "app/users/services/create-account.service";
4
- import { loginUserService } from "app/users/services/login.service";
5
- import { createAccountSchema } from "app/users/validation/create-account.validation";
6
-
7
- export const createAccountController: RequestHandler = async (
8
- request: Request<User>,
9
- response: Response,
10
- ) => {
11
- const user = await createAccountService(request.validated()); //
12
-
13
- request.guest = request.user;
14
- request.user = user;
15
-
16
- return response.success({
17
- user: await loginUserService(user),
18
- });
19
- };
20
-
21
- createAccountController.validation = {
22
- schema: createAccountSchema,
23
- };
@@ -1,39 +0,0 @@
1
- import { Random } from "@mongez/reinforcements";
2
- import { type Request, type Response } from "@warlock.js/core";
3
- import sendForgetPasswordEmail from "app/users/mail/send-forget-password-email";
4
- import { User } from "app/users/models/user";
5
-
6
- export default async function forgetPassword(
7
- request: Request<User>,
8
- response: Response,
9
- ) {
10
- const currentUser = request.user;
11
-
12
- currentUser
13
- .save({
14
- activatedAt: new Date(),
15
- activationCode: Random.int(100000, 999999),
16
- })
17
- .then(sendForgetPasswordEmail);
18
-
19
- return response.success();
20
- }
21
-
22
- forgetPassword.validation = {
23
- rules: {
24
- email: ["required", "email"],
25
- },
26
- validate: async (request: Request, response: Response) => {
27
- const user = await User.first({
28
- email: request.input("email"),
29
- // if the app requires an active account, uncomment the following line
30
- // isActive: true,
31
- });
32
-
33
- if (!user) {
34
- return response.notFound();
35
- }
36
-
37
- request.user = user;
38
- },
39
- };
@@ -1,32 +0,0 @@
1
- import {
2
- type Request,
3
- type RequestHandler,
4
- type Response,
5
- } from "@warlock.js/core";
6
- import { User } from "app/users/models/user";
7
- import { loginUserService } from "app/users/services/login.service";
8
- import {
9
- loginSchema,
10
- type LoginData,
11
- } from "app/users/validation/login.validation";
12
-
13
- export const loginController: RequestHandler = async (
14
- request: Request<LoginData>,
15
- response: Response,
16
- ) => {
17
- const user = await User.attempt(request.validated());
18
-
19
- if (!user) {
20
- return response.badRequest({
21
- error: "Invalid credentials",
22
- });
23
- }
24
-
25
- const loginData = await loginUserService(user);
26
-
27
- return response.success(loginData);
28
- };
29
-
30
- loginController.validation = {
31
- schema: loginSchema,
32
- };
@@ -1,10 +0,0 @@
1
- import type { Request, Response } from "@warlock.js/core";
2
- import type { User } from "app/users/models/user";
3
-
4
- export default function logout(request: Request<User>, response: Response) {
5
- const user = request.user;
6
-
7
- user.removeAccessToken(request.accessToken);
8
-
9
- return response.success();
10
- }
@@ -1,45 +0,0 @@
1
- import { Random } from "@mongez/reinforcements";
2
- import type { Request, Response } from "@warlock.js/core";
3
- import { ExistsRule } from "@warlock.js/core";
4
- import { User } from "app/users/models/user";
5
-
6
- export default async function resendActivationCode(
7
- request: Request,
8
- response: Response,
9
- ) {
10
- //
11
- const user = await User.first({
12
- email: request.input("email"),
13
- });
14
-
15
- if (!user) {
16
- return response.badRequest({
17
- error: "User not found",
18
- });
19
- }
20
-
21
- if (user.get("isActive")) {
22
- return response.badRequest({
23
- error: "User already activated",
24
- });
25
- }
26
-
27
- user
28
- .save({
29
- activationCode: Random.int(100000, 999999),
30
- codeExpiresAt: true,
31
- })
32
- .then(() => {
33
- // send mail
34
- });
35
-
36
- return response.success({
37
- message: "Activation code sent",
38
- });
39
- }
40
-
41
- resendActivationCode.validation = {
42
- rules: {
43
- email: ["required", "email", new ExistsRule(User, "email").insensitive()],
44
- },
45
- };
@@ -1,43 +0,0 @@
1
- import { ExistsRule, type Request, type Response } from "@warlock.js/core";
2
- import { User } from "app/users/models/user";
3
-
4
- export default async function resetPassword(
5
- request: Request<User>,
6
- response: Response,
7
- ) {
8
- const currentUser = request.user;
9
-
10
- currentUser.unset("activationCode", "codeExpiresAt");
11
-
12
- currentUser.save({
13
- password: request.input("password"),
14
- });
15
-
16
- request.clearCurrentUser();
17
-
18
- return response.success();
19
- }
20
-
21
- resetPassword.validation = {
22
- rules: {
23
- email: ["required", "email", new ExistsRule(User, "email").insensitive()],
24
- password: ["required", "confirmed", "minLength:8"],
25
- code: ["required", "int", "length:6"],
26
- },
27
- validate: async (request: Request, response: Response) => {
28
- try {
29
- const user = await User.first({
30
- email: request.input("email"),
31
- activationCode: request.int("code"),
32
- });
33
-
34
- if (!user) {
35
- return response.notFound();
36
- }
37
-
38
- request.user = user;
39
- } catch (error: any) {
40
- return response.badRequest(error.message);
41
- }
42
- },
43
- };
@@ -1,18 +0,0 @@
1
- import { UniqueRule, type Request, type Response } from "@warlock.js/core";
2
- import { User } from "app/users/models/user";
3
-
4
- export default async function verifyForgetPasswordCode(
5
- request: Request,
6
- response: Response,
7
- ) {
8
- // your code here
9
-
10
- return response.success({});
11
- }
12
-
13
- verifyForgetPasswordCode.validation = {
14
- rules: {
15
- email: ["required", "email", new UniqueRule(User)],
16
- code: ["required", "int", "length:6"],
17
- },
18
- };
@@ -1,31 +0,0 @@
1
- import { v, type Request, type Response } from "@warlock.js/core";
2
- import type { User } from "app/users/models/user";
3
-
4
- export default async function changePassword(
5
- request: Request,
6
- response: Response,
7
- ) {
8
- const user = request.user;
9
-
10
- await user.save({
11
- password: request.input("password"),
12
- });
13
-
14
- return response.success();
15
- }
16
-
17
- changePassword.validation = {
18
- schema: v.object({
19
- password: v.string().minLength(8).required(),
20
- confirmPassword: v.string().required().sameAs("password").omit(),
21
- }),
22
- validate: (request: Request<User>, response: Response) => {
23
- const user = request.user;
24
-
25
- if (!user.confirmPassword(request.input("currentPassword"))) {
26
- return response.badRequest({
27
- error: "Invalid current password",
28
- });
29
- }
30
- },
31
- };
@@ -1,10 +0,0 @@
1
- import type { Request, Response } from "@warlock.js/core";
2
- import type { User } from "app/users/models/user";
3
-
4
- export default function myProfile(request: Request<User>, response: Response) {
5
- const currentUser = request.user;
6
-
7
- return response.success({
8
- user: currentUser,
9
- });
10
- }
@@ -1,25 +0,0 @@
1
- import type { Request, Response } from "@warlock.js/core";
2
- import { UniqueRule } from "@warlock.js/core";
3
- import { User } from "app/users/models/user";
4
-
5
- export default async function updateProfile(
6
- request: Request<User>,
7
- response: Response,
8
- ) {
9
- await request.user.save(request.validated());
10
-
11
- return response.success();
12
- }
13
-
14
- updateProfile.validation = {
15
- rules: {
16
- name: ["required", "minLength:2"],
17
- gender: ["in:male,female"],
18
- phoneNumber: ["required", new UniqueRule(User).exceptCurrentUser()],
19
- email: [
20
- "required",
21
- "email",
22
- new UniqueRule(User).insensitive().exceptCurrentUser(),
23
- ],
24
- },
25
- };
@@ -1,26 +0,0 @@
1
- import { Restful, type RouteResource, v } from "@warlock.js/core";
2
- import { User } from "../models/user";
3
- import { usersRepository } from "../repositories/users.repository";
4
-
5
- class RestfulUsers extends Restful<User> implements RouteResource {
6
- /**
7
- * {@inheritDoc}
8
- */
9
- protected repository = usersRepository;
10
-
11
- /**
12
- * {@inheritDoc}
13
- */
14
- public validation: RouteResource["validation"] = {
15
- create: {
16
- schema: v.object({
17
- name: v.string().minLength(2).required(),
18
- email: v.string().email().required().unique(User, {
19
- except: "id",
20
- }),
21
- }),
22
- },
23
- };
24
- }
25
-
26
- export const restfulUsers = new RestfulUsers();
@@ -1,18 +0,0 @@
1
- import { Response } from "@warlock.js/core";
2
-
3
- export function attachCurrentUserToResponse(response: Response) {
4
- if (!response.isJson) return;
5
-
6
- const responseData = response.body;
7
-
8
- if (!responseData || responseData.user) return;
9
-
10
- const currentUser = response.request.user;
11
-
12
- if (!currentUser) return;
13
-
14
- responseData.user = currentUser;
15
- }
16
-
17
- // add current user to response
18
- Response.on("sending", attachCurrentUserToResponse);
@@ -1,28 +0,0 @@
1
- /**
2
- * This event is responsible for adding the current user to any model that is being saved
3
- * Such as createdBy and updatedBy so you don't need to add it manually.
4
- */
5
- import { isEmpty } from "@mongez/supportive-is";
6
- import { Model } from "@warlock.js/cascade";
7
- import { useRequestStore } from "@warlock.js/core";
8
- import type { User } from "../models/user";
9
-
10
- Model.events()
11
- .onSaving((model: Model, oldModel?: Model) => {
12
- const { user } = useRequestStore<User>();
13
-
14
- if (!user) return;
15
-
16
- if (!oldModel && isEmpty(model.get("createdBy"))) {
17
- model.set("createdBy", user.embeddedData);
18
- }
19
-
20
- model.set("updatedBy", user.embeddedData);
21
- })
22
- .onDeleting((model: Model) => {
23
- const { user } = useRequestStore<User>();
24
-
25
- if (!user || user.userType === "guest") return;
26
-
27
- model.set("deletedBy", user.embeddedData);
28
- });
@@ -1,19 +0,0 @@
1
- import { Aggregate, database } from "@warlock.js/cascade";
2
- import { User } from "../models/user";
3
-
4
- User.events().onSaved(async (user: User) => {
5
- // list all collections in the database
6
- const collections = await database.listCollectionNames();
7
-
8
- // this will update the createdBy and updatedBy fields in all collections
9
- // it may take some time if you have a lot of collections or documents but it's the best way to do it
10
- for (const collection of collections) {
11
- new Aggregate(collection).where("createdBy.id", user.id).update({
12
- createdBy: user.embeddedData,
13
- });
14
-
15
- new Aggregate(collection).where("updatedBy.id", user.id).update({
16
- updatedBy: user.embeddedData,
17
- });
18
- }
19
- });
@@ -1,20 +0,0 @@
1
- import { sendMail } from "@warlock.js/core";
2
- import type { User } from "../models/user";
3
-
4
- export default async function sendForgetPasswordEmail(user: User) {
5
- await sendMail({
6
- to: user.get("email"),
7
- subject: "Reset Password",
8
- html: `
9
- <h3>Hello, ${user.get("name")}</h3>
10
-
11
- <p>Use the following code to reset your password:</p>
12
-
13
- <p>Please note that this code will expire in 10 minutes.</p>
14
-
15
- <p>Your reset password code is: <strong>${user.get(
16
- "activationCode",
17
- )}</strong></p>
18
- `,
19
- });
20
- }
@@ -1 +0,0 @@
1
- export * from "./user.model";
@@ -1,15 +0,0 @@
1
- import { migrationOffice } from "@warlock.js/cascade";
2
- import { User } from "../user.model";
3
-
4
- export default migrationOffice.register({
5
- name: "users",
6
- blueprint: User.blueprint(),
7
- up: blueprint => {
8
- blueprint.unique("id");
9
- blueprint.unique("email");
10
- },
11
- down(blueprint) {
12
- blueprint.dropUniqueIndex("id");
13
- blueprint.dropUniqueIndex("email");
14
- },
15
- });
@@ -1,59 +0,0 @@
1
- import { Auth, castPassword } from "@warlock.js/auth";
2
- import type { Casts, Document, Joinable } from "@warlock.js/cascade";
3
- import { castEmail, expiresAfter } from "@warlock.js/cascade";
4
- import { uploadable } from "@warlock.js/core";
5
- import { Post } from "../../../posts/models";
6
- import { UserOutput } from "../../output/user.output";
7
-
8
- export class User extends Auth {
9
- /**
10
- * Collection name
11
- */
12
- public static collection = "users";
13
-
14
- /**
15
- * Output
16
- */
17
- public static output = UserOutput;
18
-
19
- /**
20
- * {@inheritdoc}
21
- */
22
- public syncWith = [];
23
-
24
- public static relations: Record<string, Joinable> = {
25
- totalPosts: Post.joinable("id", "author.id"),
26
- };
27
-
28
- /**
29
- * Get user type
30
- */
31
- public get userType(): string {
32
- return "user";
33
- }
34
-
35
- /**
36
- * {@inheritDoc}
37
- */
38
- public defaultValue: Document = {
39
- isActive: false,
40
- };
41
-
42
- /**
43
- * {@inheritDoc}
44
- */
45
- protected casts: Casts = {
46
- name: "string",
47
- isActive: "boolean",
48
- image: uploadable,
49
- email: castEmail,
50
- password: castPassword,
51
- activationCode: "int",
52
- codeExpiresAt: expiresAfter(30, "minutes"),
53
- };
54
-
55
- /**
56
- * {@inheritdoc}
57
- */
58
- public embedded = ["id", "name", "email"];
59
- }
@@ -1,12 +0,0 @@
1
- import { Output, type FinalOutput } from "@warlock.js/core";
2
- import { withBaseOutputDetails } from "app/utils/output";
3
-
4
- export class UserOutput extends Output {
5
- /**
6
- * Output data
7
- */
8
- protected output: FinalOutput = withBaseOutputDetails({
9
- name: "string",
10
- email: "string",
11
- });
12
- }
@@ -1,27 +0,0 @@
1
- import type { FilterByOptions, RepositoryOptions } from "@warlock.js/core";
2
- import { RepositoryManager } from "@warlock.js/core";
3
-
4
- import { User } from "../models/user";
5
-
6
- export class UsersRepository extends RepositoryManager<User> {
7
- /**
8
- * {@inheritDoc}
9
- */
10
- public model = User;
11
-
12
- /**
13
- * List default options
14
- */
15
- protected defaultOptions: RepositoryOptions = this.withDefaultOptions({});
16
-
17
- /**
18
- * Filter By options
19
- */
20
- protected filterBy: FilterByOptions = this.withDefaultFilters({
21
- name: "like",
22
- isActive: "bool",
23
- activationCode: "=",
24
- });
25
- }
26
-
27
- export const usersRepository = new UsersRepository();
@@ -1,51 +0,0 @@
1
- import { router } from "@warlock.js/core";
2
- import {
3
- guarded,
4
- guardedAdmin,
5
- guardedGuest,
6
- guardedGuestAdmin,
7
- } from "app/utils/router";
8
- import activateAccountController from "./controllers/auth/activate-account.controller";
9
- import adminLoginController from "./controllers/auth/admin-login.controller";
10
- import { createAccountController } from "./controllers/auth/create-account.controller";
11
- import forgetPassword from "./controllers/auth/forget-password.controller";
12
- import { loginController } from "./controllers/auth/login.controller";
13
- import logout from "./controllers/auth/logout.controller";
14
- import resendActivationCode from "./controllers/auth/resend-activation-code.controller";
15
- import resetPassword from "./controllers/auth/reset-password.controller";
16
- import verifyForgetPasswordCode from "./controllers/auth/verify-forget-password-code.controller";
17
- import changePassword from "./controllers/profile/change-password.controller";
18
- import myProfile from "./controllers/profile/my-profile.controller";
19
- import updateProfile from "./controllers/profile/update-profile.controller";
20
- import { restfulUsers } from "./controllers/users.restful";
21
-
22
- // admin auth
23
- guardedGuestAdmin(() => {
24
- router.post("/login", adminLoginController);
25
- router.post("/forget-password", forgetPassword);
26
- router.post("/reset-password", resetPassword);
27
- });
28
-
29
- guardedAdmin(() => {
30
- // REST API for users
31
- router.restfulResource("/users", restfulUsers);
32
- });
33
-
34
- // user auth
35
- guardedGuest(() => {
36
- router.post("/login", loginController);
37
- router.post("/register", createAccountController);
38
- router.post("/register/verify", activateAccountController);
39
- router.post("/resend-activation-code", resendActivationCode);
40
- router.post("/forget-password", forgetPassword);
41
- router.post("/forget-password/verify-code", verifyForgetPasswordCode);
42
- router.post("/reset-password", resetPassword);
43
- });
44
-
45
- // profile routes
46
- guarded(() => {
47
- router.get("/me", myProfile);
48
- router.post("/me", updateProfile);
49
- router.post("/logout", logout);
50
- router.post("/change-password", changePassword);
51
- });
@@ -1,16 +0,0 @@
1
- import { Random } from "@mongez/reinforcements";
2
- import type { User } from "app/users/models/user";
3
- import { usersRepository } from "app/users/repositories/users.repository";
4
-
5
- /**
6
- * Create a new user account
7
- */
8
- export async function createAccountService(
9
- profileData: Record<string, any>,
10
- ): Promise<User> {
11
- return await usersRepository.create({
12
- isCustomer: true,
13
- ...profileData,
14
- activationCode: Random.int(100000, 999999),
15
- });
16
- }
@@ -1,16 +0,0 @@
1
- import type { User } from "app/users/models/user";
2
-
3
- /**
4
- * Login user and return user data with access token
5
- */
6
- export async function loginUserService(user: User): Promise<{
7
- user: any;
8
- accessToken: string;
9
- }> {
10
- const accessToken = await user.generateAccessToken();
11
-
12
- return {
13
- user: await user.toJSON(),
14
- accessToken: accessToken,
15
- };
16
- }