Django 权限属于组,但该组上的用户没有组的权限
Django permission belongs to group, but user on that group has no group's permission
我决定不使用 django-guardian
因为如果我的客户 delete/create Group
我必须在我的 ModelManager
上增加更多开销才能将现有权限转移到新组.因此,让 filter_queryset
通过 Django REST 过滤实例对我来说很好。
失败的测试用例:
from django.contrib.auth.models import User
from poinkbackend.apps.companies.models import Company
from poinkbackend.apps.roles.models import Role
from poinkbackend.apps.userroles.models import UserRole
from poinkbackend.apps.commons.tests import companies, userprofiles, branches
def test_support_view_userprofile(companies, userprofiles):
company = Company.objects.get(name='Singh')
support = Role.objects.add_support('firstsupport', company)
user = User.objects.get(username='notty')
UserRole.objects.create(user=user, role=support)
user.refresh_from_db()
import pdb; pdb.set_trace()
assert True is user.has_perm('view_userprofile')
-> assert True is user.has_perm('view_userprofile')
(Pdb) user.groups.first()
<Group: firstsupport-Singh>
(Pdb) g1 = user.groups.first()
(Pdb) g1.permissions.all()
<QuerySet [<Permission: userprofiles | user profile | View UserProfile>]>
(Pdb) user.has_perm('view_userprofile')
False
问题:
我哪里错了?
2017 年 11 月 16 日更新 10:30 GMT+7 添加 4 日 url
要点:
公司:https://gist.github.com/elcolie/684ba34391d0a94df7ca98855cea765b
作用:https://gist.github.com/elcolie/64a3a3daf22240b2072e113eb10164e2
用户角色:https://gist.github.com/elcolie/d28e7fcf54334a9f13df5fff1b7d9fe0
营业执照:https://gist.github.com/elcolie/bbeb00f41db0c7884cee34c6bccaf5f9
参考文献:
Django user has_perm returning false even though group has permission
Django user not getting the assigned group's permissions
django group permission
虽然我找到了错误的根本原因。我已经根据@Adam Dobrawy 评论更新了我的问题。
问题是我混淆了守护者的命令。 django-guardign
语法可以在前面没有 app_label
的情况下使用。在我的例子中是 userprofiles
我必须将 user.has_perm('view_userprofile')
行替换为 user.has_perm('userprofiles.view_userprofile')
再次。非常感谢 Adam 花时间和精力阅读我的问题。
我决定不使用 django-guardian
因为如果我的客户 delete/create Group
我必须在我的 ModelManager
上增加更多开销才能将现有权限转移到新组.因此,让 filter_queryset
通过 Django REST 过滤实例对我来说很好。
失败的测试用例:
from django.contrib.auth.models import User
from poinkbackend.apps.companies.models import Company
from poinkbackend.apps.roles.models import Role
from poinkbackend.apps.userroles.models import UserRole
from poinkbackend.apps.commons.tests import companies, userprofiles, branches
def test_support_view_userprofile(companies, userprofiles):
company = Company.objects.get(name='Singh')
support = Role.objects.add_support('firstsupport', company)
user = User.objects.get(username='notty')
UserRole.objects.create(user=user, role=support)
user.refresh_from_db()
import pdb; pdb.set_trace()
assert True is user.has_perm('view_userprofile')
-> assert True is user.has_perm('view_userprofile') (Pdb) user.groups.first() <Group: firstsupport-Singh> (Pdb) g1 = user.groups.first() (Pdb) g1.permissions.all() <QuerySet [<Permission: userprofiles | user profile | View UserProfile>]> (Pdb) user.has_perm('view_userprofile') False
问题:
我哪里错了?
2017 年 11 月 16 日更新 10:30 GMT+7 添加 4 日 url
要点:
公司:https://gist.github.com/elcolie/684ba34391d0a94df7ca98855cea765b
作用:https://gist.github.com/elcolie/64a3a3daf22240b2072e113eb10164e2
用户角色:https://gist.github.com/elcolie/d28e7fcf54334a9f13df5fff1b7d9fe0
营业执照:https://gist.github.com/elcolie/bbeb00f41db0c7884cee34c6bccaf5f9
参考文献:
Django user has_perm returning false even though group has permission
Django user not getting the assigned group's permissions
django group permission
虽然我找到了错误的根本原因。我已经根据@Adam Dobrawy 评论更新了我的问题。
问题是我混淆了守护者的命令。 django-guardign
语法可以在前面没有 app_label
的情况下使用。在我的例子中是 userprofiles
我必须将 user.has_perm('view_userprofile')
行替换为 user.has_perm('userprofiles.view_userprofile')
再次。非常感谢 Adam 花时间和精力阅读我的问题。