diff options
author | mhatvan <markus_hatvan@aon.at> | 2021-08-04 17:44:54 +0200 |
---|---|---|
committer | Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com> | 2021-08-04 15:57:58 +0000 |
commit | 13f6d34cefb3bc5e3ba65a959304d4465f0ee92a (patch) | |
tree | 7739098f6f25140fa96877e2d05f98b5929f90f2 /app/Controllers/Http/DashboardController.js | |
parent | Bump tar from 4.4.10 to 4.4.15 (diff) | |
download | ferdium-server-13f6d34cefb3bc5e3ba65a959304d4465f0ee92a.tar.gz ferdium-server-13f6d34cefb3bc5e3ba65a959304d4465f0ee92a.tar.zst ferdium-server-13f6d34cefb3bc5e3ba65a959304d4465f0ee92a.zip |
chore: improve dev setup
- upgrade uuid, eslint, husky
- improve .eslintrc.js and correct lint script
- update uuid imports to conform to v8
- add .prettierrc.js for consistent formatting
- file changes due to lint --fix
Diffstat (limited to 'app/Controllers/Http/DashboardController.js')
-rw-r--r-- | app/Controllers/Http/DashboardController.js | 128 |
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 | 1 | const { validateAll } = use('Validator'); | |
2 | const { | ||
3 | validateAll, | ||
4 | } = use('Validator'); | ||
5 | 2 | ||
6 | const Service = use('App/Models/Service'); | 3 | const Service = use('App/Models/Service'); |
7 | const Workspace = use('App/Models/Workspace'); | 4 | const Workspace = use('App/Models/Workspace'); |
8 | const Persona = use('Persona'); | 5 | const Persona = use('Persona'); |
9 | 6 | ||
10 | const crypto = require('crypto'); | 7 | const crypto = require('crypto'); |
11 | const uuid = require('uuid/v4'); | 8 | const { v4: uuid } = require('uuid'); |
12 | 9 | ||
13 | class DashboardController { | 10 | class 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'); |