From f21f3fff3f7798ab1784f8ac8b810f670d629394 Mon Sep 17 00:00:00 2001 From: Minh Duong <github@whitehoodhacker.net> Date: Wed, 26 Jun 2024 09:59:09 -0700 Subject: [PATCH] Add additional verify confirmation button --- client/src/routes/verify.js | 43 ++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/client/src/routes/verify.js b/client/src/routes/verify.js index 61851756a..6cd68b8e8 100644 --- a/client/src/routes/verify.js +++ b/client/src/routes/verify.js @@ -1,3 +1,4 @@ +import { Fragment } from 'preact' import { useEffect, useState } from 'preact/hooks' import Error from './error' import config from '../config' @@ -8,25 +9,41 @@ const Verify = () => { const [authToken, setAuthToken] = useState(null) const [emailSet, setEmailSet] = useState(false) const [error, setError] = useState(null) + const [pending, setPending] = useState(true) useEffect(() => { document.title = `Verify | ${config.ctfName}` + }, []) - ;(async () => { - const qs = new URLSearchParams(location.search) - if (qs.has('token')) { - const verifyRes = await verify({ verifyToken: qs.get('token') }) - if (verifyRes.authToken) { - setAuthToken(verifyRes.authToken) - } else if (verifyRes.emailSet) { - setEmailSet(true) - } else { - setError(verifyRes.verifyToken) - } + const handleVerifyClick = async () => { + const qs = new URLSearchParams(location.search) + if (qs.has('token')) { + const verifyRes = await verify({ verifyToken: qs.get('token') }) + if (verifyRes.authToken) { + setAuthToken(verifyRes.authToken) + } else if (verifyRes.emailSet) { + setEmailSet(true) + } else { + setError(verifyRes.verifyToken) } - })() - }, []) + } else { + setError("No token was provided!") + } + setPending(false) + } + if (pending) { + return ( + <Fragment> + <div class='row u-center'> + <h3>Finish verifying your action</h3> + </div> + <div class='row u-center'> + <button class='btn-info' onClick={() => handleVerifyClick()}>Verify</button> + </div> + </Fragment> + ) + } if (error) { return <Error error='401' message={error} /> }