import { Req, Res, ReturnValue } from "#/global" import { LoginUserSchema, RegisterUserSchema, UserSchema } from "@/schema" import { gFail, gSuccess } from "@/util" import { auth, config, method, route, route_path, validate } from "@noderun/hapi-router" import * as bcrypt from "bcrypt" /** * 登录界面 */ export default class { @route_path("/register") @auth("try") @method("GET") async register_GET(request: Req, h: Res): ReturnValue { if (request.auth.isAuthenticated) { request.yar.flash("warning", "您已经登陆") return h.redirect("/") } else { logger.debug("未登录") } return h.view("views/register.pug") } @validate({ payload: RegisterUserSchema, $errto: "/register", failAction: "function", failReason: "注册账户不符合规范", }) @method("POST") @route_path("/register") async register_POST(request: Req, h: Res): ReturnValue { console.log(request) let { username, password } = request.payload as any const User = request.getModel("User") logger.trace("当前注册用户:" + username) try { const result = await User.findOne({ where: { username: username } }) if (result != null) { request.yar.flash("error", "已存在该用户") return h.redirect("/register") } let salt = bcrypt.genSaltSync(10) let pwdLock = bcrypt.hashSync(password, salt) await User.create({ username, password: pwdLock, nickname: username }) request.yar.flash("success", "用户注册成功") return h.redirect("/login") } catch (e) { loggerSite.error(`注册用户失败`, e.message) request.yar.flash("error", "注册用户失败") return h.redirect("/register") } } }