Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- const User = use('App/Models/User');
- const UsersProfile = use('App/Models/UsersProfile');
- const Hash = use('Hash');
- const randToken = require('rand-token');
- const Database = use('Database');
- const Env = use('Env');
- const moment = require('moment');
- class UserService {
- async getUserByEmail (email) {
- const user = await User.query().where('email', email).first();
- return user;
- }
- async findOrCreateToken (user) {
- await Database.table('password_resets').where('email', user.email).delete();
- const token = await this.getToken();
- await Database.table('password_resets').insert({
- email: user.email,
- token: token,
- created_at: moment().format('YYYY-MM-DD HH:mm:ss')
- });
- return token
- }
- async getToken () {
- return randToken.generate(24);
- }
- async userResetPasswordExists (postData) {
- const token = await Database.table('password_resets').where({'email': postData.email, 'token': postData.token}).first()
- if (token != null) {
- const isPast = await this.tokenExpired(token);
- return token && !isPast;
- }
- return false
- }
- async tokenExpired (token) {
- let expires = Env.get('TOKEN_EXPIRES', 60); // in mins
- return moment().isAfter(moment(token.created_at).add(expires, 'minutes'));
- }
- async deleteResetToken (postData) {
- await Database.table('password_resets').where({'email': postData.email, 'token': postData.token}).delete();
- }
- async resetPassword (postData) {
- const user = await User.query().where('email', postData.email).first();
- if (user != null) {
- user.password = await Hash.make(postData.password);
- await user.save();
- await this.deleteResetToken(postData);
- }
- return user;
- }
- }
- module.exports = UserService;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement