User registration v1 added

This commit is contained in:
Josako
2024-04-23 08:55:08 +02:00
parent fd25c39395
commit 60bc75010d
5 changed files with 81 additions and 9 deletions

View File

@@ -48,6 +48,8 @@ class User(db.Model):
is_active = db.Column(db.Boolean, default=True)
is_tester = db.Column(db.Boolean, default=False)
is_admin = db.Column(db.Boolean, default=False)
is_super = db.Column(db.Boolean, default=False)
confirmed_at = db.Column(db.DateTime, nullable=True)
valid_to = db.Column(db.Date, nullable=True)
# Login Information

View File

@@ -14,6 +14,14 @@
<div><a href="/register">Register</a></div>
<div><a href="/login">Login</a></div>
<hr>
{% with messages = get_flashed_messages()%}
{% if messages%}
{% for message in messages%}
<p>{{message}}</p>
{%endfor%}
{%endif%}
{%endwith%}
<hr>
{% block content %}{% endblock %}
<!-- Optional JavaScript -->

View File

@@ -0,0 +1,53 @@
{% extends 'base.html' %}
{% block title %}User Details{% endblock %}
{% block content %}
<form action="" method="post" novalidate>
<p>
{{ form.user_name.label }}<br>
{{ form.user_name(size=80) }}
</p>
<p>
{{ form.email.label }}<br>
{{ form.email(size=80) }}
</p>
<p>
{{ form.password.label }}<br>
{{ form.password(size=80) }}
</p>
<p>
{{ form.first_name.label }}<br>
{{ form.first_name(size=80) }}
</p>
<p>
{{ form.last_name.label }}<br>
{{ form.last_name(size=80) }}
</p>
<p>
{{ 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() }}
</p>
<p>
{{ form.tenant_id.label }}<br>
{{ form.tenant_id() }}
</p>
<p>{{ form.submit() }}</p>
</form>
{% endblock %}

View File

@@ -21,6 +21,7 @@ class UserForm(FlaskForm):
is_active = BooleanField('Is Active')
is_tester = BooleanField('Is Tester')
is_admin = BooleanField('Is Administrator')
valid_to: DateField('Valid To', id='datepicker')
tenant = IntegerField('Tenant ID', validators=[NumberRange(min=0)])
is_super = BooleanField('Is Super User')
valid_to = DateField('Valid to', id='datepicker')
tenant_id = IntegerField('Tenant ID', validators=[NumberRange(min=0)])
submit = SubmitField('Submit')

View File

@@ -2,7 +2,7 @@
from datetime import datetime as dt, timezone as tz
from flask import request, redirect, url_for, flash, render_template, Blueprint
from ..models.user import User, Tenant
from ..extensions import db
from ..extensions import db, bcrypt
from .user_forms import TenantForm, UserForm
user_bp = Blueprint('user_bp', __name__, url_prefix='/user')
@@ -60,7 +60,7 @@ def tenant():
def user():
if request.method == 'POST':
# Handle the required attributes
username = request.form.get('username')
username = request.form.get('user_name')
email = request.form.get('email')
password = request.form.get('password')
first_name = request.form.get('first_name')
@@ -78,12 +78,16 @@ def user():
elif not last_name:
error = 'Last name is required.'
if error is None:
new_user = User(username=username, email=email, password=password, first_name=first_name, last_name=last_name)
password_hash = bcrypt.generate_password_hash(password).decode('utf-8')
# Create new user if there is no error
new_user = User(user_name=username, email=email, password=password_hash, first_name=first_name, last_name=last_name)
# Handle optional attributes
new_user.is_active = request.form.get('is_active')
new_user.is_tester = request.form.get('is_tester')
new_user.is_admin = request.form.get('is_admin')
new_user.is_active = bool(request.form.get('is_active'))
new_user.is_tester = bool(request.form.get('is_tester'))
new_user.is_admin = bool(request.form.get('is_admin'))
new_user.is_super = bool(request.form.get('is_super'))
new_user.valid_to = request.form.get('valid_to')
# Handle Timestamps
@@ -92,7 +96,11 @@ def user():
new_user.updated_at = timestamp
# Handle the relations
new_user.tenant_id = request.form.get('tenant_id')
tenant_id = request.form.get('tenant_id')
the_tenant = Tenant.query.get(tenant_id)
new_user.tenant = the_tenant
# Add the new user to the database and commit the changes
try:
db.session.add(new_user)