User.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { DateTime } from 'luxon'
  2. import { beforeSave, column } from '@ioc:Adonis/Lucid/Orm'
  3. import Hash from '@ioc:Adonis/Core/Hash'
  4. import AppBaseModel from './AppBaseModel'
  5. export enum UserRoles {
  6. Admin = 'admin',
  7. User = 'user'
  8. }
  9. export default class User extends AppBaseModel {
  10. @beforeSave()
  11. public static async hashPassword(user: User) {
  12. if (user.$dirty.password) {
  13. user.password = await Hash.make(user.password!)
  14. }
  15. }
  16. @column({ isPrimary: true })
  17. public id: number
  18. @column.dateTime({ autoCreate: true })
  19. public createdAt: DateTime
  20. @column.dateTime({ autoCreate: true, autoUpdate: true })
  21. public updatedAt: DateTime
  22. @column()
  23. public role: UserRoles = UserRoles.User
  24. @column()
  25. public username: string
  26. @column()
  27. public phone?: string
  28. @column()
  29. public email?: string
  30. @column({ serializeAs: null })
  31. public password?: string
  32. @column()
  33. public avatar?: string
  34. @column()
  35. public referrer?: number
  36. @column()
  37. public visitor: boolean
  38. }