Commit 75aba9bb by 杨昕

添加用户权限模块

parent 553b941c
Pipeline #10702 passed with stages
in 45 seconds
...@@ -45,41 +45,46 @@ function handler_drive($callback) ...@@ -45,41 +45,46 @@ function handler_drive($callback)
function http_request_code($url, $isHearder = null, $post = 'GET', $data = null, $timeout = 1) function http_request_code($url, $isHearder = null, $post = 'GET', $data = null, $timeout = 1)
{ {
//初始化curl
$ch = curl_init();
// 初始化curl
$ch = curl_init();
//设置URL地址 //设置URL地址
curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_URL, $url);
//设置header信息 //设置header信息
if (!empty($isHearder)) { if (!empty($isHearder)) {
curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $isHearder); curl_setopt($ch, CURLOPT_HTTPHEADER,$isHearder);
} }
//如果是post,则把data的数据传递过去 //如果是post,则把data的数据传递过去
if (($post == 'POST') && $data) {
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 if (($post == 'POST') ) {
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
} }
//如果是删除方法,则是以delete请求 //如果是删除方法,则是以delete请求或者Post请求
if ($post == 'DELETE') { if ($post == 'DELETE' || $post == 'POST') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $post);
} }
curl_setopt($ch, CURLOPT_TIMEOUT, 0);
//设置超时时间,毫秒 //设置超时时间,毫秒
curl_setopt($ch, CURLOPT_TIMEOUT_MS, $timeout * 100); // curl_setopt($ch, CURLOPT_TIMEOUT_MS, $timeout * 100);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//执行CURL时间 //执行CURL时间
$result = curl_exec($ch); $result = curl_exec($ch);
//如果有异常,记录到日志当中 //如果有异常,记录到日志当中
$curl_errno = curl_errno($ch); $curl_errno = curl_errno($ch);
if ($curl_errno > 0) { if ($curl_errno > 0) {
} }
//关闭URL,返回数据 //关闭URL,返回数据
curl_close($ch); curl_close($ch);
return $result; return $result;
...@@ -309,8 +314,20 @@ function generateRandomNum( $len = 32, $md5 = true ) { ...@@ -309,8 +314,20 @@ function generateRandomNum( $len = 32, $md5 = true ) {
* 获取rbac统一验权 * 获取rbac统一验权
* @return string * @return string
*/ */
function getRbac(){ function getRbac($request,$url='api/ram',$category_id = '' ){
$user = Auth::user();
$user = \Illuminate\Support\Facades\Auth::user();
if ($category_id){
$appid = $category_id;
}else{
$appid = $request->category_id;
}
$mis_uid = $user['mis_uid'];
//https://api.eoffcn.com/demo/get?t=xx&sign=xx&ak=xx //https://api.eoffcn.com/demo/get?t=xx&sign=xx&ak=xx
//其中sign=md5(ak=$ak&t=时间戳&sk=$sk) //其中sign=md5(ak=$ak&t=时间戳&sk=$sk)
...@@ -323,10 +340,17 @@ function getRbac(){ ...@@ -323,10 +340,17 @@ function getRbac(){
$time = time(); $time = time();
$sign = md5('ak='.$rbac_ak.'&t='.$time.'&sk='.$rbac_sk); $sign = md5('ak='.$rbac_ak.'&t='.$time.'&sk='.$rbac_sk);
$rbac_url = $rbac.'/rbac/api/ram?t='.$time.'&sign='.$sign.'&ak='.$rbac_ak.'&appid=ec8747abc5dbe8288e64f327a76ac517&uid=60108'; $rbac_url = $rbac.'/rbac/'.$url.'?t='.$time.'&sign='.$sign.'&ak='.$rbac_ak.'&appid='.$appid.'&uid='.$mis_uid;
return $rbac_url; return $rbac_url;
}
function sign($username)
{
\Illuminate\Support\Facades\Auth::user();
$time = time();
$key = getenv("mis_key")?getenv("mis_key"):"ca780358d798c00dc18e148c9eaf618c";
return ['time' => $time, 'sign' => md5($username . $key . $time)];
} }
\ No newline at end of file
...@@ -11,13 +11,14 @@ namespace App\Http\Controllers\Web; ...@@ -11,13 +11,14 @@ namespace App\Http\Controllers\Web;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Model\MediaCategoryModel; use App\Model\MediaCategoryModel;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
class IndexController extends Controller class IndexController extends Controller
{ {
function index(){ function index(Request $request){
$mediaCatgs = MediaCategoryModel::catgList(); $mediaCatgs = MediaCategoryModel::catgList($request);
$data['catgs'] = $mediaCatgs; $data['catgs'] = $mediaCatgs;
return view('admin.index',$data); return view('admin.index',$data);
......
...@@ -10,9 +10,11 @@ namespace App\Http\Controllers\Web; ...@@ -10,9 +10,11 @@ namespace App\Http\Controllers\Web;
use App\Exceptions\ControllerException; use App\Exceptions\ControllerException;
use App\Exceptions\DatabaseException;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Model\LogModel;
use App\Model\UserModel; use App\Model\UserModel;
use App\User; use App\User;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
...@@ -40,8 +42,6 @@ class LoginController extends Controller ...@@ -40,8 +42,6 @@ class LoginController extends Controller
throw new ControllerException(400, '昵称必须填写'); throw new ControllerException(400, '昵称必须填写');
} }
//$user = DB::connection('mongodb') //选择使用mongodb //$user = DB::connection('mongodb') //选择使用mongodb
//->collection('users')->where('name',$request->name)->where("user_type",1)->first(); //->collection('users')->where('name',$request->name)->where("user_type",1)->first();
...@@ -51,9 +51,9 @@ class LoginController extends Controller ...@@ -51,9 +51,9 @@ class LoginController extends Controller
])->first(); ])->first();
if (!empty($user)){ if (!empty($user)){
if ($user['password'] == md5($request->password)){ if ($user['password'] == md5($request->password)){
$result = true; $result = true;
}else{ }else{
...@@ -68,24 +68,49 @@ class LoginController extends Controller ...@@ -68,24 +68,49 @@ class LoginController extends Controller
return error('用户已被限制,请联系管理员'); return error('用户已被限制,请联系管理员');
} }
if ($request->name && $request->name != 'offcn' && !isset($user['mis_uid'])){
$staffNo = $request->name;
$url = 'http://api-mis.offcn.com/index.php/applogin/isworking';
$data = sign($staffNo);
$data['type'] = 6;
$data['username'] = $staffNo;
$result = http_request_code($url,
null,
'POST',
$data
);
$userInfo = json_decode($result,true);
// $id = ($user['_id'])->jsonSerialize(); if (!isset($userInfo['data'])){
// $user['_id'] = $id['$oid']; LogModel::addlog(["获取用户信息失败",$request->all()]);
throw new DatabaseException("获取用户信息失败");
}
// $request->session()->put('user', json_encode($user)); $userid = $userInfo['data']['userid'];
$data = [
'mis_uid' => $userid
];
$flag = UserModel::where("name",$request->name)->update($data);
if (!$flag){
LogModel::addlog(['更新用户信息mis_uid失败'=>json_decode($result)]);
throw new \Exception("mis_uid更新失败");
}
LogModel::addlog(['获取用户信息'=>json_decode($result)]);
}
Auth::login($user); Auth::login($user);
// Session::put("user",json_encode($user));
return success($user); return success($user);
} }
return error('用户验证失败'); return error('用户验证失败');
} else { } else {
return view('admin.login'); return view('admin.login');
} }
} }
......
...@@ -7,6 +7,7 @@ namespace App\Http\Controllers\Web; ...@@ -7,6 +7,7 @@ namespace App\Http\Controllers\Web;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class PrivilegeController extends Controller class PrivilegeController extends Controller
{ {
...@@ -17,7 +18,25 @@ class PrivilegeController extends Controller ...@@ -17,7 +18,25 @@ class PrivilegeController extends Controller
*/ */
public function index(Request $request) public function index(Request $request)
{ {
$url = getRbac(); $url = getRbac($request,'api/open/check');
$data['appid'] = $request->category_id;
$data['uid'] = Auth::user()->mis_uid;
$data['tree'] = 1;
$result = http_request_code($url,
null,
'GET',
$data
);
$result = json_decode($result,true);
if (empty($result['data'])){
return view('admin.nodata',$data);
}
$url = getRbac($request);
$data['url'] = $url; $data['url'] = $url;
return view('admin.privilege.list',$data); return view('admin.privilege.list',$data);
} }
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
namespace App\Model; namespace App\Model;
use App\Exceptions\DatabaseException; use App\Exceptions\DatabaseException;
use http\Env\Request;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent; use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class MediaCategoryModel extends Eloquent class MediaCategoryModel extends Eloquent
...@@ -24,16 +25,50 @@ class MediaCategoryModel extends Eloquent ...@@ -24,16 +25,50 @@ class MediaCategoryModel extends Eloquent
* @return mixed * @return mixed
* @throws DatabaseException * @throws DatabaseException
*/ */
public static function catgList(){ public static function catgList($request){
try{ try{
$catgList = MediaCategoryModel::get()->toArray(); $catgList = MediaCategoryModel::get()->toArray();
$ids = array_column($catgList,"media_category_id");
/**
* 获取用户业务线及对应业务线的权限
*/
$url = getRbac($request,'api/open/getPlatform','ec8747abc5dbe8288e64f327a76ac517');
$result = http_request_code($url,
array(
"Content-Type: application/json"
),
'POST',
json_encode(array())
);
LogModel::addlog(['获取商店列表'=>json_decode($result)]);
$catgs = json_decode($result,true);
if (!isset($catgs['data'])){
LogModel::addlog(['获取商店列表失败'=>json_decode($result)]);
throw new \Exception("获取商店列表失败");
}
$catgs = $catgs['data'];
$tmp = [];
foreach ($catgs as $key => $catg){
if (in_array($catg['appid'],$ids)){
array_push($tmp,$catg);
}
}
}catch (\Exception $exception){ }catch (\Exception $exception){
throw new DatabaseException("类别不存在"); throw new DatabaseException($exception->getMessage());
} }
return $catgList; return $tmp;
} }
/** /**
......
...@@ -10,13 +10,27 @@ use Jenssegers\Mongodb\Eloquent\Model as Eloquent; ...@@ -10,13 +10,27 @@ use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class ModuleModel extends Eloquent class ModuleModel extends Eloquent
{ {
public static function getModuleList($user){ public static function getModuleList($user,$category_id){
if ($user['name'] == 'offcn' ){ if (empty($result['data'])){
$module = file_get_contents(public_path('module.json')); $module = file_get_contents(public_path('default.json'));
}else{ }else{
$module = file_get_contents(public_path('media_category.json'));
if ($user['name'] == 'offcn' ){
$module = file_get_contents(public_path('module.json'));
}else{
$module = file_get_contents(public_path('media_category.json'));
}
} }
// if ($user['name'] == 'offcn' ){
// $module = file_get_contents(public_path('module.json'));
// }else{
// $module = file_get_contents(public_path('media_category.json'));
// }
return json_decode($module,true); return json_decode($module,true);
} }
} }
...@@ -26,16 +26,20 @@ class AppServiceProvider extends ServiceProvider ...@@ -26,16 +26,20 @@ class AppServiceProvider extends ServiceProvider
* *
* @return void * @return void
*/ */
public function boot() public function boot(Request $request)
{ {
view()->composer('*', function ($view){ view()->composer('*', $this->T($request->category_id));
}
private function T($c) {
return function ($view) use ($c){
$user = Auth::user(); $user = Auth::user();
$result = ModuleModel::getModuleList($user); $result = ModuleModel::getModuleList($user,$c);
$view->with([ $view->with([
'left' => $result, 'left' => $result,
]); ]);
}); };
} }
} }
...@@ -67,7 +67,7 @@ return [ ...@@ -67,7 +67,7 @@ return [
'providers' => [ 'providers' => [
'users' => [ 'users' => [
'driver' => 'eloquent', 'driver' => 'eloquent',
'model' => App\User::class 'model' => App\Model\UserModel::class
], ],
// 'users' => [ // 'users' => [
......
[]
\ No newline at end of file
...@@ -73,10 +73,12 @@ ...@@ -73,10 +73,12 @@
<div class="content-inner" style="width: 100%;"> <div class="content-inner" style="width: 100%;">
@if(!empty($catgs))
<div class="row" id="report4"> <div class="row" id="report4">
@foreach($catgs as $catg) @foreach($catgs as $catg)
<div class="col-md-4" onclick="important_task('/web/member','{{$catg["media_category_id"]}}')"> <div class="col-md-4" onclick="important_task('/web/privilege','{{$catg["appid"]}}')">
<div class="card text-center social-bottom sb-in"> <div class="card text-center social-bottom sb-in">
<i class="fa fa-instagram"></i> <i class="fa fa-instagram"></i>
{{--<div>500 +</div>--}} {{--<div>500 +</div>--}}
...@@ -85,12 +87,23 @@ ...@@ -85,12 +87,23 @@
</div> </div>
@endforeach @endforeach
</div> </div>
@else
<div class="no-service">暂无相关业务</div>
@endif
</div> </div>
</div> </div>
<style>
.no-service{
text-align: center;
line-height: 200px;
min-height: 200px;
}
</style>
<script src="{{ asset('xadmin/js/popper/popper.min.js')}}"></script> <script src="{{ asset('xadmin/js/popper/popper.min.js')}}"></script>
<script src="{{ asset('xadmin/js/tether.min.js')}}"></script> <script src="{{ asset('xadmin/js/tether.min.js')}}"></script>
<script src="{{ asset('xadmin/js/bootstrap.min.js')}}"></script> <script src="{{ asset('xadmin/js/bootstrap.min.js')}}"></script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment