【发布时间】:2021-10-04 07:25:47
【问题描述】:
我有一个 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。
-
如果学生字段与登录的学生匹配,并且当前日期早于开始字段,则学生可以写入学生字段以取消注册或取消。
Amplify GraphQL @Auth 能做到这一点吗?
【问题讨论】:
标签: graphql amazon-dynamodb amazon-cognito aws-amplify aws-serverless