Advertisement
Guest User

Untitled

a guest
Jan 10th, 2018
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2.  
  3. const User = use('App/Models/User');
  4. const UsersProfile = use('App/Models/UsersProfile');
  5. const Hash = use('Hash');
  6. const randToken = require('rand-token');
  7. const Database = use('Database');
  8. const Env = use('Env');
  9. const moment = require('moment');
  10.  
  11. class UserService {
  12.   async getUserByEmail (email) {
  13.     const user = await User.query().where('email', email).first();
  14.     return user;
  15.   }
  16.  
  17.   async findOrCreateToken (user) {
  18.     await Database.table('password_resets').where('email', user.email).delete();
  19.     const token = await this.getToken();
  20.     await Database.table('password_resets').insert({
  21.       email: user.email,
  22.       token: token,
  23.       created_at: moment().format('YYYY-MM-DD HH:mm:ss')
  24.     });
  25.  
  26.     return token
  27.   }
  28.  
  29.   async getToken () {
  30.     return randToken.generate(24);
  31.   }
  32.  
  33.   async userResetPasswordExists (postData) {
  34.     const token = await Database.table('password_resets').where({'email': postData.email, 'token': postData.token}).first()
  35.     if (token != null) {
  36.       const isPast = await this.tokenExpired(token);
  37.       return token && !isPast;
  38.     }
  39.     return false
  40.   }
  41.  
  42.   async tokenExpired (token) {
  43.     let expires = Env.get('TOKEN_EXPIRES', 60); // in mins
  44.     return moment().isAfter(moment(token.created_at).add(expires, 'minutes'));
  45.   }
  46.  
  47.   async deleteResetToken (postData) {
  48.     await Database.table('password_resets').where({'email': postData.email, 'token': postData.token}).delete();
  49.   }
  50.  
  51.   async resetPassword (postData) {
  52.     const user = await User.query().where('email', postData.email).first();
  53.     if (user != null) {
  54.       user.password = await Hash.make(postData.password);
  55.       await user.save();
  56.  
  57.       await this.deleteResetToken(postData);
  58.     }
  59.  
  60.     return user;
  61.   }
  62. }
  63.  
  64. module.exports = UserService;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement