diff options
Diffstat (limited to 'start')
-rw-r--r-- | start/app.js | 2 | ||||
-rw-r--r-- | start/events.js | 23 | ||||
-rw-r--r-- | start/routes.js | 23 |
3 files changed, 47 insertions, 1 deletions
diff --git a/start/app.js b/start/app.js index d0986fe..62a5ac3 100644 --- a/start/app.js +++ b/start/app.js | |||
@@ -20,6 +20,8 @@ const providers = [ | |||
20 | '@adonisjs/framework/providers/ViewProvider', | 20 | '@adonisjs/framework/providers/ViewProvider', |
21 | '@adonisjs/session/providers/SessionProvider', | 21 | '@adonisjs/session/providers/SessionProvider', |
22 | '@adonisjs/shield/providers/ShieldProvider', | 22 | '@adonisjs/shield/providers/ShieldProvider', |
23 | '@adonisjs/persona/providers/PersonaProvider', | ||
24 | '@adonisjs/mail/providers/MailProvider', | ||
23 | ]; | 25 | ]; |
24 | 26 | ||
25 | /* | 27 | /* |
diff --git a/start/events.js b/start/events.js new file mode 100644 index 0000000..0b7e28a --- /dev/null +++ b/start/events.js | |||
@@ -0,0 +1,23 @@ | |||
1 | const Event = use('Event'); | ||
2 | const Mail = use('Mail'); | ||
3 | const Env = use('Env'); | ||
4 | |||
5 | Event.on('forgot::password', async ({ user, token }) => { | ||
6 | const body = ` | ||
7 | Hello ${user.username}, | ||
8 | we just recieved a request to reset your password of your Ferdi account. | ||
9 | Use the link below to reset your password. If you havn't requested this, please ignore this message. | ||
10 | |||
11 | ${Env.get('APP_URL')}/user/reset?token=${encodeURIComponent(token)} | ||
12 | |||
13 | This message was sent automatically. Please do not reply. | ||
14 | `; | ||
15 | console.log('Sending message', body); | ||
16 | try { | ||
17 | await Mail.raw(body, (message) => { | ||
18 | message.subject('[Ferdi] Reset your password') | ||
19 | message.from('noreply@getferdi.com') | ||
20 | message.to(user.email) | ||
21 | }); | ||
22 | } catch(e) {} | ||
23 | }); \ No newline at end of file | ||
diff --git a/start/routes.js b/start/routes.js index b96fa16..1c2d4f3 100644 --- a/start/routes.js +++ b/start/routes.js | |||
@@ -65,16 +65,37 @@ if (Env.get('IS_DASHBOARD_ENABLED') != 'false') { | |||
65 | // Auth | 65 | // Auth |
66 | Route.get('login', ({ view }) => view.render('dashboard.login')).middleware('guest'); | 66 | Route.get('login', ({ view }) => view.render('dashboard.login')).middleware('guest'); |
67 | Route.post('login', 'DashboardController.login').middleware('guest').as('login'); | 67 | Route.post('login', 'DashboardController.login').middleware('guest').as('login'); |
68 | 68 | ||
69 | // Reset password | ||
70 | Route.get('forgot', ({ view }) => view.render('dashboard.forgotPassword')).middleware('guest'); | ||
71 | Route.post('forgot', 'DashboardController.forgotPassword').middleware('guest'); | ||
72 | |||
73 | Route.get('reset', ({ view, request }) => { | ||
74 | const token = request.get().token; | ||
75 | if (token) { | ||
76 | return view.render('dashboard.resetPassword', { token }) | ||
77 | } else { | ||
78 | return view.render('others.message', { | ||
79 | heading: 'Invalid token', | ||
80 | text: 'Please make sure you are using a valid and recent link to reset your password.', | ||
81 | }); | ||
82 | } | ||
83 | }).middleware('guest'); | ||
84 | Route.post('reset', 'DashboardController.resetPassword').middleware('guest'); | ||
85 | |||
69 | // Dashboard | 86 | // Dashboard |
70 | Route.get('account', 'DashboardController.account').middleware('auth:session'); | 87 | Route.get('account', 'DashboardController.account').middleware('auth:session'); |
71 | Route.post('account', 'DashboardController.edit').middleware('auth:session'); | 88 | Route.post('account', 'DashboardController.edit').middleware('auth:session'); |
89 | |||
72 | Route.get('data', 'DashboardController.data').middleware('auth:session'); | 90 | Route.get('data', 'DashboardController.data').middleware('auth:session'); |
91 | |||
73 | Route.get('export', 'DashboardController.export').middleware('auth:session'); | 92 | Route.get('export', 'DashboardController.export').middleware('auth:session'); |
74 | Route.post('transfer', 'DashboardController.import').middleware('auth:session'); | 93 | Route.post('transfer', 'DashboardController.import').middleware('auth:session'); |
75 | Route.get('transfer', ({ view }) => view.render('dashboard.transfer')).middleware('auth:session'); | 94 | Route.get('transfer', ({ view }) => view.render('dashboard.transfer')).middleware('auth:session'); |
95 | |||
76 | Route.get('delete', ({ view }) => view.render('dashboard.delete')).middleware('auth:session'); | 96 | Route.get('delete', ({ view }) => view.render('dashboard.delete')).middleware('auth:session'); |
77 | Route.post('delete', 'DashboardController.delete').middleware('auth:session'); | 97 | Route.post('delete', 'DashboardController.delete').middleware('auth:session'); |
98 | |||
78 | Route.get('logout', 'DashboardController.logout').middleware('auth:session'); | 99 | Route.get('logout', 'DashboardController.logout').middleware('auth:session'); |
79 | 100 | ||
80 | Route.get('*', ({ response }) => response.redirect('/user/account')); | 101 | Route.get('*', ({ response }) => response.redirect('/user/account')); |