import Router from "utils/router.js" import { logger } from "@/logger.js" import BaseController from "@/base/BaseController.js" import AuthService from "../services" export default class AuthController extends BaseController { /** * 创建基础页面相关路由 * @returns {Router} 路由实例 */ static createRoutes() { const controller = new this() const router = new Router({ auth: false }) router.get("/login", controller.handleRequest(controller.loginGet)) router.post("/login", controller.handleRequest(controller.loginPost)) router.post("/login/validate/username", controller.handleRequest(controller.validateUsername)) router.post("/login/validate/password", controller.handleRequest(controller.validatePassword)) router.post("/logout", controller.handleRequest(controller.logout), { auth: true }) return router } constructor() { super() } // 首页 async loginGet(ctx) { return this.render(ctx, "page/login/index", {}) } async loginPost(ctx) { const res = await AuthService.login(ctx.request.body) ctx.session.user = res.user ctx.set("HX-Redirect", "/") } async validateUsername(ctx) { const { username } = ctx.request.body const uiPath = "page/login/_ui/username" if (username === "") { return this.render(ctx, uiPath, { value: username, error: "用户名不能为空", }) } return this.render(ctx, uiPath, { value: username, error: undefined, }) } async validatePassword(ctx) { const { password } = ctx.request.body const uiPath = "page/login/_ui/password" if (password === "") { return this.render(ctx, uiPath, { value: password, error: "密码不能为空", }) } return this.render(ctx, uiPath, { value: password, error: undefined, }) } async logout(ctx) { ctx.session.user = null ctx.set("HX-Redirect", "/") } }