feat: html email
All checks were successful
Deploy Production Server / if_merged (pull_request) Successful in 10m5s
All checks were successful
Deploy Production Server / if_merged (pull_request) Successful in 10m5s
This commit is contained in:
parent
12a75d003c
commit
254fd7d73f
@ -270,9 +270,95 @@ public class KeycloakService {
|
|||||||
.invoke(user -> membreModel.setUserId(user.getId()))
|
.invoke(user -> membreModel.setUserId(user.getId()))
|
||||||
.call(user -> updateRole(user.getId(), List.of("safca_user"), List.of()))
|
.call(user -> updateRole(user.getId(), List.of("safca_user"), List.of()))
|
||||||
.call(user -> enabled_email ? reactiveMailer.send(
|
.call(user -> enabled_email ? reactiveMailer.send(
|
||||||
Mail.withText(user.getEmail(),
|
Mail.withHtml(user.getEmail(), "FFSAF - Creation de votre compte sur l'intranet", String.format(
|
||||||
"FFSAF - Creation de votre compte sur l'intranet",
|
"""
|
||||||
String.format(
|
<!DOCTYPE html>
|
||||||
|
<html data-lt-installed="true">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Création de votre compte intranet FFSAF</title>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #333;
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
background-color: #003366;
|
||||||
|
color: white;
|
||||||
|
padding: 20px;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 5px 5px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
padding: 20px;
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
border-radius: 0 0 5px 5px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 10px 20px;
|
||||||
|
background-color: #003366;
|
||||||
|
color: white !important;
|
||||||
|
text-decoration: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin: 15px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
margin-top: 20px;
|
||||||
|
font-size: 0.9em;
|
||||||
|
color: #666;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #003366;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body data-gramm="false" data-lt-tmp-id="lt-957854">
|
||||||
|
<div class="header">
|
||||||
|
<div><img src="https://intra.ffsaf.fr/Logo-FFSAF-2023.png" alt="ffsaf" height="128">
|
||||||
|
<h1>Fédération France Soft Armored Fighting</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content">
|
||||||
|
<p>Bonjour,</p>
|
||||||
|
<p>Suite à votre première inscription <span class="highlight">%s</span> à la <strong>Fédération France Soft Armored Fighting (FFSAF)</strong>, votre compte intranet a été créé.</p>
|
||||||
|
<p>Ce compte vous permettra de :</p>
|
||||||
|
<ul>
|
||||||
|
<li>Consulter vos informations personnelles,</li>
|
||||||
|
<li>Vous inscrire aux compétitions (bientôt disponible),</li>
|
||||||
|
<li>Consulter les résultats des compétitions.</li>
|
||||||
|
</ul>
|
||||||
|
<p>L’intranet est accessible à l’adresse suivante :</p>
|
||||||
|
<p style="text-align: center;"><a href="https://intra.ffsaf.fr" class="button">Accéder à l'intranet</a></p>
|
||||||
|
<p>Votre nom d’utilisateur est : <span class="highlight">%s</span></p>
|
||||||
|
<p>Pour définir votre mot de passe, rendez-vous sur l’intranet : <strong>Connexion > Mot de passe oublié ?</strong></p>
|
||||||
|
<p>Si vous n’avez pas demandé cette inscription, veuillez contacter le support à l’adresse : <a href="mailto:support@ffsaf.fr">support@ffsaf.fr</a>.</p>
|
||||||
|
<p class="footer">(Pas de panique, nous ne vous enverrons pas de message autre que ceux concernant votre compte.)</p>
|
||||||
|
<p>Cordialement,<br>L’équipe de la FFSAF</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
""",
|
||||||
|
membreModel.getRole() == RoleAsso.MEMBRE ? "par votre club (" + membreModel.getClub()
|
||||||
|
.getName() + ") " : "", user.getUsername())
|
||||||
|
)
|
||||||
|
.setText(String.format(
|
||||||
"""
|
"""
|
||||||
Bonjour,
|
Bonjour,
|
||||||
|
|
||||||
@ -291,8 +377,8 @@ public class KeycloakService {
|
|||||||
L'équipe de la FFSAF
|
L'équipe de la FFSAF
|
||||||
""",
|
""",
|
||||||
membreModel.getRole() == RoleAsso.MEMBRE ? "par votre club (" + membreModel.getClub()
|
membreModel.getRole() == RoleAsso.MEMBRE ? "par votre club (" + membreModel.getClub()
|
||||||
.getName() + ") " : "", user.getUsername())
|
.getName() + ") " : "", user.getUsername()))
|
||||||
).setFrom("FFSAF <no-reply@ffsaf.fr>").setReplyTo("support@ffsaf.fr")
|
.setFrom("FFSAF <no-reply@ffsaf.fr>").setReplyTo("support@ffsaf.fr")
|
||||||
) : Uni.createFrom().nullItem())
|
) : Uni.createFrom().nullItem())
|
||||||
.call(user -> membreService.setUserId(membreModel.getId(), user.getId()))
|
.call(user -> membreService.setUserId(membreModel.getId(), user.getId()))
|
||||||
.call(user -> setClubGroupMembre(membreModel, membreModel.getClub()));
|
.call(user -> setClubGroupMembre(membreModel, membreModel.getClub()));
|
||||||
|
|||||||
BIN
src/main/webapp/public/Logo-FFSAF-2023.png
Normal file
BIN
src/main/webapp/public/Logo-FFSAF-2023.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 155 KiB |
Loading…
x
Reference in New Issue
Block a user