增加ejs模版, 用于渲染email验证结果
This commit is contained in:
parent
d39d4d3f10
commit
4c4879a06c
@ -17,9 +17,11 @@
|
||||
"@fastify/formbody": "^7.3.0",
|
||||
"@fastify/helmet": "^10.0.1",
|
||||
"@fastify/jwt": "^6.3.2",
|
||||
"@fastify/view": "^7.4.1",
|
||||
"axios": "^1.1.3",
|
||||
"crypto": "^1.0.1",
|
||||
"dotenv": "^16.0.3",
|
||||
"ejs": "^3.1.9",
|
||||
"fast-rbac": "^2.0.1",
|
||||
"fastify": "^4.8.1",
|
||||
"fastify-plugin": "^4.2.1",
|
||||
|
@ -30,6 +30,11 @@ export class ApiServer {
|
||||
this.server.register(zReqParserPlugin)
|
||||
this.server.register(helmet, { hidePoweredBy: false })
|
||||
this.server.register(zTokenParserPlugin)
|
||||
this.server.register(require("@fastify/view"), {
|
||||
engine: {
|
||||
ejs: require("ejs"),
|
||||
},
|
||||
});
|
||||
|
||||
this.server.register(apiAuthPlugin, {
|
||||
secret: config.api.token_secret,
|
||||
|
@ -5,8 +5,8 @@ import {Account} from "modules/Account"
|
||||
import {DEFAULT_VERIFY_HTML, EmailSvr} from "service/email.svr"
|
||||
|
||||
const TOKEN_PREFIX = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.'
|
||||
class VerifyController extends BaseController {
|
||||
|
||||
class VerifyController extends BaseController {
|
||||
@router('post /email/verify')
|
||||
async sendVerifyEmail(req, res) {
|
||||
let user = req.user
|
||||
@ -34,20 +34,25 @@ class VerifyController extends BaseController {
|
||||
async verifyEmail(req, res) {
|
||||
let { k } = req.params
|
||||
if (!k) {
|
||||
throw new ZError(10, 'params mismatch')
|
||||
return res.view("/templates/verify_email_error.ejs", { msg: "params mismatch" });
|
||||
}
|
||||
const token = k.indexOf(TOKEN_PREFIX) === -1 ? TOKEN_PREFIX + k : k
|
||||
const reqData = await req.jwtVerify({ extractToken: () => token})
|
||||
let reqData;
|
||||
try {
|
||||
reqData = await req.jwtVerify({ extractToken: () => token})
|
||||
} catch (err) {
|
||||
return res.view("/templates/verify_email_error.ejs", { msg: "token invalid." });
|
||||
}
|
||||
if (!reqData || !reqData.id) {
|
||||
throw new ZError(12, 'token error')
|
||||
return res.view("/templates/verify_email_error.ejs", { msg: "token error." });
|
||||
}
|
||||
let user = await Account.findById(reqData.id)
|
||||
if (!user) {
|
||||
throw new ZError(13, 'user not found')
|
||||
return res.view("/templates/verify_email_error.ejs", { msg: "user not found." });
|
||||
}
|
||||
user.verified = true
|
||||
user.emailVerifyTime = Date.now()
|
||||
await user.save()
|
||||
return {}
|
||||
return res.view("/templates/verify_email_success.ejs" );
|
||||
}
|
||||
}
|
||||
|
2
templates/verify_email_error.ejs
Normal file
2
templates/verify_email_error.ejs
Normal file
@ -0,0 +1,2 @@
|
||||
<h1>Email Verify Failed</h1>
|
||||
<p><%= msg %></p>
|
2
templates/verify_email_success.ejs
Normal file
2
templates/verify_email_success.ejs
Normal file
@ -0,0 +1,2 @@
|
||||
<h1>Email Verified</h1>
|
||||
<p>Thank you, your email address has been verified, and your account is now fully active.</p>
|
58
yarn.lock
58
yarn.lock
@ -85,6 +85,14 @@
|
||||
fastify-plugin "^4.0.0"
|
||||
steed "^1.1.3"
|
||||
|
||||
"@fastify/view@^7.4.1":
|
||||
version "7.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@fastify/view/-/view-7.4.1.tgz#265daba48386a5d3f69dfc446af468d72e0a8757"
|
||||
integrity sha512-ahmRmSbNVM8bIoz0BAFnY0jNigom+xbPQ9Q1ZjmNOtGVVT3nYXCxw2OMkTr9iXwrJ4Le3EtWDHlFkZ2fCQ2hJA==
|
||||
dependencies:
|
||||
fastify-plugin "^4.0.0"
|
||||
hashlru "^2.3.0"
|
||||
|
||||
"@humanwhocodes/config-array@^0.10.5":
|
||||
version "0.10.7"
|
||||
resolved "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.10.7.tgz#6d53769fd0c222767e6452e8ebda825c22e9f0dc"
|
||||
@ -491,6 +499,11 @@ asn1.js@^5.3.0:
|
||||
minimalistic-assert "^1.0.0"
|
||||
safer-buffer "^2.1.0"
|
||||
|
||||
async@^3.2.3:
|
||||
version "3.2.4"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
|
||||
integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
|
||||
|
||||
asynckit@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||
@ -552,6 +565,13 @@ brace-expansion@^1.1.7:
|
||||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
|
||||
brace-expansion@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
|
||||
integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
|
||||
dependencies:
|
||||
balanced-match "^1.0.0"
|
||||
|
||||
braces@^3.0.2, braces@~3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
|
||||
@ -597,7 +617,7 @@ callsites@^3.0.0:
|
||||
resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
|
||||
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
|
||||
|
||||
chalk@^4.0.0:
|
||||
chalk@^4.0.0, chalk@^4.0.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
|
||||
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
|
||||
@ -738,6 +758,13 @@ ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11:
|
||||
dependencies:
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
ejs@^3.1.9:
|
||||
version "3.1.9"
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361"
|
||||
integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==
|
||||
dependencies:
|
||||
jake "^10.8.5"
|
||||
|
||||
escape-string-regexp@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
|
||||
@ -1031,6 +1058,13 @@ file-entry-cache@^6.0.1:
|
||||
dependencies:
|
||||
flat-cache "^3.0.4"
|
||||
|
||||
filelist@^1.0.1:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
|
||||
integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==
|
||||
dependencies:
|
||||
minimatch "^5.0.1"
|
||||
|
||||
fill-range@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
|
||||
@ -1213,6 +1247,11 @@ has@^1.0.3:
|
||||
dependencies:
|
||||
function-bind "^1.1.1"
|
||||
|
||||
hashlru@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/hashlru/-/hashlru-2.3.0.tgz#5dc15928b3f6961a2056416bb3a4910216fdfb51"
|
||||
integrity sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==
|
||||
|
||||
helmet@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.npmmirror.com/helmet/-/helmet-6.0.0.tgz#8e183820ddccd7729a206ad73c577b264f495595"
|
||||
@ -1313,6 +1352,16 @@ isexe@^2.0.0:
|
||||
resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
|
||||
|
||||
jake@^10.8.5:
|
||||
version "10.8.5"
|
||||
resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46"
|
||||
integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==
|
||||
dependencies:
|
||||
async "^3.2.3"
|
||||
chalk "^4.0.2"
|
||||
filelist "^1.0.1"
|
||||
minimatch "^3.0.4"
|
||||
|
||||
jose@^2.0.6:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.npmmirror.com/jose/-/jose-2.0.6.tgz#894ba19169af339d3911be933f913dd02fc57c7c"
|
||||
@ -1580,6 +1629,13 @@ minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimatch@^5.0.1:
|
||||
version "5.1.6"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
|
||||
integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimist@^1.2.6:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
|
||||
|
Loading…
x
Reference in New Issue
Block a user