0

ユーザーが同じページの特定のコンテンツにアクセスできるようにするカスタムログインフォームがあります。これは、SSデータベースにメンバーとして保存されているユーザーでこれまで機能し、ログイン後に、ユーザーがページクラスで次のような権限を持っているかどうかを確認していました。

function isAllowed() {
    if (Member::currentUser()) {
        $PresseGroup = DataObject::get_one('Group', "Code = 'presse'");
        $AdminGroup = DataObject::get_one('Group', "Code = 'administrators'");
        if (Member::currentUser()->inGroup($PresseGroup->ID) || Member::currentUser()->inGroup($AdminGroup->ID)) {
            return true;
        }
    }
}

テンプレートでは、これを実行しました。

<% if isAllowed %>  
SecretContent
<% end_if %>

これまでのところOKですが、ユーザーはシルバーストライプデータベースに保存されなくなります。ユーザーは別のサーバーに保存されます。

その外部サーバーで、ユーザー名とパスワードを受け入れる小さなphpスクリプトを実行しています。スクリプトは、ユーザーに権限(trueまたはfalse)があることを返すだけです。

そのスクリプトをcURL経由で呼び出しています。

MemberLoginFormのdologin関数を上書きする予定でした。ログイン後に、ユーザーが権限を取得してコンテンツを表示していることを確認する方法がわかりません...ページのコントローラーで変数を設定しようとしましたか、それともセッション変数を設定する必要がありますか?それが私の試みです(CustomLoginFormはMemberLoginFormを拡張します):

public function dologin($data) {
if(userHasPermission("user1", "pw")==true){
    $this->controller->Test("test");     
}
$link = $this->controller->Link();
$this->performLogin($data);
$this->controller->redirect($link);
}

誰かが私を助けてくれることを願っています-私は非常に具体的な問題を知っています-。どうもありがとう、フロリアン

4

1 に答える 1