aboutsummaryrefslogtreecommitdiffstats
path: root/start/routes.js
diff options
context:
space:
mode:
Diffstat (limited to 'start/routes.js')
-rw-r--r--start/routes.js128
1 files changed, 0 insertions, 128 deletions
diff --git a/start/routes.js b/start/routes.js
deleted file mode 100644
index 0f3785f..0000000
--- a/start/routes.js
+++ /dev/null
@@ -1,128 +0,0 @@
1/*
2|--------------------------------------------------------------------------
3| Routes
4|--------------------------------------------------------------------------
5|
6*/
7
8/** @type {typeof import('@adonisjs/framework/src/Route/Manager')} */
9const Route = use('Route');
10const Env = use('Env');
11
12// Health: Returning if all systems function correctly
13Route.get('health', ({
14 response,
15}) => response.send({
16 api: 'success',
17 db: 'success',
18}));
19
20// API is grouped under '/v1/' route
21Route.group(() => {
22 // User authentification
23 Route.post('auth/signup', 'UserController.signup').middleware('guest');
24 Route.post('auth/login', 'UserController.login').middleware('guest');
25
26 // User info
27 Route.get('me', 'UserController.me').middleware('auth');
28 Route.put('me', 'UserController.updateMe').middleware('auth');
29
30 // Service info
31 Route.post('service', 'ServiceController.create').middleware('auth');
32 Route.put('service/reorder', 'ServiceController.reorder').middleware('auth');
33 Route.put('service/:id', 'ServiceController.edit').middleware('auth');
34 Route.delete('service/:id', 'ServiceController.delete').middleware('auth');
35 Route.get('me/services', 'ServiceController.list').middleware('auth');
36 Route.get('recipe', 'ServiceController.list').middleware('auth');
37 Route.get('icon/:id', 'ServiceController.icon');
38
39 // Recipe store
40 Route.get('recipes', 'RecipeController.list');
41 Route.get('recipes/search', 'RecipeController.search');
42 Route.get('recipes/popular', 'RecipeController.popularRecipes');
43 Route.get('recipes/download/:recipe', 'RecipeController.download');
44 Route.post('recipes/update', 'RecipeController.update');
45
46 // Workspaces
47 Route.put('workspace/:id', 'WorkspaceController.edit').middleware('auth');
48 Route.delete('workspace/:id', 'WorkspaceController.delete').middleware('auth');
49 Route.post('workspace', 'WorkspaceController.create').middleware('auth');
50 Route.get('workspace', 'WorkspaceController.list').middleware('auth');
51
52 // Static responses
53 Route.get('features/:mode?', 'StaticController.features');
54 Route.get('services', 'StaticController.emptyArray');
55 Route.get('news', 'StaticController.emptyArray');
56 Route.get('announcements/:version', 'StaticController.announcement');
57}).prefix('v1');
58
59// User dashboard
60if (Env.get('IS_DASHBOARD_ENABLED') !== 'false') {
61 Route.group(() => {
62 // Auth
63 Route.get('login', ({ view }) => view.render('dashboard.login')).middleware('guest');
64 Route.post('login', 'DashboardController.login').middleware('guest').as('login');
65
66 // Reset password
67 Route.get('forgot', ({ view }) => view.render('dashboard.forgotPassword')).middleware('guest');
68 Route.post('forgot', 'DashboardController.forgotPassword').middleware('guest');
69
70 Route.get('reset', ({ view, request }) => {
71 const { token } = request.get();
72 if (token) {
73 return view.render('dashboard.resetPassword', { token });
74 }
75 return view.render('others.message', {
76 heading: 'Invalid token',
77 text: 'Please make sure you are using a valid and recent link to reset your password.',
78 });
79 }).middleware('guest');
80 Route.post('reset', 'DashboardController.resetPassword').middleware('guest');
81
82 // Dashboard
83 Route.get('account', 'DashboardController.account').middleware('auth:session');
84 Route.post('account', 'DashboardController.edit').middleware('auth:session');
85
86 Route.get('data', 'DashboardController.data').middleware('auth:session');
87
88 Route.get('export', 'DashboardController.export').middleware('auth:session');
89 Route.post('transfer', 'DashboardController.import').middleware('auth:session');
90 Route.get('transfer', ({ view }) => view.render('dashboard.transfer')).middleware('auth:session');
91
92 Route.get('delete', ({ view }) => view.render('dashboard.delete')).middleware('auth:session');
93 Route.post('delete', 'DashboardController.delete').middleware('auth:session');
94
95 Route.get('logout', 'DashboardController.logout').middleware('auth:session');
96
97 Route.get('*', ({ response }) => response.redirect('/user/account'));
98 }).prefix('user').middleware('shield');
99} else {
100 Route.group(() => {
101 Route.get('*', ({
102 response,
103 }) => 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.'));
104 }).prefix('user');
105}
106
107// Recipe creation
108Route.post('new', 'RecipeController.create');
109Route.get('new', ({ response, view }) => {
110 if (Env.get('IS_CREATION_ENABLED') == 'false') { // eslint-disable-line eqeqeq
111 return response.send('This server doesn\'t allow the creation of new recipes.\n\nIf you are the server owner, please set IS_CREATION_ENABLED to true to enable recipe creation.');
112 }
113 return view.render('others.new');
114});
115
116// Franz/Ferdi account import
117Route.post('import', 'UserController.import');
118Route.get('import', ({ view }) => view.render('others.import'));
119
120// Legal documents
121Route.get('terms', ({ response }) => response.redirect('/terms.html'));
122Route.get('privacy', ({ response }) => response.redirect('/privacy.html'));
123
124// Index
125Route.get('/', ({ view }) => view.render('others.index'));
126
127// 404 handler
128Route.get('/*', ({ response }) => response.redirect('/'));