Spec-Zone.ru › RethinkDB javascript

Команда ReQL: grant

Синтаксис команды

r.grant("username", {permission: bool[, ...]}) → object
db.grant("username", {permission: bool[, ...]}) → object
table.grant("username", {permission: bool[, ...]}) → object

Описание

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

Существует четыре различных разрешения, которые могут быть предоставлены учетной записи:

  • read позволяет читать данные в таблицах.
  • write позволяет изменять данные, включая вставку, замену/обновление и удаление.
  • connect позволяет пользователю открывать HTTP-соединения через команду http. Это разрешение может быть предоставлено только на глобальном уровне.
  • config позволяет пользователям создавать/удалять вторичные индексы в таблице и изменять конфигурацию кластера; создавать и удалять таблицы, если разрешение предоставлено на уровне базы данных; и создавать и удалять базы данных, если разрешение предоставлено глобально.

Разрешения могут быть предоставлены на глобальном уровне или для определенной таблицы или базы данных. Область действия определяется вызовом grant в отдельности (например, r.grant(), для таблицы (r.table().grant()), или для базы данных (r.db().grant())).

Команда grant возвращает объект следующего формата:

{
    "granted": 1,
    "permissions_changes": [
        {
            "new_val": { new permissions },
            "old_val": { original permissions }
        }
    ]
}

Поле granted всегда будет 1, а список permissions_changes будет содержать один объект, описывающий новые значения разрешений и старые значения, от которых они были изменены (которые могут быть null).

Разрешения, которые не определены на локальном уровне, будут унаследованы от следующей по масштабу области. Например, операция записи в таблицу сначала проверит, установлены ли разрешения write явно на значения true или false для этой таблицы и сочетания учетной записи; если нет, будут использоваться разрешения write для базы данных, если они явно установлены; и если разрешения для таблицы или базы данных не заданы для этой учетной записи, будут использоваться глобальные разрешения write для этой учетной записи.

Примечание: Для всех учетных записей, кроме специальной, определённой системой admin учетной записи, разрешения, которые не установлены явно ни в какой области, по умолчанию будут false. При создании новой учетной записи пользователя путем вставки записи в систему таблиц, этой учетной записи не будет предоставлено никаких разрешений, пока они не будут явно предоставлены.

Для получения полного описания разрешений, прочтите Разрешения и учетные записи пользователей.

Пример: Предоставить учетной записи пользователя chatapp разрешения на чтение и запись в базе данных users.

r.db('users').grant('chatapp', {read: true, write: true}).run(conn, callback);

// Result passed to callback
{
    "granted": 1,
    "permissions_changes": [
        {
            "new_val": { "read": true, "write": true },
            "old_val": { null }
        }
    ]

Пример: Запретить разрешение на запись учетной записи chatapp для таблицы admin.

r.db('users').table('admin').grant('chatapp', {write: false}).run(conn, callback);

Это переопределит разрешения write: true , предоставленные в первом примере, но только для этой таблицы. Другие таблицы в базе данных users будут наследовать разрешения от базы данных.

Пример: Удалить разрешения на уровне таблицы для учетной записи chatapp.

r.db('users').table('admin').grant('chatapp', {write: null}).run(conn, callback);

Указав null, разрешение на уровне таблицы write будет удалено, и оно снова будет унаследовано от следующей по приоритету области (база данных или глобальная).

Пример: Предоставить chatapp возможность использовать HTTP-соединения.

r.grant('chatapp', {connect: true}).run(conn, callback);

Это разрешение может быть предоставлено только на глобальном уровне.

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

r.grant('monitor', {read: true}).run(conn, callback);

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/grant/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API