/* |-------------------------------------------------------------------------- | Routes file |-------------------------------------------------------------------------- | | The routes file is used for defining the HTTP routes. | */ import router from '@adonisjs/core/services/router' import { middleware } from '#start/kernel' import { throttle } from '#start/limiter' const AuthController = () => import('#controllers/auth_controller') const RestaurantMenuItemsController = () => import('#controllers/restaurant_menu_items_controller') const RestaurantMenusController = () => import('#controllers/restaurant_menus_controller') const CategoriesController = () => import('#controllers/categories_controller') const UsersController = () => import('#controllers/users_controller') const ImagesController = () => import('#controllers/images_controller') // Auth routes router.group(() => { router.post('/register', [AuthController, 'register']).as('auth.register').use(throttle) router.post('/login', [AuthController, 'login']).as('auth.login').use(throttle) router.delete('/logout', [AuthController, 'logout']).as('auth.logout').use(middleware.auth()) router.get('/me', [AuthController, 'me']).as('auth.me').use(middleware.auth()).use(throttle) }) // RestaurantMenuItem routes router .group(() => { router .group(() => { router.get('/', [RestaurantMenuItemsController, 'getAll']).as('menu-items.getAll') router .post('/', [RestaurantMenuItemsController, 'getOne']) .as('menu-items.getOne') .use([middleware.auth(), middleware.admin()]) router .post('/create', [RestaurantMenuItemsController, 'create']) .as('menu-items.create') .use([middleware.auth(), middleware.admin()]) router .put('/', [RestaurantMenuItemsController, 'update']) .as('menu-items.update') .use([middleware.auth(), middleware.admin()]) router .delete('/', [RestaurantMenuItemsController, 'delete']) .as('menu-items.delete') .use([middleware.auth(), middleware.admin(), throttle]) router .post('/attach', [RestaurantMenuItemsController, 'connectToMenu']) .as('menu-items.attach') .use([middleware.auth(), middleware.admin()]) }) .prefix('/menu-items') // RestaurantMenu routes router .group(() => { router.get('/', [RestaurantMenusController, 'getAll']).as('menus.getAll') router .post('/', [RestaurantMenusController, 'getOne']) .as('menus.getOne') .use([middleware.auth(), middleware.admin()]) router .post('/create', [RestaurantMenusController, 'create']) .as('menus.create') .use([middleware.auth(), middleware.admin()]) router .put('/', [RestaurantMenusController, 'update']) .as('menus.update') .use([middleware.auth(), middleware.admin()]) router .delete('/', [RestaurantMenusController, 'delete']) .as('menus.delete') .use([middleware.auth(), middleware.admin(), throttle]) }) .prefix('/menus') // Category routes router .group(() => { router.get('/', [CategoriesController, 'getAll']).as('categories.getAll') router .post('/', [CategoriesController, 'getOne']) .as('categories.getOne') .use([middleware.auth(), middleware.admin()]) router .post('/create', [CategoriesController, 'create']) .as('categories.create') .use([middleware.auth(), middleware.admin()]) router .put('/', [CategoriesController, 'update']) .as('categories.update') .use([middleware.auth(), middleware.admin()]) router .delete('/', [CategoriesController, 'delete']) .as('categories.delete') .use([middleware.auth(), middleware.admin(), throttle]) }) .prefix('/categories') // User routes router .group(() => { router.get('/', [UsersController, 'getAll']).as('users.getAll').use(middleware.auth()) router .post('/', [UsersController, 'create']) .as('users.create') .use([middleware.auth(), middleware.admin()]) router .post('/get-one', [UsersController, 'getOne']) .as('users.getOne') .use([middleware.auth(), middleware.admin()]) router .put('/', [UsersController, 'update']) .as('users.update') .use([middleware.auth(), middleware.admin()]) router .delete('/', [UsersController, 'delete']) .as('users.delete') .use([middleware.auth(), middleware.admin()]) }) .prefix('/users') // Image routes router .group(() => { router .post('/upload', [ImagesController, 'upload']) .as('images.upload') .use([middleware.auth(), middleware.admin()]) router.get('/:filename', [ImagesController, 'show']).as('images.show') }) .prefix('/images') }) .prefix('/api')