]>
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' ],
62 beforeCreate: beforeCreateOrUpdate
,
63 beforeUpdate: beforeCreateOrUpdate
71 function beforeCreateOrUpdate (user
, options
, next
) {
72 peertubeCrypto
.cryptPassword(user
.password
, function (err
, hash
) {
73 if (err
) return next(err
)
81 // ------------------------------ METHODS ------------------------------
83 function isPasswordMatch (password
, callback
) {
84 return peertubeCrypto
.comparePassword(password
, this.password
, callback
)
87 function toFormatedJSON () {
90 username: this.username
,
92 createdAt: this.createdAt
95 // ------------------------------ STATICS ------------------------------
97 function associate (models
) {
98 this.hasOne(models
.Author
, {
103 this.hasMany(models
.OAuthToken
, {
104 foreignKey: 'userId',
109 function countTotal (callback
) {
110 return this.count().asCallback(callback
)
113 function getByUsername (username
) {
120 return this.findOne(query
)
123 function list (callback
) {
124 return this.find().asCallback(callback
)
127 function listForApi (start
, count
, sort
, callback
) {
131 order: [ modelUtils
.getSort(sort
) ]
134 return this.findAndCountAll(query
).asCallback(function (err
, result
) {
135 if (err
) return callback(err
)
137 return callback(null, result
.rows
, result
.count
)
141 function loadById (id
, callback
) {
142 return this.findById(id
).asCallback(callback
)
145 function loadByUsername (username
, callback
) {
152 return this.findOne(query
).asCallback(callback
)