基于字段值的 AWS Amplify GraphQL 授权

我有一个 AWS Amplify 项目,在 Cognito 中有三个不同的用户组。管理员、教师和学生组。我还有一个像这样的 GraphQL Schema。

type DriveTime @model {
  id: ID!
  start: AWSDateTime!
  end: AWSDateTime!
  openRegistration: AWSDateTime!
  closeRegistration: AWSDateTime!
  vehicle: Vehicle @connection(name: "VehicleDriveConnection")
  instructor: Instructor @connection(name: "InstructorDriveConnection")
  student: Student @connection(name: "StudentDriveConnection")
  evaluation: DriveEvaluation @connection(name: "DriveEvaluationConnection")
}

基本上是管理员或教师设置学生可以注册的时间。

我想创建允许以下内容的授权规则:

  • 管理员组可以读取、写入、更新和删除任何内容。

  • 讲师组可以读取、写入、更新和删除任何内容。

  • 学生组只能读取(当前日期在 openRegistration 和 closeRegistration 字段内)或(学生字段与登录的学生匹配)。

  • 如果当前日期在 openRegistration 和 closeRegistration 字段内并且学生字段为空,则学生可以自己注册 DriveTime。

  • 如果 student 字段与登录的学生匹配,并且当前日期在 start 字段之前,则学生可以写信给 student 字段以取消注册或取消。

Amplify GraphQL @Auth 是否能够做到这一点?

kongyaling 回答:基于字段值的 AWS Amplify GraphQL 授权

阅读文档:

[1] https://docs.amplify.aws/cli/graphql-transformer/auth

[2] https://docs.amplify.aws/cli/graphql-transformer/directives#aws-appsync-provided-directives

[3] https://aws.amazon.com/blogs/mobile/graphql-security-appsync-amplify/

您的某些要求可能没有开箱即用的支持,这意味着您可能需要创建自定义逻辑 - 请查看 Lambda Resolvershttps://docs.amplify.aws/cli/graphql-transformer/function#usage

本文链接:https://www.f2er.com/22012.html

大家都在问