Skip to content

Commit ae79854

Browse files
committed
Added tracker app. normalized navbar
1 parent 1f360ba commit ae79854

25 files changed

Lines changed: 2569 additions & 6 deletions

IOLGenv2_BackEnd/middleware.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# IOLGenv2_BackEnd/middleware.py
2+
3+
from django.shortcuts import redirect
4+
from django.http import HttpResponseForbidden
5+
from accounts.models import UserProfile
6+
7+
class TrackerGroupRequiredMiddleware:
8+
"""
9+
Blocks any URL under /tracker/ unless the user is authenticated
10+
and belongs to the 'Trackers' group.
11+
"""
12+
13+
def __init__(self, get_response):
14+
self.get_response = get_response
15+
16+
def __call__(self, request):
17+
# Adjust this prefix if your tracker URLs are mounted elsewhere
18+
if request.path_info.startswith('/tracker/'):
19+
# not logged in → send to login
20+
if not request.user.is_authenticated:
21+
return redirect('loginw')
22+
# logged in but not in Trackers group → 403
23+
userprofile = UserProfile.objects.filter(user=request.user).first()
24+
try :
25+
if userprofile and not userprofile.is_tracker:
26+
return HttpResponseForbidden("Access denied. User Not a Tracker.")
27+
except UserProfile.DoesNotExist:
28+
return HttpResponseForbidden("Access denied. User Profile Not Found.")
29+
if not request.user.groups.filter(name='Trackers').exists():
30+
return HttpResponseForbidden("Access denied. User Not in Trackers group.")
31+
return self.get_response(request)

IOLGenv2_BackEnd/settings.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
'ACGen',
5757
'IOLGen',
5858
'home',
59+
'tracker',
5960
]
6061

6162
MIDDLEWARE = [
@@ -66,6 +67,7 @@
6667
'django.middleware.common.CommonMiddleware',
6768
'django.middleware.csrf.CsrfViewMiddleware',
6869
'django.contrib.auth.middleware.AuthenticationMiddleware',
70+
'IOLGenv2_BackEnd.middleware.TrackerGroupRequiredMiddleware',
6971
'django.contrib.messages.middleware.MessageMiddleware',
7072
'django.middleware.clickjacking.XFrameOptionsMiddleware',
7173
]
@@ -290,7 +292,7 @@
290292
"welcome_sign": "Welcome to Armstrong Aurtomation All-In-One tool, Login Now.",
291293

292294
"topmenu_links": [
293-
{"name": "Home", "url": "admin:index", "permissions": ["auth.view_user"]},
295+
{"name": "Home", "url": "home", "permissions": ["auth.view_user"]},
294296
{"name": "Company", "url": "/admin/addons/company/"},
295297
],
296298

IOLGenv2_BackEnd/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,6 @@
2424
path('IOLGen/', include('IOLGen.urls')),
2525
path('__debug__/', include('debug_toolbar.urls')),
2626
path('', include('home.urls')),
27+
path('tracker/', include('tracker.urls')),
2728

2829
]

accounts/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class UserProfile(models.Model):
3232
)
3333
created_at = models.DateTimeField(auto_now_add=True)
3434
updated_at = models.DateTimeField(auto_now=True)
35-
35+
is_tracker = models.BooleanField(default=False, help_text="Is this user a tracker?")
3636
def __str__(self):
3737
return f"{self.user.username}'s Profile - {self.get_usertype_display()}"
3838

requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ django-widget-tweaks
1818
whitenoise
1919
waitress
2020
firebase-admin==6.2.0
21-
gunicorn==21.2.0
21+
gunicorn==21.2.0
22+
reportlab

0 commit comments

Comments
 (0)