'use strict' const User = use('App/Models/User'); const EmailUtils = use('App/Utils/EmailUtils'); class AuthController { async registerIndex({view, auth, response}) { if (auth.user) { response.redirect('/'); return; } return view.render('register') } async loginIndex({view, auth, response}) { if (auth.user) { response.redirect('/'); return; } return view.render('login') } async register({request, response, view, session, auth}) { const user = await User.create({ email: request.input('email'), name: request.input('name'), password: request.input('password'), avatar: `https://api.adorable.io/avatars/285/${request.input('email')}.png` }); if (user.id == 1) { user.is_admin = true; } await user.save(); await auth.login(user); await EmailUtils.sendWelcomeEmail(user); response.redirect('/'); } async login({request, response, auth, session}) { console.log('login'); const {email, password} = request.all() console.log({email, password}) try { const token = await auth.attempt(email, password); const user = auth.user; // user.last_logged_in = new Date(); // await user.save(); console.log('logged in'); } catch (e) { console.error(e); session.withErrors({loginError: 'Invalid Credentials'}).flashAll() return response.redirect('back') } response.redirect('/'); } async resetPassword({request, response, session}) { const email = request.body.email; const token = 'token'; // TODO: Token system const sent = await EmailUtils.sendResetPassword({name: 'test name', email}, token); if (sent) { response.redirect('/'); return; } session.withErrors({message: 'Email provider error'}).flashAll() return response.redirect('back') } async resetPasswordIndex({request, auth, response, view}) { if (auth.user) { response.redirect('/'); return; } return view.render('reset-password'); } async resetPasswordForm({request}) {} async logout({auth, response}) { await auth.logout(); response.redirect('/'); } } module.exports = AuthController