import { auth, config, method, route, swagger, validate, } from "@noderun/hapi-router"; import { Req, Res, ReturnValue } from "#/global"; import Joi from "joi"; import * as bcrypt from "bcrypt"; export default class Index { async css(request: Req, h:Res): ReturnValue{ return h.view("views/css.pug") } @auth() @config({ auth: { mode: "try", }, }) async index(request: Req, h: Res): ReturnValue { if (request.auth.isAuthenticated) { // 登录了 } else { // 未登录 } return h.view("views/index.pug"); } @method("GET") @route("/login") loginView(request, h) { return h.view("views/login.ejs"); } @method("POST") @auth(false) @route("/login") async login(request: Req, h: Res): ReturnValue { const { username, password } = request.payload as any; const User = request.getModel("User") const account = await User.findOne({ where: { username: username } }); if (!account || !(await bcrypt.compare(password, account.password))) { return h.redirect("/login"); } request.cookieAuth.set({ id: account.id }); return h.redirect("/"); } @route("/about") @auth(false) async about(request, h) { console.log(request.auth); console.log(1); try { const User = request.getModel("User"); console.log(await User.findOne({ where: { username: "xieyaxin" } })); } catch (error) { console.log(error); } console.log(2); return h.view("views/about.ejs"); } @route("/{path*}") async 404(req, h) { // 404页面 return h.view("404.pug"); } }