Реализация заморозки или блокировки внешнего пользователя

Мне нужно заморозить или заблокировать внешнего пользователя на основе пользовательской логики. Как только пользовательское логическое условие установлено в true, мне нужно заблокировать или заблокировать этого пользователя, чтобы он не мог войти в систему, пока администратор не разблокирует или не разблокирует этого внешнего пользователя.

Я попытался с полем API isPasswordlockout, но получил сообщение об ошибке «Поле не перезаписывается», поэтому я попытался с опцией замораживания, но с тех пор, как пользователь уже вошел в систему, а код или триггер апекса Salesforce запускается в этом пользовательском режиме, я получил ошибка "CANNOT SELF FREEZE" самозаморозка не допускается.

Мое требование состоит в том, чтобы заблокировать или заморозить этого пользователя, когда он выполняет какое-либо действие, и, исходя из моей пользовательской логики, пользователь должен быть заблокирован или заблокирован. Кроме того, я не могу использовать метод site.login для 3 недопустимых попыток. Значит, этот вариант ушел, кроме того, что все возможно?

Я пытался использовать метод system.runas, но он работает только в случае тестового метода.

Любое предложение??


person ad01012    schedule 11.04.2015    source источник


Ответы (1)


Я предполагаю, что вы пытались установить UserLogin.IsFrozen, когда получили сообщение «НЕ МОЖЕТ ЗАМОРОЗИТЬСЯ».

Вы можете попытаться найти способ переключить пользователя транзакции. Некоторые варианты:

  1. Используйте будущий или пакетный метод. Это может привести к той же проблеме, когда пользователь транзакции является пользователем, которого вы пытаетесь заморозить.
  2. Добавьте запись пользователя в очередь, которая будет заморожена запланированным/пакетным заданием.
  3. Используйте API для выполнения заморозки от имени другого пользователя. См. раздел замораживание пользователей из Visualforce.
person Daniel Ballinger    schedule 12.04.2015
comment
Чтобы переключиться на другого пользователя транзакции, мне нужно запустить этот код через другого пользователя, что я не могу сделать, потому что метод runas работает только в тестовом классе. Во-вторых, я попытался использовать метод будущего, но с той же проблемой мне не повезло. Во-вторых, я не могу использовать расписание задания, потому что на основе моей пользовательской логики пользователь должен быть немедленно деактивирован или заблокирован. Поскольку задание по расписанию будет выполняться в определенное время, следовательно, это невыполнимо для моего требования. Через набор инструментов ajax, когда моя страница выполняется, я думаю, что столкнусь с той же проблемой, что и пользователь транзакции. - person ad01012; 12.04.2015
comment
Это некрасиво, но вы можете безопасно хранить токен обновления или имя пользователя/пароль для другого пользователя. Используя эти сохраненные учетные данные, вы можете вызвать API для выполнения операции блокировки. - person Daniel Ballinger; 12.04.2015