diff options
Diffstat (limited to 'app/Models')
-rw-r--r-- | app/Models/Recipe.ts | 16 | ||||
-rw-r--r-- | app/Models/Service.ts | 26 | ||||
-rw-r--r-- | app/Models/Token.ts | 28 | ||||
-rw-r--r-- | app/Models/User.ts | 78 | ||||
-rw-r--r-- | app/Models/Workspace.ts | 28 |
5 files changed, 90 insertions, 86 deletions
diff --git a/app/Models/Recipe.ts b/app/Models/Recipe.ts index bca6e76..84497d4 100644 --- a/app/Models/Recipe.ts +++ b/app/Models/Recipe.ts | |||
@@ -1,23 +1,23 @@ | |||
1 | import { DateTime } from 'luxon' | 1 | import { DateTime } from 'luxon'; |
2 | import { BaseModel, column } from '@adonisjs/lucid/orm' | 2 | import { BaseModel, column } from '@adonisjs/lucid/orm'; |
3 | 3 | ||
4 | export default class Recipe extends BaseModel { | 4 | export default class Recipe extends BaseModel { |
5 | @column({ isPrimary: true }) | 5 | @column({ isPrimary: true }) |
6 | public id: number | 6 | public id: number; |
7 | 7 | ||
8 | @column() | 8 | @column() |
9 | public name: string | 9 | public name: string; |
10 | 10 | ||
11 | @column() | 11 | @column() |
12 | public recipeId: string | 12 | public recipeId: string; |
13 | 13 | ||
14 | // TODO: Type the data object. | 14 | // TODO: Type the data object. |
15 | @column() | 15 | @column() |
16 | public data: object | 16 | public data: object; |
17 | 17 | ||
18 | @column.dateTime({ autoCreate: true }) | 18 | @column.dateTime({ autoCreate: true }) |
19 | public createdAt: DateTime | 19 | public createdAt: DateTime; |
20 | 20 | ||
21 | @column.dateTime({ autoCreate: true, autoUpdate: true }) | 21 | @column.dateTime({ autoCreate: true, autoUpdate: true }) |
22 | public updatedAt: DateTime | 22 | public updatedAt: DateTime; |
23 | } | 23 | } |
diff --git a/app/Models/Service.ts b/app/Models/Service.ts index 0cd2afb..0b4920b 100644 --- a/app/Models/Service.ts +++ b/app/Models/Service.ts | |||
@@ -1,41 +1,41 @@ | |||
1 | import { DateTime } from 'luxon' | 1 | import { DateTime } from 'luxon'; |
2 | import { BaseModel, column, hasOne } from '@adonisjs/lucid/orm' | 2 | import { BaseModel, column, hasOne } from '@adonisjs/lucid/orm'; |
3 | import User from './User.js' | 3 | import User from './User.js'; |
4 | import type { HasOne } from '@adonisjs/lucid/types/relations' | 4 | import type { HasOne } from '@adonisjs/lucid/types/relations'; |
5 | 5 | ||
6 | export default class Service extends BaseModel { | 6 | export default class Service extends BaseModel { |
7 | @column({ isPrimary: true }) | 7 | @column({ isPrimary: true }) |
8 | public id: number | 8 | public id: number; |
9 | 9 | ||
10 | @hasOne(() => User, { | 10 | @hasOne(() => User, { |
11 | foreignKey: 'userId', | 11 | foreignKey: 'userId', |
12 | }) | 12 | }) |
13 | public user: HasOne<typeof User> | 13 | public user: HasOne<typeof User>; |
14 | 14 | ||
15 | @column({ | 15 | @column({ |
16 | columnName: 'userId', | 16 | columnName: 'userId', |
17 | }) | 17 | }) |
18 | public userId: number | 18 | public userId: number; |
19 | 19 | ||
20 | @column({ | 20 | @column({ |
21 | columnName: 'serviceId', | 21 | columnName: 'serviceId', |
22 | }) | 22 | }) |
23 | public serviceId: string | 23 | public serviceId: string; |
24 | 24 | ||
25 | @column() | 25 | @column() |
26 | public name: string | 26 | public name: string; |
27 | 27 | ||
28 | @column({ | 28 | @column({ |
29 | columnName: 'recipeId', | 29 | columnName: 'recipeId', |
30 | }) | 30 | }) |
31 | public recipeId: string | 31 | public recipeId: string; |
32 | 32 | ||
33 | @column() | 33 | @column() |
34 | public settings: string | 34 | public settings: string; |
35 | 35 | ||
36 | @column.dateTime({ autoCreate: true }) | 36 | @column.dateTime({ autoCreate: true }) |
37 | public createdAt: DateTime | 37 | public createdAt: DateTime; |
38 | 38 | ||
39 | @column.dateTime({ autoCreate: true, autoUpdate: true }) | 39 | @column.dateTime({ autoCreate: true, autoUpdate: true }) |
40 | public updatedAt: DateTime | 40 | public updatedAt: DateTime; |
41 | } | 41 | } |
diff --git a/app/Models/Token.ts b/app/Models/Token.ts index a8c29dd..9c843b8 100644 --- a/app/Models/Token.ts +++ b/app/Models/Token.ts | |||
@@ -1,39 +1,39 @@ | |||
1 | import { DateTime } from 'luxon' | 1 | import { DateTime } from 'luxon'; |
2 | import { BaseModel, column, hasOne } from '@adonisjs/lucid/orm' | 2 | import { BaseModel, column, hasOne } from '@adonisjs/lucid/orm'; |
3 | import User from './User.js' | 3 | import User from './User.js'; |
4 | import { HasOne } from '@adonisjs/lucid/types/relations' | 4 | import { HasOne } from '@adonisjs/lucid/types/relations'; |
5 | 5 | ||
6 | export default class Token extends BaseModel { | 6 | export default class Token extends BaseModel { |
7 | @column({ isPrimary: true }) | 7 | @column({ isPrimary: true }) |
8 | public id: number | 8 | public id: number; |
9 | 9 | ||
10 | @hasOne(() => User, { | 10 | @hasOne(() => User, { |
11 | localKey: 'user_id', | 11 | localKey: 'user_id', |
12 | foreignKey: 'id', | 12 | foreignKey: 'id', |
13 | }) | 13 | }) |
14 | public user: HasOne<typeof User> | 14 | public user: HasOne<typeof User>; |
15 | 15 | ||
16 | @column() | 16 | @column() |
17 | public user_id: number | 17 | public user_id: number; |
18 | 18 | ||
19 | @column() | 19 | @column() |
20 | public token: string | 20 | public token: string; |
21 | 21 | ||
22 | @column() | 22 | @column() |
23 | public type: string | 23 | public type: string; |
24 | 24 | ||
25 | @column() | 25 | @column() |
26 | public is_revoked: boolean | 26 | public is_revoked: boolean; |
27 | 27 | ||
28 | @column() | 28 | @column() |
29 | public name: string | 29 | public name: string; |
30 | 30 | ||
31 | @column.dateTime() | 31 | @column.dateTime() |
32 | public expires_at: DateTime | 32 | public expires_at: DateTime; |
33 | 33 | ||
34 | @column.dateTime({ autoCreate: true }) | 34 | @column.dateTime({ autoCreate: true }) |
35 | public created_at: DateTime | 35 | public created_at: DateTime; |
36 | 36 | ||
37 | @column.dateTime({ autoCreate: true, autoUpdate: true }) | 37 | @column.dateTime({ autoCreate: true, autoUpdate: true }) |
38 | public updated_at: DateTime | 38 | public updated_at: DateTime; |
39 | } | 39 | } |
diff --git a/app/Models/User.ts b/app/Models/User.ts index cc2c553..d292b3a 100644 --- a/app/Models/User.ts +++ b/app/Models/User.ts | |||
@@ -1,70 +1,70 @@ | |||
1 | import { DateTime } from 'luxon' | 1 | import { DateTime } from 'luxon'; |
2 | import { BaseModel, beforeSave, column, hasMany } from '@adonisjs/lucid/orm' | 2 | import { BaseModel, beforeSave, column, hasMany } from '@adonisjs/lucid/orm'; |
3 | import hash from '@adonisjs/core/services/hash' | 3 | import hash from '@adonisjs/core/services/hash'; |
4 | import emitter from '@adonisjs/core/services/emitter' | 4 | import emitter from '@adonisjs/core/services/emitter'; |
5 | import moment from 'moment' | 5 | import moment from 'moment'; |
6 | import Encryption from '@ioc:Adonis/Core/Encryption' | 6 | import Encryption from '@ioc:Adonis/Core/Encryption'; |
7 | import randtoken from 'rand-token' | 7 | import randtoken from 'rand-token'; |
8 | import Token from './Token.js' | 8 | import Token from './Token.js'; |
9 | import Workspace from './Workspace.js' | 9 | import Workspace from './Workspace.js'; |
10 | import Service from './Service.js' | 10 | import Service from './Service.js'; |
11 | import mail from '@adonisjs/mail/services/main' | 11 | import mail from '@adonisjs/mail/services/main'; |
12 | import { url } from '#config/app' | 12 | import { url } from '#config/app'; |
13 | import { mailFrom } from '#config/dashboard' | 13 | import { mailFrom } from '#config/dashboard'; |
14 | import { HasMany } from '@adonisjs/lucid/types/relations' | 14 | import { HasMany } from '@adonisjs/lucid/types/relations'; |
15 | 15 | ||
16 | export default class User extends BaseModel { | 16 | export default class User extends BaseModel { |
17 | @column({ isPrimary: true }) | 17 | @column({ isPrimary: true }) |
18 | public id: number | 18 | public id: number; |
19 | 19 | ||
20 | @column() | 20 | @column() |
21 | public email: string | 21 | public email: string; |
22 | 22 | ||
23 | @column() | 23 | @column() |
24 | public username: string | 24 | public username: string; |
25 | 25 | ||
26 | @column() | 26 | @column() |
27 | public password: string | 27 | public password: string; |
28 | 28 | ||
29 | @column() | 29 | @column() |
30 | public lastname: string | 30 | public lastname: string; |
31 | 31 | ||
32 | // TODO: Type the settings object. | 32 | // TODO: Type the settings object. |
33 | @column() | 33 | @column() |
34 | public settings: object | 34 | public settings: object; |
35 | 35 | ||
36 | @column.dateTime({ autoCreate: true }) | 36 | @column.dateTime({ autoCreate: true }) |
37 | public created_at: DateTime | 37 | public created_at: DateTime; |
38 | 38 | ||
39 | @column.dateTime({ autoCreate: true, autoUpdate: true }) | 39 | @column.dateTime({ autoCreate: true, autoUpdate: true }) |
40 | public updated_at: DateTime | 40 | public updated_at: DateTime; |
41 | 41 | ||
42 | @beforeSave() | 42 | @beforeSave() |
43 | public static async hashPassword(user: User) { | 43 | public static async hashPassword(user: User) { |
44 | if (user.$dirty.password) { | 44 | if (user.$dirty.password) { |
45 | user.password = await hash.make(user.password) | 45 | user.password = await hash.make(user.password); |
46 | } | 46 | } |
47 | } | 47 | } |
48 | 48 | ||
49 | @hasMany(() => Token, { | 49 | @hasMany(() => Token, { |
50 | foreignKey: 'user_id', | 50 | foreignKey: 'user_id', |
51 | }) | 51 | }) |
52 | public tokens: HasMany<typeof Token> | 52 | public tokens: HasMany<typeof Token>; |
53 | 53 | ||
54 | @hasMany(() => Service, { | 54 | @hasMany(() => Service, { |
55 | foreignKey: 'userId', | 55 | foreignKey: 'userId', |
56 | }) | 56 | }) |
57 | public services: HasMany<typeof Service> | 57 | public services: HasMany<typeof Service>; |
58 | 58 | ||
59 | @hasMany(() => Workspace, { | 59 | @hasMany(() => Workspace, { |
60 | foreignKey: 'userId', | 60 | foreignKey: 'userId', |
61 | }) | 61 | }) |
62 | public workspaces: HasMany<typeof Workspace> | 62 | public workspaces: HasMany<typeof Workspace>; |
63 | 63 | ||
64 | public async forgotPassword(): Promise<void> { | 64 | public async forgotPassword(): Promise<void> { |
65 | const token = await this.generateToken(this, 'forgot_password') | 65 | const token = await this.generateToken(this, 'forgot_password'); |
66 | 66 | ||
67 | await mail.send((message) => { | 67 | await mail.send(message => { |
68 | message | 68 | message |
69 | .from(mailFrom) | 69 | .from(mailFrom) |
70 | .to(this.email) | 70 | .to(this.email) |
@@ -73,13 +73,13 @@ export default class User extends BaseModel { | |||
73 | username: this.username, | 73 | username: this.username, |
74 | appUrl: url, | 74 | appUrl: url, |
75 | token: token, | 75 | token: token, |
76 | }) | 76 | }); |
77 | }) | 77 | }); |
78 | 78 | ||
79 | await emitter.emit('forgot:password', { | 79 | await emitter.emit('forgot:password', { |
80 | user: this, | 80 | user: this, |
81 | token, | 81 | token, |
82 | }) | 82 | }); |
83 | } | 83 | } |
84 | 84 | ||
85 | private async generateToken(user: User, type: string): Promise<string> { | 85 | private async generateToken(user: User, type: string): Promise<string> { |
@@ -88,17 +88,21 @@ export default class User extends BaseModel { | |||
88 | .query() | 88 | .query() |
89 | .where('type', type) | 89 | .where('type', type) |
90 | .where('is_revoked', false) | 90 | .where('is_revoked', false) |
91 | .where('updated_at', '>=', moment().subtract(24, 'hours').format('YYYY-MM-DD HH:mm:ss')) | 91 | .where( |
92 | 'updated_at', | ||
93 | '>=', | ||
94 | moment().subtract(24, 'hours').format('YYYY-MM-DD HH:mm:ss'), | ||
95 | ); | ||
92 | 96 | ||
93 | const row = await query.first() | 97 | const row = await query.first(); |
94 | if (row) { | 98 | if (row) { |
95 | return row.token | 99 | return row.token; |
96 | } | 100 | } |
97 | 101 | ||
98 | const token = Encryption.encrypt(randtoken.generate(16)) | 102 | const token = Encryption.encrypt(randtoken.generate(16)); |
99 | 103 | ||
100 | await user.related('tokens').create({ type, token }) | 104 | await user.related('tokens').create({ type, token }); |
101 | 105 | ||
102 | return token | 106 | return token; |
103 | } | 107 | } |
104 | } | 108 | } |
diff --git a/app/Models/Workspace.ts b/app/Models/Workspace.ts index c960ae4..6c48c12 100644 --- a/app/Models/Workspace.ts +++ b/app/Models/Workspace.ts | |||
@@ -1,42 +1,42 @@ | |||
1 | import { DateTime } from 'luxon' | 1 | import { DateTime } from 'luxon'; |
2 | import { BaseModel, column, hasOne } from '@adonisjs/lucid/orm' | 2 | import { BaseModel, column, hasOne } from '@adonisjs/lucid/orm'; |
3 | import User from './User.js' | 3 | import User from './User.js'; |
4 | import { HasOne } from '@adonisjs/lucid/types/relations' | 4 | import { HasOne } from '@adonisjs/lucid/types/relations'; |
5 | 5 | ||
6 | export default class Workspace extends BaseModel { | 6 | export default class Workspace extends BaseModel { |
7 | @column({ isPrimary: true }) | 7 | @column({ isPrimary: true }) |
8 | public id: number | 8 | public id: number; |
9 | 9 | ||
10 | @column({ | 10 | @column({ |
11 | columnName: 'workspaceId', | 11 | columnName: 'workspaceId', |
12 | }) | 12 | }) |
13 | public workspaceId: string | 13 | public workspaceId: string; |
14 | 14 | ||
15 | @hasOne(() => User, { | 15 | @hasOne(() => User, { |
16 | foreignKey: 'userId', | 16 | foreignKey: 'userId', |
17 | }) | 17 | }) |
18 | public user: HasOne<typeof User> | 18 | public user: HasOne<typeof User>; |
19 | 19 | ||
20 | @column({ | 20 | @column({ |
21 | columnName: 'userId', | 21 | columnName: 'userId', |
22 | }) | 22 | }) |
23 | public userId: number | 23 | public userId: number; |
24 | 24 | ||
25 | @column() | 25 | @column() |
26 | public name: string | 26 | public name: string; |
27 | 27 | ||
28 | @column() | 28 | @column() |
29 | public order: number | 29 | public order: number; |
30 | 30 | ||
31 | @column() | 31 | @column() |
32 | public services: string | 32 | public services: string; |
33 | 33 | ||
34 | @column() | 34 | @column() |
35 | public data: string | 35 | public data: string; |
36 | 36 | ||
37 | @column.dateTime({ autoCreate: true }) | 37 | @column.dateTime({ autoCreate: true }) |
38 | public createdAt: DateTime | 38 | public createdAt: DateTime; |
39 | 39 | ||
40 | @column.dateTime({ autoCreate: true, autoUpdate: true }) | 40 | @column.dateTime({ autoCreate: true, autoUpdate: true }) |
41 | public updatedAt: DateTime | 41 | public updatedAt: DateTime; |
42 | } | 42 | } |