]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/models/user.js
3 const values
= require('lodash/values')
5 const modelUtils
= require('./utils')
6 const constants
= require('../initializers/constants')
7 const peertubeCrypto
= require('../helpers/peertube-crypto')
8 const customUsersValidators
= require('../helpers/custom-validators').users
10 // ---------------------------------------------------------------------------
12 module
.exports = function (sequelize
, DataTypes
) {
13 const User
= sequelize
.define('User',
16 type: DataTypes
.STRING
,
19 passwordValid: function (value
) {
20 const res
= customUsersValidators
.isUserPasswordValid(value
)
21 if (res
=== false) throw new Error('Password not valid.')
26 type: DataTypes
.STRING
,
29 usernameValid: function (value
) {
30 const res
= customUsersValidators
.isUserUsernameValid(value
)
31 if (res
=== false) throw new Error('Username not valid.')
36 type: DataTypes
.ENUM(values(constants
.USER_ROLES
)),
43 fields: [ 'username' ]
61 beforeCreate: beforeCreateOrUpdate
,
62 beforeUpdate: beforeCreateOrUpdate
70 function beforeCreateOrUpdate (user
, options
, next
) {
71 peertubeCrypto
.cryptPassword(user
.password
, function (err
, hash
) {
72 if (err
) return next(err
)
80 // ------------------------------ METHODS ------------------------------
82 function isPasswordMatch (password
, callback
) {
83 return peertubeCrypto
.comparePassword(password
, this.password
, callback
)
86 function toFormatedJSON () {
89 username: this.username
,
91 createdAt: this.createdAt
94 // ------------------------------ STATICS ------------------------------
96 function associate (models
) {
97 this.hasMany(models
.OAuthToken
, {
103 function countTotal (callback
) {
104 return this.count().asCallback(callback
)
107 function getByUsername (username
) {
114 return this.findOne(query
)
117 function list (callback
) {
118 return this.find().asCallback(callback
)
121 function listForApi (start
, count
, sort
, callback
) {
125 order: [ modelUtils
.getSort(sort
) ]
128 return this.findAndCountAll(query
).asCallback(function (err
, result
) {
129 if (err
) return callback(err
)
131 return callback(null, result
.rows
, result
.count
)
135 function loadById (id
, callback
) {
136 return this.findById(id
).asCallback(callback
)
139 function loadByUsername (username
, callback
) {
146 return this.findOne(query
).asCallback(callback
)