'use strict' /** @type {import('@adonisjs/framework/src/Hash')} */ const Hash = use('Hash') /** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */ const Model = use('Model') class User extends Model { static boot() { super .boot() /** * A hook to hash the user password before saving * it to the database. */ this.addHook('beforeSave', async (userInstance) => { if (userInstance.dirty.password) { userInstance.password = await Hash.make(userInstance.password) } }) } publicJSON() { const u = this.toJSON(); return { avatar: `https://api.adorable.io/avatars/285/${u.email}.png`, id: u.id, name: u.name, isAdmin: u.is_admin } } static get hidden() { return ['password'] } static get dates() { return super.dates.concat(['last_logged_in']) } /** * A relationship on tokens is required for auth to * work. Since features like `refreshTokens` or * `rememberToken` will be saved inside the * tokens table. * * @method tokens * * @return {Object} */ tokens() { return this.hasMany('App/Models/Token') } links() { return this.hasMany('App/Models/Link') } } module.exports = User