diff options
author | MCMXC <16797721+mcmxcdev@users.noreply.github.com> | 2024-02-18 20:22:20 -0700 |
---|---|---|
committer | MCMXC <16797721+mcmxcdev@users.noreply.github.com> | 2024-02-18 20:22:20 -0700 |
commit | 3d0b58b28250b3b2e4ebe41ba48bed6774a01bfd (patch) | |
tree | b96227379f4b73b90dbd5181b8d2390834acd4e9 | |
parent | Merge branch 'refactor/project-maintenance' of github.com:ferdium/ferdium-ser... (diff) | |
download | ferdium-server-3d0b58b28250b3b2e4ebe41ba48bed6774a01bfd.tar.gz ferdium-server-3d0b58b28250b3b2e4ebe41ba48bed6774a01bfd.tar.zst ferdium-server-3d0b58b28250b3b2e4ebe41ba48bed6774a01bfd.zip |
updates
-rw-r--r-- | app/Controllers/Http/Api/Static/AnnouncementsController.ts | 3 | ||||
-rw-r--r-- | app/Controllers/Http/RecipeController.ts | 8 | ||||
-rw-r--r-- | app/Controllers/Http/UserController.ts | 3 | ||||
-rw-r--r-- | app/Models/User.ts | 4 | ||||
-rw-r--r-- | start/routes/api.ts | 35 | ||||
-rw-r--r-- | start/routes/web.ts | 9 | ||||
-rw-r--r-- | tests/bootstrap.ts | 2 |
7 files changed, 38 insertions, 26 deletions
diff --git a/app/Controllers/Http/Api/Static/AnnouncementsController.ts b/app/Controllers/Http/Api/Static/AnnouncementsController.ts index 565df5e..85aed4d 100644 --- a/app/Controllers/Http/Api/Static/AnnouncementsController.ts +++ b/app/Controllers/Http/Api/Static/AnnouncementsController.ts | |||
@@ -6,7 +6,8 @@ import fs from 'fs-extra'; | |||
6 | export default class AnnouncementsController { | 6 | export default class AnnouncementsController { |
7 | public async show({ response, params }: HttpContext) { | 7 | public async show({ response, params }: HttpContext) { |
8 | const announcement = path.join( | 8 | const announcement = path.join( |
9 | app.resourcesPath(), | 9 | app.appRoot.host, |
10 | 'resources', | ||
10 | 'announcements', | 11 | 'announcements', |
11 | `${params.version}.json`, | 12 | `${params.version}.json`, |
12 | ); | 13 | ); |
diff --git a/app/Controllers/Http/RecipeController.ts b/app/Controllers/Http/RecipeController.ts index 4d01a02..fd3c57e 100644 --- a/app/Controllers/Http/RecipeController.ts +++ b/app/Controllers/Http/RecipeController.ts | |||
@@ -51,7 +51,7 @@ export default class RecipesController { | |||
51 | // List official and custom recipes | 51 | // List official and custom recipes |
52 | public async list({ response }: HttpContext) { | 52 | public async list({ response }: HttpContext) { |
53 | const officialRecipes = fs.readJsonSync( | 53 | const officialRecipes = fs.readJsonSync( |
54 | path.join(app.appRoot, 'recipes', 'all.json'), | 54 | path.join(app.appRoot.host, 'recipes', 'all.json'), |
55 | ); | 55 | ); |
56 | const customRecipesArray = await Recipe.all(); | 56 | const customRecipesArray = await Recipe.all(); |
57 | const customRecipes = customRecipesArray.map(recipe => ({ | 57 | const customRecipes = customRecipesArray.map(recipe => ({ |
@@ -113,7 +113,7 @@ export default class RecipesController { | |||
113 | // Compress files to .tar.gz file | 113 | // Compress files to .tar.gz file |
114 | const source = app.tmpPath('recipe'); | 114 | const source = app.tmpPath('recipe'); |
115 | const destination = path.join( | 115 | const destination = path.join( |
116 | app.appRoot, | 116 | app.appRoot.host, |
117 | `/recipes/archives/${data.id}.tar.gz`, | 117 | `/recipes/archives/${data.id}.tar.gz`, |
118 | ); | 118 | ); |
119 | 119 | ||
@@ -186,7 +186,7 @@ export default class RecipesController { | |||
186 | public popularRecipes({ response }: HttpContext) { | 186 | public popularRecipes({ response }: HttpContext) { |
187 | return response.send( | 187 | return response.send( |
188 | fs | 188 | fs |
189 | .readJsonSync(path.join(app.appRoot, 'recipes', 'all.json')) | 189 | .readJsonSync(path.join(app.appRoot.host, 'recipes', 'all.json')) |
190 | // eslint-disable-next-line @typescript-eslint/no-explicit-any | 190 | // eslint-disable-next-line @typescript-eslint/no-explicit-any |
191 | .filter((recipe: any) => recipe.featured), | 191 | .filter((recipe: any) => recipe.featured), |
192 | ); | 192 | ); |
@@ -197,7 +197,7 @@ export default class RecipesController { | |||
197 | const updates = []; | 197 | const updates = []; |
198 | const recipes = request.all(); | 198 | const recipes = request.all(); |
199 | const allJson = fs.readJsonSync( | 199 | const allJson = fs.readJsonSync( |
200 | path.join(app.appRoot, 'recipes', 'all.json'), | 200 | path.join(app.appRoot.host, 'recipes', 'all.json'), |
201 | ); | 201 | ); |
202 | 202 | ||
203 | for (const recipe of Object.keys(recipes)) { | 203 | for (const recipe of Object.keys(recipes)) { |
diff --git a/app/Controllers/Http/UserController.ts b/app/Controllers/Http/UserController.ts index 667786b..bcf0171 100644 --- a/app/Controllers/Http/UserController.ts +++ b/app/Controllers/Http/UserController.ts | |||
@@ -292,7 +292,8 @@ export default class UsersController { | |||
292 | 'x-franz-source': 'Web', | 292 | 'x-franz-source': 'Web', |
293 | }, | 293 | }, |
294 | }); | 294 | }); |
295 | const content = await rawResponse.json(); | 295 | // eslint-disable-next-line @typescript-eslint/no-explicit-any |
296 | const content: any = await rawResponse.json(); | ||
296 | 297 | ||
297 | if (!content.message || content.message !== 'Successfully logged in') { | 298 | if (!content.message || content.message !== 'Successfully logged in') { |
298 | const errorMessage = | 299 | const errorMessage = |
diff --git a/app/Models/User.ts b/app/Models/User.ts index 34df86f..1f10f37 100644 --- a/app/Models/User.ts +++ b/app/Models/User.ts | |||
@@ -3,7 +3,6 @@ import { BaseModel, beforeSave, column, hasMany } from '@adonisjs/lucid/orm'; | |||
3 | import hash from '@adonisjs/core/services/hash'; | 3 | import hash from '@adonisjs/core/services/hash'; |
4 | import emitter from '@adonisjs/core/services/emitter'; | 4 | import emitter from '@adonisjs/core/services/emitter'; |
5 | import moment from 'moment'; | 5 | import moment from 'moment'; |
6 | import { Encryption } from '@adonisjs/core/encryption'; | ||
7 | import randtoken from 'rand-token'; | 6 | import randtoken from 'rand-token'; |
8 | import Token from './Token.js'; | 7 | import Token from './Token.js'; |
9 | import Workspace from './Workspace.js'; | 8 | import Workspace from './Workspace.js'; |
@@ -12,6 +11,7 @@ import mail from '@adonisjs/mail/services/main'; | |||
12 | import { url } from '#config/app'; | 11 | import { url } from '#config/app'; |
13 | import { mailFrom } from '#config/dashboard'; | 12 | import { mailFrom } from '#config/dashboard'; |
14 | import type { HasMany } from '@adonisjs/lucid/types/relations'; | 13 | import type { HasMany } from '@adonisjs/lucid/types/relations'; |
14 | import encryption from '@adonisjs/core/services/encryption'; | ||
15 | 15 | ||
16 | export default class User extends BaseModel { | 16 | export default class User extends BaseModel { |
17 | @column({ isPrimary: true }) | 17 | @column({ isPrimary: true }) |
@@ -99,7 +99,7 @@ export default class User extends BaseModel { | |||
99 | return row.token; | 99 | return row.token; |
100 | } | 100 | } |
101 | 101 | ||
102 | const token = Encryption.encrypt(randtoken.generate(16)); | 102 | const token = encryption.encrypt(randtoken.generate(16)); |
103 | 103 | ||
104 | await user.related('tokens').create({ type, token }); | 104 | await user.related('tokens').create({ type, token }); |
105 | 105 | ||
diff --git a/start/routes/api.ts b/start/routes/api.ts index 54250a2..37f7859 100644 --- a/start/routes/api.ts +++ b/start/routes/api.ts | |||
@@ -1,5 +1,6 @@ | |||
1 | // As this is currently a rebuild of the initial API we it is grouped in /v2/ | 1 | // As this is currently a rebuild of the initial API we it is grouped in /v2/ |
2 | 2 | ||
3 | import { middleware } from '#start/kernel'; | ||
3 | import router from '@adonisjs/core/services/router'; | 4 | import router from '@adonisjs/core/services/router'; |
4 | const UserController = () => import('#controllers/Http/UserController'); | 5 | const UserController = () => import('#controllers/Http/UserController'); |
5 | const ServiceController = () => import('#controllers/Http/ServiceController'); | 6 | const ServiceController = () => import('#controllers/Http/ServiceController'); |
@@ -16,33 +17,37 @@ const AnnouncementsController = () => | |||
16 | router | 17 | router |
17 | .group(() => { | 18 | .group(() => { |
18 | // User authentification | 19 | // User authentification |
19 | router.post('auth/signup', [UserController, 'signup']).middleware('guest'); | 20 | router |
20 | router.post('auth/login', [UserController, 'login']).middleware('guest'); | 21 | .post('auth/signup', [UserController, 'signup']) |
22 | .use(middleware.guest()); | ||
23 | router | ||
24 | .post('auth/login', [UserController, 'login']) | ||
25 | .use(middleware.guest()); | ||
21 | 26 | ||
22 | // User info | 27 | // User info |
23 | router.get('me', [UserController, 'me']).middleware('auth:jwt'); | 28 | router.get('me', [UserController, 'me']).use(middleware.auth()); |
24 | router.put('me', [UserController, 'updateMe']).middleware('auth:jwt'); | 29 | router.put('me', [UserController, 'updateMe']).use(middleware.auth()); |
25 | router | 30 | router |
26 | .get('me/newtoken', [UserController, 'newToken']) | 31 | .get('me/newtoken', [UserController, 'newToken']) |
27 | .middleware('auth:jwt'); | 32 | .use(middleware.auth()); |
28 | 33 | ||
29 | // // Service info | 34 | // // Service info |
30 | router | 35 | router |
31 | .post('service', [ServiceController, 'create']) | 36 | .post('service', [ServiceController, 'create']) |
32 | .middleware('auth:jwt'); | 37 | .use(middleware.auth()); |
33 | router | 38 | router |
34 | .put('service/reorder', [ServiceController, 'reorder']) | 39 | .put('service/reorder', [ServiceController, 'reorder']) |
35 | .middleware('auth:jwt'); | 40 | .use(middleware.auth()); |
36 | router | 41 | router |
37 | .put('service/:id', [ServiceController, 'edit']) | 42 | .put('service/:id', [ServiceController, 'edit']) |
38 | .middleware('auth:jwt'); | 43 | .use(middleware.auth()); |
39 | router | 44 | router |
40 | .delete('service/:id', [ServiceController, 'delete']) | 45 | .delete('service/:id', [ServiceController, 'delete']) |
41 | .middleware('auth:jwt'); | 46 | .use(middleware.auth()); |
42 | router | 47 | router |
43 | .get('me/services', [ServiceController, 'list']) | 48 | .get('me/services', [ServiceController, 'list']) |
44 | .middleware('auth:jwt'); | 49 | .use(middleware.auth()); |
45 | router.get('recipe', [ServiceController, 'list']).middleware('auth:jwt'); | 50 | router.get('recipe', [ServiceController, 'list']).use(middleware.auth()); |
46 | router.get('icon/:id', [ServiceController, 'icon']); | 51 | router.get('icon/:id', [ServiceController, 'icon']); |
47 | 52 | ||
48 | // Recipe store | 53 | // Recipe store |
@@ -55,16 +60,16 @@ router | |||
55 | // // Workspaces | 60 | // // Workspaces |
56 | router | 61 | router |
57 | .put('workspace/:id', [WorkspaceController, 'edit']) | 62 | .put('workspace/:id', [WorkspaceController, 'edit']) |
58 | .middleware('auth:jwt'); | 63 | .use(middleware.auth()); |
59 | router | 64 | router |
60 | .delete('workspace/:id', [WorkspaceController, 'delete']) | 65 | .delete('workspace/:id', [WorkspaceController, 'delete']) |
61 | .middleware('auth:jwt'); | 66 | .use(middleware.auth()); |
62 | router | 67 | router |
63 | .post('workspace', [WorkspaceController, 'create']) | 68 | .post('workspace', [WorkspaceController, 'create']) |
64 | .middleware('auth:jwt'); | 69 | .use(middleware.auth()); |
65 | router | 70 | router |
66 | .get('workspace', [WorkspaceController, 'list']) | 71 | .get('workspace', [WorkspaceController, 'list']) |
67 | .middleware('auth:jwt'); | 72 | .use(middleware.auth()); |
68 | 73 | ||
69 | // Static responses | 74 | // Static responses |
70 | router.get('features/:mode?', [FeaturesController, 'show']); | 75 | router.get('features/:mode?', [FeaturesController, 'show']); |
diff --git a/start/routes/web.ts b/start/routes/web.ts index a944c05..f78585c 100644 --- a/start/routes/web.ts +++ b/start/routes/web.ts | |||
@@ -1,3 +1,4 @@ | |||
1 | import { middleware } from '#start/kernel'; | ||
1 | import router from '@adonisjs/core/services/router'; | 2 | import router from '@adonisjs/core/services/router'; |
2 | const HealthController = () => import('#controllers/Http/HealthController'); | 3 | const HealthController = () => import('#controllers/Http/HealthController'); |
3 | const LoginController = () => | 4 | const LoginController = () => |
@@ -47,7 +48,8 @@ router | |||
47 | router.get('reset', [ResetPasswordController, 'show']); | 48 | router.get('reset', [ResetPasswordController, 'show']); |
48 | router.post('reset', [ResetPasswordController, 'resetPassword']); | 49 | router.post('reset', [ResetPasswordController, 'resetPassword']); |
49 | }) | 50 | }) |
50 | .middleware(['dashboard', 'guest']); | 51 | .use(middleware.dashboard()) |
52 | .use(middleware.guest()); | ||
51 | 53 | ||
52 | // Authenticated routes | 54 | // Authenticated routes |
53 | router | 55 | router |
@@ -70,7 +72,8 @@ router | |||
70 | response.redirect('/user/account'), | 72 | response.redirect('/user/account'), |
71 | ); | 73 | ); |
72 | }) | 74 | }) |
73 | .middleware(['dashboard', 'auth:web']); | 75 | .use(middleware.dashboard()) |
76 | .use(middleware.auth()); | ||
74 | }) | 77 | }) |
75 | .prefix('user'); | 78 | .prefix('user'); |
76 | 79 | ||
@@ -81,4 +84,4 @@ router | |||
81 | // 404 handler | 84 | // 404 handler |
82 | router.get('/*', ({ response }) => response.redirect('/')); | 85 | router.get('/*', ({ response }) => response.redirect('/')); |
83 | }) | 86 | }) |
84 | .middleware(['dashboard']); | 87 | .use(middleware.dashboard()); |
diff --git a/tests/bootstrap.ts b/tests/bootstrap.ts index d152db0..83f8ca5 100644 --- a/tests/bootstrap.ts +++ b/tests/bootstrap.ts | |||
@@ -12,6 +12,7 @@ import { apiClient } from '@japa/api-client'; | |||
12 | import app from '@adonisjs/core/services/app'; | 12 | import app from '@adonisjs/core/services/app'; |
13 | import type { Config } from '@japa/runner/types'; | 13 | import type { Config } from '@japa/runner/types'; |
14 | import testUtils from '@adonisjs/core/services/test_utils'; | 14 | import testUtils from '@adonisjs/core/services/test_utils'; |
15 | import { authApiClient } from '@adonisjs/auth/plugins/api_client'; | ||
15 | 16 | ||
16 | import { fakeCsrfField } from './utils.js'; | 17 | import { fakeCsrfField } from './utils.js'; |
17 | 18 | ||
@@ -31,6 +32,7 @@ export const plugins: Config['plugins'] = [ | |||
31 | assert(), | 32 | assert(), |
32 | apiClient(), | 33 | apiClient(), |
33 | pluginAdonisJS(app), | 34 | pluginAdonisJS(app), |
35 | authApiClient(app), | ||
34 | ]; | 36 | ]; |
35 | 37 | ||
36 | /* | 38 | /* |