mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-30 04:26:44 +00:00
Fix logic for global context object 'roles'
- User may be a part of multiple groups - Roles are additive across groups
This commit is contained in:
parent
23aee234f0
commit
fa21d66c41
@ -35,18 +35,25 @@ def user_roles(request):
|
|||||||
|
|
||||||
user = request.user
|
user = request.user
|
||||||
|
|
||||||
roles = {}
|
roles = {
|
||||||
|
}
|
||||||
|
|
||||||
for group in user.groups.all():
|
for group in user.groups.all():
|
||||||
for rule in group.rule_sets.all():
|
for rule in group.rule_sets.all():
|
||||||
|
|
||||||
|
# Ensure the role name is in the dict
|
||||||
|
if rule.name not in roles:
|
||||||
roles[rule.name] = {
|
roles[rule.name] = {
|
||||||
'view': rule.can_view or user.is_superuser,
|
'view': user.is_superuser,
|
||||||
'add': rule.can_add or user.is_superuser,
|
'add': user.is_superuser,
|
||||||
'change': rule.can_change or user.is_superuser,
|
'change': user.is_superuser,
|
||||||
'delete': rule.can_delete or user.is_superuser,
|
'delete': user.is_superuser
|
||||||
}
|
}
|
||||||
|
|
||||||
print("Roles:")
|
# Roles are additive across groups
|
||||||
print(roles)
|
roles[rule.name]['view'] |= rule.can_view
|
||||||
|
roles[rule.name]['add'] |= rule.can_add
|
||||||
|
roles[rule.name]['change'] |= rule.can_change
|
||||||
|
roles[rule.name]['delete'] |= rule.can_delete
|
||||||
|
|
||||||
return {'roles': roles}
|
return {'roles': roles}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user