<?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','message'=>'增加成功!']);
}
$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();
}
}