modern-django-starter/apps/core/views.py
Django Template 4bbc56a08f Initial commit: Django boilerplate with authentication, Docker, and Dokploy support
 Features:
- Complete Django project with authentication
- Email/password and social login (Google, Facebook)
- Role-based access control (admin, staff, user)
- Docker and Docker Compose setup
- Production-ready configuration
- Static file handling with WhiteNoise
- PostgreSQL database integration
- Comprehensive documentation
- GitHub CI/CD workflows
- Dokploy deployment configuration

🚀 Ready for deployment on Dokploy, Heroku, Railway, and other platforms
2025-09-11 09:36:55 +05:30

53 lines
1.5 KiB
Python

from django.shortcuts import render
from django.contrib.auth.decorators import login_required, user_passes_test
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from django.views.generic import TemplateView
from django.http import HttpResponseForbidden
def home(request):
return render(request, 'home.html')
class HomeView(TemplateView):
template_name = 'home.html'
class AdminRequiredMixin(UserPassesTestMixin):
def test_func(self):
return self.request.user.has_role('admin')
class StaffRequiredMixin(UserPassesTestMixin):
def test_func(self):
return self.request.user.has_role('staff') or self.request.user.has_role('admin')
def admin_required(function):
def wrap(request, *args, **kwargs):
if request.user.has_role('admin'):
return function(request, *args, **kwargs)
else:
return HttpResponseForbidden('Admin access required')
return wrap
def staff_required(function):
def wrap(request, *args, **kwargs):
if request.user.has_role('staff') or request.user.has_role('admin'):
return function(request, *args, **kwargs)
else:
return HttpResponseForbidden('Staff access required')
return wrap
@login_required
@admin_required
def admin_dashboard(request):
return render(request, 'admin_dashboard.html')
@login_required
@staff_required
def staff_dashboard(request):
return render(request, 'staff_dashboard.html')