create-warlock 1.0.6 → 1.0.7

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-warlock",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "main": "./esm/index.js",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,48 +1,49 @@
1
- import type { Request, Response } from "@warlock.js/core";
2
- import { User } from "app/users/models/user";
3
-
4
- export default async function activateAccount(
5
- request: Request,
6
- response: Response,
7
- ) {
8
- const currentUser = request.user;
9
-
10
- currentUser.unset("codeExpiresAt", "activationCode");
11
-
12
- currentUser.save({
13
- isActive: true,
14
- activatedAt: new Date(),
15
- });
16
-
17
- const accessToken = await currentUser.generateAccessToken();
18
-
19
- return response.success({
20
- user: {
21
- ...(await currentUser.toJSON()),
22
- accessToken: accessToken,
23
- userType: currentUser.userType,
24
- },
25
- });
26
- }
27
-
28
- activateAccount.validation = {
29
- rules: {
30
- code: ["required"],
31
- email: ["required", "email"],
32
- },
33
- validate: async (request: Request, response: Response) => {
34
- const user = await User.aggregate()
35
- .where("email", String(request.input("email")).toLowerCase())
36
- .where("isActive", false)
37
- .where("activationCode", request.input("code"))
38
- .first();
39
-
40
- if (!user) {
41
- return response.notFound({
42
- error: "Invalid activation code",
43
- });
44
- }
45
-
46
- request.user = user;
47
- },
48
- };
1
+ import type { Request, Response } from "@warlock.js/core";
2
+ import usersRepository from "app/users/repositories/users-repository";
3
+
4
+
5
+ export default async function activateAccount(
6
+ request: Request,
7
+ response: Response,
8
+ ) {
9
+ const currentUser = request.user;
10
+
11
+ currentUser.unset("codeExpiresAt", "activationCode");
12
+
13
+ currentUser.save({
14
+ isActive: true,
15
+ activatedAt: new Date(),
16
+ });
17
+
18
+ const accessToken = await currentUser.generateAccessToken();
19
+
20
+ return response.success({
21
+ user: {
22
+ ...(await currentUser.toJSON()),
23
+ accessToken: accessToken,
24
+ userType: currentUser.userType,
25
+ },
26
+ });
27
+ }
28
+
29
+ activateAccount.validation = {
30
+ rules: {
31
+ code: ["required"],
32
+ email: ["required", "email"],
33
+ },
34
+ validate: async (request: Request, response: Response) => {
35
+ const user = await usersRepository.first({
36
+ isActive: false,
37
+ email: request.input("email"),
38
+ activationCode: request.int("code"),
39
+ });
40
+
41
+ if (!user) {
42
+ return response.notFound({
43
+ error: "Invalid activation code",
44
+ });
45
+ }
46
+
47
+ request.user = user;
48
+ },
49
+ };
@@ -1,39 +1,39 @@
1
- import { Random } from "@mongez/reinforcements";
2
- import { UniqueRule, 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", new UniqueRule(User)],
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
+ import { Random } from "@mongez/reinforcements";
2
+ import { UniqueRule, 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,28 +1,29 @@
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
- });
24
- }
25
-
26
- const usersRepository = new UsersRepository();
27
-
28
- export default usersRepository;
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
+ const usersRepository = new UsersRepository();
28
+
29
+ export default usersRepository;