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.js128
1 files changed, 55 insertions, 73 deletions
diff --git a/app/Controllers/Http/DashboardController.js b/app/Controllers/Http/DashboardController.js
index a588c75..84a88a9 100644
--- a/app/Controllers/Http/DashboardController.js
+++ b/app/Controllers/Http/DashboardController.js
@@ -1,40 +1,34 @@
1 1const { validateAll } = use('Validator');
2const {
3 validateAll,
4} = use('Validator');
5 2
6const Service = use('App/Models/Service'); 3const Service = use('App/Models/Service');
7const Workspace = use('App/Models/Workspace'); 4const Workspace = use('App/Models/Workspace');
8const Persona = use('Persona'); 5const Persona = use('Persona');
9 6
10const crypto = require('crypto'); 7const crypto = require('crypto');
11const uuid = require('uuid/v4'); 8const { v4: uuid } = require('uuid');
12 9
13class DashboardController { 10class DashboardController {
14 async login({ 11 async login({ request, response, auth, session }) {
15 request,
16 response,
17 auth,
18 session,
19 }) {
20 const validation = await validateAll(request.all(), { 12 const validation = await validateAll(request.all(), {
21 mail: 'required|email', 13 mail: 'required|email',
22 password: 'required', 14 password: 'required',
23 }); 15 });
24 if (validation.fails()) { 16 if (validation.fails()) {
25 session.withErrors({ 17 session
26 type: 'danger', 18 .withErrors({
27 message: 'Invalid mail or password', 19 type: 'danger',
28 }).flashExcept(['password']); 20 message: 'Invalid mail or password',
21 })
22 .flashExcept(['password']);
29 return response.redirect('back'); 23 return response.redirect('back');
30 } 24 }
31 25
32 const { 26 const { mail, password } = request.all();
33 mail,
34 password,
35 } = request.all();
36 27
37 const hashedPassword = crypto.createHash('sha256').update(password).digest('base64'); 28 const hashedPassword = crypto
29 .createHash('sha256')
30 .update(password)
31 .digest('base64');
38 32
39 try { 33 try {
40 await auth.authenticator('session').attempt(mail, hashedPassword); 34 await auth.authenticator('session').attempt(mail, hashedPassword);
@@ -48,10 +42,7 @@ class DashboardController {
48 return response.redirect('/user/account'); 42 return response.redirect('/user/account');
49 } 43 }
50 44
51 async forgotPassword({ 45 async forgotPassword({ request, view }) {
52 request,
53 view,
54 }) {
55 const validation = await validateAll(request.all(), { 46 const validation = await validateAll(request.all(), {
56 mail: 'required|email', 47 mail: 'required|email',
57 }); 48 });
@@ -63,7 +54,7 @@ class DashboardController {
63 } 54 }
64 try { 55 try {
65 await Persona.forgotPassword(request.input('mail')); 56 await Persona.forgotPassword(request.input('mail'));
66 // eslint-disable-next-line no-empty 57 // eslint-disable-next-line no-empty
67 } catch (e) {} 58 } catch (e) {}
68 59
69 return view.render('others.message', { 60 return view.render('others.message', {
@@ -72,10 +63,7 @@ class DashboardController {
72 }); 63 });
73 } 64 }
74 65
75 async resetPassword({ 66 async resetPassword({ request, view }) {
76 request,
77 view,
78 }) {
79 const validation = await validateAll(request.all(), { 67 const validation = await validateAll(request.all(), {
80 password: 'required', 68 password: 'required',
81 password_confirmation: 'required', 69 password_confirmation: 'required',
@@ -90,8 +78,14 @@ class DashboardController {
90 } 78 }
91 79
92 const payload = { 80 const payload = {
93 password: crypto.createHash('sha256').update(request.input('password')).digest('base64'), 81 password: crypto
94 password_confirmation: crypto.createHash('sha256').update(request.input('password_confirmation')).digest('base64'), 82 .createHash('sha256')
83 .update(request.input('password'))
84 .digest('base64'),
85 password_confirmation: crypto
86 .createHash('sha256')
87 .update(request.input('password_confirmation'))
88 .digest('base64'),
95 }; 89 };
96 90
97 try { 91 try {
@@ -109,11 +103,7 @@ class DashboardController {
109 }); 103 });
110 } 104 }
111 105
112 async account({ 106 async account({ auth, view, response }) {
113 auth,
114 view,
115 response,
116 }) {
117 try { 107 try {
118 await auth.check(); 108 await auth.check();
119 } catch (error) { 109 } catch (error) {
@@ -127,13 +117,7 @@ class DashboardController {
127 }); 117 });
128 } 118 }
129 119
130 async edit({ 120 async edit({ auth, request, session, view, response }) {
131 auth,
132 request,
133 session,
134 view,
135 response,
136 }) {
137 let validation = await validateAll(request.all(), { 121 let validation = await validateAll(request.all(), {
138 username: 'required', 122 username: 'required',
139 email: 'required', 123 email: 'required',
@@ -174,7 +158,10 @@ class DashboardController {
174 user.lastname = request.input('lastname'); 158 user.lastname = request.input('lastname');
175 user.email = request.input('email'); 159 user.email = request.input('email');
176 if (request.input('password')) { 160 if (request.input('password')) {
177 const hashedPassword = crypto.createHash('sha256').update(request.input('password')).digest('base64'); 161 const hashedPassword = crypto
162 .createHash('sha256')
163 .update(request.input('password'))
164 .digest('base64');
178 user.password = hashedPassword; 165 user.password = hashedPassword;
179 } 166 }
180 user.save(); 167 user.save();
@@ -186,10 +173,7 @@ class DashboardController {
186 }); 173 });
187 } 174 }
188 175
189 async data({ 176 async data({ auth, view }) {
190 auth,
191 view,
192 }) {
193 const general = auth.user; 177 const general = auth.user;
194 const services = (await auth.user.services().fetch()).toJSON(); 178 const services = (await auth.user.services().fetch()).toJSON();
195 const workspaces = (await auth.user.workspaces().fetch()).toJSON(); 179 const workspaces = (await auth.user.workspaces().fetch()).toJSON();
@@ -206,10 +190,7 @@ class DashboardController {
206 }); 190 });
207 } 191 }
208 192
209 async export({ 193 async export({ auth, response }) {
210 auth,
211 response,
212 }) {
213 const general = auth.user; 194 const general = auth.user;
214 const services = (await auth.user.services().fetch()).toJSON(); 195 const services = (await auth.user.services().fetch()).toJSON();
215 const workspaces = (await auth.user.workspaces().fetch()).toJSON(); 196 const workspaces = (await auth.user.workspaces().fetch()).toJSON();
@@ -228,13 +209,7 @@ class DashboardController {
228 .send(exportData); 209 .send(exportData);
229 } 210 }
230 211
231 async import({ 212 async import({ auth, request, session, response, view }) {
232 auth,
233 request,
234 session,
235 response,
236 view,
237 }) {
238 const validation = await validateAll(request.all(), { 213 const validation = await validateAll(request.all(), {
239 file: 'required', 214 file: 'required',
240 }); 215 });
@@ -252,7 +227,10 @@ class DashboardController {
252 } 227 }
253 228
254 if (!file || !file.services || !file.workspaces) { 229 if (!file || !file.services || !file.workspaces) {
255 session.flash({ type: 'danger', message: 'Invalid Ferdi account file (2)' }); 230 session.flash({
231 type: 'danger',
232 message: 'Invalid Ferdi account file (2)',
233 });
256 return response.redirect('back'); 234 return response.redirect('back');
257 } 235 }
258 236
@@ -265,9 +243,13 @@ class DashboardController {
265 let serviceId; 243 let serviceId;
266 do { 244 do {
267 serviceId = uuid(); 245 serviceId = uuid();
268 } while ((await Service.query().where('serviceId', serviceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop 246 } while (
247 (await Service.query().where('serviceId', serviceId).fetch()).rows
248 .length > 0
249 ); // eslint-disable-line no-await-in-loop
269 250
270 await Service.create({ // eslint-disable-line no-await-in-loop 251 await Service.create({
252 // eslint-disable-line no-await-in-loop
271 userId: auth.user.id, 253 userId: auth.user.id,
272 serviceId, 254 serviceId,
273 name: service.name, 255 name: service.name,
@@ -291,11 +273,17 @@ class DashboardController {
291 let workspaceId; 273 let workspaceId;
292 do { 274 do {
293 workspaceId = uuid(); 275 workspaceId = uuid();
294 } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop 276 } while (
277 (await Workspace.query().where('workspaceId', workspaceId).fetch())
278 .rows.length > 0
279 ); // eslint-disable-line no-await-in-loop
295 280
296 const services = workspace.services.map((service) => serviceIdTranslation[service]); 281 const services = workspace.services.map(
282 service => serviceIdTranslation[service],
283 );
297 284
298 await Workspace.create({ // eslint-disable-line no-await-in-loop 285 await Workspace.create({
286 // eslint-disable-line no-await-in-loop
299 userId: auth.user.id, 287 userId: auth.user.id,
300 workspaceId, 288 workspaceId,
301 name: workspace.name, 289 name: workspace.name,
@@ -318,18 +306,12 @@ class DashboardController {
318 }); 306 });
319 } 307 }
320 308
321 logout({ 309 logout({ auth, response }) {
322 auth,
323 response,
324 }) {
325 auth.authenticator('session').logout(); 310 auth.authenticator('session').logout();
326 return response.redirect('/user/login'); 311 return response.redirect('/user/login');
327 } 312 }
328 313
329 delete({ 314 delete({ auth, response }) {
330 auth,
331 response,
332 }) {
333 auth.user.delete(); 315 auth.user.delete();
334 auth.authenticator('session').logout(); 316 auth.authenticator('session').logout();
335 return response.redirect('/user/login'); 317 return response.redirect('/user/login');