> ## Documentation Index
> Fetch the complete documentation index at: https://cs-lua.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# access — Выдача

> Права как именованные ноды, группы и иммунитет

# Выдача

<h2 id="grant">
  access.grant
</h2>

Выдаёт права по ключу.

```lua theme={null}
access.grant(key, spec)
```

### Аргументы

| # | имя    | тип    |                          |
| - | ------ | ------ | ------------------------ |
| 1 | `key`  | string | steamid или `name:<ник>` |
| 2 | `spec` | table  | см. [Поля](#grant-поля)  |

### Возвращает

| тип       |                    |
| --------- | ------------------ |
| `boolean` | `true` при успехе  |
| `string`  | причина при ошибке |

<h3 id="grant-поля">
  Поля
</h3>

| поле     | тип              |                                          |
| -------- | ---------------- | ---------------------------------------- |
| `groups` | string \| table  | группа или список групп                  |
| `allow`  | string \| table  | ноды, которые выдать                     |
| `deny`   | string \| table  | ноды, которые запретить                  |
| `until_` | string \| number | `"30d"`, `"12h"`, `"map"` или unix-время |
| `where`  | table            | `{ map = }` или `{ maps = {} }`          |

<Note>
  Действует сразу; в файл попадает только после
  [`access.save`](grant.md#save).
</Note>

<h2 id="revoke">
  access.revoke
</h2>

Забирает запись, группу или ноду.

```lua theme={null}
access.revoke(key[, group][, node])
```

### Аргументы

| # | имя     | тип           |                          |
| - | ------- | ------------- | ------------------------ |
| 1 | `key`   | string        | steamid или `name:<ник>` |
| 2 | `group` | string \| nil | какую группу забрать     |
| 3 | `node`  | string \| nil | какую ноду забрать       |

### Возвращает

| тип       |                    |
| --------- | ------------------ |
| `boolean` | `true` при успехе  |
| `string`  | причина при ошибке |

Без `group` и `node` удаляет запись целиком.

<h2 id="save">
  access.save
</h2>

Записывает `users.lua` на диск.

```lua theme={null}
access.save()
```

### Возвращает

| тип       |                    |
| --------- | ------------------ |
| `boolean` | `true` при успехе  |
| `string`  | причина при ошибке |

Атомарно, с `.bak` — как [`datafile.save`](../store/datafile.md#save).

<h2 id="reload">
  access.reload
</h2>

Перечитывает `groups.lua` и `users.lua` с диска.

```lua theme={null}
access.reload()
```

### Возвращает

Ничего.

Без полного `lua_reload`.

<h2 id="invalidate">
  access.invalidate
</h2>

Сбрасывает кеш прав.

```lua theme={null}
access.invalidate([p])
```

### Аргументы

| # | имя | тип           |                               |
| - | --- | ------------- | ----------------------------- |
| 1 | `p` | player \| nil | чей кеш; без аргумента — всех |

### Возвращает

Ничего.

Нужен после `grant`/`revoke` из своего кода.
