Команда
Команда, роли и папки
- $3
- за каждое место сверх тарифа, в месяц
- 5
- ролей: владелец и четыре назначаемые
- 3 мин
- держится замок профиля, продление раз в минуту
- 7 дней
- живёт код приглашения
Рабочее пространство это один владелец, один счёт и один общий запас
Каждая учётная запись принадлежит рабочему пространству. Если вы завели её в одиночку, вы хозяин своего и единственный его участник. Приняв приглашение, ваша запись перестаёт считаться сама по себе и начинает смотреть на пространство владельца.
С этой минуты его тариф становится вашим. Норма профилей, места устройств, библиотека прокси, папки и журнал считаются по владельцу, поэтому команда берёт из одного оплаченного запаса и по одному счёту. Доплатить за себя отдельно участник не может: запас принадлежит пространству, а не человеку.
Место это человек в этом пространстве, и одно из них владелец занимает сам. Тариф с тремя местами означает владельца и двух коллег. Место сверх тарифа стоит $3 в месяц и прибавляется к цене тарифа до скидки за срок: квартал снимает 10%, год снимает 20%.
Число мест лежит в записи о доступе, а не выводится из названия тарифа. Места покупаются поштучно, поэтому программа берёт число, которое прислал сервер. Пока эти двое расходились, человек, заплативший за трёх коллег, видел одно место и не мог позвать никого.
- Free
- 1 место
- Professional
- 1 место
- Business
- 3 места
- Enterprise
- 20 мест
Одно из этих мест занимает владелец. Каждое докупленное место добавляет $3 в месяц к цене тарифа.
Места следуют за оплатой, а не за записанным названием тарифа
Пять ролей, и каждая упирается в настоящую границу
Ролей пять. Владелец достаётся тому, кто завёл пространство, и не назначается никому. Остальные четыре вы раздаёте сами: сразу в приглашении или позже в списке людей.
Роль это ступень, а не список галочек. Каждый ход на сервере объявляет, какая ступень ему нужна, и старшая роль удовлетворяет требованию младшей. Незнакомая роль превращается в нулевую ступень, поэтому опечатка не даёт ничего, вместо того чтобы дать всё.
Одна честная подробность: у оператора и участника сегодня одна и та же ступень. Два названия существуют затем, чтобы список людей читался так, как команда говорит вслух, а не потому что права разные. Что может участник, то может и оператор, и наоборот.
| Роль | Что открывает | Где останавливается |
|---|---|---|
| Владелец | Всё в пространстве, включая оплату, команду и журнал | Его нельзя исключить, нельзя сменить ему роль и нельзя запереть в папках |
| Администратор | Оплата и тариф, приглашения и роли, доступ к папкам, весь журнал, чужие устройства | Не трогает владельца и не властен в чужом пространстве |
| Управляющий | Общее рабочее добро: папки, библиотека прокси и заказы, сценарии, расписания, смена IP | Ни оплаты, ни команды, ни журнала |
| Оператор | Профили, которые он завёл или которые ему открыли: создать, править, запустить, остановить, синхронизировать | Не заводит и не правит прокси из библиотеки, папки, сценарии и расписания |
| Участник | Те же права, что у оператора | Те же границы, что у оператора |

Папки решают, что видит коллега
Роль действует на всё пространство, поэтому одной ролью нельзя сказать «этот исполнитель работает на одного клиента». Это делают папки. Откройте у участника окно папок, отметьте группы, которые ему открыты, и его список сузится до них.
Правило читается в двух местах, и иначе нельзя. Список профилей отбирается по разрешённым папкам, и открытие профиля по номеру проходит ту же проверку. Без второй ограничение было бы украшением списка: номера ходят по ссылкам, выгрузкам и сценариям. На профиль вне разрешённых папок сервер отвечает «не найдено», а не «нельзя», чтобы по разнице ответов нельзя было выяснить, что есть у соседей.
Профиль, не положенный ни в одну папку, при заданном ограничении не показывается. Иначе запрет обходится тем, что профиль просто не кладут в папку. Строки доступа пишутся на ваше пространство, поэтому ограничение прежнего работодателя не едет за человеком к следующему.
Раздаёт папки только владелец или администратор и только своим людям. Номера папок сверяются с вашими группами до записи, поэтому чужим номером нельзя выдать доступ туда, где вы не хозяин.

Пустой список означает «видит всё»
Открыть один профиль лучше, чем раздать один пароль
Общий доступ это то, что заменяет пересылку логинов. Вы отмечаете коллег в окне доступа, сервер пишет по строке на человека, и профиль появляется у них в списке с пометкой «мне открыли».
Запрос задаёт весь набор целиком, а не разницу. Кто не попал в запрос, тот доступ теряет, и именно поэтому снятая галочка действительно закрывает доступ. Получатели обязаны быть в вашем пространстве, а делиться чужим профилем нельзя, и окно говорит это раньше, чем сервер.
Когда вы закрываете доступ, профиль исчезает у коллеги при ближайшей синхронизации. Данные, уже лежащие у него на диске, при этом не стираются нарочно: закрытый доступ часто означает перестановку, а стереть чужую работу без спроса хуже, чем оставить папку на диске.
Отпечаток и настройки
едут вместе с профилем, поэтому коллега открывает ту же личность, а не похожую копию
Куки и входы
едут через синхронизацию профиля, когда она включена, поэтому сессия продолжается, а не начинается заново
Пароли прокси из библиотеки
управляющий берёт их из самой библиотеки, а оператор получает пароль только вместе с профилем, который ему открыли
Пометка в списке
чужой профиль помечен, поэтому «удалить» на нём не значит того, что значит на своём
Один профиль, одно окно, где бы команда ни сидела
Двое, открывшие один профиль разом, дают две живые сессии одного аккаунта из двух мест. Это ровно то поведение, ради защиты от которого продукт и покупают, поэтому полагаться на вежливость тут нельзя. Машины друг друга не видят, значит замок держит сервер.
Замок держится временем, а не обещанием. Машина, выключенная из розетки, перестаёт продлевать, и профиль освобождается сам. А когда сервера нет или он отвечает «такого хода не знаю», программа запускает профиль как обычно: замок защищает от чужого окна, но не является разрешением на вашу работу.
- 1
Запуск берёт замок
Программа называет свой номер машины и её имя. Запись условная, поэтому два одновременных запуска не могут оба посчитать себя победившими.
- 2
Отказ называет держателя
Вторая машина получает 409, а в нём имя машины держателя, её номер, время с начала и признак того, ваш ли это второй компьютер.
- 3
Перехват делается осознанно
Профиль можно забрать, но только у того держателя, которого вам показали. Два перехвата, пришедшие разом, оба пройти не могут.
- 4
Продление раз в минуту
Пока профиль открыт, программа продлевает замок. Продлевает та же машина, что его взяла, а не любая машина того же человека.
- 5
Три минуты, и он отпускает
Падение или обрыв питания останавливают продление, и по истечении срока профиль снова свободен. Звонить в поддержку не нужно.
- 6
Проигравший об этом узнаёт
Если ваш замок перехватили во время работы, ближайшее продление отвечает отказом, окна закрываются, и вы читаете, что именно произошло.
Журнал называет, кто это сделал и чем
Каждое действие, о котором потом спорят, пишет одну строку: кто, что, когда и в каком пространстве. Пространство записывается в саму строку в момент записи. Ровно из-за этой мелочи исключение сотрудника больше не опустошает историю владельца, а нужна она именно в такую минуту.
В строке лежит небольшой блок подробностей. Если запрос пришёл по ключу для программ, туда же пишется номер ключа, и «сделал Иван» читается как «сделал сценарий Ивана»: один утёкший ключ не заставляет отзывать все. Имена сохраняются такими, какими были в тот день, поэтому сегодняшнее переименование профиля не переписывает прошлую неделю.
Читают журнал владелец и администратор. Поверх одних и тех же строк три вида: всё подряд, открытие и закрытие браузера, входы и регистрации устройств с адресом, страной и именем машины.
Профили
создание, правка, удаление, возврат из корзины, запуск, остановка
Прокси
заведение, правка, удаление, проверка, смена адреса и каждая выдача сохранённого пароля
Команда
приглашение, отзыв приглашения, приём, смена роли, смена папок, исключение или уход
Устройства и доступ
регистрация машины, отвязка, вход, закрытие входа после серии промахов, включение и снятие второго шага
Деньги и ключи
смена тарифа, возврат денег, ручная обрезка или выдача доступа, создание и отзыв ключа
Второе чтение поверх тех же строк
Устройства это тоже места, и их можно забрать
Машины это второй вид мест. Тариф даёт их число, считается оно по всему пространству, и держат места самые ранние регистрации. Порядок устойчивый нарочно: иначе на одном ударе пульса машина выпадала бы из мест, а на следующем возвращалась.
Отвязку сервер помнит. Раньше строка просто удалялась, и программа на ближайшем ударе пульса регистрировала ту же машину заново: владелец нажимал «отвязать» и через минуту видел её на месте. Теперь строка помечается отвязанной, место освобождается сразу, а машине на ближайшем пульсе говорят правду вместо тихого возврата.
Свою машину отвязывает каждый. Чужую только администратор или владелец: пока это мог любой участник, он мог запереть владельца в его же продукте. Выход из аккаунта на самой машине это другое действие, там строка удаляется, потому что человек за этой клавиатурой не равен решению издалека.
Отвязанная машина перестаёт работать с профилями
Когда человек уходит, пространство закрывается за ним
Люди уходят. Дорога одна и та же, исключил ли его владелец или он ушёл сам: две дороги к одному событию однажды разойдутся, и одна из них забудет снять доступ.
Всё, что ниже, происходит одной сделкой и ровно в этом порядке.
- 1
Доступ снимается в обе стороны
Уходит его доступ к вашим профилям и чужой доступ к тем профилям, которые уходят вместе с ним. Доступы к остающимся профилям сохраняются, чтобы увольнение молча не отобрало работу у тех, кто остался.
- 2
Его замок отпускается
Иначе открытый им профиль три минуты выглядел бы занятым, а потом отвечал бы «не найдено», и со стороны это читается как исчезнувший профиль.
- 3
Рабочие профили переходят владельцу
Профили, заведённые после вступления, сделаны в вашей норме и остаются пространству. Профили, с которыми человек пришёл, заведённые до вступления, уходят с ним.
- 4
Прокси из библиотеки остаются
У уходящих профилей стирается ссылка на вашу библиотеку, а слепок внутри профиля стирается, если совпал с вашей библиотекой по адресу, порту и логину. Прокси, купленный человеком на свои деньги, остаётся ему.
- 5
Устройства снимаются
Строки его машин уходят, и места устройств тут же возвращаются пространству.
- 6
Непринятые приглашения гасятся
Второй, так и не использованный код на тот же адрес иначе остался бы рабочим ключом обратно.
- 7
Ограничение по папкам снимается
Иначе ваш запрет уедет с человеком в следующее пространство, где таких папок нет, и запрёт его там целиком.
Строка журнала называет человека, а не код
Чего это не делает
- Роль действует на всё пространство. Нельзя сделать человека администратором в одной папке и оператором в другой: доступ по папкам сужает то, что человек видит, а не то, что ему позволено по роли.
- Приглашение выписывается на уже существующую учётную запись. Человек сначала регистрируется сам, потом вы приглашаете этот адрес, и код живёт 7 дней или до отзыва. Единого входа компании, SAML и выгрузки из справочника сотрудников нет.
- Письмо с приглашением дойдёт, только если у сервера настроен почтовый ход. Иначе оно составляется, ложится в очередь с отметкой «не отправлено», и код или ссылку вы передаёте сами. В кабинете живые приглашения читаются с сервера, а программа показывает те, что выписаны на этой машине.
- Закрытый доступ убирает профиль из программы коллеги, но не стирает куки, уже записанные на его диск. Эти данные нарочно оставляют на месте, поэтому отзыв доступа это не стирание издалека.
- Журнал пространства листается страницами по двадцать строк, от свежих к старым, без отбора по человеку, виду записи и датам. Такой отбор есть только в служебной панели, а не в вашем виде команды.
Как проверить
За каждым утверждением этой страницы стоит файл, а у большинства ещё и стенд, который падает, пока дефект на месте.
- Места считаются при выписке приглашения и второй раз при его приёме, с замком по записи владельца
- apps/server/src/team/team.service.ts · apps/server/test/team-money-seats.js
- Каждая роль закрывает настоящие ходы: управляющий это библиотека, папки, сценарии и расписания, администратор это оплата, команда и журнал
- apps/server/src/common/roles/workspace-roles.ts · apps/server/src/common/roles/roles.guard.ts · apps/server/test/group-access.js
- Доступ по папкам судит одинаково в списке и при прямом открытии, а пустой список означает снятое ограничение
- apps/server/src/team/team.service.ts · apps/server/src/profiles/profiles.service.ts · apps/server/test/group-access.js · apps/web/test/member-folders.js
- Одно окно на профиль: держатель назван, перехват осознанный, замок отпускает сам
- apps/server/src/profiles/profiles.service.ts · apps/server/test/profile-lock.js · apps/desktop/test/profile-busy.js
- Уход и исключение идут одной дорогой, а строка журнала помнит пространство, которому принадлежала
- apps/server/src/team/team.service.ts · apps/server/src/common/audit/audit.service.ts · apps/server/test/audit-filters.js · apps/web/test/уход-из-команды.ts
Читать дальше
Профили
Что именно разделяет один профиль и что достаётся коллеге, когда вы его открываете.
Устройства и синхронизация
Как профиль доезжает до второй машины и что покрывает место устройства.
Безопасность
Второй шаг входа, ключи для программ, хранение паролей прокси и то, в чём сервер отказывает.
Агентствам
Один клиент на папку, один подрядчик на место и что происходит по окончании работы.
Настройте команду раньше, чем появится первый общий аккаунт
Места покупаются поштучно, поэтому команда из троих это тариф плюс два места. Роли, папки и журнал идут вместе с любым тарифом, где мест больше одного.