]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/user.js
First typescript iteration
[github/Chocobozzz/PeerTube.git] / server / models / user.js
diff --git a/server/models/user.js b/server/models/user.js
deleted file mode 100644 (file)
index 8f9c2bf..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-'use strict'
-
-const values = require('lodash/values')
-
-const modelUtils = require('./utils')
-const constants = require('../initializers/constants')
-const peertubeCrypto = require('../helpers/peertube-crypto')
-const customUsersValidators = require('../helpers/custom-validators').users
-
-// ---------------------------------------------------------------------------
-
-module.exports = function (sequelize, DataTypes) {
-  const User = sequelize.define('User',
-    {
-      password: {
-        type: DataTypes.STRING,
-        allowNull: false,
-        validate: {
-          passwordValid: function (value) {
-            const res = customUsersValidators.isUserPasswordValid(value)
-            if (res === false) throw new Error('Password not valid.')
-          }
-        }
-      },
-      username: {
-        type: DataTypes.STRING,
-        allowNull: false,
-        validate: {
-          usernameValid: function (value) {
-            const res = customUsersValidators.isUserUsernameValid(value)
-            if (res === false) throw new Error('Username not valid.')
-          }
-        }
-      },
-      email: {
-        type: DataTypes.STRING(400),
-        allowNull: false,
-        validate: {
-          isEmail: true
-        }
-      },
-      displayNSFW: {
-        type: DataTypes.BOOLEAN,
-        allowNull: false,
-        defaultValue: false,
-        validate: {
-          nsfwValid: function (value) {
-            const res = customUsersValidators.isUserDisplayNSFWValid(value)
-            if (res === false) throw new Error('Display NSFW is not valid.')
-          }
-        }
-      },
-      role: {
-        type: DataTypes.ENUM(values(constants.USER_ROLES)),
-        allowNull: false
-      }
-    },
-    {
-      indexes: [
-        {
-          fields: [ 'username' ],
-          unique: true
-        },
-        {
-          fields: [ 'email' ],
-          unique: true
-        }
-      ],
-      classMethods: {
-        associate,
-
-        countTotal,
-        getByUsername,
-        list,
-        listForApi,
-        loadById,
-        loadByUsername,
-        loadByUsernameOrEmail
-      },
-      instanceMethods: {
-        isPasswordMatch,
-        toFormatedJSON,
-        isAdmin
-      },
-      hooks: {
-        beforeCreate: beforeCreateOrUpdate,
-        beforeUpdate: beforeCreateOrUpdate
-      }
-    }
-  )
-
-  return User
-}
-
-function beforeCreateOrUpdate (user, options, next) {
-  peertubeCrypto.cryptPassword(user.password, function (err, hash) {
-    if (err) return next(err)
-
-    user.password = hash
-
-    return next()
-  })
-}
-
-// ------------------------------ METHODS ------------------------------
-
-function isPasswordMatch (password, callback) {
-  return peertubeCrypto.comparePassword(password, this.password, callback)
-}
-
-function toFormatedJSON () {
-  return {
-    id: this.id,
-    username: this.username,
-    email: this.email,
-    displayNSFW: this.displayNSFW,
-    role: this.role,
-    createdAt: this.createdAt
-  }
-}
-
-function isAdmin () {
-  return this.role === constants.USER_ROLES.ADMIN
-}
-
-// ------------------------------ STATICS ------------------------------
-
-function associate (models) {
-  this.hasOne(models.Author, {
-    foreignKey: 'userId',
-    onDelete: 'cascade'
-  })
-
-  this.hasMany(models.OAuthToken, {
-    foreignKey: 'userId',
-    onDelete: 'cascade'
-  })
-}
-
-function countTotal (callback) {
-  return this.count().asCallback(callback)
-}
-
-function getByUsername (username) {
-  const query = {
-    where: {
-      username: username
-    }
-  }
-
-  return this.findOne(query)
-}
-
-function list (callback) {
-  return this.find().asCallback(callback)
-}
-
-function listForApi (start, count, sort, callback) {
-  const query = {
-    offset: start,
-    limit: count,
-    order: [ modelUtils.getSort(sort) ]
-  }
-
-  return this.findAndCountAll(query).asCallback(function (err, result) {
-    if (err) return callback(err)
-
-    return callback(null, result.rows, result.count)
-  })
-}
-
-function loadById (id, callback) {
-  return this.findById(id).asCallback(callback)
-}
-
-function loadByUsername (username, callback) {
-  const query = {
-    where: {
-      username: username
-    }
-  }
-
-  return this.findOne(query).asCallback(callback)
-}
-
-function loadByUsernameOrEmail (username, email, callback) {
-  const query = {
-    where: {
-      $or: [ { username }, { email } ]
-    }
-  }
-
-  return this.findOne(query).asCallback(callback)
-}