SushantGautam commited on
Commit
7f70ff6
·
1 Parent(s): 6bf314a

Add login requirement middleware and update views for authentication check

Browse files

- Implement LoginRequiredMiddleware to restrict access to authenticated users.
- Modify home_page view to render 'must_login.html' for unauthenticated users.
- Create must_login.html template to prompt users to log in.
- Update base.html to include a favicon.
- Adjust footer content for clarity and contact information.

BridgeMentor/middleware/login_required_middleware.py ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # middleware/login_required_middleware.py
2
+
3
+ from django.shortcuts import redirect
4
+ from django.conf import settings
5
+ from django.urls import resolve
6
+
7
+
8
+ EXEMPT_URLS = {'login', 'signup', 'home', 'begin',
9
+ 'index', 'complete', 'admin:index', 'admin:login'}
10
+
11
+
12
+ class LoginRequiredMiddleware:
13
+ def __init__(self, get_response):
14
+ self.get_response = get_response
15
+
16
+ def __call__(self, request):
17
+ if not request.user.is_authenticated:
18
+ try:
19
+ url_name = resolve(request.path_info).url_name
20
+ print(f"Unautenticated URL name: {url_name}")
21
+ if url_name not in EXEMPT_URLS:
22
+ return redirect('/')
23
+ except Exception as e:
24
+ return redirect('/')
25
+ return self.get_response(request)
BridgeMentor/settings.py CHANGED
@@ -56,6 +56,8 @@ MIDDLEWARE = [
56
  'django.middleware.common.CommonMiddleware',
57
  'django.middleware.csrf.CsrfViewMiddleware',
58
  'django.contrib.auth.middleware.AuthenticationMiddleware',
 
 
59
  'django.contrib.messages.middleware.MessageMiddleware',
60
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
61
  ]
 
56
  'django.middleware.common.CommonMiddleware',
57
  'django.middleware.csrf.CsrfViewMiddleware',
58
  'django.contrib.auth.middleware.AuthenticationMiddleware',
59
+ 'BridgeMentor.middleware.login_required_middleware.LoginRequiredMiddleware',
60
+
61
  'django.contrib.messages.middleware.MessageMiddleware',
62
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
63
  ]
core/templates/base.html CHANGED
@@ -5,6 +5,9 @@
5
  <head>
6
  <meta charset="UTF-8">
7
  <title>{% block title %}{% endblock %} - BridgeMentor</title>
 
 
 
8
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
9
  <link rel="stylesheet" type="text/css" href="{% static 'base.css' %}">
10
  {% block css %}{% endblock %}
@@ -56,9 +59,14 @@
56
  </main>
57
 
58
  <!-- Footer -->
59
- <footer class="bg-dark text-white text-center py-3 mt-auto">
60
  <div class="container">
61
- <p class="mb-0">&copy; 2025 BridgeMentor. All rights reserved.</p>
 
 
 
 
 
62
  </div>
63
  </footer>
64
 
 
5
  <head>
6
  <meta charset="UTF-8">
7
  <title>{% block title %}{% endblock %} - BridgeMentor</title>
8
+ <link rel="icon"
9
+ href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🔍</text></svg>">
10
+
11
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
12
  <link rel="stylesheet" type="text/css" href="{% static 'base.css' %}">
13
  {% block css %}{% endblock %}
 
59
  </main>
60
 
61
  <!-- Footer -->
62
+ <footer class="bg-dark text-white text-center py-1 mt-auto">
63
  <div class="container">
64
+ <p>&copy; 2025 BridgeMentor. All rights reserved. v0.001, α-testing </p>
65
+ <p>
66
+ If you experience any problem or have any queries/suggestions, feel free to contact
67
+ <a href="https://www.sushant.info.np/#:~:text=touch" class="text-white text-decoration-underline"
68
+ target="_blank">Sushant Gautam</a>.
69
+ </p>
70
  </div>
71
  </footer>
72
 
core/templates/must_login.html ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends "base.html" %}
2
+
3
+ {% block title %}Login Required{% endblock %}
4
+
5
+ {% block content %}
6
+ <div class="d-flex justify-content-center align-items-center" style="height: 60vh;">
7
+ <div class="text-center">
8
+ <h2>You must login to access the platform.</h2>
9
+ <a href="{% url 'social:begin' 'google-oauth2' %}" class="btn btn-primary mt-3">
10
+ Login with Google
11
+ </a>
12
+ </div>
13
+ </div>
14
+ {% endblock %}
core/views.py CHANGED
@@ -10,7 +10,10 @@ from BridgeMentor.utils import refresh_author_db
10
 
11
 
12
  def home_page(request):
13
- return render(request, 'home.html')
 
 
 
14
 
15
 
16
  def refresh_author_db_view(request):
 
10
 
11
 
12
  def home_page(request):
13
+ if request.user.is_authenticated:
14
+ return render(request, 'home.html')
15
+ else:
16
+ return render(request, "must_login.html")
17
 
18
 
19
  def refresh_author_db_view(request):