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 # Application definition
INSTALLED_APPS = [ INSTALLED_APPS = [
'users.apps.UsersConfig', 'users.apps.UsersConfig',
'settings.apps.SettingsConfig', 'dasettings.apps.DASettingsConfig',
'areas.apps.AreasConfig', 'areas.apps.AreasConfig',
'orga.apps.OrgaConfig', 'orga.apps.OrgaConfig',
'cloud.apps.CloudConfig', '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('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
path('', include('users.urls'), name="dashboard-first"), path('', include('users.urls'), name="dashboard-first"),
path('admin/', admin.site.urls), 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('dashboard/', include('users.urls'), name="dashboard"),
path('areas/', include('areas.urls'), name="areas-management"), path('areas/', include('areas.urls'), name="areas-management"),
path('tasks/', include('tasks.urls'), name="tasks-management"), path('tasks/', include('tasks.urls'), name="tasks-management"),

View File

@ -1,5 +1,6 @@
from django import template from django import template
from django.contrib.auth.models import Group
from users.models import AgencyGroup
register = template.Library() register = template.Library()
b = 0 b = 0
@ -22,6 +23,28 @@ def incvar():
return '' 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: class Counter:
count = 0 count = 0

View File

@ -184,12 +184,13 @@ class AgencyGroup(models.Model):
class Meta: class Meta:
permissions = [ permissions = [
('agency', 'Agenturinformationen verändern'), ('agencyinfo', 'Agenturinformationen verändern'),
('users', 'Benutzer bearbeiten'), ('usermanager', 'Benutzer bearbeiten'),
('group', 'Gruppen bearbeiten'), ('groupmanager', 'Gruppen bearbeiten'),
('areas', 'Bereiche bearbeiten'), ('areaconfig', 'Bereiche bearbeiten'),
('tasks', 'Tätigkeiten bearbeiten'), ('activityconfig', 'Tätigkeiten bearbeiten'),
('standard', 'Standards bearbeiten und freischalten'), ('standardmanager', 'Standards bearbeiten und freischalten'),
('news', 'News bearbeiten und veröffentlichen'), ('modulenews', 'News bearbeiten und veröffentlichen'),
('quciklinks', 'Quicklinks bearbeiten und erstellen') ('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.contrib.auth.models import User, Group
from django.dispatch import receiver from django.dispatch import receiver
from .models import Profile, Agency, AgencyGroup from .models import Profile, Agency, AgencyGroup
from django.contrib.auth.models import Permission from django.contrib.auth.models import Permission
# SIGNALS FOR USER # SIGNALS FOR USER
@receiver(post_save, sender=User) @receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs): def create_profile(sender, instance, created, **kwargs):
@ -29,15 +28,17 @@ def save_profile(sender, instance, **kwargs):
# SIGNALS FOR GROUPS # 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) @receiver(signal=m2m_changed, sender=User.groups.through)
def save_group(sender, instance, **kwargs): def adjust_group_notifications(instance, action, reverse, model, pk_set, using, *args, **kwargs):
print("GROUP SAVED SIGNAL") # USERGROUP IS CHANGED
#instance.group.save() 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> </head>
<body> <body>
{% if perms.users.agencyinfo %}
<script type="text/javascript">alert(0);</script>
{% endif %}
<!-- Page Wrapper --> <!-- Page Wrapper -->
<div id="wrapper"> <div id="wrapper">
<!-- Sidebar --> <!-- Sidebar -->
@ -214,12 +217,12 @@
</style> </style>
<div id="bottom_info"> <div id="bottom_info">
<hr class="sidebar-divider d-none d-md-block"> <hr class="sidebar-divider d-none d-md-block">
{% if active_link == 'settings' %} {% if active_link == 'dasettings' %}
<li class="nav-item active"> <li class="nav-item active">
{% else%} {% else%}
<li class="nav-item"> <li class="nav-item">
{%endif%} {%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> <i class="fas fa-cog"></i>
<span>Einstellungen</span> <span>Einstellungen</span>
</a> </a>