Ajout contraintes
This commit is contained in:
+9
-3
@@ -1,6 +1,6 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from flask import Flask, Blueprint, flash, render_template, request, url_for
|
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 app.exceptions import LoginNotFoundException, MultipleUsersFoundForLoginException
|
||||||
from flask_migrate import Migrate
|
from flask_migrate import Migrate
|
||||||
from flask_mail import Mail, Message
|
from flask_mail import Mail, Message
|
||||||
@@ -11,6 +11,10 @@ load_dotenv()
|
|||||||
f_app = Flask(__name__)
|
f_app = Flask(__name__)
|
||||||
f_app.secret_key = os.getenv("SECRET_KEY")
|
f_app.secret_key = os.getenv("SECRET_KEY")
|
||||||
|
|
||||||
|
PASSWORD_PATTERN = re.compile(
|
||||||
|
r"""[A-Za-z0-9@#$%^&*\-_=+\[\]{}|\\:',.?/`~"();<> ]{5,255}"""
|
||||||
|
)
|
||||||
|
|
||||||
bp = Blueprint('mdp', __name__)
|
bp = Blueprint('mdp', __name__)
|
||||||
|
|
||||||
f_app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("DATABASE_URI")
|
f_app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("DATABASE_URI")
|
||||||
@@ -114,7 +118,9 @@ def password_reset_form(token: str = None):
|
|||||||
|
|
||||||
if not newpassword:
|
if not newpassword:
|
||||||
error = "Le champ 'mot de passe' ne peut pas être vide."
|
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:
|
if error is not None:
|
||||||
flash(error)
|
flash(error)
|
||||||
return render_template('pages/password_reset_form.html.j2')
|
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')])])
|
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 %}
|
{% block content %}
|
||||||
<div>
|
<div>
|
||||||
<p class="mb-5">Définissez votre nouveau mot de passe</p>
|
<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">
|
<form method="POST">
|
||||||
<div class="mb-5">
|
<div class="mb-5">
|
||||||
<label class="block mb-2 text-sm font-medium text-gray-900" for="newpasswd">Nouveau mot de passe</label>
|
<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>
|
</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>
|
<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>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
Reference in New Issue
Block a user