Ajout contraintes

This commit is contained in:
2026-08-31 16:57:49 +02:00
parent 2acccb2574
commit 4dc62bcb25
2 changed files with 21 additions and 5 deletions
+9 -3
View File
@@ -1,6 +1,6 @@
from datetime import datetime
from flask import Flask, Blueprint, flash, render_template, request, url_for
import ldap, ldap.filter, os
import ldap, ldap.filter, os, re
from app.exceptions import LoginNotFoundException, MultipleUsersFoundForLoginException
from flask_migrate import Migrate
from flask_mail import Mail, Message
@@ -11,6 +11,10 @@ load_dotenv()
f_app = Flask(__name__)
f_app.secret_key = os.getenv("SECRET_KEY")
PASSWORD_PATTERN = re.compile(
r"""[A-Za-z0-9@#$%^&*\-_=+\[\]{}|\\:',.?/`~"();<> ]{5,255}"""
)
bp = Blueprint('mdp', __name__)
f_app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("DATABASE_URI")
@@ -114,7 +118,9 @@ def password_reset_form(token: str = None):
if not newpassword:
error = "Le champ 'mot de passe' ne peut pas être vide."
elif not PASSWORD_PATTERN.fullmatch(newpassword):
error = "Le mot de passe ne respecte pas les contraintes."
if error is not None:
flash(error)
return render_template('pages/password_reset_form.html.j2')
@@ -193,4 +199,4 @@ def ldap_set_password(user_dn: str, newpassword: str):
conn.modify_s(user_dn, [(ldap.MOD_REPLACE, 'unicodePwd', ['"{0}"'.format(newpassword).encode('utf-16-le')])])
f_app.register_blueprint(bp)
f_app.register_blueprint(bp)
@@ -5,13 +5,23 @@
{% block content %}
<div>
<p class="mb-5">Définissez votre nouveau mot de passe</p>
<p class="mb-5">
<span class="font-bold">Taille minimum&nbsp;:</span> 5 caractères<br>
<span class="font-bold">Taille maximum&nbsp;:</span> 255 caractères<br>
<span class="font-bold">Caractères autorisés&nbsp;:</span><br>
&nbsp; • A-Z<br>
&nbsp; • a-z<br>
&nbsp; • 0-9<br>
&nbsp; • @ # $ % ^ &amp; * - _ ! + = [ ] { } | \ : ' , . ? / ` ~ " ( ) ; &lt; &gt;<br>
&nbsp; • Espace
</p>
<form method="POST">
<div class="mb-5">
<label class="block mb-2 text-sm font-medium text-gray-900" for="newpasswd">Nouveau mot de passe</label>
<input type="password" name="newpasswd" id="newpasswd" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5" required>
<input type="password" name="newpasswd" id="newpasswd" class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5" pattern="^[A-Za-z0-9@#$%^&*\-_=+\[\]{}|\\:',.?/`~&quot;();<> ]{5,255}$" minlength="5" maxlength="255" required>
</div>
<button class="text-white bg-red-600 hover:bg-red-700 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center" type="submit">Enregistrer</button>
</form>
</div>
{% endblock %}
{% endblock %}