diff --git a/requirements-linux.txt b/requirements-linux.txt index cab1505..9e47813 100644 --- a/requirements-linux.txt +++ b/requirements-linux.txt @@ -1,9 +1,12 @@ Click==7.0 Flask==1.1.1 Flask-SQLAlchemy==2.4.1 +Flask-WTF==0.14.3 gunicorn==19.9.0 itsdangerous==1.1.0 Jinja2==2.10.3 MarkupSafe==1.1.1 +pkg-resources==0.0.0 SQLAlchemy==1.3.11 Werkzeug==0.16.0 +WTForms==2.2.1 diff --git a/requirements-windows.txt b/requirements-windows.txt index 8416a3a..c63920a 100644 --- a/requirements-windows.txt +++ b/requirements-windows.txt @@ -1,9 +1,11 @@ Click==7.0 Flask==1.1.1 Flask-SQLAlchemy==2.4.1 +Flask-WTF==0.14.3 itsdangerous==1.1.0 Jinja2==2.10.3 MarkupSafe==1.1.1 SQLAlchemy==1.3.11 waitress==1.4.3 Werkzeug==0.16.0 +WTForms==2.2.1 \ No newline at end of file diff --git a/src/core/__init__.py b/src/core/__init__.py index ccab876..88fd085 100644 --- a/src/core/__init__.py +++ b/src/core/__init__.py @@ -6,8 +6,12 @@ app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///static/db/database.db" app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['TITLE'] = ':::APP TITLE:::' +# For csrf...change!! +app.config['SECRET_KEY'] = '48e80dcf4ed6ea952ca1b7b564be22d665e6e178f7fda84828fdd5e7cdca097a' from core.models import db db.init_app(app) + +from core.forms import RegisterForm, LoginForm from core import routes diff --git a/src/core/forms.py b/src/core/forms.py new file mode 100644 index 0000000..37a230a --- /dev/null +++ b/src/core/forms.py @@ -0,0 +1,19 @@ +from flask_wtf import FlaskForm +from wtforms import StringField, PasswordField, SubmitField +from wtforms.validators import DataRequired, Length, Email, EqualTo + + + +class RegisterForm(FlaskForm): + username = StringField('Username', validators=[DataRequired(), Length(min=4, max=24)]) + email = StringField('Email', validators=[DataRequired(), Email()]) + password = PasswordField('Password', validators=[DataRequired(), Length(min=8)]) + confirm_password = PasswordField('Confirm Password', + validators=[DataRequired(), EqualTo('password', message="Passwords must match!")]) + submit = SubmitField("Sign Up") + + +class LoginForm(FlaskForm): + username = StringField('Username', validators=[DataRequired(), Length(min=4, max=24)]) + password = PasswordField('Password', validators=[DataRequired(), Length(min=8, max=32)]) + submit = SubmitField("Login") diff --git a/src/core/models.py b/src/core/models.py index 00d647f..e63bf42 100644 --- a/src/core/models.py +++ b/src/core/models.py @@ -4,10 +4,17 @@ db = SQLAlchemy() class Table(db.Model): - # title = db.Column(db.String, nullable=False) - # icon = db.Column(db.String, nullable=False) - # link = db.Column(db.String, nullable=False) - id = db.Column(db.Integer, nullable=False, primary_key=True, unique=True, autoincrement=True) + id = db.Column(db.Integer, nullable=False, primary_key=True, unique=True, autoincrement=True) def __repr__(self): return f"['{self.title}', '{self.icon}', '{self.link}', '{self.id}']" + + +class User(db.Model): + username = db.Column(db.String, nullable=False) + email = db.Column(db.String, nullable=False) + password = db.Column(db.String, nullable=False) + id = db.Column(db.Integer, nullable=False, primary_key=True, unique=True, autoincrement=True) + + def __repr__(self): + return f"['{self.username}', '{self.email}', '{self.password}', '{self.id}']" diff --git a/src/core/routes/Routes.py b/src/core/routes/Routes.py index f1951ae..aae3349 100644 --- a/src/core/routes/Routes.py +++ b/src/core/routes/Routes.py @@ -22,3 +22,14 @@ def root(): return render_template('error.html', title='Error!', message='Must use GET request type...') + + +@app.route('/about', methods=['GET', 'POST']) +def about(): + if request.method == 'GET': + return render_template('about.html', + title=TITLE) + + return render_template('error.html', + title='Error!', + message='Must use GET request type...') diff --git a/src/core/routes/__init__.py b/src/core/routes/__init__.py index d4fa9fa..57043cb 100644 --- a/src/core/routes/__init__.py +++ b/src/core/routes/__init__.py @@ -1,2 +1,2 @@ from . import Routes -from .pages import Login +from .pages import Login, Register diff --git a/src/core/routes/pages/Login.py b/src/core/routes/pages/Login.py index bb6bdf1..dbf3bce 100644 --- a/src/core/routes/pages/Login.py +++ b/src/core/routes/pages/Login.py @@ -4,7 +4,7 @@ from flask import request, render_template # App imports -from core import app, db +from core import app, db, LoginForm from core.MessageHandler import MessageHandler # Get simple message processor @@ -14,8 +14,10 @@ TITLE = app.config['TITLE'] @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'GET': + _form = LoginForm() return render_template('login.html', - title=TITLE) + title=TITLE, + form=_form) return render_template('error.html', title='Error!', diff --git a/src/core/routes/pages/Register.py b/src/core/routes/pages/Register.py new file mode 100644 index 0000000..f212333 --- /dev/null +++ b/src/core/routes/pages/Register.py @@ -0,0 +1,24 @@ +# Python imports + +# Lib imports +from flask import request, render_template + +# App imports +from core import app, db, RegisterForm +from core.MessageHandler import MessageHandler # Get simple message processor + + +msgHandler = MessageHandler() +TITLE = app.config['TITLE'] + +@app.route('/register', methods=['GET', 'POST']) +def register(): + if request.method == 'GET': + _form = RegisterForm() + return render_template('register.html', + title=TITLE, + form=_form) + + return render_template('error.html', + title='Error!', + message='Must use GET request type...') diff --git a/src/core/static/db/database.db b/src/core/static/db/database.db index 2ed9ac7..6d261d2 100644 Binary files a/src/core/static/db/database.db and b/src/core/static/db/database.db differ diff --git a/src/core/templates/about.html b/src/core/templates/about.html new file mode 100644 index 0000000..963c79a --- /dev/null +++ b/src/core/templates/about.html @@ -0,0 +1,25 @@ +{% extends "layout.html" %} + +{% block body_header_additional %} +{% endblock body_header_additional %} + +{% block body_content %} +
+
+
+

Login stub...

+
+
+
+{% endblock body_content %} + + +{% block body_footer_additional %} +{% endblock body_footer_additional %} + +{% block body_scripts_additional %} + + + + +{% endblock body_scripts_additional %} diff --git a/src/core/templates/body-header.html b/src/core/templates/body-header.html index 88dcdd5..4fe8b41 100644 --- a/src/core/templates/body-header.html +++ b/src/core/templates/body-header.html @@ -4,7 +4,7 @@