使用Graphcool管理用户角色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Graphcool管理用户角色相关的知识,希望对你有一定的参考价值。

我在Graphcool中使用模板graphcool / templates / auth / email-password,我想添加管理用户角色的功能。

这是我的定义架构:

type User @model {
    id: ID! @isUnique
    createdAt: DateTime!
    updatedAt: DateTime!
    email: String! @isUnique
    password: String!
    role: UserRole!
}

enum UserRole {
    EDITOR,
    MODERATOR,
    ADMIN
}

我已经在查询中接收角色并将其保存在本地存储中,但任何人都可以更改它影响前端UI(如果我们添加权限,我们不应该担心服务器端)。管理它的最佳/安全方法是什么?

答案

您使用的是Graphcool框架吗?

如果您需要在graphcool.yml中设置权限。我会包括以下内容:

graphcool.yml

- operation: User.create
  authenticated: true
  query: permissions/User.graphql:adminRole
- operation: User.read
  authenticated: true
  query: permissions/User.graphql:adminRole
- operation: User.update
  authenticated: true
  query: permissions/User.graphql:adminRole
- operation: User.delete
  authenticated: true
  query: permissions/User.graphql:adminRole

- operation: User.read
  authenticated: true
  query: permissions/User.graphql:user
  fields:
  - id
  - name
  - role
  - createdAt
  - updatedAt
  - email
  - company
- operation: User.update
  authenticated: true
  query: permissions/User.graphql:user
  fields:
  - name
  - company

User.graphql

query user($node_id: ID, $user_id: ID!) {
  SomeUserExists(filter: {AND: [{id: $user_id}, {id: $node_id}]})
}

query adminRole($user_id: ID!) {
  SomeUserExists(filter: {id: $user_id, role: ADMIN})
}

这样,用户只能更新他们的名字和公司。然后ADMIN用户可以读取和编辑每个人。只有ADMIN用户可以创建或更新新用户。

然后你可能会问你如何创建新用户?我将使用Graphcool模板中的FaaS代码进行电子邮件密码验证,如下所示:

https://github.com/graphcool/templates/tree/master/auth/email-password

signup.ts文件应该是新用户如何注册,然后管理员为您创建新用户。在注册功能中,您可以将UserRole默认为您想要的任何内容。

https://github.com/graphcool/templates/blob/master/auth/email-password/src/signup.ts

以上是关于使用Graphcool管理用户角色的主要内容,如果未能解决你的问题,请参考以下文章

《java精品毕设》基于javaweb宠物领养平台管理系统(源码+毕设论文+sql):主要实现:个人中心,信息修改,填写领养信息,交流论坛,新闻,寄养信息,公告,宠物领养信息,我的寄养信息等(代码片段

使用 *ngFor (angular + apollo + graphcool) 获取用户的帖子

向 Graphcool 电子邮件密码模板突变添加字段

用户角色 - 添加角色功能 php 片段 - Wordpress

使用 Graphcool 发出经过身份验证的查询

Oracle-常用数据库对象笔记(片段)