tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:System.setPasswordによるパスワード変更が使えるユーザについて

System.setPasswordを使うとApexクラスでパスワード変更処理を行うことができます。System.setPasswordはユーザIDと新しいパスワードを引数として渡すことで使用できます。


こんな感じです。

System.setPassword(UserInfo.getUserId(), newPassword);


このSystem.setPasswordですが使用できるユーザとできないユーザがいました。
社内ユーザとカスタマーポータルユーザで実行したところ問題なく動作しました。


ですがコミュニティユーザで実行したところエラーが発生してサイト用のエラーページに飛ばされました。

f:id:tyoshikawa1106:20140304231030p:plain


コミュニティユーザはサイトユーザと同じ扱いを受けるみたいなので、コミュニティユーザとサイトユーザではSystem.setPasswordによるパスワード変更はできないみたいです。


サイトユーザにはSite Classが用意されているのでコミュニティユーザもSite.changePasswordなどを使ってパスワード変更を行うことができます。


こんな感じです。

Site.changePassword(newPassword, verifynewPassword, oldPassword);