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