diff options
-rw-r--r-- | .eslintignore | 1 | ||||
-rw-r--r-- | .eslintrc.js | 8 | ||||
-rw-r--r-- | app/Controllers/Http/DashboardController.js | 11 | ||||
-rw-r--r-- | app/Controllers/Http/ServiceController.js | 1 | ||||
-rw-r--r-- | app/Controllers/Http/StaticController.js | 9 | ||||
-rw-r--r-- | app/Controllers/Http/UserController.js | 11 | ||||
-rw-r--r-- | app/Controllers/Http/WorkspaceController.js | 3 | ||||
-rw-r--r-- | app/Middleware/HandleDoubleSlash.js | 6 | ||||
-rw-r--r-- | app/Models/Token.js | 2 | ||||
-rw-r--r-- | config/mail.js | 20 | ||||
-rw-r--r-- | config/persona.js | 8 | ||||
-rw-r--r-- | database/migrations/1612629845398_users_update_schema.js | 26 | ||||
-rw-r--r-- | start/events.js | 14 | ||||
-rw-r--r-- | start/routes.js | 25 |
14 files changed, 75 insertions, 70 deletions
diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..49e45f9 --- /dev/null +++ b/.eslintignore | |||
@@ -0,0 +1 @@ | |||
officialrecipes/ | |||
diff --git a/.eslintrc.js b/.eslintrc.js index d02f489..066d415 100644 --- a/.eslintrc.js +++ b/.eslintrc.js | |||
@@ -10,7 +10,12 @@ module.exports = { | |||
10 | globals: { | 10 | globals: { |
11 | Atomics: 'readonly', | 11 | Atomics: 'readonly', |
12 | SharedArrayBuffer: 'readonly', | 12 | SharedArrayBuffer: 'readonly', |
13 | use: 'readonly' | 13 | use: 'readonly', |
14 | window: 'readonly', | ||
15 | document: 'readonly', | ||
16 | ENV: 'readonly', | ||
17 | session: 'readonly', | ||
18 | response: 'readonly', | ||
14 | }, | 19 | }, |
15 | parserOptions: { | 20 | parserOptions: { |
16 | ecmaVersion: 2018, | 21 | ecmaVersion: 2018, |
@@ -18,5 +23,6 @@ module.exports = { | |||
18 | rules: { | 23 | rules: { |
19 | "class-methods-use-this": 'off', | 24 | "class-methods-use-this": 'off', |
20 | "no-restricted-syntax": 'off', | 25 | "no-restricted-syntax": 'off', |
26 | "max-len": 0, | ||
21 | }, | 27 | }, |
22 | }; | 28 | }; |
diff --git a/app/Controllers/Http/DashboardController.js b/app/Controllers/Http/DashboardController.js index 2f06961..a588c75 100644 --- a/app/Controllers/Http/DashboardController.js +++ b/app/Controllers/Http/DashboardController.js | |||
@@ -63,7 +63,8 @@ class DashboardController { | |||
63 | } | 63 | } |
64 | try { | 64 | try { |
65 | await Persona.forgotPassword(request.input('mail')); | 65 | await Persona.forgotPassword(request.input('mail')); |
66 | } catch(e) {} | 66 | // eslint-disable-next-line no-empty |
67 | } catch (e) {} | ||
67 | 68 | ||
68 | return view.render('others.message', { | 69 | return view.render('others.message', { |
69 | heading: 'Reset password', | 70 | heading: 'Reset password', |
@@ -91,11 +92,11 @@ class DashboardController { | |||
91 | const payload = { | 92 | const payload = { |
92 | password: crypto.createHash('sha256').update(request.input('password')).digest('base64'), | 93 | password: crypto.createHash('sha256').update(request.input('password')).digest('base64'), |
93 | password_confirmation: crypto.createHash('sha256').update(request.input('password_confirmation')).digest('base64'), | 94 | password_confirmation: crypto.createHash('sha256').update(request.input('password_confirmation')).digest('base64'), |
94 | } | 95 | }; |
95 | 96 | ||
96 | try { | 97 | try { |
97 | await Persona.updatePasswordByToken(request.input('token'), payload); | 98 | await Persona.updatePasswordByToken(request.input('token'), payload); |
98 | } catch(e) { | 99 | } catch (e) { |
99 | return view.render('others.message', { | 100 | return view.render('others.message', { |
100 | heading: 'Cannot reset your password', | 101 | heading: 'Cannot reset your password', |
101 | text: 'Please make sure you are using a valid and recent link to reset your password and that your passwords entered match.', | 102 | text: 'Please make sure you are using a valid and recent link to reset your password and that your passwords entered match.', |
@@ -122,7 +123,7 @@ class DashboardController { | |||
122 | return view.render('dashboard.account', { | 123 | return view.render('dashboard.account', { |
123 | username: auth.user.username, | 124 | username: auth.user.username, |
124 | email: auth.user.email, | 125 | email: auth.user.email, |
125 | lastname: auth.user.lastname | 126 | lastname: auth.user.lastname, |
126 | }); | 127 | }); |
127 | } | 128 | } |
128 | 129 | ||
@@ -136,7 +137,7 @@ class DashboardController { | |||
136 | let validation = await validateAll(request.all(), { | 137 | let validation = await validateAll(request.all(), { |
137 | username: 'required', | 138 | username: 'required', |
138 | email: 'required', | 139 | email: 'required', |
139 | lastname: 'required' | 140 | lastname: 'required', |
140 | }); | 141 | }); |
141 | if (validation.fails()) { | 142 | if (validation.fails()) { |
142 | session.withErrors(validation.messages()).flashExcept(['password']); | 143 | session.withErrors(validation.messages()).flashExcept(['password']); |
diff --git a/app/Controllers/Http/ServiceController.js b/app/Controllers/Http/ServiceController.js index a1d26cb..05d093b 100644 --- a/app/Controllers/Http/ServiceController.js +++ b/app/Controllers/Http/ServiceController.js | |||
@@ -140,6 +140,7 @@ class ServiceController { | |||
140 | let iconId; | 140 | let iconId; |
141 | do { | 141 | do { |
142 | iconId = uuid() + uuid(); | 142 | iconId = uuid() + uuid(); |
143 | // eslint-disable-next-line no-await-in-loop | ||
143 | } while (await fs.exists(path.join(Helpers.tmpPath('uploads'), iconId))); | 144 | } while (await fs.exists(path.join(Helpers.tmpPath('uploads'), iconId))); |
144 | 145 | ||
145 | await icon.move(Helpers.tmpPath('uploads'), { | 146 | await icon.move(Helpers.tmpPath('uploads'), { |
diff --git a/app/Controllers/Http/StaticController.js b/app/Controllers/Http/StaticController.js index d1a1179..114e369 100644 --- a/app/Controllers/Http/StaticController.js +++ b/app/Controllers/Http/StaticController.js | |||
@@ -34,7 +34,6 @@ class StaticController { | |||
34 | defaultTrialPlan: 'franz-pro-yearly', | 34 | defaultTrialPlan: 'franz-pro-yearly', |
35 | subscribeURL: 'https://getferdi.com', | 35 | subscribeURL: 'https://getferdi.com', |
36 | planSelectionURL: 'https://getferdi.com', | 36 | planSelectionURL: 'https://getferdi.com', |
37 | isMagicBarEnabled: true, | ||
38 | hasInlineCheckout: true, | 37 | hasInlineCheckout: true, |
39 | isPlanSelectionEnabled: false, | 38 | isPlanSelectionEnabled: false, |
40 | isTrialStatusBarEnabled: false, | 39 | isTrialStatusBarEnabled: false, |
@@ -101,9 +100,11 @@ class StaticController { | |||
101 | }) { | 100 | }) { |
102 | return response.send( | 101 | return response.send( |
103 | fs | 102 | fs |
104 | .readJsonSync(path.join( | 103 | .readJsonSync(path.join( |
105 | Helpers.appRoot(), "officialrecipes", "recipes", "all.json")) | 104 | Helpers.appRoot(), 'officialrecipes', 'recipes', 'all.json', |
106 | .filter((recipe) => recipe.featured)); | 105 | )) |
106 | .filter((recipe) => recipe.featured), | ||
107 | ); | ||
107 | } | 108 | } |
108 | 109 | ||
109 | // Show announcements | 110 | // Show announcements |
diff --git a/app/Controllers/Http/UserController.js b/app/Controllers/Http/UserController.js index e19e15e..0d768a9 100644 --- a/app/Controllers/Http/UserController.js +++ b/app/Controllers/Http/UserController.js | |||
@@ -177,6 +177,7 @@ class UserController { | |||
177 | ...request.all(), | 177 | ...request.all(), |
178 | }; | 178 | }; |
179 | 179 | ||
180 | // eslint-disable-next-line no-param-reassign | ||
180 | auth.user.settings = JSON.stringify(newSettings); | 181 | auth.user.settings = JSON.stringify(newSettings); |
181 | await auth.user.save(); | 182 | await auth.user.save(); |
182 | 183 | ||
@@ -249,7 +250,7 @@ class UserController { | |||
249 | email, | 250 | email, |
250 | password: hashedPassword, | 251 | password: hashedPassword, |
251 | username: 'Franz', | 252 | username: 'Franz', |
252 | lastname: 'Franz' | 253 | lastname: 'Franz', |
253 | }); | 254 | }); |
254 | 255 | ||
255 | return response.send('Your account has been created but due to this server\'s configuration, we could not import your Franz account data.\n\nIf you are the server owner, please set CONNECT_WITH_FRANZ to true to enable account imports.'); | 256 | return response.send('Your account has been created but due to this server\'s configuration, we could not import your Franz account data.\n\nIf you are the server owner, please set CONNECT_WITH_FRANZ to true to enable account imports.'); |
@@ -263,7 +264,7 @@ class UserController { | |||
263 | try { | 264 | try { |
264 | const basicToken = btoa(`${email}:${hashedPassword}`); | 265 | const basicToken = btoa(`${email}:${hashedPassword}`); |
265 | const loginBody = { | 266 | const loginBody = { |
266 | isZendeskLogin: false | 267 | isZendeskLogin: false, |
267 | }; | 268 | }; |
268 | 269 | ||
269 | const rawResponse = await fetch(`${base}auth/login`, { | 270 | const rawResponse = await fetch(`${base}auth/login`, { |
@@ -273,8 +274,8 @@ class UserController { | |||
273 | Authorization: `Basic ${basicToken}`, | 274 | Authorization: `Basic ${basicToken}`, |
274 | 'User-Agent': userAgent, | 275 | 'User-Agent': userAgent, |
275 | 'Content-Type': 'application/json', | 276 | 'Content-Type': 'application/json', |
276 | 'accept': '*/*', | 277 | accept: '*/*', |
277 | 'x-franz-source': 'Web' | 278 | 'x-franz-source': 'Web', |
278 | }, | 279 | }, |
279 | }); | 280 | }); |
280 | const content = await rawResponse.json(); | 281 | const content = await rawResponse.json(); |
@@ -312,7 +313,7 @@ class UserController { | |||
312 | email: userInf.email, | 313 | email: userInf.email, |
313 | password: hashedPassword, | 314 | password: hashedPassword, |
314 | username: userInf.firstname, | 315 | username: userInf.firstname, |
315 | lastname: userInf.lastname | 316 | lastname: userInf.lastname, |
316 | }); | 317 | }); |
317 | } catch (e) { | 318 | } catch (e) { |
318 | const errorMessage = `Could not create your user in our system.\nError: ${e}`; | 319 | const errorMessage = `Could not create your user in our system.\nError: ${e}`; |
diff --git a/app/Controllers/Http/WorkspaceController.js b/app/Controllers/Http/WorkspaceController.js index cbb6873..496912e 100644 --- a/app/Controllers/Http/WorkspaceController.js +++ b/app/Controllers/Http/WorkspaceController.js | |||
@@ -112,7 +112,8 @@ class WorkspaceController { | |||
112 | } | 112 | } |
113 | 113 | ||
114 | async delete({ | 114 | async delete({ |
115 | request, | 115 | // eslint-disable-next-line no-unused-vars |
116 | _request, | ||
116 | response, | 117 | response, |
117 | auth, | 118 | auth, |
118 | params, | 119 | params, |
diff --git a/app/Middleware/HandleDoubleSlash.js b/app/Middleware/HandleDoubleSlash.js index 456b774..c4bc053 100644 --- a/app/Middleware/HandleDoubleSlash.js +++ b/app/Middleware/HandleDoubleSlash.js | |||
@@ -1,4 +1,3 @@ | |||
1 | 'use strict' | ||
2 | /** @typedef {import('@adonisjs/framework/src/Request')} Request */ | 1 | /** @typedef {import('@adonisjs/framework/src/Request')} Request */ |
3 | /** @typedef {import('@adonisjs/framework/src/Response')} Response */ | 2 | /** @typedef {import('@adonisjs/framework/src/Response')} Response */ |
4 | /** @typedef {import('@adonisjs/framework/src/View')} View */ | 3 | /** @typedef {import('@adonisjs/framework/src/View')} View */ |
@@ -9,7 +8,8 @@ class HandleDoubleSlash { | |||
9 | * @param {Request} ctx.request | 8 | * @param {Request} ctx.request |
10 | * @param {Function} next | 9 | * @param {Function} next |
11 | */ | 10 | */ |
12 | async handle ({ request, response }, next) { | 11 | // eslint-disable-next-line consistent-return |
12 | async handle({ request, response }, next) { | ||
13 | // Redirect requests that contain duplicate slashes to the right path | 13 | // Redirect requests that contain duplicate slashes to the right path |
14 | if (request.url().includes('//')) { | 14 | if (request.url().includes('//')) { |
15 | return response.redirect( | 15 | return response.redirect( |
@@ -21,4 +21,4 @@ class HandleDoubleSlash { | |||
21 | } | 21 | } |
22 | } | 22 | } |
23 | 23 | ||
24 | module.exports = HandleDoubleSlash | 24 | module.exports = HandleDoubleSlash; |
diff --git a/app/Models/Token.js b/app/Models/Token.js index 50bcf1d..4a6c286 100644 --- a/app/Models/Token.js +++ b/app/Models/Token.js | |||
@@ -4,7 +4,7 @@ const Model = use('Model'); | |||
4 | 4 | ||
5 | class Token extends Model { | 5 | class Token extends Model { |
6 | user() { | 6 | user() { |
7 | return this.belongsTo('App/Models/User') | 7 | return this.belongsTo('App/Models/User'); |
8 | } | 8 | } |
9 | } | 9 | } |
10 | 10 | ||
diff --git a/config/mail.js b/config/mail.js index b876f19..1f11a8e 100644 --- a/config/mail.js +++ b/config/mail.js | |||
@@ -1,6 +1,4 @@ | |||
1 | 'use strict' | 1 | const Env = use('Env'); |
2 | |||
3 | const Env = use('Env') | ||
4 | 2 | ||
5 | module.exports = { | 3 | module.exports = { |
6 | /* | 4 | /* |
@@ -30,15 +28,15 @@ module.exports = { | |||
30 | name: Env.get('EXTERNAL_DOMAIN'), | 28 | name: Env.get('EXTERNAL_DOMAIN'), |
31 | port: Env.get('SMTP_PORT', 2525), | 29 | port: Env.get('SMTP_PORT', 2525), |
32 | host: Env.get('SMTP_HOST'), | 30 | host: Env.get('SMTP_HOST'), |
33 | secure: JSON.parse(Env.get("MAIL_SSL", Env.get('SSL', false))), | 31 | secure: JSON.parse(Env.get('MAIL_SSL', Env.get('SSL', false))), |
34 | authMethod: 'LOGIN', | 32 | authMethod: 'LOGIN', |
35 | auth: { | 33 | auth: { |
36 | user: Env.get('MAIL_USERNAME'), | 34 | user: Env.get('MAIL_USERNAME'), |
37 | pass: Env.get('MAIL_PASSWORD') | 35 | pass: Env.get('MAIL_PASSWORD'), |
38 | }, | 36 | }, |
39 | maxConnections: 5, | 37 | maxConnections: 5, |
40 | maxMessages: 100, | 38 | maxMessages: 100, |
41 | rateLimit: 10 | 39 | rateLimit: 10, |
42 | }, | 40 | }, |
43 | 41 | ||
44 | /* | 42 | /* |
@@ -60,7 +58,7 @@ module.exports = { | |||
60 | sparkpost: { | 58 | sparkpost: { |
61 | driver: 'sparkpost', | 59 | driver: 'sparkpost', |
62 | apiKey: Env.get('SPARKPOST_API_KEY'), | 60 | apiKey: Env.get('SPARKPOST_API_KEY'), |
63 | extras: {} | 61 | extras: {}, |
64 | }, | 62 | }, |
65 | 63 | ||
66 | /* | 64 | /* |
@@ -85,7 +83,7 @@ module.exports = { | |||
85 | domain: Env.get('MAILGUN_DOMAIN'), | 83 | domain: Env.get('MAILGUN_DOMAIN'), |
86 | region: Env.get('MAILGUN_API_REGION'), | 84 | region: Env.get('MAILGUN_API_REGION'), |
87 | apiKey: Env.get('MAILGUN_API_KEY'), | 85 | apiKey: Env.get('MAILGUN_API_KEY'), |
88 | extras: {} | 86 | extras: {}, |
89 | }, | 87 | }, |
90 | 88 | ||
91 | /* | 89 | /* |
@@ -100,6 +98,6 @@ module.exports = { | |||
100 | | | 98 | | |
101 | */ | 99 | */ |
102 | ethereal: { | 100 | ethereal: { |
103 | driver: 'ethereal' | 101 | driver: 'ethereal', |
104 | } | 102 | }, |
105 | } | 103 | }; |
diff --git a/config/persona.js b/config/persona.js index 71fbc3f..c259a06 100644 --- a/config/persona.js +++ b/config/persona.js | |||
@@ -1,5 +1,3 @@ | |||
1 | 'use strict' | ||
2 | |||
3 | /* | 1 | /* |
4 | |-------------------------------------------------------------------------- | 2 | |-------------------------------------------------------------------------- |
5 | | Persona | 3 | | Persona |
@@ -92,7 +90,5 @@ module.exports = { | |||
92 | | An object of validation messages to be used when validation fails. | 90 | | An object of validation messages to be used when validation fails. |
93 | | | 91 | | |
94 | */ | 92 | */ |
95 | validationMessages: () => { | 93 | validationMessages: () => ({}), |
96 | return {} | 94 | }; |
97 | } | ||
98 | } | ||
diff --git a/database/migrations/1612629845398_users_update_schema.js b/database/migrations/1612629845398_users_update_schema.js index d07f66d..10b82aa 100644 --- a/database/migrations/1612629845398_users_update_schema.js +++ b/database/migrations/1612629845398_users_update_schema.js | |||
@@ -1,20 +1,18 @@ | |||
1 | 'use strict' | ||
2 | |||
3 | /** @type {import('@adonisjs/lucid/src/Schema')} */ | 1 | /** @type {import('@adonisjs/lucid/src/Schema')} */ |
4 | const Schema = use('Schema') | 2 | const Schema = use('Schema'); |
5 | 3 | ||
6 | class UsersUpdateSchema extends Schema { | 4 | class UsersUpdateSchema extends Schema { |
7 | up() { | 5 | up() { |
8 | this.table('users', (table) => { | 6 | this.table('users', (table) => { |
9 | table.string('lastname', 80).notNullable().default(''); | 7 | table.string('lastname', 80).notNullable().default(''); |
10 | }) | 8 | }); |
11 | } | 9 | } |
12 | 10 | ||
13 | down() { | 11 | down() { |
14 | this.table('users', (table) => { | 12 | this.table('users', (table) => { |
15 | table.dropColumn('lastname') | 13 | table.dropColumn('lastname'); |
16 | }) | 14 | }); |
17 | } | 15 | } |
18 | } | 16 | } |
19 | 17 | ||
20 | module.exports = UsersUpdateSchema \ No newline at end of file | 18 | module.exports = UsersUpdateSchema; |
diff --git a/start/events.js b/start/events.js index 1e4ed5f..c4076cc 100644 --- a/start/events.js +++ b/start/events.js | |||
@@ -12,12 +12,14 @@ ${Env.get('APP_URL')}/user/reset?token=${encodeURIComponent(token)} | |||
12 | 12 | ||
13 | This message was sent automatically. Please do not reply. | 13 | This message was sent automatically. Please do not reply. |
14 | `; | 14 | `; |
15 | console.log('Sending message', body); | 15 | console.log('Sending message', body); |
16 | try { | 16 | try { |
17 | await Mail.raw(body, (message) => { | 17 | await Mail.raw(body, (message) => { |
18 | message.subject('[Ferdi] Reset your password') | 18 | message.subject('[Ferdi] Reset your password'); |
19 | message.from(Env.get('MAIL_SENDER')) | 19 | message.from(Env.get('MAIL_SENDER')); |
20 | message.to(user.email) | 20 | message.to(user.email); |
21 | }); | 21 | }); |
22 | } catch(e) {} | 22 | } catch (e) { |
23 | }); \ No newline at end of file | 23 | console.log(`Couldn't send mail: ${e}`); |
24 | } | ||
25 | }); | ||
diff --git a/start/routes.js b/start/routes.js index 1c2d4f3..05bc538 100644 --- a/start/routes.js +++ b/start/routes.js | |||
@@ -60,26 +60,25 @@ Route.group(() => { | |||
60 | }).prefix('v1'); | 60 | }).prefix('v1'); |
61 | 61 | ||
62 | // User dashboard | 62 | // User dashboard |
63 | if (Env.get('IS_DASHBOARD_ENABLED') != 'false') { | 63 | if (Env.get('IS_DASHBOARD_ENABLED') !== 'false') { |
64 | Route.group(() => { | 64 | Route.group(() => { |
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 | 69 | // Reset password |
70 | Route.get('forgot', ({ view }) => view.render('dashboard.forgotPassword')).middleware('guest'); | 70 | Route.get('forgot', ({ view }) => view.render('dashboard.forgotPassword')).middleware('guest'); |
71 | Route.post('forgot', 'DashboardController.forgotPassword').middleware('guest'); | 71 | Route.post('forgot', 'DashboardController.forgotPassword').middleware('guest'); |
72 | 72 | ||
73 | Route.get('reset', ({ view, request }) => { | 73 | Route.get('reset', ({ view, request }) => { |
74 | const token = request.get().token; | 74 | const { token } = request.get(); |
75 | if (token) { | 75 | if (token) { |
76 | return view.render('dashboard.resetPassword', { 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 | } | 77 | } |
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 | }); | ||
83 | }).middleware('guest'); | 82 | }).middleware('guest'); |
84 | Route.post('reset', 'DashboardController.resetPassword').middleware('guest'); | 83 | Route.post('reset', 'DashboardController.resetPassword').middleware('guest'); |
85 | 84 | ||
@@ -92,19 +91,19 @@ if (Env.get('IS_DASHBOARD_ENABLED') != 'false') { | |||
92 | Route.get('export', 'DashboardController.export').middleware('auth:session'); | 91 | Route.get('export', 'DashboardController.export').middleware('auth:session'); |
93 | Route.post('transfer', 'DashboardController.import').middleware('auth:session'); | 92 | Route.post('transfer', 'DashboardController.import').middleware('auth:session'); |
94 | Route.get('transfer', ({ view }) => view.render('dashboard.transfer')).middleware('auth:session'); | 93 | Route.get('transfer', ({ view }) => view.render('dashboard.transfer')).middleware('auth:session'); |
95 | 94 | ||
96 | Route.get('delete', ({ view }) => view.render('dashboard.delete')).middleware('auth:session'); | 95 | Route.get('delete', ({ view }) => view.render('dashboard.delete')).middleware('auth:session'); |
97 | Route.post('delete', 'DashboardController.delete').middleware('auth:session'); | 96 | Route.post('delete', 'DashboardController.delete').middleware('auth:session'); |
98 | 97 | ||
99 | Route.get('logout', 'DashboardController.logout').middleware('auth:session'); | 98 | Route.get('logout', 'DashboardController.logout').middleware('auth:session'); |
100 | 99 | ||
101 | Route.get('*', ({ response }) => response.redirect('/user/account')); | 100 | Route.get('*', ({ response }) => response.redirect('/user/account')); |
102 | }).prefix('user').middleware('shield'); | 101 | }).prefix('user').middleware('shield'); |
103 | } else { | 102 | } else { |
104 | Route.group(() => { | 103 | Route.group(() => { |
105 | Route.get('*', ({ | 104 | Route.get('*', ({ |
106 | response, | 105 | response, |
107 | }) => response.send('The user dashboard is disabled on this server\n\nIf you are the server owner, please set IS_DASHBOARD_ENABLED to true to enable the dashboard.')) | 106 | }) => response.send('The user dashboard is disabled on this server\n\nIf you are the server owner, please set IS_DASHBOARD_ENABLED to true to enable the dashboard.')); |
108 | }).prefix('user'); | 107 | }).prefix('user'); |
109 | } | 108 | } |
110 | 109 | ||