Коды доступа
Для регистрации в программе «Цветные камешки», как уже отмечалось выше, требуется иметь специальный код доступа. Наличие у пользователя кода доступа означает наличие у него права (и технической возможности) стать участником.Код доступа имеет следующие атрибуты: наименование получателя кода доступа, (это может быть физическое или юридическое лицо), срок действия, максимальное число активных логинов и указание на наличие или отсутствие права создавать новые коды доступа.
Вызвав пункт меню «Коды доступа» мы увидим список уже созданных участником (в данном случае kharsh22) кодов доступа для своих будущих подписчиков с указанием всех перечисленных атрибутов:

Предпоследний атрибут «Право создания (кодов доступа)» играет ключевую роль в формировании структуры дерева участников.
Коды доступа без права создания новых кодов доступа допускают неограниченное число регистраций, но ограниченное число активных логинов: не более числа, указанного в графе «Логинов».
Код доступа с правом создания новых кодов доступа допускает лишь одну регистрацию (будущим лидером). Далее лидер создаёт новые коды доступа, по которым другие пользователи (его подписчики) смогут зарегистрироваться.
Участника В, получившего код доступа от участника А, мы называем подписчиком (первого уровня) участника А, а участника А - лидером (непосредственным лидером) участника В. Сделаем это отношение транзитивным, объявив принцип: «Подписчик моего подписчика является моим подписчиком, а лидер моего лидера является моим лидером». (Транзитивное отношение – отношение, обладающее следующим свойством: если a находится в отношении с b, и b находится в отношении с d, то а находится в отношении с d. Например, отношение равенства a = b или отношение «больше», a > b, являются транзитивными отношениями. В нашем контексте отношение лидерства двух участников тоже является транзитивным.)
Структура дерева участников реализуется следующим образом: некоторый лидер высшего уровня получает от владельцев продукта вместе с лицензией на использование онлайн-практикума «лицензионный код доступа» с правом самостоятельно создавать коды доступа на ограниченное лицензией число логинов для учащихся. Он регистрируется по этому «лицензионному коду», а затем в меню «Коды доступа» создаёт коды доступа для учителей, в классах которых предполагается использовать продукт. При этом каждому из учителей он также даёт право создавать коды доступа на определенное число логинов для учащихся (код доступа учителя). Общее число активных логинов учащихся (учителя и лидера высшего уровня не входят в это число) не может превышать число логинов, которое было предусмотрено в лицензии, это же относится к сроку действия логинов.
Вот как это выглядит:

Каждый лидер может скорректировать ранее созданный им код доступа в части числа логинов и даты окончания срока действия, но только в «выгодную» для подписчика сторону, т.е. он может увеличить число логинов и сделать дату окончания срока действия более поздней, но, разумеется, как и при создании нового кода доступа лишь в пределах своих полномочий, т.е. новая дата окончания срока не может быть больше, чем дата окончания срока действия собственного кода доступа лидера, а новое число логинов не может быть больше, чем число неиспользованных логинов лидера. Такие изменения могут потребоваться при продлении или расширении лицензии.
Например, если участник kharsh22 хочет изменить атрибуты первого подписчика в списке кодов доступа, ему нужно нажать на «Изменить» в первой строке; при этом поля «Логинов» и «Действует до» в этой строке становятся редактируемыми:

После внесения изменений нужно ещё раз нажать на «Изменить» - корректировка выполнена.