add registration form

This commit is contained in:
TuxCoder 2020-05-27 21:16:14 +02:00
parent 4150853588
commit daab0f063d
5 changed files with 44 additions and 3 deletions

View file

@ -4,13 +4,14 @@ from wtforms import StringField, SubmitField, TextField, \
TextAreaField, PasswordField, IntegerField, FloatField, \ TextAreaField, PasswordField, IntegerField, FloatField, \
DateTimeField, DateField, FormField, BooleanField, \ DateTimeField, DateField, FormField, BooleanField, \
SelectField, Form as NoCsrfForm, SelectMultipleField SelectField, Form as NoCsrfForm, SelectMultipleField
from wtforms.fields.html5 import EmailField
from wtforms.widgets.html5 import NumberInput, DateInput from wtforms.widgets.html5 import NumberInput, DateInput
from wtforms.validators import DataRequired, NumberRange, Optional, NoneOf, Length from wtforms.validators import DataRequired, NumberRange, Optional, NoneOf, Length
from datetime import datetime from datetime import datetime
class LoginForm(FlaskForm): class LoginForm(FlaskForm):
name = StringField(gettext('User Name'), validators=[DataRequired()]) name = StringField(gettext('Username'), validators=[DataRequired()])
submit = SubmitField(gettext('Login')) submit = SubmitField(gettext('Login'))
@ -35,3 +36,9 @@ class ConsentForm(FlaskForm):
remember = BooleanField(gettext('remember me')) remember = BooleanField(gettext('remember me'))
submit = SubmitField() submit = SubmitField()
class RegistrationForm(FlaskForm):
username = StringField(gettext('Username'), validators=[DataRequired()])
password = PasswordField(gettext('Password'), validators=[DataRequired()])
alternative_email = EmailField(gettext('Alternative Email'))
submit = SubmitField()

View file

@ -318,3 +318,10 @@ class Group(EntryBase):
object_classes = ["top"] object_classes = ["top"]
fullname = AttrDef("cn") fullname = AttrDef("cn")
class UserSignUp(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String, nullable=False)
password = db.Column(db.String, nullable=False)
alternative_email = db.Column(db.String)

View file

@ -13,9 +13,10 @@ import logging
from urllib.parse import urlparse from urllib.parse import urlparse
from base64 import b64decode, b64encode from base64 import b64decode, b64encode
import http import http
import crypt
from ..model import db, User, SecurityUser from ..model import db, User, SecurityUser, UserSignUp
from ..form.auth import ConsentForm, LoginForm from ..form.auth import ConsentForm, LoginForm, RegistrationForm
from ..auth_providers import AUTH_PROVIDER_LIST from ..auth_providers import AUTH_PROVIDER_LIST
@ -118,3 +119,16 @@ def logout():
return redirect(resp.redirect_to) return redirect(resp.redirect_to)
@auth_views.route("/sign_up", methods=["GET", "POST"])
def sign_up():
form = RegistrationForm()
if form.validate_on_submit():
user = UserSignUp()
user.username = form.data['username']
user.password = crypt.crypt(form.data['password'])
user.alternative_email = form.data['alternative_email']
db.session.add(user)
db.session.commit()
return render_template('auth/sign_up.html.j2', form=form)

View file

@ -7,5 +7,7 @@
{{ render_form(form) }} {{ render_form(form) }}
<a href="{{ url_for('.sign_up') }}" class="btn btn-primary">Sign Up</a>
{% endblock %} {% endblock %}

View file

@ -0,0 +1,11 @@
{% extends 'auth/base.html.j2' %}
{% block title %}{{ gettext('Sign Up') }}{% endblock %}
{% block content %}
{{ render_form(form) }}
{% endblock %}