aboutsummaryrefslogtreecommitdiffstats
path: root/app/Controllers/Http/DashboardController.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/Controllers/Http/DashboardController.js')
-rw-r--r--app/Controllers/Http/DashboardController.js61
1 files changed, 31 insertions, 30 deletions
diff --git a/app/Controllers/Http/DashboardController.js b/app/Controllers/Http/DashboardController.js
index aa8127f..49f6cc0 100644
--- a/app/Controllers/Http/DashboardController.js
+++ b/app/Controllers/Http/DashboardController.js
@@ -1,7 +1,6 @@
1'use strict'
2 1
3const { 2const {
4 validateAll 3 validateAll,
5} = use('Validator'); 4} = use('Validator');
6 5
7const crypto = require('crypto'); 6const crypto = require('crypto');
@@ -11,7 +10,7 @@ class DashboardController {
11 request, 10 request,
12 response, 11 response,
13 auth, 12 auth,
14 session 13 session,
15 }) { 14 }) {
16 const validation = await validateAll(request.all(), { 15 const validation = await validateAll(request.all(), {
17 mail: 'required|email', 16 mail: 'required|email',
@@ -20,25 +19,25 @@ class DashboardController {
20 if (validation.fails()) { 19 if (validation.fails()) {
21 session.withErrors({ 20 session.withErrors({
22 type: 'danger', 21 type: 'danger',
23 message: 'Invalid mail or password' 22 message: 'Invalid mail or password',
24 }).flashExcept(['password']); 23 }).flashExcept(['password']);
25 return response.redirect('back'); 24 return response.redirect('back');
26 } 25 }
27 26
28 let { 27 const {
29 mail, 28 mail,
30 password 29 password,
31 } = request.all() 30 } = request.all();
32 31
33 const hashedPassword = crypto.createHash('sha256').update(password).digest('base64'); 32 const hashedPassword = crypto.createHash('sha256').update(password).digest('base64');
34 33
35 try { 34 try {
36 await auth.authenticator('session').attempt(mail, hashedPassword) 35 await auth.authenticator('session').attempt(mail, hashedPassword);
37 } catch (error) { 36 } catch (error) {
38 session.flash({ 37 session.flash({
39 type: 'danger', 38 type: 'danger',
40 message: 'Invalid mail or password' 39 message: 'Invalid mail or password',
41 }) 40 });
42 return response.redirect('back'); 41 return response.redirect('back');
43 } 42 }
44 return response.redirect('/user/account'); 43 return response.redirect('/user/account');
@@ -46,17 +45,18 @@ class DashboardController {
46 45
47 async account({ 46 async account({
48 auth, 47 auth,
49 view 48 view,
49 response,
50 }) { 50 }) {
51 try { 51 try {
52 await auth.check() 52 await auth.check();
53 } catch (error) { 53 } catch (error) {
54 return response.redirect('/user/login'); 54 return response.redirect('/user/login');
55 } 55 }
56 56
57 return view.render('dashboard.account', { 57 return view.render('dashboard.account', {
58 username: auth.user.username, 58 username: auth.user.username,
59 email: auth.user.email 59 email: auth.user.email,
60 }); 60 });
61 } 61 }
62 62
@@ -65,11 +65,11 @@ class DashboardController {
65 request, 65 request,
66 session, 66 session,
67 view, 67 view,
68 response 68 response,
69 }) { 69 }) {
70 let validation = await validateAll(request.all(), { 70 let validation = await validateAll(request.all(), {
71 username: 'required', 71 username: 'required',
72 email: 'required' 72 email: 'required',
73 }); 73 });
74 if (validation.fails()) { 74 if (validation.fails()) {
75 session.withErrors(validation.messages()).flashExcept(['password']); 75 session.withErrors(validation.messages()).flashExcept(['password']);
@@ -80,19 +80,19 @@ class DashboardController {
80 if (request.input('username') !== auth.user.username) { 80 if (request.input('username') !== auth.user.username) {
81 validation = await validateAll(request.all(), { 81 validation = await validateAll(request.all(), {
82 username: 'required|unique:users,username', 82 username: 'required|unique:users,username',
83 email: 'required' 83 email: 'required',
84 }); 84 });
85 if (validation.fails()) { 85 if (validation.fails()) {
86 session.withErrors(validation.messages()).flashExcept(['password']); 86 session.withErrors(validation.messages()).flashExcept(['password']);
87 return response.redirect('back'); 87 return response.redirect('back');
88 } 88 }
89 } 89 }
90 90
91 // Check new email 91 // Check new email
92 if (request.input('email') !== auth.user.email) { 92 if (request.input('email') !== auth.user.email) {
93 validation = await validateAll(request.all(), { 93 validation = await validateAll(request.all(), {
94 username: 'required', 94 username: 'required',
95 email: 'required|email|unique:users,email' 95 email: 'required|email|unique:users,email',
96 }); 96 });
97 if (validation.fails()) { 97 if (validation.fails()) {
98 session.withErrors(validation.messages()).flashExcept(['password']); 98 session.withErrors(validation.messages()).flashExcept(['password']);
@@ -101,24 +101,25 @@ class DashboardController {
101 } 101 }
102 102
103 // Update user account 103 // Update user account
104 auth.user.username = request.input('username'); 104 const { user } = auth;
105 auth.user.email = request.input('email'); 105 user.username = request.input('username');
106 if (!!request.input('password')) { 106 user.email = request.input('email');
107 if (request.input('password')) {
107 const hashedPassword = crypto.createHash('sha256').update(request.input('password')).digest('base64'); 108 const hashedPassword = crypto.createHash('sha256').update(request.input('password')).digest('base64');
108 auth.user.password = hashedPassword; 109 user.password = hashedPassword;
109 } 110 }
110 auth.user.save(); 111 user.save();
111 112
112 return view.render('dashboard.account', { 113 return view.render('dashboard.account', {
113 username: auth.user.username, 114 username: user.username,
114 email: auth.user.email, 115 email: user.email,
115 success: true 116 success: true,
116 }); 117 });
117 } 118 }
118 119
119 async data({ 120 async data({
120 auth, 121 auth,
121 view 122 view,
122 }) { 123 }) {
123 const general = auth.user; 124 const general = auth.user;
124 const services = (await auth.user.services().fetch()).toJSON(); 125 const services = (await auth.user.services().fetch()).toJSON();
@@ -136,7 +137,7 @@ class DashboardController {
136 137
137 logout({ 138 logout({
138 auth, 139 auth,
139 response 140 response,
140 }) { 141 }) {
141 auth.authenticator('session').logout(); 142 auth.authenticator('session').logout();
142 return response.redirect('/user/login'); 143 return response.redirect('/user/login');
@@ -144,7 +145,7 @@ class DashboardController {
144 145
145 delete({ 146 delete({
146 auth, 147 auth,
147 response 148 response,
148 }) { 149 }) {
149 auth.user.delete(); 150 auth.user.delete();
150 auth.authenticator('session').logout(); 151 auth.authenticator('session').logout();
@@ -152,4 +153,4 @@ class DashboardController {
152 } 153 }
153} 154}
154 155
155module.exports = DashboardController 156module.exports = DashboardController;