Spec-Zone.ru › RethinkDB java

Команда ReQL: grant

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

r.grant("username", r.hashMap("permission", bool[, ...])) → object
db.grant("username", r.hashMap("permission", bool[, ...])) → object
table.grant("username", r.hashMap("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", r.hashMap("read", true).with("write", true)).run(conn);

Возврат:

{
    "granted": 1,
    "permissions_changes": [
        {
            "new_val": { "read": true, "write": true },
            "old_val": { null }
        }
    ]

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

r.db("users").table("admin").grant("chatapp", r.hashMap("write", false)).run(conn);

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

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

r.db("users").table("admin").grant("chatapp", r.hashMap("write", null)).run(conn);

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

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

r.grant("chatapp", r.hashMap("connect", true)).run(conn);

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

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

r.grant("monitor", r.hashMap("read", true)).run(conn);

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

Spec-Zone.ru

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