api/start/routes.ts
2025-08-19 19:32:12 +02:00

60 lines
2.2 KiB
TypeScript

/*
|--------------------------------------------------------------------------
| 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())
// TEST ROUTE
// import redis from '@adonisjs/redis/services/main'
// router.get('/', async () => {
// await redis.publish("jobs_queue", JSON.stringify({
// type: 1,
// date: "20/09/2019",
// class_name: "MPSI 2",
// }))
// return { message: 'Hello, world!' }
// })
// END TEST ROUTE
const CollesController = () => import('#controllers/colles_controller')
router.group(() => {
// TODO: PRIVATE ROUTES
router.post('/', [CollesController, 'create'])
router.post('/upcoming', [CollesController, 'createUpcoming'])
router.get('/', [CollesController, 'index']).use(middleware.auth())
router.get('/:colleId', [CollesController, 'show']).use(middleware.auth())
}
).prefix('/colles')