Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- const { validateAll } = use('Validator');
- const users = make('App/Services/UserService');
- const Mail = use('Mail');
- const Env = use('Env');
- class PasswordController {
- async sendResetLinkEmail ({ request, session, response }) {
- const userInfo = request.all();
- const rules = {
- email: 'required|email'
- };
- const validation = await validateAll(userInfo, rules);
- if (validation.fails()) {
- return response.status(422).json(validation.messages());
- }
- const user = await users.getUserByEmail(userInfo.email);
- if (user === null) {
- return response.status(404).send('User not found');
- } else {
- const token = await users.findOrCreateToken(user);
- try {
- await this.sendResetMail(user, token);
- return response.status(200);
- } catch (error) {
- return response.status(500).send('Unable to deliver email to given email address');
- }
- }
- }
- async sendResetMail (user, token) {
- let link = `${Env.get('APP_URL')}/password/token/reset/${token}?email=${user.email}`;
- await Mail.send('auth.email.password', {
- link: link
- }, (message) => {
- message.to(user.email, user.name);
- message.from(Env.get('MAIL_FROM_EMAIL'), Env.get('MAIL_FROM_NAME'));
- message.subject('Your Password Reset Link');
- })
- }
- async reset ({ request, session, response }) {
- const userInfo = request.only(['email', 'password', 'password_confirmation', 'token']);
- const rules = {
- email: 'required|email|max:255',
- password: 'required|min:6|max:30',
- password_confirmation: 'required_if:password|min:6|max:30|same:password'
- };
- const validation = await validateAll(userInfo, rules);
- if (validation.fails()) {
- return response.status(422).json(validation.messages());
- }
- const isResetOkay = await users.userResetPasswordExists(userInfo);
- if (isResetOkay) {
- const user = await users.resetPassword(userInfo);
- if (user === null) {
- return response.status(404).send('User not found');
- } else {
- return response.status(200);
- }
- } else {
- return response.status(422).send('This password reset token is invalid');
- }
- }
- }
- module.exports = PasswordController;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement