aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar MCMXC <16797721+mcmxcdev@users.noreply.github.com>2024-02-18 20:22:20 -0700
committerLibravatar MCMXC <16797721+mcmxcdev@users.noreply.github.com>2024-02-18 20:22:20 -0700
commit3d0b58b28250b3b2e4ebe41ba48bed6774a01bfd (patch)
treeb96227379f4b73b90dbd5181b8d2390834acd4e9
parentMerge branch 'refactor/project-maintenance' of github.com:ferdium/ferdium-ser... (diff)
downloadferdium-server-3d0b58b28250b3b2e4ebe41ba48bed6774a01bfd.tar.gz
ferdium-server-3d0b58b28250b3b2e4ebe41ba48bed6774a01bfd.tar.zst
ferdium-server-3d0b58b28250b3b2e4ebe41ba48bed6774a01bfd.zip
updates
-rw-r--r--app/Controllers/Http/Api/Static/AnnouncementsController.ts3
-rw-r--r--app/Controllers/Http/RecipeController.ts8
-rw-r--r--app/Controllers/Http/UserController.ts3
-rw-r--r--app/Models/User.ts4
-rw-r--r--start/routes/api.ts35
-rw-r--r--start/routes/web.ts9
-rw-r--r--tests/bootstrap.ts2
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';
6export default class AnnouncementsController { 6export 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';
3import hash from '@adonisjs/core/services/hash'; 3import hash from '@adonisjs/core/services/hash';
4import emitter from '@adonisjs/core/services/emitter'; 4import emitter from '@adonisjs/core/services/emitter';
5import moment from 'moment'; 5import moment from 'moment';
6import { Encryption } from '@adonisjs/core/encryption';
7import randtoken from 'rand-token'; 6import randtoken from 'rand-token';
8import Token from './Token.js'; 7import Token from './Token.js';
9import Workspace from './Workspace.js'; 8import Workspace from './Workspace.js';
@@ -12,6 +11,7 @@ import mail from '@adonisjs/mail/services/main';
12import { url } from '#config/app'; 11import { url } from '#config/app';
13import { mailFrom } from '#config/dashboard'; 12import { mailFrom } from '#config/dashboard';
14import type { HasMany } from '@adonisjs/lucid/types/relations'; 13import type { HasMany } from '@adonisjs/lucid/types/relations';
14import encryption from '@adonisjs/core/services/encryption';
15 15
16export default class User extends BaseModel { 16export 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
3import { middleware } from '#start/kernel';
3import router from '@adonisjs/core/services/router'; 4import router from '@adonisjs/core/services/router';
4const UserController = () => import('#controllers/Http/UserController'); 5const UserController = () => import('#controllers/Http/UserController');
5const ServiceController = () => import('#controllers/Http/ServiceController'); 6const ServiceController = () => import('#controllers/Http/ServiceController');
@@ -16,33 +17,37 @@ const AnnouncementsController = () =>
16router 17router
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 @@
1import { middleware } from '#start/kernel';
1import router from '@adonisjs/core/services/router'; 2import router from '@adonisjs/core/services/router';
2const HealthController = () => import('#controllers/Http/HealthController'); 3const HealthController = () => import('#controllers/Http/HealthController');
3const LoginController = () => 4const 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';
12import app from '@adonisjs/core/services/app'; 12import app from '@adonisjs/core/services/app';
13import type { Config } from '@japa/runner/types'; 13import type { Config } from '@japa/runner/types';
14import testUtils from '@adonisjs/core/services/test_utils'; 14import testUtils from '@adonisjs/core/services/test_utils';
15import { authApiClient } from '@adonisjs/auth/plugins/api_client';
15 16
16import { fakeCsrfField } from './utils.js'; 17import { 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/*