You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

44 lines
1.5 KiB

import Router from "utils/router.js"
import UserService from "services/UserService.js"
class PageController {
constructor() {
this.userService = new UserService()
}
async index(ctx) {
const user = ctx.state.user
return await ctx.render("page/index/index", { title: "沧源一场", user: user })
}
async loginPost(ctx) {
const { username, email, password } = ctx.request.body
const result = await this.userService.login({ username, email, password })
ctx.session.user = result.user
ctx.body = { success: true, message: "登录成功" }
}
async registerPost(ctx) {
const { username, email, password } = ctx.request.body
await this.userService.register({ username, email, password })
return ctx.redirect("/login")
}
page(name, data) {
return async ctx => {
return await ctx.render(name, data)
}
}
static createRoutes() {
const controller = new PageController()
const router = new Router({ auth: "try" })
router.get("/", controller.index.bind(controller))
router.get("/login", controller.page("page/login/index", { title: "登录" }), { auth: false })
router.post("/login", controller.loginPost.bind(controller), { auth: false })
router.get("/register", controller.page("page/register/index", { title: "注册" }), { auth: false })
router.post("/register", controller.registerPost.bind(controller), { auth: false })
return router
}
}
export default PageController