From fecb0e08ab15495d30302382df02060968c9d5f5 Mon Sep 17 00:00:00 2001 From: Cara Salter Date: Mon, 5 Dec 2022 16:50:52 -0500 Subject: [PATCH] reg: Initial work on registration --- goathacks/__init__.py | 4 ++++ goathacks/models.py | 12 ++++++++++++ goathacks/registration/__init__.py | 12 ++++++++++++ goathacks/registration/forms.py | 13 +++++++++++++ goathacks/templates/.gitkeep | 0 requirements.txt | 2 ++ 6 files changed, 43 insertions(+) create mode 100644 goathacks/registration/__init__.py create mode 100644 goathacks/registration/forms.py create mode 100644 goathacks/templates/.gitkeep diff --git a/goathacks/__init__.py b/goathacks/__init__.py index 5394f78..1375eb5 100644 --- a/goathacks/__init__.py +++ b/goathacks/__init__.py @@ -19,4 +19,8 @@ def create_app(): from .models import User + from . import registration + + app.register_blueprint(registration.bp) + return app diff --git a/goathacks/models.py b/goathacks/models.py index 3ff5c61..a3e3bfc 100644 --- a/goathacks/models.py +++ b/goathacks/models.py @@ -1,6 +1,8 @@ +from flask import flash, redirect, url_for from flask_login import UserMixin from sqlalchemy import Boolean, Column, DateTime, Integer, String from . import db +from . import login class User(db.Model, UserMixin): id = Column(Integer, primary_key=True) @@ -11,3 +13,13 @@ class User(db.Model, UserMixin): last_login = Column(DateTime, nullable=False) active = Column(Boolean, nullable=False, default=True) is_admin = Column(Boolean, nullable=False, default=False) + + +@login.user_loader +def user_loader(user_id): + return User.query.filter_by(id=user_id).first() + +@login.unauthorized_handler +def unauth(): + flash("Please login first") + return redirect(url_for("registration.register")) diff --git a/goathacks/registration/__init__.py b/goathacks/registration/__init__.py new file mode 100644 index 0000000..00ba6a7 --- /dev/null +++ b/goathacks/registration/__init__.py @@ -0,0 +1,12 @@ +from flask import Blueprint, flash +from flask_login import current_user + + +bp = Blueprint('registration', __name__, url_prefix="/registration") + +@bp.route("/") +def register(): + if current_user.is_authenticated: + flash("You are already registered and logged in!") + + diff --git a/goathacks/registration/forms.py b/goathacks/registration/forms.py new file mode 100644 index 0000000..58eb50e --- /dev/null +++ b/goathacks/registration/forms.py @@ -0,0 +1,13 @@ +from flask_wtf import FlaskForm +from wtforms import PasswordField, StringField +from wtforms.validators import DataRequired + +class RegisterForm(FlaskForm): + email = StringField("Email", validators=[DataRequired()]) + first_name = StringField("Preferred First Name", + validators=[DataRequired()]) + last_name = StringField("Last Name", validators=[DataRequired()]) + password = PasswordField("Password", validators=[DataRequired()]) + password_confirm = PasswordField("Confirm Password", + validators=[DataRequired()]) + diff --git a/goathacks/templates/.gitkeep b/goathacks/templates/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/requirements.txt b/requirements.txt index df6c897..83d12ba 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,7 @@ Flask==2.2.2 Flask-Login==0.6.2 Flask-Migrate==4.0.0 Flask-SQLAlchemy==3.0.2 +Flask-WTF==1.0.1 greenlet==2.0.1 itsdangerous==2.1.2 Jinja2==3.1.2 @@ -17,3 +18,4 @@ python-dotenv==0.21.0 SQLAlchemy==1.4.44 uWSGI==2.0.21 Werkzeug==2.2.2 +WTForms==3.0.1