admin_token.js 646 B

1234567891011121314151617181920212223242526272829303132
  1. let crypto = require('crypto')
  2. module.exports = (sequelize, DataTypes) => {
  3. let AdminToken = sequelize.define('AdminToken', {
  4. token: {
  5. type: DataTypes.STRING,
  6. defaultValue () {
  7. return crypto.randomBytes(64).toString('hex')
  8. },
  9. validate: {
  10. isString (val) {
  11. if(typeof val !== 'string') {
  12. throw new sequelize.ValidationError('token must be a string')
  13. }
  14. }
  15. }
  16. }
  17. }, {
  18. instanceMethods: {
  19. isValid () {
  20. let ms = Date.now() - this.createdAt
  21. let dayMs = 1000*60*60*24
  22. //Has less than 1 day passed
  23. //since generating token?
  24. return ms / dayMs < 1
  25. }
  26. }
  27. })
  28. return AdminToken
  29. }