thinkphpカスタム権限管理の名称判定方法


権限管理は、さまざまなユーザーにさまざまな権限を割り当てることです。ユーザーがログインまたは操作するときに判断が行われ、ユーザーが権限以外の操作を実行できないようにします。今回は、ユーザーがログインすると、権限が有効になっているコンテンツのみが表示されます。
まず、データベースを確立します。 strong> span>
1。権限テーブルfuncla。すべての権限を保存して入力するには、権限名の変更による権限の無効化の問題を回避することも必要です。 strong> span>


2。管理者テーブルはadminです。主に管理者ユーザー名などの情報を保存します。 strong> span>


3。管理者の対応する権限テーブルはfunadminです。主に開いた管理者を保存しますストラタIDとパーミッションID。 strong> span>


次に、権限リストを出力します。 strong> span>
1。管理者リストから権限の割り当てを入力します。 strong> span>

2。権限割り当てリスト。 strong> span>

パーミッション割り当てリストについては、パーミッションセクションが異なるため、トップレベルカテゴリとそのサブセットを区別する必要があります。また、許可ステータスを表示する必要があります。ループ判定のレイヤーは、権限ステータスの判定にも使用されます。このコードは、3つのレベルのネストされたループ出力を使用します。
具体的なコードは次のとおりです span>



管理者に権限を割り当てる{$username}

権限名ステータス tr> {$v。claname} td> チェック済み& gt; type = "checkbox" id = "{$ v.id}" name = "{$ userid}" onchange = "return setfun(this、seturl)" /> td> tr> {$ vo.claname} td>

check type = "checkbox" id = "{$ vo.id}" name = "{$ userid}" onchange = "return setfun(this、seturl) "/>

td> tr> table>

循環示例〉如: strong>

3、適用制器如下: strong> span>



public function setfun(){
$ uid = I('get.id'、0、'int');
$ a = M('admin');
$ user = $ a-> where(array(id => $ uid))-> field('username、id')-> find();

$ this-> username = $ user ['username'];
$ this-> userid = $ user ['id'];

$ m = M('funcla' );
$ funcla = $ m-> where(array(clapid => '0'))-> field(true)-> select();
$ fun = $ m -> field(true)-> select();
$ this-> fun = $ fun;
$ this-> funcla = $ funcla;

$ fd = M('funadmin');
$ funadmin = $ fd-> where(array(adminid => $ uid))-> field(true)-> select();
$ this-> funadmin = $ funadmin;
$ this-> display();
}

4。 js。ユーザー権限が変更されたら、jsをトリガーしてjsonを送信し、データパラメーターをコントローラーに渡します。 strong> span>



function setfun(t、u){
var id = $(t).attr('id');
var uid = $(t).attr ('name');
var type = $(t).is( ":checked")?1:0;
var url = u;
$ .ajax({
url:url、
type:'post'、
data:{
id:id、
type:type、
uid:uid
}、
success:function(data){
}、
error:function(data){
}

})
}

jsonによって渡されるURLアドレスは、ページ内のインスタンス化されたアドレスから取得されます。例えば:




3番目に、コントローラーはjsonデータパラメーターを取得し、権限の追加と変更を判断します。追加する場合は、IDを追加しますoffunadminテーブルのデータの一部として許可される許可と許可のIDを受け入れる人。変更とは、条件を満たすデータを削除することを意味します。同じことが言えます。 strong> span>



public function chanefun(){

$ m = M('funadmin');
$ where ['funclaid'] = I('post .id'、0、' int');
$ where ['adminid'] = I(' post.uid'、0、' int');
$ type = I('post。 type'、0、' int');
if(empty($ type)){
$ oid = $ m-> where($ where)-> getfield(' id');
$ m-> delete($ oid);
return;
}
$ m-> data($ where)-> add();
}

4。本当の権威の判断。前は許可の判断の準備ですが、今が本当の判断です。基本的な原則は、判断される権限の名前を、funadminテーブルに現在ログインしているユーザーのIDと比較することです。見つかった場合は、ユーザーが権限を持っていることを意味します。つまり、Displです。そうでなければ、非表示にします。非表示にするとリンクアドレスは表示されませんが、アドレスがわかっていればアドレスから直接アクセスできます。 strong> span>
(1)フロントが表示されているかどうかを判断します。カスタムメソッドchackQ(); strong>を呼び出しました



タスク管理& lt; / li>


(2)特定の比較操作。 strong> span>



function chackQ($ name、$ state = false){
if(!$ state){exit; }
$ fun = M('funcla');
$ ffunclaid = $ fun-&gt; where(array(claname =&gt; $ name))-&gt; getfield('id'); < br /> $ m = M('funadmin');
$ adminid = session('admin_userid');
$ reset = $ m-&gt; where(array(funclaid =&gt; $ funclaid、 adminid =&gt; $ adminid))-&gt; find();
if(empty($ reset)){
echo"権限がありません";
exit;
}
return $ reset;
}

この時点で、e全体の許可管理は基本的に完了しています。
上記のthinkphpカスタム権利管理の名前を判断する方法は、編集者が共有するすべてのコンテンツです。参考にさせていただきますので、よろしくお願いします*。