Browse Source

Add auth module, move templates

JoostSijm 6 years ago
parent
commit
e5e315630f

+ 2 - 0
app/flaskr.py

@@ -10,6 +10,8 @@ from app import app, login_manager, db
 from app.models import User
 from app.modules.static import Static
 from app.modules.backend import Backend
+from app.modules.auth import Auth
 
+app.register_blueprint(Auth)
 app.register_blueprint(Static)
 app.register_blueprint(Backend, url_prefix='/backend')

+ 6 - 0
app/modules/auth/__init__.py

@@ -0,0 +1,6 @@
+
+"""
+Website login page
+"""
+
+from .app import BLUEPRINT as Auth 

+ 98 - 0
app/modules/auth/app.py

@@ -0,0 +1,98 @@
+
+"""
+Authentication module
+"""
+
+import os
+
+from flask_login import login_required, login_user, logout_user, current_user
+from flask_menu import Menu, register_menu
+from flask import render_template, request, redirect, url_for, flash, Blueprint, abort, jsonify
+from jinja2 import TemplateNotFound
+from app import app, login_manager, db
+from app.models import User, Page
+
+
+BLUEPRINT = Blueprint(
+    'auth',
+    __name__,
+    template_folder='templates'
+)
+
+@BLUEPRINT.route("/login", methods=["GET", "POST"])
+def login():
+    """Handle login page and data"""
+    if request.method == 'POST':
+        email = request.form['email']
+        password = request.form['password']
+        user = User.query.filter(User.email == email).first()
+        if user is not None:
+            if user.check_password(password):
+                login_user(user, remember=True)
+                flash('You were successfully logged in.', 'success')
+                if request.args.get("next") is not None:
+                    return redirect(request.args.get("next"))
+                return redirect(url_for('backend.index'))
+            flash('Incorrect password.', 'danger')
+        else:
+            flash('User not found.', 'danger')
+        return redirect(url_for('auth.login'))
+    return render_template('login.j2')
+
+
+@BLUEPRINT.route("/register", methods=["POST"])
+def register():
+    """Register a new user"""
+    name = request.form['name'] if 'name' in request.form else None
+    email = request.form['email'] if 'email' in request.form else None
+    password = request.form['password'] if 'email' in request.form else None
+
+    if name is None:
+        flash('Fill in the name.', 'warning')
+        return render_template('login.j2')
+
+    if email is None:
+        flash('Fill in the email.', 'warning')
+        return render_template(
+            'login.j2',
+            name=name
+        )
+
+    if password is None:
+        flash('Fill in the password.', 'warning')
+        return render_template(
+            'login.j2',
+            name=name,
+            email=email
+        )
+
+    user = User.query.filter(User.email == email).first()
+    if user is not None:
+        flash('Email already taken.', 'warning')
+        return render_template(
+            'login.j2',
+            name=name,
+        )
+
+    user = User()
+    user.name = name
+    user.email = email
+    user.password = password
+
+    db.session.add(user)
+    db.session.commit()
+    login_user(user, remember=True)
+    flash('Successfully registered account "%s".' % (user.name), 'success')
+
+    if request.args.get("next") is not None:
+        return redirect(request.args.get("next"))
+    return redirect(url_for('backend.index'))
+
+
+@BLUEPRINT.route("/logout")
+@login_required
+def logout():
+    """Logout function for users"""
+    logout_user()
+    flash('Successfully logged out.', 'success')
+    return redirect(url_for('auth.login'))

+ 1 - 1
app/templates/user/login.j2 → app/modules/auth/templates/login.j2

@@ -46,7 +46,7 @@
                     </div>
                     <div class="col-12 col-md-6">
                         <h2>Register</h2>
-                        <form action="{{ url_for('backend.register')}}" method="post">
+                        <form action="{{ url_for('auth.register')}}" method="post">
                             <div class="form-group">
                                 <label class="text-normal text-dark">Name</label>
                                 <input type="text" class="form-control" name="name" placeholder="Name" value="{{ name }}" required>

+ 0 - 78
app/modules/backend/app.py

@@ -19,84 +19,6 @@ BLUEPRINT = Blueprint(
     template_folder='templates'
 )
 
-@BLUEPRINT.route("/login", methods=["GET", "POST"])
-def login():
-    """Handle login page and data"""
-    if request.method == 'POST':
-        email = request.form['email']
-        password = request.form['password']
-        user = User.query.filter(User.email == email).first()
-        if user is not None:
-            if user.check_password(password):
-                login_user(user, remember=True)
-                flash('You were successfully logged in.', 'success')
-                if request.args.get("next") is not None:
-                    return redirect(request.args.get("next"))
-                return redirect(url_for('backend.index'))
-            flash('Incorrect password.', 'danger')
-        else:
-            flash('User not found.', 'danger')
-        return redirect(url_for('backend.login'))
-    return render_template('user/login.j2')
-
-
-@BLUEPRINT.route("/register", methods=["POST"])
-def register():
-    """Register a new user"""
-    name = request.form['name'] if 'name' in request.form else None
-    email = request.form['email'] if 'email' in request.form else None
-    password = request.form['password'] if 'email' in request.form else None
-
-    if name is None:
-        flash('Fill in the name.', 'warning')
-        return render_template('user/login.j2')
-
-    if email is None:
-        flash('Fill in the email.', 'warning')
-        return render_template(
-            'user/login.j2',
-            name=name
-        )
-
-    if password is None:
-        flash('Fill in the password.', 'warning')
-        return render_template(
-            'user/login.j2',
-            name=name,
-            email=email
-        )
-
-    user = User.query.filter(User.email == email).first()
-    if user is not None:
-        flash('Email already taken.', 'warning')
-        return render_template(
-            'user/login.j2',
-            name=name,
-        )
-
-    user = User()
-    user.name = name
-    user.email = email
-    user.password = password
-
-    db.session.add(user)
-    db.session.commit()
-    login_user(user, remember=True)
-    flash('Successfully registered account "%s".' % (user.name), 'success')
-
-    if request.args.get("next") is not None:
-        return redirect(request.args.get("next"))
-    return redirect(url_for('backend.index'))
-
-
-@BLUEPRINT.route("/logout")
-@login_required
-def logout():
-    """Logout function for users"""
-    logout_user()
-    flash('Successfully logged out.', 'success')
-    return redirect(url_for('backend.login'))
-
 
 @BLUEPRINT.route('/')
 @register_menu(BLUEPRINT, 'index', 'Home')

+ 0 - 0
app/templates/layout/backend.j2 → app/modules/backend/templates/layout/backend.j2


+ 0 - 0
app/templates/page/create.j2 → app/modules/backend/templates/page/create.j2


+ 0 - 0
app/templates/page/edit.j2 → app/modules/backend/templates/page/edit.j2


+ 0 - 0
app/templates/page/view.j2 → app/modules/backend/templates/page/view.j2


+ 0 - 0
app/templates/public/site.j2 → app/modules/backend/templates/public/site.j2


+ 0 - 0
app/templates/site/index.j2 → app/modules/backend/templates/site/index.j2