& владелец для публикации новой модели не работает - PullRequest
0 голосов
/ 14 января 2019

Используя этот ACL для моделей, я хочу предотвратить создание новых моделей, имеющих владельца (userId) для тех токенов доступа, которые ведут к другим пользователям, а не к действительному владельцу. Я не хочу, чтобы userId 4 опубликовал новую модель и установил для владельцев этой модели значение 5, еще один userId. Но сейчас это не работает, поскольку в базе данных нет модели для проверки, что мне делать? Это работало для удаления в прошлый раз, когда я проверял. Но мне нужно для публикации ...

1 Ответ

0 голосов
/ 14 января 2019

Я думаю, что это сделает это.

server/boot/01-add-user.js

module.exports = (server) => {

  // Before each create request, assign the userId property to the userId of the accessToken

  const addUser = async (ctx) => {

    function assignUserId(o) {
      o.userId = ctx.req.accessToken.userId;
    }
    // You can post arrays of objects to loopback
    if (Array.isArray(ctx.req.body)){
      ctx.req.body.forEach(assignUserId);
    } else {
      assignUserId(ctx.req.body);
    }
  };

  server.models.MY_MODEL.beforeRemote('create', addUser);
}

Для ваших ACL попробуйте это

  "acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "DENY"
    },
    {
      "accessType": "READ",
      "principalType": "ROLE",
      "principalId": "$owner",
      "permission": "ALLOW"
    },
    {
      "accessType": "WRITE",
      "principalType": "ROLE",
      "principalId": "$owner",
      "permission": "ALLOW"
    },
    {
      "principalType": "ROLE",
      "principalId": "$authenticated",
      "permission": "ALLOW",
      "property": "create"
    }
  ],
...