/* |-------------------------------------------------------------------------- | Routes file |-------------------------------------------------------------------------- | | The routes file is used for defining the HTTP routes. | */ import router from '@adonisjs/core/services/router' // import transmit from '@adonisjs/transmit/services/main' import { authThrottle } from './limiters.js' import { throttle } from './limiter.js' import { middleware } from './kernel.js' // TODO: Magic link login // transmit.registerRoutes() const AuthController = () => import('#controllers/auth_controller') router.group(() => { router.post('/auth/request', [AuthController, 'requestLogin']).use(authThrottle) router.post('/auth/verify', [AuthController, 'verifyCode']).use(throttle) router.post('/auth/register', [AuthController, 'register']).use(throttle) router.post('/auth/logout', [AuthController, 'logout']) router.get('/auth/autocomplete', [AuthController, 'listNames']).use(throttle) // TODO: Magic link login // router.get('/auth/magic-link', 'AuthController.magicLink').use(throttle) // router.get('/auth/listen', 'AuthController.listen') }) const UserController = () => import('#controllers/user_controller') router.get('/users/@me', [UserController, 'me']).use(middleware.auth()) router.post('/users/@me', [UserController, 'update']).use(middleware.auth()) const SubjectsController = () => import('#controllers/subjects_controller') router.get('/subjects', [SubjectsController, 'index']).use(middleware.auth()) const CollesController = () => import('#controllers/colles_controller') router .group(() => { router.post('/', [CollesController, 'create']).use(middleware.internal()) router.post('/upcoming', [CollesController, 'createUpcoming']).use(middleware.internal()) router.post('/:colleId/refresh', [CollesController, 'refresh']).use(middleware.auth()) router.get('/', [CollesController, 'index']).use(middleware.auth()) router.get('/:colleId', [CollesController, 'show']).use(middleware.auth()) }) .prefix('/colles') const NotificationsController = () => import('#controllers/notifications_controller') router .group(() => { router.get('/', [NotificationsController, 'index']) router.post('/', [NotificationsController, 'subscribe']) router.post('/:id/unsubscribe', [NotificationsController, 'unsubscribe']) router.post('/:id', [NotificationsController, 'update']) router.post('/:id/test', [NotificationsController, 'test']) }) .prefix('/notifications') .use(middleware.auth()) const GradesController = () => import('#controllers/grades_controller') router.get('/grades', [GradesController, 'index']).use(middleware.auth()) router.get('/averages', [GradesController, 'averages']).use(middleware.auth()) const InternalsController = () => import('#controllers/internals_controller') router .group(() => { router.post('/back-fetch', [InternalsController, 'backFetch']) router.post('/fetch-meals', [InternalsController, 'fetchMeals']) router.post('/meals-registrations', [InternalsController, 'updateMealsRegistrations']) }) .prefix('/internals') .use(middleware.internal()) const MealsController = () => import('#controllers/meals_controller') router .group(() => { router.post('/', [MealsController, 'create']).use(middleware.internal()) router.get('/', [MealsController, 'index']).use(middleware.auth()) router.post('/:id', [MealsController, 'registerForMeal']).use(middleware.auth()) }) .prefix('/meals') router.get('/health', async () => { return { status: 'ok' } })