Дополнительные пользователи аккаунта¶
Эти вызовы предназначены для администрирования пользователей аккаунта (саблогинов). Поэтому права на них не должны быть доступны никому кроме ответственных за это.
Учитывайте это раздавая права новым саблогинам.
Обычным саблогинам достаточно права sys.password.set что бы они могли поменять пароль сами себе (если это им вообще нужно).
Изначально в аккаунте создаётся только один пользователь - так называемый "основной логин" - его написание совпадает с кодом аккаунта.
Такой пользователь имеет все права и, в некоторых вызовах api, он может то, что не могут другие.
Если настраивать систему прав строго правильно, то надо создать набор ролей под необходимые функции (администратор, редактор, менеджер) с минимально необходимыми для функции правами и раздать эти роли нужным дополнительным логинам (конкретным сотрудникам), а основой логин вообще заблокировать.
Сессия запоминает not_after и действительна пока не прошёл сроке её существования и пока не настанет not_after - последующие изменения not_after логина влияния на сессию не оказывают.
Срок действия jwt-токена превышающий not_after ни чему не помешает, но и преодолеть not_after не поможет.
Индивидуальные настройки безопасности для саблогина¶
Часть глобальный настроек безопастности аккаунта можно поменять, отменить или расширить для дополнительного пользователя.
allowip¶
Разрешённые адреса для доступа. Дополняет глобальное ограничение.
sec.password.expire.day, sec.password.history, sec.login.lock.error, sec.login.lock.inactive¶
Эти индивидуальные настройки НЕ действуют если аккаунту глобально не включена соответствующая настройка (включает саппорт)
Т.е. нельзя выборочно каким-то дополнительным пользователм включить, а остальным нет.
Правильно думать как "Включить всему аккаунту, но некоторым сделать индивидуальные настройки или индивидуально отключить".
Глобальные настройки доступны через sys.settings.get:
sec.password.expire.day sec.password.history sec.login.lock.error sec.login.lock.inactive
Указание настройки в вызове:
отсутствует - не изменяется (при создании как null)
null - индивидуальная настройка отменяется и начинает действовать глобальная настройка
0 - отключено индивидуально
1 и более - индивидуальное значение
Список пользователей¶
В этом списке основной логин не выводится.
ответ
{
<общие поля>
,"list" : [
{
"id" : "саблогин пользователя",
"status" : "-1 - ожидает смены пароля |0 - активен | 1 - заблокирован",
"name" : "имя саблогина", (null)
"email" : "email-адрес саблогина", (null)
"phone" : "номер телефона", (null)
"via" : "способ аутентификации", (null)
"role.id" : "идентификатор роли", (null)
"role.name" : "название роли", (null)
"nba_valid" : 0|1 - интервал действия not_before/after наступил (1), прошёл/не начался (0)
},
..
]
}
Создание пользователя¶
Созданный пользователь получает состояние "Требуется сменить пароль"
Созданный пользователь не имеет ни каких прав - выдайте их ему или назначьте роль
{
"action" : "sys.user.create",
"id" : "саблогин",
"password" : "пароль",
"name" : "имя саблогина", -- не обязательно
"email" : "email-адрес", -- необязательно
"phone" : "номер телефона", -- необязательно
"via" : "способ аутентификации", -- необязательно
--
-- по умолчанию - любой способ
--
-- не установить если аккаунт не активирован и не подтверждён телефон аккаунта
--
-- возможные значения по возрастанию "силы":
--
-- "" - любой способ
--
-- "password" - логин-пароль
--
-- "2fasms" - логин-пароль + код-из-смс. должен быть заполнен phone
--
-- "openid" - внешний OpenID
--
-- "apikey" - ключ апи
--
-- "jwt" - jwt-токен
--
-- "reject" - всегда неудачно
--
-- несоответствие способа аутентификации и via саблогина - аутентификация не удастся
--
-- при использовании интерактивных способов - '', "password", "2fasms","openid" - и при установленой у саблогина роли
-- для проверки способа аутентификации выбирается самое "сильное" значение из личной настройки и роли
--
-- при использовании других способов - учитывается только значение из саблогина
"not_before" : "дата-время ранее которого пользователь не действует, Ys", -- не обязательно, null - нет ограничения
"not_after" : "дата-время после которого пользователь не действует, Ys", -- не обязательно, null - нет ограничения
"role.id" : "идентификатор роли" -- не обязательно
-- если роль указана, её требования к заполнению полей пользователя должны соблюдаться
-- например роль с "via" : "2fasms" требует указания "phone"
"allowip" : "список ip и сетей" | "+" -- Индивидуальное ограничение разрешения доступа действующее СОВМЕСТНО с глобальной настройкой sys.settings.get(sec.allowip)
-- Должны разрешить оба списка
-- "индивидуальный список " - не более 255 байт. разедлители: пробел, запятая, точка с запятой
-- "+" - взять значение от основого логина
-- пусто - нет индивидуального ограничения
"passwd_force_change" : undef|0|1... -- Заставлять менять пароль раз в N дней, не обязательно
"passwd_history" : undef|0|1... -- Глубина истории паролей N штук, не обязательно
"block_error_login" : undef|0|1... -- Блокировать за N неудачных попыток логина, не обязательно
"block_inactivity" : undef|0|1... -- Блокировать через N дней неактивности, не обязательно
}
ответ
Чтение данных пользователя¶
{
"action" : "sys.user.get",
"id" : "логин пользователя", -- не обязательно. по умолчанию - текущий пользователь
}
ответ
{
<общие поля>
"id" : "логин пользователя",
"status" : "-1 - требуется сменить пароль | 0 - активен | 1 - заблокирован",
"name" : "имя саблогина", (null)
"email" : "email-адрес саблогина", (null)
"phone" : "номер телефона", (null)
"via" : "способ аутентификации", (null)
"role.id" : "идентификатор роли", (null)
"role.name" : "название роли", (null)
"not_before" : "дата-время ранее которой пользователь не действует", -- Ys, null - нет ограничения
"not_after" : "дата-время после которой пользователь не действует", -- Ys, null - нет ограничения
"nba_valid" : 0|1 - интервал действия not_before/after наступил (1), прошёл/не начался (0)
-- если есть право sys.user.set
"allowip" : "список сетей доступа" (null)
"passwd_force_change" : "Заставлять менять пароль раз в N дней" (null)
"passwd_history" : "Глубина истории паролей N штук, не обязательно" (null)
"block_error_login" : "Блокировать за N неудачных попыток логина, не обязательно" (null)
"block_inactivity" : "Блокировать через N дней неактивности, не обязательно" (null)
}
Изменение данных пользователя¶
Не указанные параметры не меняются
Настройки основному пользователю (sublogin пусто при аутентификации) может менять только он сам.
{
"action" : "sys.user.set",
"id" : "логин пользователя",
"status" : "-1 - заставить сменить пароль | 0 - активировать | 1 - заблокировать" -- необязательно
-- если текущий статус -1 то изменить его возможно только сменой пароля
"name" : "имя саблогина", -- не обязательно
"email" : "email-адрес", -- необязательно
"phone" : "номер телефона", -- необязательно
"via" : "способ аутентификации", -- необязательно. не установить если аккаунт не активирован и не подтверждён телефон аккаунта
"not_before" : "дата-время ранее которой пользователь не действует, Ys", -- не обязательно, null - нет ограничения
"not_after" : "дата-время после которой пользователь не действует, Ys", -- не обязательно, null - нет ограничения
"role.id" : "идентификатор роли" -- не обязательно
"allowip" : "список сетей доступа"
"passwd_force_change" : undef|0|1... -- Заставлять менять пароль раз в N дней, не обязательно
"passwd_history" : undef|0|1... -- Глубина истории паролей N штук, не обязательно
"block_error_login" : undef|0|1... -- Блокировать за N неудачных попыток логина, не обязательно
"block_inactivity" : undef|0|1... -- Блокировать через N дней неактивности, не обязательно
-- изменение пароля, одно из
"password" : "новый пароль",
"password.old" : "старый пароль", -- обязательно, если указан password
-- или
"password.gen" : 1, -- сгенерировать новый пароль
}
ответ
Удаление пользователя¶
Нельзя удалить пользователя с api-ключём. С начала удалите у него api-ключ.
ответ
Изменение пароля себе¶
Меняет пароль текущему пользователю
{
"action" : "sys.password.set",
"password.new" : "новый пароль",
"password.old" : "старый пароль",
}
ответ