Ajout contraintes
This commit is contained in:
+9
-3
@@ -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 :</span> 5 caractères<br>
|
||||
<span class="font-bold">Taille maximum :</span> 255 caractères<br>
|
||||
<span class="font-bold">Caractères autorisés :</span><br>
|
||||
• A-Z<br>
|
||||
• a-z<br>
|
||||
• 0-9<br>
|
||||
• @ # $ % ^ & * - _ ! + = [ ] { } | \ : ' , . ? / ` ~ " ( ) ; < ><br>
|
||||
• 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@#$%^&*\-_=+\[\]{}|\\:',.?/`~"();<> ]{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 %}
|
||||
|
||||
Reference in New Issue
Block a user