refactor security to Flask-Security - Part 2

This commit is contained in:
Josako
2024-04-26 16:23:17 +02:00
parent a37b551e53
commit 9c1a3e8f55
22 changed files with 173 additions and 299 deletions

View File

@@ -35,17 +35,36 @@
<hr>
<div class="container">
<div class="row">
<div class="col-md-12">
<span></span>
</div>
<div class="col-md-12">
<span>
{% block content %}{% endblock %}
<div class="container mb-4">
<div class="row mt-lg-n12 mt-md-n12 mt-n12 justify-content-center">
<div class="col-xl-8 col-lg-5 col-md-7 mx-auto">
<div class="card mt-8">
<div class="card-header p-0 position-relative mt-n4 mx-3 z-index-2">
<div class="bg-gradient-success shadow-success border-radius-lg py-3 pe-1 text-center py-4">
<h4 class="font-weight-bolder text-white mt-1">
{% block content_title %}{% endblock %}
</h4>
<p class="mb-1 text-sm text-white">
{% block content_description %}{% endblock %}
</p>
</div>
</div>
<div class="card-body">
{% block content %}{% endblock %}
</div>
<div class="card-footer text-center pt-0 px-lg-2 px-1">
<p class="mb-4 text-sm mx-auto">
{% block content_footer %}{% endblock %}
</p>
</div>
</div>
</div>
</div>
</div>
</span>
</div>
<div class="col-md-12">
<span></span>
</div>
</div>
</div>
<hr>
@@ -56,6 +75,7 @@
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
{% block scripts %}
{%- endblock scripts %}
</body>
</html>

View File

@@ -1,5 +1,5 @@
<header class="header-2">
<div class="page-header min-vh-75" style="background-image: url({{url_for('static', filename='/assets/img/EveAI_bg1.jpg')}})" loading="lazy">
<div class="page-header min-vh-75" style="background-image: url({{url_for('static', filename='/assets/img/EveAI_bg2.jpg')}})" loading="lazy">
<span class="mask bg-gradient-primary opacity-4"></span>
<div class="container">
<div class="row">

View File

@@ -1,17 +0,0 @@
{% extends 'base.html' %}
{% block title %}Login{% endblock %}
{% block content %}
<form action="" method="post" novalidate>
<p>
{{ form.email.label }}<br>
{{ form.email(size=80) }}
</p>
<p>
{{ form.password.label }}<br>
{{ form.password(size=80) }}
</p>
<p>{{ form.submit() }}</p>
</form>
{% endblock %}

View File

@@ -1,17 +0,0 @@
{% extends 'base.html' %}
{% block title %}Login{% endblock %}
{% block content %}
<form action="" method="post" novalidate>
<p>
{{ form.email.label }}<br>
{{ form.email(size=80) }}
</p>
<p>
{{ form.password.label }}<br>
{{ form.password(size=80) }}
</p>
<p>{{ form.submit() }}</p>
</form>
{% endblock %}

View File

@@ -0,0 +1,3 @@
{# djlint:off H030,H031 #}
{% extends 'base.html' %}

View File

@@ -0,0 +1,18 @@
{% extends "security/base.html" %}
{% from "security/_macros.html" import render_field_with_errors, render_field, render_field_errors, render_form_errors %}
{% block content_title %}
{{ _fsdomain('Send password reset instructions') }}
{% endblock content_title %}
{% block content %}
{% include "security/_messages.html" %}
<form action="{{ url_for_security('forgot_password') }}" method="post" name="forgot_password_form">
{{ forgot_password_form.hidden_tag() }}
{{ render_form_errors(forgot_password_form) }}
{{ render_field_with_errors(forgot_password_form.email) }}
{{ render_field_errors(forgot_password_form.csrf_token) }}
{{ render_field(forgot_password_form.submit) }}
</form>
{% include "security/_menu.html" %}
{% endblock content %}

View File

@@ -0,0 +1,29 @@
{% extends 'security/base.html' %}
{% block title %}Login{% endblock %}
{% block content_title %}Sign In{% endblock %}
{% block content_description %}Enter your email and password to Sign In{% endblock %}
{% block content %}
<form action="" method="post" novalidate>
{{ login_user_form.hidden_tag() }}
<p>
{{ login_user_form.email.label }}<br>
{{ login_user_form.email(size=80) }}
</p>
<p>
{{ login_user_form.password.label }}<br>
{{ login_user_form.password(size=80) }}
</p>
{# <p>#}
{# {{ login_user_form.remember_me }}#}
{# {{ login_user_form.remember_me.label }}#}
{# </p>#}
<p>{{ login_user_form.submit() }}</p>
</form>
{% endblock %}
{% block content_footer %}
First time here? Forgot your password?
<a href="/reset" class="text-success text-gradient font-weight-bold">Request new password</a>
{% endblock %}
{#{{ url_for_security('reset_password', token=reset_password_token) }}#}

View File

@@ -0,0 +1,19 @@
{% extends "security/base.html" %}
{% from "security/_macros.html" import render_field_with_errors, render_field, render_field_errors, render_form_errors %}
{% block title %} {{ _fsdomain('Reset password') }} {% endblock %}
{% block content_title %} {{ _fsdomain('Reset password') }} {% endblock %}
{% block content_description %}An email will be sent to you with instructions.{% endblock %}
{% block content %}
{% include "security/_messages.html" %}
{# <form action="{{ url_for_security('reset_password', token=reset_password_token) }}" method="post" name="reset_password_form">#}
<form action="" method="post">
{{ reset_password_form.hidden_tag() }}
{{ render_form_errors(reset_password_form) }}
{{ render_field_with_errors(reset_password_form.password) }}
{{ render_field_with_errors(reset_password_form.password_confirm) }}
{{ render_field_errors(reset_password_form.csrf_token) }}
{{ render_field(reset_password_form.submit) }}
</form>
{# {% include "security/_menu.html" %}#}
{% endblock content %}

View File

@@ -0,0 +1,25 @@
{% extends "base.html" %}
{% block title %}Update User{% endblock %}
{% block content_title %}Update User{% endblock %}
{% block content_description %}Update given user account{% endblock %}
{% block content %}
<form method="post">
{{ form.hidden_tag() }}
{% for field in form %}
<div class="form-group">
{{ field.label }}
{{ field(class="form-control", disabled=true) if field.name in ['email', 'user_name'] else field(class="form-control") }}
{% if field.errors %}
<div class="alert alert-danger">
{% for error in field.errors %}
<p>{{ error }}</p>
{% endfor %}
</div>
{% endif %}
</div>
{% endfor %}
<button type="submit" class="btn btn-primary">Update User</button>
</form>
{% endblock %}

View File

@@ -1,9 +1,13 @@
{% extends 'base.html' %}
{% block title %}User Details{% endblock %}
{% block title %}User Registration{% endblock %}
{% block content_title %}Register User{% endblock %}
{% block content_description %}Make a new user account{% endblock %}
{% block content %}
<form action="" method="post" novalidate>
<form action="" method="post">
{{ form.hidden_tag() }}
<p>
{{ form.user_name.label }}<br>
{{ form.user_name(size=80) }}
@@ -16,6 +20,10 @@
{{ form.password.label }}<br>
{{ form.password(size=80) }}
</p>
<p>
{{ form.confirm_password.label }}<br>
{{ form.confirm_password(size=80) }}
</p>
<p>
{{ form.first_name.label }}<br>
{{ form.first_name(size=80) }}
@@ -28,18 +36,6 @@
{{ form.is_active.label }}<br>
{{ form.is_active() }}
</p>
<p>
{{ form.is_tester.label }}<br>
{{ form.is_tester() }}
</p>
<p>
{{ form.is_admin.label }}<br>
{{ form.is_admin() }}
</p>
<p>
{{ form.is_super.label }}<br>
{{ form.is_super() }}
</p>
<p>
{{ form.valid_to.label }}<br>
{{ form.valid_to() }}
@@ -51,3 +47,8 @@
<p>{{ form.submit() }}</p>
</form>
{% endblock %}
{% block content_footer %}
{% endblock %}