Skip to content

Commit 885972e

Browse files
refactor(send code): create route + page for resend code action
1 parent 9468e72 commit 885972e

File tree

5 files changed

+99
-54
lines changed

5 files changed

+99
-54
lines changed

src/controllers/main.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,3 +296,29 @@ export const getHelpController = async (
296296
next(error);
297297
}
298298
};
299+
300+
export const getVerificationCodeController = async (
301+
req: Request,
302+
res: Response,
303+
next: NextFunction,
304+
) => {
305+
try {
306+
let email: string | undefined;
307+
let user: User | undefined;
308+
let cached_libelle: string | null | undefined;
309+
310+
if (isWithinAuthenticatedSession(req.session)) {
311+
user = getUserFromAuthenticatedSession(req);
312+
email = user.email;
313+
}
314+
315+
return res.render("verification-code", {
316+
pageTitle: "Renvoyer un code",
317+
email,
318+
csrfToken: email && csrfToken(req),
319+
organization_label: cached_libelle,
320+
});
321+
} catch (error) {
322+
next(error);
323+
}
324+
};

src/routers/main.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
getHomeController,
77
getManageOrganizationsController,
88
getPersonalInformationsController,
9+
getVerificationCodeController,
910
postDisableForce2faController,
1011
postEnableForce2faController,
1112
postPersonalInformationsController,
@@ -152,6 +153,14 @@ export const mainRouter = (app: Express) => {
152153
getHelpController,
153154
);
154155

156+
mainRouter.get(
157+
"/verification-code",
158+
urlencoded({ extended: false }),
159+
ejsLayoutMiddlewareFactory(app, true),
160+
csrfProtectionMiddleware,
161+
getVerificationCodeController,
162+
);
163+
155164
return mainRouter;
156165
};
157166

src/views/help.ejs

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,5 @@
11
<div class="page-container">
22
<h2>Questions fréquentes</h2>
3-
<div id="code-verification">
4-
<h3 class="title-with-anchor">
5-
<span>Vous ne recevez pas le code de vérification</span>
6-
<a
7-
aria-label="Lien direct vers section Vous ne recevez pas le code de vérification"
8-
class="fr-btn fr-btn--sm fr-icon-link fr-btn--tertiary-no-outline"
9-
href="#code-verification"
10-
></a>
11-
</h3>
12-
<p>Vous êtes peut-être dans l’une de ces situations :</p>
13-
<ul>
14-
<li class="fr-mb-3w">Vous avez fait une erreur de saisie dans votre adresse
15-
<% if (locals.email) { %>
16-
<span id="email-badge-lowercase" class="fr-badge fr-badge--info fr-badge--no-icon">
17-
<%= email; %>
18-
</span>
19-
<% } else { %>
20-
email
21-
<% } %>
22-
<br>
23-
💡 <b><a class="fr-link" href="/users/start-sign-in">Recréez un compte avec la
24-
bonne adresse</a></b></li>
25-
<li class="fr-mb-3w">Le code est arrivé dans vos courriers indésirables<br>
26-
💡 <b>Vérifiez vos spams</b></li>
27-
<li class="fr-mb-3w">Votre organisation utilise une protection contre les spams (comme MailInBlack)<br>
28-
💡 <b>Contactez votre fournisseur de mail pour qu’il autorise les emails en provenance de
29-
<i>nepasrepondre@email.moncomptepro.beta.gouv.fr</i> (adresse IP : 172.246.41.163)</b>
30-
</li>
31-
<% if (locals.csrfToken) { %>
32-
<li class="fr-mb-3w">Votre code a expiré ou vous avez perdu l’email qui contenait le code<br>
33-
💡 <b>
34-
<form
35-
class="inline-form" autocomplete="off"
36-
action="/users/send-email-verification"
37-
method="post"
38-
>
39-
<input type="hidden" name="_csrf" value="<%= csrfToken; %>" autocomplete="off">
40-
41-
<input
42-
class="fr-link" type="submit"
43-
value="Cliquez ici pour recevoir un nouveau code"
44-
/>
45-
</form>
46-
</b>
47-
</li>
48-
<% } %>
49-
</ul>
50-
<p>Vous n’êtes dans aucune de ces situations ? <a
51-
class="fr-link"
52-
href="mailto:contact@moncomptepro.beta.gouv.fr?subject=Je%20ne%20re%C3%A7ois%20pas%20le%20code%20de%20verification"
53-
>Contactez-nous</a>.
54-
</p>
55-
</div>
563
<% if (locals.email && locals.moderation_id) { %>
574
<div id="modifier-moderation">
585
<h3 class="title-with-anchor">

src/views/user/verify-email.ejs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
<div>
4848
<a
4949
class="fr-link fr-icon-question-line fr-link--icon-left"
50-
href="/help#code-verification"
50+
href="/verification-code"
5151
>
5252
J'ai attendu 15 minutes et je ne reçois pas de code de vérification
5353
</a>

src/views/verification-code.ejs

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<div class="page-container">
2+
<h1 class="fr-h1">Code de vérification</h2>
3+
<div id="code-verification">
4+
<h2 class="title-with-anchor fr-h3">
5+
<span>Vous ne recevez pas le code de vérification</span>
6+
<a
7+
aria-label="Lien direct vers section Vous ne recevez pas le code de vérification"
8+
class="fr-btn fr-btn--sm fr-icon-link fr-btn--tertiary-no-outline"
9+
href="#code-verification"
10+
></a>
11+
</h3>
12+
<p>Vous êtes peut-être dans l’une de ces situations :</p>
13+
<ul>
14+
<li class="fr-mb-3w">Votre code a expiré ou vous avez perdu l’email qui contenait le code<br>
15+
💡 <b>
16+
<form
17+
class="inline-form" autocomplete="off"
18+
action="/users/send-email-verification"
19+
method="post"
20+
>
21+
<input type="hidden" name="_csrf" value="<%= csrfToken; %>" autocomplete="off">
22+
<input
23+
style="font-weight: bold;"
24+
class="fr-link" type="submit"
25+
value="Cliquez ici pour recevoir un nouveau code"
26+
/>
27+
</form>
28+
</b>
29+
</li>
30+
<li class="fr-mb-3w">Vous avez fait une erreur de saisie dans votre adresse
31+
<% if (locals.email) { %>
32+
<span id="email-badge-lowercase" class="fr-badge fr-badge--info fr-badge--no-icon">
33+
<%= email; %>
34+
</span>
35+
<% } else { %>
36+
email
37+
<% } %>
38+
<br>
39+
💡 <b>
40+
<a class="fr-link" href="/users/start-sign-in" style="text-decoration: none;">
41+
Recréez un compte avec la bonne adresse
42+
</a>
43+
</b>
44+
</li>
45+
<li class="fr-mb-3w">Le code est arrivé dans vos courriers indésirables<br>
46+
💡 <b>Vérifiez vos spams</b>
47+
</li>
48+
<li class="fr-mb-3w">Votre organisation utilise une protection contre les spams (comme MailInBlack)<br>
49+
💡<b> Contactez votre fournisseur de mail pour qu’il autorise les emails en provenance de
50+
<i>nepasrepondre@email.moncomptepro.beta.gouv.fr</i> (adresse IP : 172.246.41.163)
51+
</b>
52+
</li>
53+
</ul>
54+
<p>Vous n’êtes dans aucune de ces situations ?
55+
<a
56+
class="fr-link"
57+
href="mailto:contact@moncomptepro.beta.gouv.fr?subject=Je%20ne%20re%C3%A7ois%20pas%20le%20code%20de%20verification"
58+
>
59+
Contactez-nous
60+
</a>.
61+
</p>
62+
</div>
63+
</div>

0 commit comments

Comments
 (0)