【Salesforce】No Access Allowed To This Class
Visualforceからconnection.jsを使用してWebserviceを呼び出す処理がありました。
その中で、管理者では動作するのにポータルユーザでは動作しない処理がありました。
調べてみると、Javascriptでエラーが発生していました。
No Access Allowed To This Class
このクラスにアクセスしないでねって感じでしょうか。
処理としては以下のイメージです。
<script src="/soap/ajax/36.0/connection.js" type="text/javascript"></script>
<script src="/soap/ajax/36.0/apex.js" type="text/javascript"></script>
<script>sforce.connection.sessionId='{!GETSESSIONID()}';</script>
<script type='text/javascript'>
function callWebservice(name){
var result;
// Webserviceの呼び出し
// ここでエラーが発生する
result = sforce.apex.execute('GetFileController','getFile',{Name : name});
}
</script>
原因はJavascriptではなく、プロファイルの設定にありました。
ポータルユーザが使用するプロファイルの「有効な Apex クラス」に、呼び出し先のクラスが設定されていませんでした。
「有効な Visualforce ページ」に含まれるコントローラと同じクラスだったため、追加を忘れたのでしょうか。
「有効な Apex クラス」にWebserviceクラスで呼び出す「GetFileController」クラスを追加することで解決できました。
リリースの際には注意が必要ですね。
作った人が見ればもっと早く修正される気がするのですが、何故か私に回ってきました。。
No comments.