Rechte-Gruppen-System fertig

This commit is contained in:
holger.trampe 2020-02-08 23:42:55 +01:00
parent 77a604f5be
commit 8fc7455cff
11 changed files with 54 additions and 26 deletions

View File

@ -32,7 +32,7 @@ ALLOWED_HOSTS = ['digitale-agentur.com', 'www.digitale-agentur.com', 'localhost'
# Application definition
INSTALLED_APPS = [
'users.apps.UsersConfig',
'settings.apps.SettingsConfig',
'dasettings.apps.DASettingsConfig',
'areas.apps.AreasConfig',
'orga.apps.OrgaConfig',
'cloud.apps.CloudConfig',

View File

@ -27,7 +27,7 @@ urlpatterns = [
path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
path('', include('users.urls'), name="dashboard-first"),
path('admin/', admin.site.urls),
path('settings/', include('settings.urls'), name="settings"),
path('dasettings/', include('dasettings.urls'), name="dasettings"),
path('dashboard/', include('users.urls'), name="dashboard"),
path('areas/', include('areas.urls'), name="areas-management"),
path('tasks/', include('tasks.urls'), name="tasks-management"),

View File

@ -1,5 +1,6 @@
from django import template
from django.contrib.auth.models import Group
from users.models import AgencyGroup
register = template.Library()
b = 0
@ -22,6 +23,28 @@ def incvar():
return ''
@register.filter(name='has_group')
def has_group(user, group_name):
group = Group.objects.get(name=group_name)
return True if group in user.groups.all() else False
# usergperm
'''
Gibt TRUE zurück, wenn der User über eine Gruppe das gewünschte Recht hat.
Gibt FALSE zurück, wenn der User über eine Gruppe das gewünschte Recht NICHT hat.
@param:
user - einglogger Nutzer
perm - recht
'''
@register.filter(name="usergperm")
def usergperm(user, perm):
stat = False
if user.has_perm('users.'+perm):
stat = True
return stat
'''
class Counter:
count = 0

View File

@ -184,12 +184,13 @@ class AgencyGroup(models.Model):
class Meta:
permissions = [
('agency', 'Agenturinformationen verändern'),
('users', 'Benutzer bearbeiten'),
('group', 'Gruppen bearbeiten'),
('areas', 'Bereiche bearbeiten'),
('tasks', 'Tätigkeiten bearbeiten'),
('standard', 'Standards bearbeiten und freischalten'),
('news', 'News bearbeiten und veröffentlichen'),
('quciklinks', 'Quicklinks bearbeiten und erstellen')
('agencyinfo', 'Agenturinformationen verändern'),
('usermanager', 'Benutzer bearbeiten'),
('groupmanager', 'Gruppen bearbeiten'),
('areaconfig', 'Bereiche bearbeiten'),
('activityconfig', 'Tätigkeiten bearbeiten'),
('standardmanager', 'Standards bearbeiten und freischalten'),
('modulenews', 'News bearbeiten und veröffentlichen'),
('modulesconfig', 'Module verwalten'),
('modulequicklinks', 'Quicklinks bearbeiten und erstellen')
]

View File

@ -1,9 +1,8 @@
from django.db.models.signals import post_save, pre_delete
from django.db.models.signals import post_save, pre_delete, m2m_changed
from django.contrib.auth.models import User, Group
from django.dispatch import receiver
from .models import Profile, Agency, AgencyGroup
from django.contrib.auth.models import Permission
# SIGNALS FOR USER
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
@ -29,15 +28,17 @@ def save_profile(sender, instance, **kwargs):
# SIGNALS FOR GROUPS
'''
@receiver(post_save, sender=Group)
def create_group(sender, instance, created, **kwargs):
print("NEW GROUP SIGNAL")
if created:
AgencyGroup.objects.create(group=instance, agency=instance.agency)
@receiver(post_save, sender=Group)
def save_group(sender, instance, **kwargs):
print("GROUP SAVED SIGNAL")
#instance.group.save()
'''
@receiver(signal=m2m_changed, sender=User.groups.through)
def adjust_group_notifications(instance, action, reverse, model, pk_set, using, *args, **kwargs):
# USERGROUP IS CHANGED
if isinstance(instance, Group):
group_touched = AgencyGroup.objects.get(group=instance)
user_touched = User.objects.get(pk=list(pk_set)[0])
# A USER WAS REMOVED FROM A GROUP
if(action == 'post_remove'):
print("USER REMOVED " + user_touched.first_name + " FROM GROUP " + group_touched.agencygroupname)
# A USER WAS ADDED TO A GROUP
elif(action == 'post_add'):
print("USER ADDED " + user_touched.first_name + " TO GROUP " + group_touched.agencygroupname)

View File

@ -46,6 +46,9 @@
</head>
<body>
{% if perms.users.agencyinfo %}
<script type="text/javascript">alert(0);</script>
{% endif %}
<!-- Page Wrapper -->
<div id="wrapper">
<!-- Sidebar -->
@ -214,12 +217,12 @@
</style>
<div id="bottom_info">
<hr class="sidebar-divider d-none d-md-block">
{% if active_link == 'settings' %}
{% if active_link == 'dasettings' %}
<li class="nav-item active">
{% else%}
<li class="nav-item">
{%endif%}
<a class="nav-link " href="{% url 'settings' %}" aria-expanded="true" style="margin-top: -15px">
<a class="nav-link " href="{% url 'dasettings' %}" aria-expanded="true" style="margin-top: -15px">
<i class="fas fa-cog"></i>
<span>Einstellungen</span>
</a>