From 7584d2d7a7110aef0331ebfa178b2295842c59fa Mon Sep 17 00:00:00 2001 From: MCMXC <16797721+mcmxcdev@users.noreply.github.com> Date: Sat, 10 Feb 2024 18:19:14 -0700 Subject: refactor: project maintenance - work in progress --- start/env.ts | 24 ++++++++++++ start/events.ts | 20 +++++----- start/kernel.ts | 10 ++--- start/routes.ts | 4 +- start/routes/api.ts | 82 ++++++++++++++++++++--------------------- start/routes/web.ts | 104 ++++++++++++++++++++++++++++------------------------ 6 files changed, 136 insertions(+), 108 deletions(-) create mode 100644 start/env.ts (limited to 'start') diff --git a/start/env.ts b/start/env.ts new file mode 100644 index 0000000..3e1702e --- /dev/null +++ b/start/env.ts @@ -0,0 +1,24 @@ +/* +|-------------------------------------------------------------------------- +| Validating Environment Variables +|-------------------------------------------------------------------------- +| +| In this file we define the rules for validating environment variables. +| By performing validation we ensure that your application is running in +| a stable environment with correct configuration values. +| +| This file is read automatically by the framework during the boot lifecycle +| and hence do not rename or move this file to a different location. +| +*/ +import { Env } from '@adonisjs/core/env' + +export default await Env.create(new URL('../', import.meta.url), { + HOST: Env.schema.string({ format: 'host' }), + PORT: Env.schema.number(), + + APP_KEY: Env.schema.string(), + APP_NAME: Env.schema.string(), + + NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const), +}) diff --git a/start/events.ts b/start/events.ts index 11e63e5..faedc29 100644 --- a/start/events.ts +++ b/start/events.ts @@ -1,6 +1,6 @@ -import Config from '@ioc:Adonis/Core/Config'; -import Event from '@ioc:Adonis/Core/Event'; -import Mail from '@ioc:Adonis/Addons/Mail'; +import { Config } from '@adonisjs/core/config' +import emitter from '@adonisjs/core/services/emitter' +import mail from '@adonisjs/mail/services/main' /* |-------------------------------------------------------------------------- @@ -11,11 +11,11 @@ import Mail from '@ioc:Adonis/Addons/Mail'; | boot. | */ -Event.on('forgot::password', async ({ user, token }) => { +emitter.on('forgot::password', async ({ user, token }) => { try { // eslint-disable-next-line no-console - console.log('Sending message'); - await Mail.send(message => { + console.log('Sending message') + await mail.send((message) => { message .subject('[Ferdium] Forgot Password') .to(user.email) @@ -24,10 +24,10 @@ Event.on('forgot::password', async ({ user, token }) => { appUrl: Config.get('app.url'), username: user.username, token, - }); - }); + }) + }) } catch (error) { // eslint-disable-next-line no-console - console.log(`Couldn't send mail: ${error}`); + console.log(`Couldn't send mail: ${error}`) } -}); +}) diff --git a/start/kernel.ts b/start/kernel.ts index 1c5c92b..99a0820 100644 --- a/start/kernel.ts +++ b/start/kernel.ts @@ -9,7 +9,7 @@ | */ -import Server from '@ioc:Adonis/Core/Server'; +import { server } from '@adonisjs/core/services/server' /* |-------------------------------------------------------------------------- @@ -20,10 +20,10 @@ import Server from '@ioc:Adonis/Core/Server'; | are defined for every HTTP requests. | */ -Server.middleware.register([ +server.middleware.register([ () => import('@ioc:Adonis/Core/BodyParser'), () => import('@ioc:Adonis/Addons/Shield'), -]); +]) /* |-------------------------------------------------------------------------- @@ -41,9 +41,9 @@ Server.middleware.register([ | Route.get('dashboard', 'UserController.dashboard').middleware('auth') | */ -Server.middleware.registerNamed({ +server.middleware.registerNamed({ auth: () => import('App/Middleware/Auth'), dashboard: () => import('App/Middleware/Dashboard'), guest: () => import('App/Middleware/AllowGuestOnly'), shield: () => import('@ioc:Adonis/Addons/Shield'), -}); +}) diff --git a/start/routes.ts b/start/routes.ts index 75cef72..7c62909 100644 --- a/start/routes.ts +++ b/start/routes.ts @@ -18,5 +18,5 @@ | */ -import './routes/api'; -import './routes/web'; +import './routes/api.js' +import './routes/web.js' diff --git a/start/routes/api.ts b/start/routes/api.ts index 78282f0..8992154 100644 --- a/start/routes/api.ts +++ b/start/routes/api.ts @@ -1,51 +1,47 @@ // As this is currently a rebuild of the initial API we it is grouped in /v2/ -import Route from '@ioc:Adonis/Core/Route'; +import router from '@adonisjs/core/services/router' +const UserController = () => import('#controllers/Http/UserController') +const ServiceController = () => import('#controllers/Http/ServiceController') +const RecipeController = () => import('#controllers/Http/RecipeController') -Route.group(() => { - // User authentification - Route.post('auth/signup', 'UserController.signup').middleware('guest'); - Route.post('auth/login', 'UserController.login').middleware('guest'); +router + .group(() => { + // User authentification + router.post('auth/signup', [UserController, 'signup']).middleware('guest') + router.post('auth/login', [UserController, 'login']).middleware('guest') - // User info - Route.get('me', 'UserController.me').middleware('auth:jwt'); - Route.put('me', 'UserController.updateMe').middleware('auth:jwt'); - Route.get('me/newtoken', 'UserController.newToken').middleware('auth:jwt'); + // User info + router.get('me', [UserController, 'me']).middleware('auth:jwt') + router.put('me', [UserController, 'updateMe']).middleware('auth:jwt') + router.get('me/newtoken', [UserController, 'newToken']).middleware('auth:jwt') - // // Service info - Route.post('service', 'ServiceController.create').middleware('auth:jwt'); - Route.put('service/reorder', 'ServiceController.reorder').middleware( - 'auth:jwt', - ); - Route.put('service/:id', 'ServiceController.edit').middleware('auth:jwt'); - Route.delete('service/:id', 'ServiceController.delete').middleware( - 'auth:jwt', - ); - Route.get('me/services', 'ServiceController.list').middleware('auth:jwt'); - Route.get('recipe', 'ServiceController.list').middleware('auth:jwt'); - Route.get('icon/:id', 'ServiceController.icon'); + // // Service info + router.post('service', [ServiceController, 'create']).middleware('auth:jwt') + router.put('service/reorder', [ServiceController, 'reorder']).middleware('auth:jwt') + router.put('service/:id', [ServiceController, 'edit']).middleware('auth:jwt') + router.delete('service/:id', [ServiceController, 'delete']).middleware('auth:jwt') + router.get('me/services', [ServiceController, 'list']).middleware('auth:jwt') + router.get('recipe', [ServiceController, 'list']).middleware('auth:jwt') + router.get('icon/:id', [ServiceController, 'icon']) - // Recipe store - Route.get('recipes', 'RecipeController.list'); - Route.get('recipes/search', 'RecipeController.search'); - Route.get('recipes/popular', 'RecipeController.popularRecipes'); - Route.get('recipes/download/:recipe', 'RecipeController.download'); - Route.post('recipes/update', 'RecipeController.update'); + // Recipe store + router.get('recipes', [RecipeController, 'list']) + router.get('recipes/search', [RecipeController, 'search']) + router.get('recipes/popular', [RecipeController, 'popularRecipes']) + router.get('recipes/download/:recipe', [RecipeController, 'download']) + router.post('recipes/update', [RecipeController, 'update']) - // // Workspaces - Route.put('workspace/:id', 'WorkspaceController.edit').middleware('auth:jwt'); - Route.delete('workspace/:id', 'WorkspaceController.delete').middleware( - 'auth:jwt', - ); - Route.post('workspace', 'WorkspaceController.create').middleware('auth:jwt'); - Route.get('workspace', 'WorkspaceController.list').middleware('auth:jwt'); + // // Workspaces + router.put('workspace/:id', 'WorkspaceController.edit').middleware('auth:jwt') + router.delete('workspace/:id', 'WorkspaceController.delete').middleware('auth:jwt') + router.post('workspace', 'WorkspaceController.create').middleware('auth:jwt') + router.get('workspace', 'WorkspaceController.list').middleware('auth:jwt') - // Static responses - Route.get('features/:mode?', 'Api/Static/FeaturesController.show'); - Route.get('services', 'Api/Static/EmptyController.show'); - Route.get('news', 'Api/Static/EmptyController.show'); - Route.get( - 'announcements/:version', - 'Api/Static/AnnouncementsController.show', - ); -}).prefix('/v1'); + // Static responses + router.get('features/:mode?', 'Api/Static/FeaturesController.show') + router.get('services', 'Api/Static/EmptyController.show') + router.get('news', 'Api/Static/EmptyController.show') + router.get('announcements/:version', 'Api/Static/AnnouncementsController.show') + }) + .prefix('/v1') diff --git a/start/routes/web.ts b/start/routes/web.ts index 308abec..fd12bf2 100644 --- a/start/routes/web.ts +++ b/start/routes/web.ts @@ -1,54 +1,62 @@ -import Route from '@ioc:Adonis/Core/Route'; +import router from '@adonisjs/core/services/router' // Health check -Route.get('health', 'HealthController.index'); +router.get('health', 'HealthController.index') // Legal documents -Route.get('terms', ({ response }) => response.redirect('/terms.html')); -Route.get('privacy', ({ response }) => response.redirect('/privacy.html')); +router.get('terms', ({ response }) => response.redirect('/terms.html')) +router.get('privacy', ({ response }) => response.redirect('/privacy.html')) // Index -Route.get('/', ({ view }) => view.render('others/index')); - -Route.group(() => { - Route.group(() => { - // Guest troutes - Route.group(() => { - Route.get('login', 'Dashboard/LoginController.show'); - Route.post('login', 'Dashboard/LoginController.login').as('login'); - - // Reset password - Route.get('forgot', 'Dashboard/ForgotPasswordController.show'); - Route.post('forgot', 'Dashboard/ForgotPasswordController.forgotPassword'); - - Route.get('reset', 'Dashboard/ResetPasswordController.show'); - Route.post('reset', 'Dashboard/ResetPasswordController.resetPassword'); - }).middleware(['dashboard', 'guest']); - - // Authenticated routes - Route.group(() => { - Route.get('account', 'Dashboard/AccountController.show'); - Route.post('account', 'Dashboard/AccountController.store'); - - Route.get('data', 'Dashboard/DataController.show'); - Route.get('export', 'Dashboard/ExportController.show'); - - Route.get('transfer', 'Dashboard/TransferController.show'); - Route.post('transfer', 'Dashboard/TransferController.import'); - - Route.get('delete', 'Dashboard/DeleteController.show'); - Route.post('delete', 'Dashboard/DeleteController.delete'); - - Route.get('logout', 'Dashboard/LogOutController.logout'); - - Route.get('*', ({ response }) => response.redirect('/user/account')); - }).middleware(['dashboard', 'auth:web']); - }).prefix('user'); - - // Franz/Ferdi account import - Route.get('import', ({ view }) => view.render('others/import')); - Route.post('import', 'UserController.import'); - - // 404 handler - Route.get('/*', ({ response }) => response.redirect('/')); -}).middleware(['dashboard']); +router.get('/', ({ view }) => view.render('others/index')) + +router + .group(() => { + router + .group(() => { + // Guest troutes + router + .group(() => { + router.get('login', 'Dashboard/LoginController.show') + router.post('login', 'Dashboard/LoginController.login').as('login') + + // Reset password + router.get('forgot', 'Dashboard/ForgotPasswordController.show') + router.post('forgot', 'Dashboard/ForgotPasswordController.forgotPassword') + + router.get('reset', 'Dashboard/ResetPasswordController.show') + router.post('reset', 'Dashboard/ResetPasswordController.resetPassword') + }) + .middleware(['dashboard', 'guest']) + + // Authenticated routes + router + .group(() => { + router.get('account', 'Dashboard/AccountController.show') + router.post('account', 'Dashboard/AccountController.store') + + router.get('data', 'Dashboard/DataController.show') + router.get('export', 'Dashboard/ExportController.show') + + router.get('transfer', 'Dashboard/TransferController.show') + router.post('transfer', 'Dashboard/TransferController.import') + + router.get('delete', 'Dashboard/DeleteController.show') + router.post('delete', 'Dashboard/DeleteController.delete') + + router.get('logout', 'Dashboard/LogOutController.logout') + + router.get('*', ({ response }) => response.redirect('/user/account')) + }) + .middleware(['dashboard', 'auth:web']) + }) + .prefix('user') + + // Franz/Ferdi account import + router.get('import', ({ view }) => view.render('others/import')) + router.post('import', 'UserController.import') + + // 404 handler + router.get('/*', ({ response }) => response.redirect('/')) + }) + .middleware(['dashboard']) -- cgit v1.2.3-70-g09d2