Перейти к содержанию

Доступ

Доступ — рабочее пространство после входа для приглашений и выдач мажорных линий, которыми вы владеете. Выдача покрывает одну мажорную линию одного объекта. Следующий мажор сам не открывается.

Локальные копии на машине получателя могут остаться после отзыва. Отзыв действует только вперёд.

URL и кто их видит

Проекция URL Кому видно
Human /{locale}/access вошедшему владельцу
Machine /{locale}/ai/access та же сессия
Accept /{locale}/invitations/{invitation_id} вошедшему приглашённому

Нет сессии → login (принятие приглашения сохраняет id приглашения в returnTo). Нет CSRF на Доступ → панель «сессия истекла». Доступ в шапке и пункт меню аккаунта открывают одно и то же пространство.

Токен приглашения не в видимом URL. Он остаётся во вкладке (компонент принятия читает его оттуда). Если вкладка его потеряла, снова откройте ссылку из письма.

Зачем этот экран

На Доступе можно:

  • пригласить по подтверждённому email на одну точную мажорную линию;
  • выдать напрямую GitHub-имени или user id;
  • увидеть ожидающие приглашения и активные выдачи;
  • отозвать ожидающее приглашение или активную выдачу.

CLI нужен, когда требуются конверты --confirm, токены из переменных окружения или автоматизация. На сайте те же решения, но формой.

Доступ не:

  • выдаёт «все мои объекты»;
  • продлевает выдачу на major+1 при релизе;
  • удаляет байты с диска получателя;
  • заменяет author_verified;
  • принимает приглашение на этой странице (это /invitations/…).

Что на экране

Создать приглашение / прямую выдачу

Поле Подпись Значения
Идентификатор получателя Email получателя / Имя пользователя GitHub / ID пользователя выбор kind
Значение та же подпись, что выбранный kind обязательно
Вид объекта компонент / сетап component или setup
Stable id Stable id ULID объекта
Major-линия Major-линия целое, по умолчанию 1
Submit Создать приглашение неактивна, пока нет получателя и stable id

Получатель-email создаёт приглашение. GitHub username и user id создают прямую выдачу.

Списки

Приглашения, пусто: Нет приглашений. Строка: id приглашения, kind, stable_id, major, state, expires. Отозвать спрашивает:

Отзыв необратим вперёд. Локальные копии на устройствах могут остаться. Продолжить?

Grants, пусто: Нет grants. Строка: id выдачи, kind, stable_id, major, id аккаунта получателя, revoked at. Отзыв — то же предупреждение плюс необязательная Причина.

После успешного POST показывается mutation reference id, чтобы сверить логи. Это не секрет.

Принять приглашение

/{locale}/invitations/{invitation_id}:

Элемент Текст
Title Принять приглашение
Subtitle Токен виден только в этой вкладке, в обычной ссылке его нет.
Button Принять приглашение
Missing token В этой вкладке нет токена приглашения. Откройте ссылку из письма ещё раз.
Need sign-in Войдите, прежде чем принимать приглашение.

Human / Machine: machine Access перечисляет приглашения и выдачи полями (invitation_id, object_kind, stable_id, major, grantee_account_id). Machine accept печатает id приглашения.

Совпадающие команды CLI

ai-stp grant list --json
ai-stp grant invite --json
ai-stp grant direct --json
ai-stp grant accept --json
ai-stp grant invitation revoke --confirm --json
ai-stp grant revoke --confirm --json
ai-stp owner objects --json

grant list — близнец этой страницы. grant invite — email. grant direct — явный идентификатор аккаунта. grant accept читает токен из именованной переменной окружения — не ставьте токен в командную строку и не вставляйте его в паспорт. Команды отзыва — destructive и требуют --confirm.

Тупики

Что видно Что это значит Что делать
Редирект на login нет сессии войти; returnTo сохранён
Session expired on Access нет CSRF войти снова
Создать приглашение неактивна нет получателя или id вставьте stable_id из Objects
Отзыв отменён вы закрыли подтверждение ничего не изменилось
Missing token on accept вкладка потеряла секрет снова откройте ссылку из письма
Could not accept истекло, отозвано или чужой пользователь попросите владельца пригласить снова
У получателя ещё есть файлы отзыв только вперёд ожидаемо; локальные байты остаются
Следующий мажор всё ещё закрыт выдачи сами не продвигаются пригласите major 2 явно
Kind typo 404 только component/setup исправьте kind объекта

Не кладите токены приглашений, чужие email и причины доступа с секретами в текст каталога.

Email-приглашение против прямой выдачи

Вид получателя Действие сервера Следующий шаг приглашённого
подтверждённый email приглашение открыть ссылку из письма → /invitations/{id}
GitHub username прямая выдача уже выдано; токена нет
user id прямая выдача уже выдано; токена нет

Принятие в CLI читает токен из именованной переменной окружения. На сайте токен остаётся во вкладке. Оба отказывают токену в query string.

Major — целочисленная линия, не X.Y. Выдача 1 покрывает 1.0 и 1.4; 2.0 не покрывает. Копируйте stable_id из Objects; имя отображения не сработает.

Machine Access — списки. Создание и отзыв остаются human POST с CSRF.

Связанные страницы

Мажорные линии

Выдача на 1.x не становится выдачей на 2.x. Релиз нового мажора — новое решение о доступе.