システム管理者のみが写真をアップロードでき、他のすべての人は制限されるように、Chatter プロファイル写真へのアクセスを制限することは可能ですか?
1 に答える
通常、オブジェクトのフィールド セキュリティは役に立ちますが、 には存在しませんUser
。基本的に、すべてのユーザーは自分のプロファイル (画像を含む) を制御でき、ユーザー オブジェクトに対するフィールド権限はありません。他のユーザーは変更できませんが、自分のユーザーは変更できます。
管理者に写真をアップロードするという負担を課すことは、より生産的なことをすることから彼らを奪う忙しい仕事のように思えるので、なぜあなたがこれをやりたいのか理解に苦しむ. しかし、それで行きましょう。
裏話: 写真の URL は、 と の 2 つのオブジェクト フィールドに含まれていUser
ます。FullPhotoURL
SmallPhotoURL
レコードが最初に作成されるUser
と、次のようなデフォルトの青いスマイリー プロファイル写真が割り当てられます。
デフォルトの写真の URL は常に次のとおりです。
FullPhotoURL
:https://c.eu5.content.force.com/profilephoto/005/F
SmallPhotoURL
:https://c.eu5.content.force.com/profilephoto/005/T
デフォルトから新しい写真に更新すると、FullPhotoURL
値は次のようになります。https://c.eu5.content.force.com/profilephoto/72924000000CisD/F
そして、更新されるたびに、上記のレコード ID 値72924000000CisD
が新しいものに更新されます。
この場合の通常のフォールバック ポジションは、トリガーがフィールド値の変更を探してトランザクションを停止し、ユーザーが写真を更新できないようにすることです。
ただし、私のテストでは、プロファイル写真のアップロード プロセスによってトリガーが発生するようには見えません。
したがって、次のオプションは、スケジュールに従って実行されるバッチ プロセスを使用することです。残念ながら、これにより、すべてのユーザーの写真の古い値をどこかで追跡する必要が生じます。したがって、この回避策の大まかな手順は次のようになります。
- カスタム フィールドをユーザーに追加して、現在のプロフィール写真の URL を保存します
- 1 回限りのバッチ Apex プロセス、またはデータ ローダーなどの何らかのデータ ツールを使用して、既存のユーザーにこれを入力し、フィールド更新を含むワークフロー ルールを作成して、新しいユーザー レコードに入力します。
- スケジュールされた Apex ジョブを定期的に実行して、プロファイル写真フィールドの値が変更されたユーザーを探します
- それらのユーザーを見つけたら、フラグを立てるか、以前の値に戻します。
きれいではありませんが、必要なコントロールが配置されます。
そこから、これが起こることを期待する必要があることをユーザーに教育する必要があります。