forked from sagi/seepur
60 lines
1.3 KiB
JavaScript
60 lines
1.3 KiB
JavaScript
'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
|