mirror of
https://github.com/StefBuwalda/WebTech.git
synced 2025-10-30 03:10:00 +00:00
Cleanup gang
This commit is contained in:
@@ -3,16 +3,21 @@ from wtforms import StringField, SubmitField, PasswordField, BooleanField
|
|||||||
from wtforms.validators import DataRequired
|
from wtforms.validators import DataRequired
|
||||||
|
|
||||||
|
|
||||||
|
# Default Form that inherits from FlaskForm and
|
||||||
|
# contains a username, password and submit button
|
||||||
class defaultForm(FlaskForm):
|
class defaultForm(FlaskForm):
|
||||||
username = StringField("Username", validators=[DataRequired()])
|
username = StringField("Username", validators=[DataRequired()])
|
||||||
password = PasswordField("Password", validators=[DataRequired()])
|
password = PasswordField("Password", validators=[DataRequired()])
|
||||||
submit = SubmitField("Submit")
|
submit = SubmitField("Submit")
|
||||||
|
|
||||||
|
|
||||||
|
# LoginForm, contains exactly the same as defaultForm
|
||||||
class LoginForm(defaultForm):
|
class LoginForm(defaultForm):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# RegisterForm that inherits from the default.
|
||||||
|
# Adds a password confirmation and if the user is an admin or not.
|
||||||
class RegisterForm(defaultForm):
|
class RegisterForm(defaultForm):
|
||||||
confirm_password = PasswordField(
|
confirm_password = PasswordField(
|
||||||
"Confirm Password", validators=[DataRequired()]
|
"Confirm Password", validators=[DataRequired()]
|
||||||
@@ -20,6 +25,8 @@ class RegisterForm(defaultForm):
|
|||||||
is_admin = BooleanField("Admin")
|
is_admin = BooleanField("Admin")
|
||||||
|
|
||||||
|
|
||||||
|
# Form to update password information.
|
||||||
|
# Needs a confirmation password and the current password
|
||||||
class UpdateForm(defaultForm):
|
class UpdateForm(defaultForm):
|
||||||
confirm_password = PasswordField(
|
confirm_password = PasswordField(
|
||||||
"Confirm Password", validators=[DataRequired()]
|
"Confirm Password", validators=[DataRequired()]
|
||||||
|
|||||||
@@ -2,14 +2,18 @@ from application import db
|
|||||||
from flask_login import UserMixin # type: ignore
|
from flask_login import UserMixin # type: ignore
|
||||||
|
|
||||||
|
|
||||||
|
# User model
|
||||||
class User(db.Model, UserMixin):
|
class User(db.Model, UserMixin):
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
username = db.Column(db.String(150), unique=True, nullable=False)
|
username = db.Column(db.String(150), unique=True, nullable=False)
|
||||||
password = db.Column(db.String(150), nullable=False)
|
password = db.Column(db.String(150), nullable=False)
|
||||||
is_admin = db.Column(db.Boolean, default=False)
|
is_admin = db.Column(db.Boolean, default=False)
|
||||||
|
|
||||||
|
# Purely a relationship not a column,
|
||||||
|
# makes all the services accessible through User.services
|
||||||
services = db.relationship("Service", backref="user", lazy="joined")
|
services = db.relationship("Service", backref="user", lazy="joined")
|
||||||
|
|
||||||
|
# Initialize user, prevents red stuff
|
||||||
def __init__(self, username: str, password: str, is_admin: bool = False):
|
def __init__(self, username: str, password: str, is_admin: bool = False):
|
||||||
self.username = username
|
self.username = username
|
||||||
self.password = password
|
self.password = password
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ from application.auth.forms import RegisterForm, UpdateForm
|
|||||||
auth_blueprint = Blueprint("auth", __name__, template_folder="templates")
|
auth_blueprint = Blueprint("auth", __name__, template_folder="templates")
|
||||||
|
|
||||||
|
|
||||||
# Routes
|
# Add user
|
||||||
@auth_blueprint.route("/register", methods=["GET", "POST"])
|
@auth_blueprint.route("/register_user", methods=["GET", "POST"])
|
||||||
@admin_required
|
@admin_required
|
||||||
def register():
|
def register():
|
||||||
register_form = RegisterForm()
|
register_form = RegisterForm()
|
||||||
@@ -59,6 +59,7 @@ def register():
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Update user (specifically password)
|
||||||
@auth_blueprint.route("/update_user", methods=["GET", "POST"])
|
@auth_blueprint.route("/update_user", methods=["GET", "POST"])
|
||||||
@login_required
|
@login_required
|
||||||
def update():
|
def update():
|
||||||
@@ -89,6 +90,7 @@ def update():
|
|||||||
return render_template("update_user.html", form=form, active_page="update")
|
return render_template("update_user.html", form=form, active_page="update")
|
||||||
|
|
||||||
|
|
||||||
|
# Login as user or admin
|
||||||
@auth_blueprint.route("/login", methods=["GET", "POST"])
|
@auth_blueprint.route("/login", methods=["GET", "POST"])
|
||||||
def login():
|
def login():
|
||||||
login_form = LoginForm()
|
login_form = LoginForm()
|
||||||
@@ -110,6 +112,7 @@ def login():
|
|||||||
return render_template("login.html", form=login_form, feedback=feedback)
|
return render_template("login.html", form=login_form, feedback=feedback)
|
||||||
|
|
||||||
|
|
||||||
|
# Logout
|
||||||
@auth_blueprint.route("/logout")
|
@auth_blueprint.route("/logout")
|
||||||
@login_required
|
@login_required
|
||||||
def logout():
|
def logout():
|
||||||
|
|||||||
@@ -4,9 +4,11 @@ from wtforms.validators import DataRequired
|
|||||||
from flask_wtf.file import FileField, FileAllowed # type: ignore
|
from flask_wtf.file import FileField, FileAllowed # type: ignore
|
||||||
|
|
||||||
|
|
||||||
|
# Form for service on dashboard, connected to database through ORM
|
||||||
class ServiceForm(FlaskForm):
|
class ServiceForm(FlaskForm):
|
||||||
name = StringField("Service name:", validators=[DataRequired()])
|
name = StringField("Service name:", validators=[DataRequired()])
|
||||||
url = URLField("Service URL:", validators=[DataRequired()])
|
url = URLField("Service URL:", validators=[DataRequired()])
|
||||||
|
# File field that only allows jpg, jpeg or png
|
||||||
image = FileField(
|
image = FileField(
|
||||||
"Icon:",
|
"Icon:",
|
||||||
validators=[
|
validators=[
|
||||||
|
|||||||
@@ -1,14 +1,17 @@
|
|||||||
from application import db
|
from application import db
|
||||||
|
|
||||||
|
|
||||||
|
# Service class for dashboard
|
||||||
class Service(db.Model):
|
class Service(db.Model):
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
name = db.Column(db.String, nullable=False)
|
name = db.Column(db.String, nullable=False)
|
||||||
url = db.Column(db.String, nullable=False)
|
url = db.Column(db.String, nullable=False)
|
||||||
icon = db.Column(db.String, default="google.png")
|
icon = db.Column(db.String, default="google.png")
|
||||||
|
|
||||||
|
# Foreign key to connect to User table
|
||||||
user_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
|
user_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
|
||||||
|
|
||||||
|
# Initialize the service (prevents ugly red lines)
|
||||||
def __init__(
|
def __init__(
|
||||||
self, name: str, url: str, user_id: int, icon: str = "google.png"
|
self, name: str, url: str, user_id: int, icon: str = "google.png"
|
||||||
):
|
):
|
||||||
|
|||||||
Reference in New Issue
Block a user