diff --git a/app/__init__.py b/app/__init__.py
index a8bae28bc0bcb8694d9216dd2222cc0336f05320..fab31430d322a2842639ad789125566487976160 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -4,7 +4,7 @@ from flask import Flask
 from config import Config
 from flask_sqlalchemy import SQLAlchemy
 from flask_migrate import Migrate
-from flask_login import LoginManager
+from flask_login import LoginManager, current_user
 from dotenv import load_dotenv
 import os
 
@@ -40,6 +40,21 @@ def create_app(config_class=Config):
     # Register blueprints and url prefixes
     register_blueprints(app)
     
+    # Add any vars needed accessible through all templates
+    @app.context_processor
+    def set_global_html_variable_values():
+        try:
+            if current_user.is_authenticated:
+                user_in_session = True
+            else:
+                user_in_session = False
+
+            template_config = {'user_in_session': user_in_session}
+            return template_config
+        except Exception as e:
+            # print(f"Error in context processor: {e}")
+            return {'user_in_session': False}  # Fallback, to create logging to record such failures (database corrupted etc.)
+
     
     if __name__ == "__main__":
         app.run(use_reloader=True)
@@ -56,7 +71,6 @@ def load_user(user_id):
 
 def register_blueprints(app):
     blueprints = [
-        ('auth', None),
         ('main', None),
         ('bookings', '/bookings'),
         ('api', '/api'),
@@ -65,4 +79,5 @@ def register_blueprints(app):
     ]
     for module_name, url_prefix in blueprints:
         module = __import__(f'app.{module_name}', fromlist=['bp'])
-        app.register_blueprint(module.bp, url_prefix=url_prefix)
\ No newline at end of file
+        app.register_blueprint(module.bp, url_prefix=url_prefix)
+
diff --git a/app/auth/__init__.py b/app/auth/__init__.py
deleted file mode 100644
index 2834ca1efe74dbfe2df0adb0697f34223e633799..0000000000000000000000000000000000000000
--- a/app/auth/__init__.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from flask import Blueprint
-
-bp = Blueprint('auth', __name__)
-
-from app.auth import routes
\ No newline at end of file
diff --git a/app/auth/routes.py b/app/auth/routes.py
deleted file mode 100644
index e841d6e899da7ad7796af0ddb8a7a624593b0854..0000000000000000000000000000000000000000
--- a/app/auth/routes.py
+++ /dev/null
@@ -1,44 +0,0 @@
-#https://www.digitalocean.com/community/tutorials/how-to-add-authentication-to-your-app-with-flask-login#step-1-installing-packages
-from flask import Blueprint, render_template, redirect, url_for, request, flash
-from app.auth import bp
-from werkzeug.security import generate_password_hash, check_password_hash
-from app.models import User
-from app import db
-from flask_login import login_user
-
-@bp.route('/signup')
-def signup():
-    return render_template(url_for('profile.signup'))
-
-@bp.route('/signup', methods=['POST'])
-def signup_post():
-    email = request.form.get('email')
-    username = request.form.get('name')
-    password = request.form.get('password')
-
-    user = User.query.filter_by(email=email).first()
-
-    if user:
-        return redirect(url_for('profile.signup'))
-
-    new_user = User.create_user(username=username, email=email, password=password)
-
-    db.session.add(new_user)
-    db.session.commit()
-
-    return redirect(url_for('profile.login'))
-
-@bp.route('/login', methods=['POST'])
-def login_post():
-    email = request.form.get('email')
-    password = request.form.get('password')
-    remember = True if request.form.get('remember') else False # If checkbox for user is ticked
-
-    user = User.query.filter_by(email=email).first()
-
-    if not user or not check_password_hash(user.password, password):
-        flash('Please check your login details and try again.')
-        return redirect(url_for('profile.login'))
-
-    login_user(user, remember=remember)
-    return redirect(url_for('profile.index'))
\ No newline at end of file
diff --git a/app/profile/routes.py b/app/profile/routes.py
index ebfcbf45402ca733299d133f30730eb38344de00..4a32cfa129046e8b78d5ec05953a7ac3dc2e449b 100644
--- a/app/profile/routes.py
+++ b/app/profile/routes.py
@@ -1,40 +1,62 @@
-from flask import render_template, redirect, url_for
+#https://www.digitalocean.com/community/tutorials/how-to-add-authentication-to-your-app-with-flask-login#step-1-installing-packages
+from flask import Blueprint, render_template, redirect, url_for, request, flash
 from app.profile import bp
-from app.models import User 
-from flask_login import current_user, login_required
+from werkzeug.security import generate_password_hash, check_password_hash
+from app.models import User
+from app import db
+from flask_login import login_user, logout_user, login_required, current_user
 
-@bp.route('/')
-@login_required
-def index():
-    if current_user.is_authenticated:
-        return render_template('profile/index.html', username=current_user.username)
-    else:
-        return redirect(url_for('profile.login'))
-
-@bp.route('/login')
-def login():
-    return render_template('profile/login.html')
+@bp.route('/signup')
+def signup():
+    return render_template(url_for('profile.signup'))
 
 @bp.route('/signup', methods=['POST'])
 def signup_post():
-    return 'hit POST'
     email = request.form.get('email')
-    name = request.form.get('name')
+    username = request.form.get('name')
     password = request.form.get('password')
-    if User.search_user_by_email(email):
-        return redirect('signup.html')
 
-    new_user = User(email=email, name=name, password=generate_password_hash(password, method='sha256'))
+    user = User.query.filter_by(email=email).first()
+
+    if user:
+        return redirect(url_for('profile.signup'))
+
+    new_user = User.create_user(username=username, email=email, password=password)
 
     db.session.add(new_user)
     db.session.commit()
-    
-    return redirect('profile/login.html')
 
-@bp.route('/signup')
-def signup():
-    return render_template('profile/signup.html')
+    return redirect(url_for('profile.login'))
+
+@bp.route('/login', methods=['POST'])
+def login_post():
+    email = request.form.get('email')
+    password = request.form.get('password')
+    remember = True if request.form.get('remember') else False # If checkbox for user is ticked
+
+    user = User.query.filter_by(email=email).first()
+
+    if not user or not check_password_hash(user.password, password):
+        flash('Please check your login details and try again.')
+        return redirect(url_for('profile.login'))
+
+    login_user(user, remember=remember)
+    return redirect(url_for('profile.index'))
 
 @bp.route('/logout')
+@login_required
 def logout():
-    return 'Logout'
+    logout_user()
+    return redirect(url_for('main.index'))
+
+@bp.route('/login')
+def login():
+    return render_template('profile/login.html')
+
+@login_required
+@bp.route('/home')
+def index():
+    if current_user.is_authenticated:
+        return render_template('profile/index.html', username=current_user.username)
+    
+    return redirect(url_for('profile.login'))
\ No newline at end of file
diff --git a/app/templates/base.html b/app/templates/base.html
index c405dd2279ffbd7901eca1b55d54968f71f7d0f2..8918486f195777d912a9308c1c8c6cfc115b4635 100644
--- a/app/templates/base.html
+++ b/app/templates/base.html
@@ -35,10 +35,15 @@
                                     Account
                                 </a>
                                 <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
-                                    <li><a class="dropdown-item" href="#">Account Details</a></li>
-                                    <li><a class="dropdown-item" href="#">My Bookings</a></li>
-                                    <li><a class="dropdown-item" href="#">Log Out</a></li>
+                                    {% if user_in_session %}
+                                        <li><a class="dropdown-item" href="#">Account Details</a></li>
+                                        <li><a class="dropdown-item" href="#">My Bookings</a></li>
+                                        <li><a class="dropdown-item" href="{{ url_for('profile.logout') }}">Log Out</a></li>
+                                    {% else %}
+                                        <li><a class="dropdown-item" href="{{ url_for('profile.login') }}">Log In</a></li>
+                                    {% endif %}
                                 </ul>
+                                
                                 </li>
                             </ul>
                             </div>
diff --git a/app/templates/profile/login.html b/app/templates/profile/login.html
index 0384d22cbe648d40882612757a1260308ec50aad..ddb577c5ec16a57145e4d504f776040d057ae3f3 100644
--- a/app/templates/profile/login.html
+++ b/app/templates/profile/login.html
@@ -4,7 +4,7 @@
 <div class="column is-4 is-offset-4">
     <h3 class="title">Login</h3>
     <div class="box">
-        <form method="POST" action="/login">
+        <form method="POST" action="{{ url_for ('profile.login_post')}}">
             <div class="field">
                 <div class="control">
                     <input class="input is-large" type="email" name="email" placeholder="Your Email" autofocus="">