mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 14:52:15 +00:00
Use permissions instead of is_staff
This commit is contained in:
@@ -43,6 +43,15 @@ class SSOUser(models.Model):
|
|||||||
if created:
|
if created:
|
||||||
profile, created = SSOUser.objects.get_or_create(user=instance)
|
profile, created = SSOUser.objects.get_or_create(user=instance)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
permissions = (
|
||||||
|
("can_view_users", "Can view any user's profile"),
|
||||||
|
("can_view_users_restricted", "Can view a restricted user profile"),
|
||||||
|
("can_search_users", "Can use the user search function"),
|
||||||
|
("can_refresh_users", "Can refresh a user's access"),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
signals.post_save.connect(SSOUser.create_user_profile, sender=User)
|
signals.post_save.connect(SSOUser.create_user_profile, sender=User)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ def service_reset(request, serviceid=0):
|
|||||||
def user_view(request, username=None):
|
def user_view(request, username=None):
|
||||||
""" View a user's profile as a admin """
|
""" View a user's profile as a admin """
|
||||||
|
|
||||||
if not request.user.is_staff:
|
if not request.user.has_perm('sso.can_view_users') and not request.user.has_perm('sso.can_view_users_restricted'):
|
||||||
return redirect('sso.views.profile')
|
return redirect('sso.views.profile')
|
||||||
|
|
||||||
if username:
|
if username:
|
||||||
@@ -167,9 +167,8 @@ def user_view(request, username=None):
|
|||||||
return redirect('sso.views.user_lookup')
|
return redirect('sso.views.user_lookup')
|
||||||
|
|
||||||
profile = user.get_profile()
|
profile = user.get_profile()
|
||||||
is_admin = request.user.is_staff
|
if installed('hr'):
|
||||||
if is_admin:
|
if request.user.has_perm('hr.add_blacklist'):
|
||||||
if installed('hr'):
|
|
||||||
from hr.utils import blacklist_values
|
from hr.utils import blacklist_values
|
||||||
blacklisted = len(blacklist_values(user))
|
blacklisted = len(blacklist_values(user))
|
||||||
services = ServiceAccount.objects.select_related('service').filter(user=user).only('service__name', 'service_uid', 'active')
|
services = ServiceAccount.objects.select_related('service').filter(user=user).only('service__name', 'service_uid', 'active')
|
||||||
@@ -184,7 +183,7 @@ def user_lookup(request):
|
|||||||
|
|
||||||
form = UserLookupForm()
|
form = UserLookupForm()
|
||||||
|
|
||||||
if not request.user.is_staff:
|
if not request.user.has_perm('sso.can_search_users'):
|
||||||
return redirect('sso.views.profile')
|
return redirect('sso.views.profile')
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
@@ -247,7 +246,7 @@ def set_apipasswd(request):
|
|||||||
def refresh_access(request, userid=0):
|
def refresh_access(request, userid=0):
|
||||||
""" Refreshes the user's access """
|
""" Refreshes the user's access """
|
||||||
|
|
||||||
if userid > 0 and request.user.is_staff:
|
if userid > 0 and request.user.has_perm('sso.can_refresh_users'):
|
||||||
update_user_access(userid)
|
update_user_access(userid)
|
||||||
elif request.user:
|
elif request.user:
|
||||||
update_user_access(request.user.id)
|
update_user_access(request.user.id)
|
||||||
|
|||||||
Reference in New Issue
Block a user