A_single_file_wiki_wifky2.png

[hack] 管理者モードチェック(1.3〜)

バージョン 1.3以降では、クッキーを使った管理者モードが追加されています。

管理者モードか一般モードかの判断の仕方

関数 &::is_signed() を用います。

   if( &::is_signed() ){
       ### 管理者モード ###
   }else{
       ### 一般モード ###
   }

ただし、こう書くと、1.3以降専用になってしまうので、

   if( defined &::is_signed ){
       if( &::is_signed() ){
           ### 管理者モード ###
       }else{
           ### 一般モード ###
       }
   }else{
       ### 1.2 までの場合 ####
       ninsho(); ### 前のページに password フォームが必要 ###
   }

などと、処理を分けた方がよいかもしれません。

管理者モードでなかった時に、ログイン画面に自動転送する方法

&::action_sign() 関数へ引数なしで goto します。

$::action_plugin{'アクションプラグインの名前'} = sub{
    goto &::action_signin unless &::is_signed();
    #### 以下に管理者モードで本来実行すべきコードを書く ###
};

ログイン画面では、そのページへ渡されたパラメータを、 <input type="hidden" …> 化して、 ログイン後に引き継いでくれます。

こちらも 1.2 までで処理を分けるのであれば:

$::action_plugin{'アクションプラグインの名前'} = sub{
    if( defined &::is_signed ){
        goto &::action_signin unless &::is_signed();
    }else{
        &::ninsho(); ### 前のページに password フォームが必要 ###
    }
    #### 以下に管理者モードで本来実行すべきコードを書く ###
};

と書いておくとよいでしょう。

諸注意

  • goto &action_signin の後に丸括弧() は続けないでください。 引数を引き継げなくなります。
  • ドキュメント上、要本体1.3以降と述べていれば、 1.2 対応は必須ではありません。

|

Designed for @nifty.