project-nomad/admin/app/middleware/require_admin_middleware.ts

21 lines
629 B
TypeScript

import type { HttpContext } from '@adonisjs/core/http'
import type { NextFn } from '@adonisjs/core/types/http'
export default class RequireAdminMiddleware {
async handle(ctx: HttpContext, next: NextFn) {
if (ctx.session.get('admin.isLoggedIn')) {
return next()
}
if (ctx.request.accepts(['html', 'json']) === 'json') {
return ctx.response.status(403).send({
success: false,
message: 'Admin login is required.',
})
}
const redirectTo = encodeURIComponent(ctx.request.url(true))
return ctx.response.redirect().toPath(`/home?adminLogin=1&redirect=${redirectTo}`)
}
}