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
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
|
|
|