User.ts 1.1 KB

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