Skip to content

Уровни доступа

Для каждой коллекции и каждого её метода API можно настроить уровень доступа:

УровеньОписание
PublicЗапросы без авторизации. Подходит для публичных данных
UserПользователь видит и изменяет только свои записи
WorkspaceПользователь работает с записями в рамках общего пространства совместно с другими пользователями этого пространства

Важно!

Неправильная настройка доступа может привести к утечке данных или несанкционированному изменению записей. Никогда не используйте Public на методах Create, Update, Delete для данных, которые должны редактироваться только определенными пользователями.

Public / Публичный

Публичный уровень доступа позволяет выполнять запросы без авторизации. Подходит для публичных данных, которые доступны всем.

Когда использовать

  • Открытый контент, статьи, FAQ
  • Публичные каталоги товаров
  • Справочники и сведения о компании
  • Любые данные, которые должны быть видны всем

Пример

Коллекция products с уровнем доступа Public для метода View All:

http
GET https://api.kodzero.pro/v1/:project/products

Запрос выполняется без токена авторизации.

⚠️ Важно для методов изменения

Никогда не используйте Public для методов Create, Update, Delete, если данные должны редактироваться только определенными пользователями. Это приведет к тому, что любой пользователь сможет изменять или удалять данные.

http
// ❌ Опасно - кто угодно может создавать товары
POST https://api.kodzero.pro/v1/:project/products
Content-Type: application/json

{ "title": "Товар", "price": 100 }

User / Пользователь

User уровень доступа ограничивает доступ пользователя только к своим собственным записям. При использовании этого уровня система автоматически фильтрует данные и пользователь видит только те записи, которые он создал или которые ему принадлежат.

Как это работает

  1. При создании записи (Create): система автоматически добавляет к записи id пользователя (техническое свойство _user).
  2. При просмотре записи (View) или записей View All: система автоматически фильтрует записи по текущему пользователю (техническое свойство _user).
  3. При изменении записи (Update) и удалении записи (Delete): система автоматически применяет фильтр по id пользователя перед операцией (техническое свойство _user).

Когда использовать

  • Личные заметки пользователя
  • История заказов конкретного пользователя
  • Избранное и закладки
  • Профильные данные
  • Прочие приватные данные пользователя

Пример

Коллекция notes с уровнем доступа User:

http
// Требуется авторизация
GET https://api.kodzero.pro/v1/:project/notes
Authorization: Bearer ACCESS_TOKEN

Ответ будет содержать только заметки текущего пользователя:

json
{
  "ok": true,
  "result": {
    "page": 1,
    "perPage": 25,
    "total": 1,
    "totalPages": 1,
    "found": [
      {
        "_id": "69c156e129d4e3fab000a241",
        "_user": "69d4060864e21c4d68e1c34b",
        "title": "Задача пользователя",
        "_createdAt": "2025-01-15T10:30:00Z"
      }
    ]
  }
}

Если другой пользователь (с другим токеном) выполнит точно такой же запрос, он получит свои собственные записи.

Безопасность

  • Пользователь не может увидеть чужие записи, т.к. фильтр применяется автоматически
  • Если пользователь A запросит запись пользователя B по ID записи, будет возвращена ошибка 404, т.к. у пользователя А нет записи с таким ID.

Workspace / Воркспейс

Workspace уровень доступа предоставляет доступ к записям в рамках общего рабочего пространства. Это позволяет членам одного воркспейса совместно работать с данными.

Как это работает

  1. При создании записи (Create): система автоматически добавляет к записи id пользователя (техническое свойство _user) и id воркспейса (свойство _workspace).
  2. При просмотре записи (View) или записей View All: система автоматически фильтрует записи по id воркспейса текущего пользователя (свойство _workspace).
  3. При изменении записи (Update) и удалении записи (Delete): система автоматически применяет фильтр по id воркспейса текущего пользователя перед операцией (свойство _workspace).

Когда использовать

  • Совместные проекты
  • Командные доски и списки задач
  • Документы, работающие над которыми команда
  • Общие финансовые отчеты команды
  • Любые данные, которые должны быть видны всем членам команды

Пример

Коллекция tasks с уровнем доступа Workspace:

http
// Требуется авторизация
GET https://api.kodzero.pro/v1/:project/tasks
Authorization: Bearer ACCESS_TOKEN

Ответ будет содержать только задачи воркспейса текущего пользователя:

json
{
  "ok": true,
  "result": {
    "page": 1,
    "perPage": 10,
    "total": 42,
    "totalPages": 5,
    "found": [
      {
        "_id": "69c156e129d4e3fab000a241",
        "_workspace": "69c828d0113d90b497631f3f",
        "_user": "69d4060864e21c4d68e1c34b",
        "title": "Задача команды",
        "_createdAt": "2025-01-15T10:30:00Z"
      }
    ]
  }
}

Если другой пользователь из того же воркспейса выполнит запрос, он получит те же записи. Если же пользователь из другого воркспейса выполнит запрос, он получит задачи из своего воркспейса.

Один пользователь = один воркспейс

Пользователь не может быть членом нескольких воркспейсов.

Комбинирование уровней доступа

При необходимости, можно настроить более сложные сценарии, когда, например:

  • метод создания записей (Create) имеет уровень доступа User,
  • метод просмотра (View All) — уровень доступа Public,
  • изменение (Update) и удаление записей (Delete) — уровень доступа Workspace.