1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
'use strict'
/*
|--------------------------------------------------------------------------
| Routes
|--------------------------------------------------------------------------
|
*/
/** @type {typeof import('@adonisjs/framework/src/Route/Manager')} */
const Route = use('Route')
const Env = use('Env')
// Health: Returning if all systems function correctly
Route.get('health', ({
response
}) => {
return response.send({
api: 'success',
db: 'success'
})
})
// API is grouped under '/v1/' route
Route.group(() => {
// User authentification
Route.post('auth/signup', 'UserController.signup').middleware('guest')
Route.post('auth/login', 'UserController.login').middleware('guest')
// User info
Route.get('me', 'UserController.me').middleware('auth')
// Service info
Route.post('service', 'ServiceController.create').middleware('auth')
Route.put('service/:id', 'ServiceController.edit').middleware('auth')
Route.delete('service/:id', 'ServiceController.delete').middleware('auth')
Route.get('me/services', 'ServiceController.list').middleware('auth')
Route.put('service/reorder', 'ServiceController.reorder').middleware('auth')
Route.get('recipe', 'ServiceController.list').middleware('auth')
Route.post('recipes/update', 'ServiceController.update').middleware('auth')
// Recipe store
Route.get('recipes', 'RecipeController.list')
Route.get('recipes/download/:recipe', 'RecipeController.download')
Route.get('recipes/search', 'RecipeController.search')
Route.get('recipes/popular', 'StaticController.popularRecipes')
Route.get('recipes/update', 'StaticController.emptyArray')
// Workspaces
Route.put('workspace/:id', 'WorkspaceController.edit').middleware('auth')
Route.delete('workspace/:id', 'WorkspaceController.delete').middleware('auth')
Route.post('workspace', 'WorkspaceController.create').middleware('auth')
Route.get('workspace', 'WorkspaceController.list').middleware('auth')
// Static responses
Route.get('features', 'StaticController.features')
Route.get('services', 'StaticController.emptyArray')
Route.get('news', 'StaticController.emptyArray')
Route.get('payment/plans', 'StaticController.plans')
Route.get('announcements/:version', 'StaticController.announcement')
}).prefix('v1')
// User dashboard
Route.group(() => {
// Auth
Route.get('login', ({view}) => {
return view.render('dashboard.login');
}).middleware('guest');
Route.post('login', 'DashboardController.login').middleware('guest')
// Dashboard
Route.get('account', 'DashboardController.account').middleware('auth:session')
Route.post('account', 'DashboardController.edit').middleware('auth:session')
Route.get('data', 'DashboardController.data').middleware('auth:session')
Route.get('delete', ({view}) => {
return view.render('dashboard.delete');
}).middleware('auth:session');
Route.post('delete', 'DashboardController.delete').middleware('auth:session')
Route.get('logout', 'DashboardController.logout').middleware('auth:session')
Route.get('*', ({ response }) => response.redirect('/user/account'))
}).prefix('user').middleware('shield')
// Recipe creation
Route.post('new', 'RecipeController.create')
Route.get('new', ({ response }) => {
if (Env.get('IS_CREATION_ENABLED') == 'false') {
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.');
} else {
return response.redirect('/new.html')
}
})
// Franz account import
Route.post('import', 'UserController.import')
Route.get('import', ({ response }) => response.redirect('/import.html'))
// Legal documents
Route.get('terms', ({ response }) => response.redirect('/terms.html'))
Route.get('privacy', ({ response }) => response.redirect('/privacy.html'))
Route.get('/', ({ response }) => response.redirect('/index.html'))
|