К содержимому

Доступ

Выдачи и приглашения на сайте.

Доступ

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

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

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 idStable idULID объекта
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.

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

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