放大:如何在连接上使用父母的访问权限?

时间:2021-07-12 10:08:22

标签: security graphql amazon-cognito aws-amplify

使用以下放大 graphql 模式我可以实现一些安全性,但不是我想要的:

  • 用户可以创建餐厅并拥有它(查看、删除、更新...)
  • 餐厅老板可以授予群组访问权限
  • 未经授权的用户无法查看/更新/删除餐厅
  • 未经授权的用户无法列出/编辑来自他不拥有的餐厅的订单(不完全确定)

但是

  • 提供了餐厅的 ID,任何人都可以在餐厅创建订单(我检查过)

我怎么知道要创建订单,您必须拥有父餐厅的访问权限?这可能吗?

type Restaurant
@model
@auth(rules: [{allow: owner}, {allow: groups, groupsField: "allowedGroups"}])
{
  id: ID!
  name: String!
  description: String!
  city: String!
  allowedGroups: [String]
  orders: [Order]
  @connection(keyName: "byRestaurant", fields: ["id"])
}

type Order
@model(queries: null)
@auth(rules: [{allow: private}]) # Something smarter here ?
@key(name: "byRestaurant", fields: ["restaurantID"])
{
  id: ID!
  restaurantID: ID!
  description: String!
  processedAt: AWSDateTime
}

0 个答案:

没有答案