Операции самообслуживания
Администратор приложения может предоставить авторизованному пользователю возможность самостоятельно менять настройки учетной записи. Поддерживаются такие операции самообслуживания, как:
- изменение пароля,
- подтверждение измененного контакта,
- добавление нового контакта,
- добавление и удаление учетной записи.
Чтобы повысить уровень безопасности, дополнительно подтверждаются отправкой кода все операции, кроме:
- добавления учетной записи,
- изменения пароля в случае, если у пользователя нет контакта и нет способа его задать (т. е. не настроены шлюзы).
Все необходимые изменения пользователь может выполнять на странице самообслуживания, доступной по адресу путь-к-приложению/self-service
:
Алгоритм выполнения операций самообслуживания
Вы также можете реализовать свой сценарий использования этих операций. Выполнение операций происходит по следующему алгоритму:
- Пользователь инициирует процесс выполнения операции (например, нажатием на кнопку в форме).
- Приложение проверяет данные и в случае успеха отправляет код подтверждения через сервис отправки кодов.
- Пользователь получает код и каким-либо образом передает его приложению (например, вводит в поле ввода).
- Приложение проверяет код и в зависимости от результата предлагает отправить код повторно через определенный временной интервал или подтверждает выполняемую операцию.
Самостоятельное изменение пароля доступно только авторизованному пользователю. Если пользователь забыл пароль, он воспользуется функцией восстановления пароля.
Объектная модель для реализации самообслуживания пользователей
Для реализации операций самообслуживания пользователей используются типы пространства имен Стд::Пользователи::Самообслуживание
.
ОперацииСамообслуживания
Тип ОперацииСамообслуживания
доступен через одноименное свойство глобального контекста. С помощью его методов ДобавлениеУчетнойЗаписи()
и УдалениеУчетнойЗаписи()
вы можете добавить и удалить способы аутентификации:
ОперацияСамообслуживания.ДобавлениеУчетнойЗаписи(): ОперацияДобавленияУчетнойЗаписи
ОперацияСамообслуживания.УдалениеУчетнойЗаписи(): ОперацияУдаленияУчетнойЗаписи
С помощью методов ДобавлениеКонтакта()
и ПодтверждениеКонтакта()
можно добавить и подтвердить контакт текущего пользователя:
ОперацияСамообслуживания.ДобавлениеКонтакта(): ОперацияДобавленияКонтакта
ОперацияСамообслуживания.ПодтверждениеКонтакта(): ОперацияПодтвержденияКонтакта
Метод ИзменениеПароля()
позволяет изменить пароль:
ОперацияСамообслуживания.ИзменениеПароля(): ОперацияИзмененияПароля
ОперацияДобавленияУчетнойЗаписи
Чтобы добавить учетную запись пользователя, для объекта типа ОперацияДобавленияУчетнойЗаписи
вызывается метод Выполнить()
с поставщиком аутентификации, указанном в параметре.
ОперацияУдаленияУчетнойЗаписи, ОперацияДобавленияКонтакта, ОперацияПодтвержденияКонтакта, ОперацияИзмененияПароля
Для объектов типов ОперацияУдаленияУчетнойЗаписи
, ОперацияДобавленияКонтакта
, ОперацияПодтвержденияКонтакта
, ОперацияИзмененияПароля
доступны следующие методы:
-
Начать()
— создает операцию. Принимает параметры, соответствующие операции. Например,ОперацияИзмененияПароля.Начать()
принимает два параметра типаСтрока
:СтарыйПароль
иНовыйПароль
.пер СтатусОперации = ОперацииСамообслуживания.ИзменениеПароля()
.Начать("СтарыйПароль", "НовыйПароль")А метод
ОперацияПодтвержденияКонтакта.Начать()
принимает параметрыВидКонтакта
, который задает вид подтверждаемого контакта, иСпособПодтверждения
, который задает способ подтверждения операции самообслуживания. Э ти параметры должны соответствовать друг другу, иначе выбрасывается исключение:-
ВидКонтактаПользователя.Телефон
—СпособПодтвержденияОперации.СМС
, -
ВидКонтактаПользователя.Почта
—СпособПодтвержденияОперации.Почта
.пер СтатусОперации = ОперацииСамообслуживания.ПодтверждениеКонтакта()
.Начать(ВидКонтактаПользователя.Почта,
СпособПодтвержденияОперации.Почта)
примечаниеРекомендуется создавать операцию изменения пароля только тогда, когда вы уверены, что пользователь готов начать процесс изменения пароля (когда пользователь сам инициирует процесс), потому что при успешном вызове метода
Начать()
пользователю сразу же отправляется код подтверждения. -
-
ПовторитьОтправкуКодаПодтверждения()
— повторяет отправку кода подтверждения, если не превышено количество попыток отправки.пер СтатусОперации = ОперацииСамообслуживания.ИзменениеПароля()
.ПовторитьОтправкуКодаПодтверждения()примечаниеМожно затребовать отправку кода не более 5 раз. После пятой попытки отправка кодов блокируется на 24 часа. Зарегистрировать пользователя с заблокированным контактом нельзя.
Если в момент вызова метода операция уже завершена, выбрасывается исключение
ИсключениеНедопустимоеСостояние
. -
Подтвердить()
— подтверждает операцию кодом из СМС или электронного письма. В качестве параметра принимает код подтверждения типаСтрока
.пер СтатусОперации = ОперацииСамообслуживания.ПодтверждениеКонтакта()
.Подтвердить(Код)Если операция завершена, выбрасывается исключение
ИсключениеНедопустимоеСостояние
.
СтатусПодтверждаемойОперацииСамообслуживания
Все методы операций возвращают объект типа СтатусПодтверждаемойОперацииСамообслуживания
, описывающий результат операции. Объект этого типа имеет следующие свойства:
МожноПереотправить
— признак того, что код подтверждения можно отправить повторно.МоментПовторнойОтправкиКода
— момент времени, начиная с которого можно повторно отправить код подтверждения.ОставшиесяПопытки
— оставшееся количество попыток отправки кода подтверждения.СпособПодтверждения
— способ подтверждения операции в текущем состоянии. Может принимать следующие значения:
А также свойства, унаследованные от родительского типа СтатусОперацииСамообслуживания
:
Шаг
— текущий шаг операции.ПредыдущийШагУспешен
— признак того, что предыдущий шаг завершился успешно.Сообщение
— описание ошибки при неуспешном выполнении операции.
если СтатусОперации.Шаг != ШагОперацииСамообслуживания.ЗавершеноУспешно
ВыброситьИсключениеИсполнения(СтатусОперации.Сообщение)
;
ШагОперацииСамообслуживания
Текущий шаг операции самообслуживания описывается элементами типа ШагОперацииСамообслуживания
: