您的位置:首页 > 编程语言 > PHP开发

laravel权限管理实操01

2019-08-08 21:35 1066 查看
[code]<?php

namespace App\Http\Controllers\Admin;

use App\Role;
use App\User;
use Gregwar\Captcha\CaptchaBuilder;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\DB;

class AdminController extends Controller
{
//

public function login(Request $request){

if($request->isMethod('POST')){

$code = $request->input('code');
$_code = $request->session()->get('adminCode');
if($_code!=$code){
return   response()->json(['status'=>'false','message'=>'验证码错误!']);
}
$username = trim($request->input('username'));
$password = sha1(md5(trim($request->input('password'))));

$user = User::whereRaw('username =? AND password = ?',[$username,$password])->first();

//

if(false==$user){
$ret = ['status'=>'false','message'=>'用户名和密码错误!'];
}else{

$request->session()->put('admin_id',$user->id);
$request->session()->put('admin_username',$user->username);
$salt = sha1($user->id.time().$user->username);
User::where('id',$user->id)->update(['salt'=>$salt]);
$request->session()->put('salt', $salt);
$ret = ['status'=>'success','message'=>'登录完成!'];

}
return response()->json($ret);
}

return view('admin.login');

}

public function index(){

return view('admin.index');
}

public function info(){

return '欢迎来到后台!';
}

public function role(){

$roles = Role::all();

return view('admin.role',['roles'=>$roles]);
}

public function roleadd(Request $request){

if($request->isMethod('post')){

$name = $request->input('name');
//$ret = DB::table('role')->insert(['name'=>$name,'status'=>1]);
$ret = Role::create(['name'=>$name,'status'=>1]);
if($ret){
$ret = ['status'=>'success'];
}else{
$ret = ['status'=>'false'];
}

return $ret;
}

return view('admin.roleadd');
}

//角色修改
public function roleedit(Request $request){

$id = $request->input('id');
if($request->isMethod('post')){

$name = $request->input('name');

$role = Role::find($id);
$role->name = trim($request->input('name'));
$res = $role->save();

if($res){
$ret = ['status'=>'success'];
}else{
$ret = ['status'=>'false'];
}
return $ret;
//dd($data);

}
$role = Role::find($id);
return view('admin.role-edit',['role'=>$role]);

}
//角色权限设置方法
public function  roleset(Request $request){
$id = $request->input('id');

if($request->isMethod('post')){

$role_id = $request->input('id');
$accessId = $request->input('accessId',[]);

//先把已有的功能权限取出
$TakenAccess = DB::table('role_access')->where('role_id', $role_id)->get();
$TakenAccess= $TakenAccess->toArray();

$TakenId = array_column($TakenAccess,'access_id');
//dd($TakenId);
//新id在已有的ID上做对比将老的id取出,然后删除

$deleteId = array_diff($TakenId,$accessId);
//dd($deleteId);

foreach ($deleteId as $v){

DB::table('role_access')->where('access_id',$v)->delete();
}

//exit();

//新功能点

//dd($TakenId);
$_NewaccessId = array_diff($accessId,$TakenId);//$accessId;
//$_NewaccessId = $accessId;

//保存新功能ID
foreach ($_NewaccessId as $v){

DB::table('role_access')->insert([
'role_id'=>$role_id,
'access_id'=>$v,
]);
}

return response()->json(['status'=>'success']);

}

$role = DB::table('role')->where('id',$id)->first();

if(false==$role){
return redirect()->Route('role-home');
}

$access = DB::table('access')->where('status',1)->get();

$TakenAccess = DB::table('role_access')->where('role_id',$id)->get();
$TakenAccess= $TakenAccess->toArray();

$TakenId = array_column($TakenAccess,'access_id');
//dd($TakenId);

return view('admin.role-set',['role'=>$role,'access'=>$access,'Taken'=>$TakenId]);

}

//功能管理
public function access(Request $request){
$access = DB::table('access')->get();
return view('admin.access-list',['access'=>$access]);

}

public function accessadd(Request $request){
if($request->isMethod('post')){

$title = $request->input('title');
$route = trim($request->input('route'));
$res = DB::table('access')->insert(['title'=>$title,'route'=>$route,'status'=>1]);
if($res){
$ret = ['status'=>'success','message'=>'增加完成!'];

}else{
$ret = ['status'=>'false','message'=>'增加失败!'];
}
return response()->json($ret);//json_encode($ret);

}

return view('admin.access-add');
}
public function accessEdit(Request $request){
$id = $request->input('id');

if($request->isMethod('post')){

$title = $request->input('title');
$route = trim($request->input('route'));
$id = trim($request->input('id'));
$num = DB::table('access')->where('id',$id)->update(['title'=>$title,'route'=>$route]);
if(!$num){
$ret = ['status'=>'false'];
}else{
$ret = ['status'=>'success'];
}
return response()->json($ret);
}

$access = DB::table('access')->where('id',$id)->first();
return view('admin.access-edit',['access'=>$access]);
}

//RBAC用户管理
public function userHome(Request $request){

$users = DB::table('user')->whereRaw('manage=? OR is_admin=?',[1,1])->get();

//dd($users);
return view('admin.user-home',['users'=>$users]);

}

public function logout(Request $request){

$request->session()->flush();

return redirect()->Route('admin-login');

}

public function tips(){

return view('tips');
}

public function userSet(Request $request){

$user_id = $request->input('id');

if($request->isMethod('post')){

$truename =$request->input('name');
$roleId = $request->input('roleId',[]);

$user_id = $request->input('id');
$user = User::find($user_id);
$user->truename =  $truename;
$user->save();

$_roleId = DB::table('role_user')->where('user_id',$user_id)->get();
$_roleId = array_column($_roleId->toArray(),'role_id');

//delete old roler 删除老的角色
$_oldRoleId = array_diff($_roleId,$roleId);
foreach ($_oldRoleId as $v){

DB::table('role_user')->whereRaw('user_id=? AND role_id=?',[$user_id,$v])->delete();
}

$_newRoleId = array_diff($roleId,$_roleId);

//dd($_newRoleId);

foreach ($_newRoleId as $v){

DB::table('role_user')->insert(['user_id'=>$user_id,'role_id'=>$v]);
}

return response()->json(['status'=>'success']);

}

$user = User::find($user_id);

$roles = DB::table('role')->get();

$TakenRole = DB::table('role_user')->where('user_id',$user_id)->get();

$TakenRole = $TakenRole->toArray();

$TakenId = array_column($TakenRole,'role_id');

//dd($TakenId);

$data = ['user'=>$user,'roles'=>$roles,'TakenId'=>$TakenId];

return view('admin.user-set',$data);
}

public function userAdd(Request $request){

if($request->isMethod('post')){

$inputUser = $request->input('email');
$trunename = $request->input('name');
$roleids = $request->input('roleId',[]);

$user = User::whereRaw('email=? OR username=?',[$inputUser,$inputUser])->first();
if(false ==$user){
return response()->json(['status'=>'false','message'=>'用户不存在!']);
}else{
$user_id = $user->id;
}

$res = User::where('id',$user_id)->update(['manage'=>1,'truename'=>$trunename]);

foreach ($roleids as $v){

DB::table('role_user')->insert(['user_id'=>$user_id,'role_id'=>$v]);
}

return response()->json(['status'=>'success','messa
3ff7
ge'=>'增加成功!']);
}

$roles = DB::table('role')->get();//';'

return view('admin.user-add',['roles'=>$roles,'access'=>[]]);

}
public function Captcha(Request $request)
{

//生成验证码图片的Builder对象,配置相应属性
//$builder = new CaptchaBuilder;
$builder = new CaptchaBuilder();
//可以设置图片宽高及字体
$builder->build($width = 120, $height = 50, $font = null);
//获取验证码的内容
$phrase = $builder->getPhrase();
//把内容存入session
//Session::flash('milkcaptcha', $phrase);
$request->session()->put('adminCode',$phrase);

//生成图片
header("Cache-Control: no-cache, must-revalidate");
header('Content-Type: image/jpeg');
$builder->output();
}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: