【问题标题】:custom roles and permission自定义角色和权限
【发布时间】:2018-12-17 07:17:45
【问题描述】:

我是 django 和 drf 的新手,所以这是我认为可以帮助我的地方。

我正在构建一个办公室考勤系统。

现在这里的用户是 1. 运营经理 (OM) 2. 管理员 3. 员工 4. CEO。 OM 可以创建一个新用户并指定它是 admin、staff 还是 CEO。 Admin、Staff 和 CEO 有自己的权限。

我的问题是如何将这些角色和权限分配给 django rest 框架中的用户类型。 我看过关于自定义权限的 drf 文档,它说扩展 BasePermission 类并实现 2 个方法。

我的要求是新用户不要自己注册,而是 OM 为他们创建一个新用户。

编辑 1:

我已经实现了这种方式。这行得通吗?

型号:

class User(AbstractUser):
    user_type = {
    ('admin', 'Admin'),
    ('staff', 'Staff'),
    ('om', 'OM'),
    }
    user_choice = CharField(choices=user_type, blank=True, max_length=255)

序列化器:

class UserSerializers(serializers.ModelSerializer):
first_name = serializers.ReadOnlyField()
groups = GroupSerializers(many=True)
user_type = serializers.CharField()
class Meta:
    model = User
    fields = ('first_name', 'last_name','address','contact', 'email', 'date_of_birth', 'branch', 'groups', 'user_type')

def user_group(self, data):
    user_type = data.get("user_type", "")
    email = data.get("email")
    user = User.objects.get(email = 'email')# get user object from post request
    if user_type == "admin":
        grp = Group.objects.get_or_create(name='Admin')
        user.group.add(grp)

    elif user_type == "staff":
        grp = Group.objects.get_or_create(name='Staff')
        user.group.add(grp)

    else:
        grp = Group.objects.get_or_create(name='OM')
        user.group.add(grp)

查看:

class UserCreateView(ModelViewSet):
model = User
serializer_class = UserSerializers

【问题讨论】:

  • 可能,在创建新用户时使用另一个模型UserPermission设置权限类型。
  • 看看this
  • 我没有得到如何使用另一个模型UserPermission 来设置权限?不使用任何第三方库就不可能吗?
  • 没有第三方库绝对可以。

标签: django django-rest-framework


【解决方案1】:

首先,您应该决定要使用哪个访问控制应用程序。在这里可以好好对比一下:https://www.vinta.com.br/blog/2016/controlling-access-a-django-permission-apps-comparison/

对我来说,使用本地 Django 权限以及分配给用户的组和 @permission_required 装饰器就足够了。

【讨论】:

    猜你喜欢
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    相关资源
    最近更新 更多