User.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. Operator = 'operator',
  8. Api = 'api',
  9. User = 'user',
  10. Card = 'card'
  11. }
  12. export default class User extends AppBaseModel {
  13. @beforeSave()
  14. public static async hashPassword(user: User) {
  15. if (user.$dirty.password) {
  16. user.password = await Hash.make(user.password!)
  17. }
  18. }
  19. @column({ isPrimary: true })
  20. public id: number
  21. @column.dateTime({ autoCreate: true })
  22. public createdAt: DateTime
  23. @column.dateTime({ autoCreate: true, autoUpdate: true })
  24. public updatedAt: DateTime
  25. @column()
  26. public role: UserRoles = UserRoles.User
  27. @column()
  28. public username: string
  29. @column()
  30. public phone?: string
  31. @column()
  32. public email?: string
  33. @column({ serializeAs: null })
  34. public password?: string
  35. @column()
  36. public avatar?: string
  37. @column()
  38. public referrer?: number
  39. @column()
  40. public visitor: boolean
  41. }