Commit 09f3b4da by 杨昕

解决冲突

parents 16b4c924 678b53c9
Pipeline #10955 passed with stages
in 42 seconds
......@@ -41,3 +41,6 @@ MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
QINIU_ACCESS_KEY=5ClMHcAd5KN6oN6SC7ni7uuwOOpaSvoDRMHR_3l8
QINIU_SECRET_KEY=xoJZ_3crOqMOsznLU8lbjlNU8pXJwEq5-n5vd3Fv
OFFCN_MEDIA_ACCESS_KEY=12485d7307bf347ee5834f98f5465aa4
OFFCN_MEDIA_SECRET_KEY=3d279dde16162fcd4e173707d129d036
MIS_SIN_KEY=ca780358d798c00dc18e148c9eaf618c
......@@ -56,6 +56,10 @@ class Handler extends ExceptionHandler
$path = $request->path();
// var_dump($exception->getMessage());
// var_dump($exception->getFile());
// var_dump($exception->getLine());
#检测当前请求是否是api路由
if (stripos($path,'api/') === 0
......
......@@ -45,41 +45,46 @@ function handler_drive($callback)
function http_request_code($url, $isHearder = null, $post = 'GET', $data = null, $timeout = 1)
{
//初始化curl
$ch = curl_init();
// 初始化curl
$ch = curl_init();
//设置URL地址
curl_setopt($ch, CURLOPT_URL, $url);
//设置header信息
if (!empty($isHearder)) {
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $isHearder);
curl_setopt($ch, CURLOPT_HTTPHEADER,$isHearder);
}
//如果是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_POSTFIELDS, $data);
}
//如果是删除方法,则是以delete请求
if ($post == 'DELETE') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
//如果是删除方法,则是以delete请求或者Post请求
if ($post == 'DELETE' || $post == 'POST') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $post);
}
curl_setopt($ch, CURLOPT_TIMEOUT, 0);
//设置超时时间,毫秒
curl_setopt($ch, CURLOPT_TIMEOUT_MS, $timeout * 100);
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// curl_setopt($ch, CURLOPT_TIMEOUT_MS, $timeout * 100);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//执行CURL时间
$result = curl_exec($ch);
//如果有异常,记录到日志当中
$curl_errno = curl_errno($ch);
if ($curl_errno > 0) {
}
//关闭URL,返回数据
curl_close($ch);
return $result;
......@@ -240,6 +245,7 @@ function regex($value, $rule)
function getAdmin(){
$userStr = Session::get("user");
if (!$userStr){
$user = new stdClass();
......@@ -302,4 +308,60 @@ function generateRandomNum( $len = 32, $md5 = true ) {
$token = substr($md5token, 0, $len);
}
return $token;
}
/**
* 获取rbac统一验权
* @return string
*/
function getRbac($request,$url='api/ram',$appid = '' ,$type='base'){
if ($appid){
$appid = $appid;
}else{
$appid = $request->appid??"";
}
$mis_uid = $request->mis_uid;
//https://api.eoffcn.com/demo/get?t=xx&sign=xx&ak=xx
//其中sign=md5(ak=$ak&t=时间戳&sk=$sk)
$rbac = getenv('rbac')?getenv('rbac'):'http://api.t.eoffcn.com';
$rbac_ak = getenv('rbac_ak')?getenv('rbac_ak'):'12485d7307bf347ee5834f98f5465aa4';
$rbac_sk = getenv('rbac_sk')?getenv('rbac_sk'):'3d279dde16162fcd4e173707d129d036';
$time = time();
$sign = md5('ak='.$rbac_ak.'&t='.$time.'&sk='.$rbac_sk);
switch ($type){
case 'base':
$rbac_url = $rbac.'/rbac/'.$url.'?t='.$time.'&sign='.$sign.'&ak='.$rbac_ak.'&appid='.$appid.'&uid='.$mis_uid;
break;
case 'mis_user': //获取mis员工基本信息
$staffNo = $request->username;
$rbac_url = $rbac.'/rbac/'.$url.'?t='.$time.'&sign='.$sign.'&ak='.$rbac_ak.'&staffNo='.$staffNo;
break;
default:
$rbac_url = $rbac.'/rbac/'.$url.'?t='.$time.'&sign='.$sign.'&ak='.$rbac_ak.'&appid='.$appid.'&uid='.$mis_uid;
}
//$rbac_url = $rbac.'/rbac/'.$url.'?t='.$time.'&sign='.$sign.'&ak='.$rbac_ak.'&appid='.$appid.'&uid='.$mis_uid;
return $rbac_url;
}
function sign($username)
{
$time = time();
$key = getenv("MIS_SIN_KEY")?getenv("MIS_SIN_KEY"):"ca780358d798c00dc18e148c9eaf618c";
return ['time' => $time, 'sign' => md5($username . $key . $time)];
}
\ No newline at end of file
......@@ -156,11 +156,12 @@ class MediaController extends Controller
'description' => '',
'sort' => '',
'page_size' => 'integer',
'media_type_id' => ''
'category_id' => '',
'appid' => '',
]);
if (!isset($request->media_type_id)){
$request->replace(array_merge($request->all(),['media_type_id'=>'5efa9cb5d16f5a214671fd86']));
if (!isset($request->category_id)){
$request->replace(array_merge($request->all(),['category_id'=>'5efa9cb5d16f5a214671fd86']));
}
return MediaModel::mediaList($request);
......
......@@ -5,18 +5,17 @@ namespace App\Http\Controllers\Api\Client;
use App\Exceptions\ControllerException;
use App\Exceptions\DatabaseException;
use App\Model\LogModel;
use App\Model\MediaCategoryModel;
use App\Model\MediaModel;
use App\Model\UserModel;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use MongoDB\BSON\UTCDateTime;
class UsersController extends Controller
{
private $baseAuth = [
'develop' => 'http://zgadmin.in.d.eoffcn.com',
'test' => 'http://zgadmin.d.eoffcn.com',
'master' => 'http://zgadmin.eoffcn.com',
];
/**
* 第三方验权
......@@ -44,108 +43,8 @@ class UsersController extends Controller
if (preg_match("['|\"|\/|\\\|\.|:]", $request->uuid)) {
throw new ControllerException('uuid含有非法字符',400);
}
$password = strtolower($request->password);
$username = $request->username;
/**
* 用户为offcn,不走第三方认证
*/
if ($username == 'offcn'){
$user = DB::connection('mongodb') //选择使用mongodb
->collection('users')->where('name',$username)->first();
if (empty($user)){
$data = [
'name' => $username,
'password' => md5($request->password??'123123'),
'organization_id' => 0,
'status' => 0,
'create_time' => date('Y-m-d H:i:s',time()),
'user_type' => 1
];
$id = DB::connection("mongodb")->collection("users")->insertGetId($data);
if (!$id){
$result = false;
}else{
$result = true;
}
}else{
if ($user['password'] == md5($password)){
$result = true;
}else{
$result = false;
}
}
}else{
$branch = empty(getenv('branch')) ? 'test' : getenv('branch');
$baseUrl = $this->baseAuth[$branch];
$url = $baseUrl."/api/user?action=check_user&user_name=".$username."&password=".$password;
$result = http_request_code($url,
['Content-Type'=>'application/x-www-form-urlencoded'],
'POST',
['username' => $username,'password' => $password],
2000
);
$result = json_decode($result,true);
if ($result['code']!=0){
$result = false;
}
}
if ($result){
$data = [
'name' => $username,
'password' => md5($password),
'organization_id' => 0,
'status' => 0,
'create_time' => date('Y-m-d H:i:s',time()),
];
$user = DB::connection('mongodb') //选择使用mongodb
->collection('users')->where('name',$username)->first();
$token = $this->generateToken();
if (!empty($user)){
$data['user_type'] = $user['user_type'];
$idArr = ($user['_id'])->jsonSerialize();
}else{
$data['user_type'] = 0;
$id = DB::connection("mongodb")->collection("users")->insertGetId($data);
if (!$id){
throw new DatabaseException('用户存储失败');
}
$idArr = ($id)->jsonSerialize();
}
$_id = $idArr['$oid'];
$newtoken = encrypt($_id.'|'.$token."|1ZGHd3pCc87AsQFBLLJeMjM4t57cli6Ar78qowe7");
$data['token'] = $newtoken;
$flag = DB::connection('mongodb')->collection('users')->where('_id',$_id)->update($data);
if (!$flag){
throw new DatabaseException('用户名信息更新失败');
}
return $newtoken;
}else{
throw new DatabaseException('用户名称或者密码错误');
}
return UserModel::checkUserRole($request);
});
......@@ -153,39 +52,4 @@ class UsersController extends Controller
}
/**
* 生成UUID标识并检测UUID是否重复
*/
private function generateToken( $len = 32, $md5 = true ) {
# Seed random number generator
# Only needed for PHP versions prior to 4.2
mt_srand( (double)microtime()*1000000 );
# Array of characters, adjust as desired
$chars = array(
'Q', '@', '8', 'y', '%', '^', '5', 'Z', '(', 'G', '_', 'O', '`',
'S', '-', 'N', '<', 'D', '{', '}', '[', ']', 'h', ';', 'W', '.',
'/', '|', ':', '1', 'E', 'L', '4', '&', '6', '7', '#', '9', 'a',
'A', 'b', 'B', '~', 'C', 'd', '>', 'e', '2', 'f', 'P', 'g', ')',
'?', 'H', 'i', 'X', 'U', 'J', 'k', 'r', 'l', '3', 't', 'M', 'n',
'=', 'o', '+', 'p', 'F', 'q', '!', 'K', 'R', 's', 'c', 'm', 'T',
'v', 'j', 'u', 'V', 'w', ',', 'x', 'I', '$', 'Y', 'z', '*'
);
# Array indice friendly number of chars;
$numChars = count($chars) - 1; $token = '';
# Create random token at the specified length
for ( $i=0; $i<$len; $i++ )
$token .= $chars[ mt_rand(0, $numChars) ];
# Should token be run through md5?
if ( $md5 ) {
# Number of 32 char chunks
$chunks = ceil( strlen($token) / 32 ); $md5token = '';
# Run each chunk through md5
for ( $i=1; $i<=$chunks; $i++ )
$md5token .= md5( substr($token, $i * 32 - 32, 32) );
# Trim the token
$token = substr($md5token, 0, $len);
}
return $token;
}
}
......@@ -85,6 +85,7 @@ class MediaController extends Controller
return MediaModel::mediaList($request);
});
return success($res);
}
......@@ -93,41 +94,34 @@ class MediaController extends Controller
$res = [];
for ($i = 4000;$i<=4000;$i++){
for ($i = 0;$i<=5;$i++){
$url = "http://eoffcn.com/api/user/media_list_once?page=".$i;
$url = "http://eoffcn.com/api/user/media_list_once?page=".$i.'&page_size=1000';
$result = http_request_code($url,null,'GET');
$medias = json_decode($result,true);
$data = $medias['data']['data'];
if (!empty($data)){
foreach ($data as $media){
if (isset($medias['data']['data']) && !empty($medias['data']['data'])){
$tmp_arr = MediaModel::where("media_name",$media['media_name'])->where("media_type_id","5efa9ca25b742508e81f2d55")->get();
$data = $medias['data']['data'];
if (count($tmp_arr)>=2){
var_dump($media);
if (!empty($data)){
foreach ($data as $media){
$tmp_arr = MediaModel::where("media_name",$media['media_name'])->where("media_type_id","5efa9ca25b742508e81f2d55")->get();
if (count($tmp_arr)>=2){
MediaModel::deleteMediaById($request,$media["_id"]);
var_dump($media);
MediaModel::deleteMediaById($request,$media["_id"]);
// foreach ($tmp_arr as $key => $tmp){
//
// if ($key != 0){
// array_push($res,$tmp);
// }
//
// }
}
}
}
}
}
echo "sleep";
}
......@@ -135,10 +129,6 @@ class MediaController extends Controller
}
/**
* @param Request $request
* @return \Illuminate\Http\JsonResponse
......
......@@ -10,14 +10,19 @@ namespace App\Http\Controllers\Web;
use App\Http\Controllers\Controller;
use App\Model\MediaCategoryModel;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class IndexController extends Controller
{
function index(){
function index(Request $request){
$userInfo = getAdmin();
$mediaCatgs = MediaCategoryModel::catgList($request);
return view('admin.index');
$data['catgs'] = $mediaCatgs;
return view('admin.index',$data);
}
}
\ No newline at end of file
......@@ -10,13 +10,21 @@ namespace App\Http\Controllers\Web;
use App\Exceptions\ControllerException;
use App\Exceptions\DatabaseException;
use App\Http\Controllers\Controller;
use App\Model\LogModel;
use App\Model\MediaCategoryModel;
use App\Model\MediaModel;
use App\Model\UserModel;
use App\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use MongoDB\BSON\UTCDateTime;
class LoginController extends Controller
{
......@@ -29,49 +37,156 @@ class LoginController extends Controller
{
if (request()->isMethod('post')) {
$user = handler_drive(function () use($request){
if (!$request->password) {
throw new ControllerException(400, '口令不能为空');
}
if (!$request->name) {
throw new ControllerException(400, '昵称必须填写');
}
$user = DB::connection('mongodb') //选择使用mongodb
->collection('users')->where('name',$request->name)->where("user_type",1)->first();
if (!$request->password) {
throw new ControllerException(400, '口令不能为空');
}
if (!$request->username) {
throw new ControllerException(400, '昵称必须填写');
}
/**
* 用户名称是有四部分组成,姓名-新账号-旧账号-mis_uid
*/
$user = UserModel::where('name', 'regexp', '/^.*?'.$request->username.'/')->first();
if (!empty($user)){
if (md5($request->password) != $user->password ){
throw new \Exception('用户名或者密码有误');
}
if (!$user->mis_uid){
/**
* 获取mis用户信息
*/
$userInfo = UserModel::getMisInfo($request);
$userid = $userInfo['userId'];
$flag = UserModel::where("_id",$user->_id)->update(['mis_uid'=>$userid]);
if (!$flag){
LogModel::addlog(['更新用户mis_uid失败'=>json_encode(['mis_uid'=>$userid])]);
throw new \Exception("更新用户mis_uid失败");
}
}
if (!empty($user)){
if ($user['password'] == md5($request->password)){
$result = true;
}else{
$result = false;
}
if (!$result){
return error('用户验证失败');
}
$userInfo = UserModel::getMisInfo($request);
$mis_uid = $userInfo["userId"];
$shops = UserModel::getUserPrivilege($request,['mis_uid'=>$mis_uid]);
if (empty($shops)){
LogModel::addlog(["用户不存在业务线,请联系管理员","params"=>$request->all()]);
throw new \Exception("用户不存在业务线,请联系管理员");
}
$data_arr = [
'name' => $userInfo['nickName'],
'password' => md5($request->password),
'organization_id' => 0,
'status' => 0,
'mis_uid' => $mis_uid,
'user_type' => 0,
'create_time' => new UTCDateTime(time() * 1000),
];
$_id = UserModel::insertGetId($data_arr);
if (!$_id){
LogModel::addlog(['添加用户失败'=>json_decode($data_arr)]);
throw new \Exception("添加用户失败");
}
$user = UserModel::where("_id",$_id)->first();
if ($user['status']){
return error('用户已被限制,请联系管理员');
}
Auth::login($user);
return $user;
});
return success($user);
} else {
return view('admin.login');
}
}
private function getUserInfo($request){
$password = strtolower($request->password);
$username = $request->username;
/**
* 陈腾飞-ctf37800-ctf88614-89043
* 用户名称是有四部分组成,姓名-新账号-旧账号-mis_uid
*/
$user = UserModel::where('name', 'regexp', '/^.*?'.$username.'/')->first();
if (empty($user)|| !isset($user['mis_uid'])){
/**
* 获取mis用户基本信息
*/
$userInfo = UserModel::getMisInfo($request);
$userid = $userInfo['userId'];
//$result = self::getUserPrivilege($request,['mis_uid'=>$userid]);
if (empty($user)){
$id = ($user['_id'])->jsonSerialize();
$user['_id'] = $id['$oid'];
//杨帆-yf18512-yf60144-8086
$data_arr = [
'name' => $userInfo['nickName'],
'password' => md5($password),
'organization_id'=> 0,
'status' => 0,
'mis_uid' => $userid,
'user_type' => 0,
'create_time' => new UTCDateTime(time() * 1000),
];
Session::put("user",json_encode($user));
return success($user);
$_id = UserModel::insertGetId($data_arr);
if (!$_id){
LogModel::addlog(['添加用户失败'=>json_decode($userInfo)]);
throw new \Exception("添加用户失败");
}
}else{
$_id = $user->_id;
$flag = UserModel::where("_id",$_id)->update(['mis_uid'=>$userid]);
if (!$flag){
LogModel::addlog(['更新用户mis_uid失败'=>json_encode(['mis_uid'=>$userid])]);
throw new \Exception("更新用户mis_uid失败");
}
}
return error('用户验证失败');
}else{
if ($user['password'] != md5($password)){
throw new \Exception("用户名称或者密码错误");
}
} else {
if ($user['status']){
throw new \Exception("用户已被限制,请联系管理员");
}
$_id = $user->_id;
return view('admin.login');
}
return UserModel::where("_id",$_id)->first();
}
/**
......@@ -81,7 +196,8 @@ class LoginController extends Controller
*/
public function logout(Request $request)
{
Session::remove('user');
Auth::logout();
$request->session()->flush();
return Redirect('/web/login');
}
......
......@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Web;
use App\Model\MediaCategoryModel;
use App\Tool\SrsHookValidate;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
......@@ -19,6 +20,7 @@ class MediaCategoryController extends Controller
$data['name'] = $request->name;
$data['media_categories'] = $result;
return view('admin.media_category.list',$data);
}
......@@ -33,5 +35,66 @@ class MediaCategoryController extends Controller
return view('admin.media_category.add');
}
/**
* @param Request $request
* @return \Illuminate\Http\JsonResponse
* @throws \App\Exceptions\ControllerException
*/
public function store(Request $request){
handler_drive(function () use($request){
SrsHookValidate::srsHookCallback($request,[
'name' => 'required',
'media_category_id' => '',
'status' => '',
'description' => ''
]);
MediaCategoryModel::addMediaCatg($request);
});
return success();
}
/**
* 显示查看媒资详情
* @param Request $request
* @param $id
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function edit(Request $request,$id){
$mediaCatg = MediaCategoryModel::where("_id",$id)->first();
$data['mediaCatg'] = $mediaCatg;
return view('admin.media_category.edit',$data);
}
/**
* @param Request $request
* @param $id
* @return \Illuminate\Http\JsonResponse
* @throws \App\Exceptions\ControllerException
*/
public function update(Request $request,$id){
handler_drive(function () use($request,$id){
SrsHookValidate::srsHookCallback($request,[
'name' => 'required',
'media_category_id' => '',
'status' => '',
'description' => '',
]);
MediaCategoryModel::updateMediaCatg($request,$id);
});
return success();
}
}
......@@ -31,18 +31,23 @@ class MediaController extends Controller
'sort' => '',
'page_size' => 'integer',
'start_time' => 'date',
'end_time' => 'date',
'end_time' => 'date',
'category_id' => '',
'appid' => ''
]);
$medias = MediaModel::mediaList($request);
return view('admin.media.media_list', [
'medias' => $medias,
'start_time' => substr($request->start_time, 0, 10),
'end_time' => substr($request->end_time, 0, 10),
'name' => $request->media_name,
'media_id' => $request->media_id,
'STATUS' => ['启用','停用'],
'start_time' => substr($request->start_time, 0, 10),
'end_time' => substr($request->end_time, 0, 10),
'media_name' => $request->media_name,
'media_id' => $request->media_id,
'STATUS' => ['启用','停用'],
'category_id' => $request->category_id,
'appid' => $request->appid,
'page_size' => $request->page_size
]);
}
......@@ -61,7 +66,8 @@ class MediaController extends Controller
$media = handler_drive(function () use ($request,$id){
return MediaModel::getMediaDetail($id);
});
$media_types = MediaCategoryModel::catgList($request);
$media_types = MediaCategoryModel::get()->toArray();
return view('admin.media.media_edit', [
'media' => $media,
......@@ -156,4 +162,13 @@ class MediaController extends Controller
}
/**
*
* @param Request $request
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function media_command(){
return view('admin.control');
}
}
......@@ -222,7 +222,7 @@ class MemberController extends Controller
throw new \App\Exceptions\FormException('你不能操作别人的');
}
if ($id == getAdmin()->_id) {
if ($id == Auth::user()->_id) {
throw new \App\Exceptions\FormException('你不能操作你自己');
}
UserModel::deleteUserById($id);
......@@ -240,7 +240,7 @@ class MemberController extends Controller
public function checkOwnHandle($user_id)
{
$user = getAdmin();
$user = Auth::user();
if ($user->name != config('custom.supper_admin.name')) {
......@@ -250,6 +250,7 @@ class MemberController extends Controller
return false;
}
if (!$user->user_type) {
return false;
}
......
<?php
/**
* 权限分类管理
*/
namespace App\Http\Controllers\Web;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class PrivilegeController extends Controller
{
/**
* 应用类型列表
* @param String $type_name 应用类型名称
* @return Json $result 响应结果
*/
public function index(Request $request)
{
$url = getRbac($request,'api/open/check');
$data['appid'] = $request->appid;
$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;
return view('admin.privilege.list',$data);
}
}
<?php
namespace App\Http\Controllers\Web;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class TestController extends Controller
{
//
function index(Request $request){
// $staffNo = $request->username??"yf60144";
// $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);
$staffNo = $request->username??"yf60144";;
$url = 'http://api-mis.offcn.com/index.php/applogin/isworking';
$data = sign($staffNo);
$data['type'] = 6;
$data['username'] = $staffNo;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$result = curl_exec($ch);
$userInfo = json_decode($result,true);
var_dump($userInfo);
}
}
......@@ -31,7 +31,7 @@ class Kernel extends HttpKernel
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
......@@ -61,6 +61,8 @@ class Kernel extends HttpKernel
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
// 'admin.login' => \App\Http\Middleware\AdminLogin::class
];
/**
......@@ -77,5 +79,7 @@ class Kernel extends HttpKernel
\Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Illuminate\Auth\Middleware\Authorize::class,
];
}
<?php
namespace App\Http\Middleware;
use App\Tool\ToolFunc;
use Closure;
use Illuminate\Support\Facades\Auth;
class AdminLogin
{
use ToolFunc;
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// if (!Auth::guard('web')->check()) {
// return redirect('/web/login');
// }
//
// if (request()->isMethod('DELETE') || request()->isMethod('PUT')) {
// self::getPutValueHandle($request);
// }
// $user = Auth::user();
// $request->replace(array_merge($request->all(),['mis_uid'=>$user->mis_uid]));
return $next($request);
}
}
......@@ -5,6 +5,7 @@ namespace App\Http\Middleware;
use App\Exceptions\ControllerException;
use Closure;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;
class ApiMiddleware
......@@ -29,10 +30,14 @@ class ApiMiddleware
return $next($request);
}
$user = getAdmin();
$ajax = $request->ajax();
$user = Auth::user();
if (isset($user->mis_uid)){
$request->replace(array_merge($request->all(),['mis_uid'=>$user->mis_uid]));
}
if (empty($user->name)){
if ($ajax){
throw new ControllerException(Response::HTTP_UNAUTHORIZED);
......
<?php
/**
* Created by PhpStorm.
* User: offcn
* Date: 2018/7/17
* Time: 11:21
* 后台管理员路由
*/
namespace App\Http\Routes\Web;
use Illuminate\Contracts\Routing\Registrar;
class IndexRoute extends AuthenRoute
{
public function map(Registrar $router, $callback)
{
parent::map($router, function () use ($router) {
$router->resource('admin', 'IndexController');
});
}
}
<?php
/**
* Created by PhpStorm.
* User: offcn
* Date: 2018/7/17
* Time: 11:21
* 后台管理员路由
*/
namespace App\Http\Routes\Web;
use Illuminate\Contracts\Routing\Registrar;
class ManagerRoute extends AuthenRoute
{
public function map(Registrar $router, $callback)
{
parent::map($router, function () use ($router) {
$router->resource('privilege', 'PrivilegeController');
});
}
}
......@@ -14,7 +14,8 @@ class MediaRoute extends AuthenRoute
{
public function map(Registrar $router,$callback){
parent::map($router,function() use ($router){
$router->resource('media_manager','MediaController');
$router->resource('media_model','MediaController');
$router->get('media_command','MediaController@media_command');
});
}
......
<?php
/**
* Created by PhpStorm.
* User: nxtvadmin
* Date: 2018/7/17
* Time: 11:28
* 会用路由
*/
namespace App\Http\Routes\Web;
use Illuminate\Contracts\Routing\Registrar;
class TestRoute extends AuthenRoute
{
public function map(Registrar $router,$callback){
parent::map($router,function() use ($router){
$router->resource('test_manager','TestController');
});
}
}
\ No newline at end of file
......@@ -3,6 +3,7 @@
namespace App\Model;
use App\Exceptions\DatabaseException;
use http\Env\Request;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class MediaCategoryModel extends Eloquent
......@@ -24,16 +25,51 @@ class MediaCategoryModel extends Eloquent
* @return mixed
* @throws DatabaseException
*/
public static function catgList(){
public static function catgList($request){
try{
/**
* 获取用户业务线及对应业务线的权限
*/
$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("获取商店列表失败");
}
$catgList = MediaCategoryModel::get()->toArray();
$appids = array_column($catgs['data'],"appid");
$tmp = [];
foreach ($catgList as $catg){
if (in_array($catg['media_category_id'],$appids)){
array_push($tmp,$catg);
}
}
}catch (\Exception $exception){
throw new DatabaseException("类别不存在");
throw new DatabaseException($exception->getMessage());
}
return $catgList;
return $tmp;
}
/**
......@@ -69,8 +105,10 @@ class MediaCategoryModel extends Eloquent
try{
$data = [
'name' => $request->name??"百度",
'status' => 0
'name' => $request->name,
'status' => 0,
'media_category_id' => $request->media_category_id??'',
'description' => $request->description??''
];
$mediaCatg = MediaCategoryModel::where('name',$request->name)->first();
......@@ -80,9 +118,48 @@ class MediaCategoryModel extends Eloquent
}
$id = MediaCategoryModel::insertGetId($data);
}catch (\Exception $exception){
throw new DatabaseException("组织不存在");
throw new DatabaseException($exception->getMessage());
}
return $id;
}
/**
* 添加媒资类别
* @param $request
* @return mixed
* @throws DatabaseException
*/
public static function updateMediaCatg($request,$id){
try{
$data = [
'name' => $request->name,
'status' => $request->status??0,
'media_category_id' => $request->media_category_id??'',
'description' => $request->description??''
];
$mediaCatg = MediaCategoryModel::where('name',$request->name)->first();
if (empty($mediaCatg)){
throw new \Exception('媒资类别不存在');
}
if ($id != $mediaCatg['_id'] ){
throw new \Exception('媒资类别已经存在');
}
$flag = MediaCategoryModel::where("_id",$id)->update($data);
if (!$flag){
throw new \Exception("媒资类别更新失败");
}
}catch (\Exception $exception){
throw new DatabaseException($exception->getMessage());
}
return $flag;
}
}
......@@ -68,6 +68,7 @@ class MediaModel extends Eloquent
$aggregate[]['$match']['media_type_id'] = $request->category_id;
}
// $aggregate[]['$match']['_id'] = 'mda-864371b9a82d1e21';
if (isset($request->media_name) && !empty($request->media_name)){
......@@ -123,19 +124,28 @@ class MediaModel extends Eloquent
*/
foreach ($tmp_arr as $media){
$tz = new \DateTimeZone("Asia/Shanghai");
if (is_object($media['start_time'])){
$media['start_time'] = $media['start_time']->toDateTime()->format('Y-m-d H:i:s');
$start_time = $media['start_time']->toDateTime();
$start_time->setTimezone($tz);
$start_time = $start_time->format("Y-m-d H:i:s");
$media['start_time'] = $start_time;
}
if (is_object($media['end_time'])){
$media['end_time'] = $media['end_time']->toDateTime()->format('Y-m-d H:i:s');
$end_time = $media['end_time']->toDateTime();
$end_time->setTimezone($tz);
$media['end_time'] = $end_time->format('Y-m-d H:i:s');
}
if (is_object($media['create_time'])){
$media['create_time'] = $media['create_time']->toDateTime()->format('Y-m-d H:i:s');
$create_time = $media['create_time']->toDateTime();
$create_time->setTimezone($tz);
$media['create_time'] = $create_time->format('Y-m-d H:i:s');
}
}
return new LengthAwarePaginator($tmp_arr, $count, $limit, $page,[
'path' => Paginator::resolveCurrentPath(),
'pageName' => 'page',
......@@ -627,6 +637,7 @@ class MediaModel extends Eloquent
LogModel::addlog(["添加媒资信息"=> $data,['媒资ID为:=> '.$id]]);
return $id;
}
$data['status'] = $request->status??"";
......@@ -747,10 +758,11 @@ class MediaModel extends Eloquent
*/
$tmp_medias = MediaModel::where("media_name",$media['media_name'])->count();
if ($tmp_medias>1){
MediaModel::deleteMediaById($request,$media['_id']);
var_dump($tmp_medias);
}
......
......@@ -3,11 +3,22 @@
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Session;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class ModuleModel extends Model
class ModuleModel extends Eloquent
{
public static function getModuleList(){
$module = file_get_contents(public_path('module.json'));
public static function getModuleList($user,$category_id){
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);
}
}
......@@ -3,11 +3,12 @@
namespace App\Model;
use App\Exceptions\DatabaseException;
use http\Env\Request;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\DB;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
use Jenssegers\Mongodb\Auth\User as Authenticatable;
use MongoDB\BSON\UTCDateTime;
class UserModel extends Eloquent
class UserModel extends Authenticatable
{
/**
* mongodb collection 名字
......@@ -18,11 +19,25 @@ class UserModel extends Eloquent
protected $primaryKey = '_id';
use Notifiable;
protected $fillable = [
'name', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
/*
* 获取用户列表
*/
public static function getUserList($request){
try{
$where = [];
......@@ -34,10 +49,11 @@ class UserModel extends Eloquent
->paginate(10);
foreach ( $users as $user){
$idArr = ($user['_id'])->jsonSerialize();
$user['_id'] = $idArr['$oid'];
}
// foreach ( $users as $user){
// $idArr = ($user['_id'])->jsonSerialize();
// $user['_id'] = $idArr['$oid'];
// }
}catch (\Exception $exception){
throw new DatabaseException($exception->getMessage());
......@@ -133,6 +149,8 @@ class UserModel extends Eloquent
}
$flag = UserModel::where('_id',$id)->delete();
RecycleModel::addRecycle($id,"users");
}catch (\Exception $exception){
throw new \Exception($exception->getMessage());
}
......@@ -187,5 +205,225 @@ class UserModel extends Eloquent
return $flag;
}
/**
* 检测用户权限信息
* @param $request
* @throws DatabaseException
*/
public static function checkUserRole($request){
try{
$password = strtolower($request->password);
$username = $request->username;
/**
* 陈腾飞-ctf37800-ctf88614-89043
* 用户名称是有四部分组成,姓名-新账号-旧账号-mis_uid
*/
$user = UserModel::where('name', 'regexp', '/^.*?'.$username.'/')->first();
if (empty($user)|| !isset($user['mis_uid'])){
/**
* 获取mis用户基本信息
*/
// $staffNo = $username;
// $url = 'http://api-mis.offcn.com/index.php/applogin/isworking';
// $data = sign($staffNo);
// $data['type'] = 6;
// $data['username'] = $staffNo;
$request->replace(array_merge($request->all(),['mis_uid'=>'000000']));
$url = getRbac($request,"api/mis/userinfo",'','mis_user');
$result = http_request_code($url,
null,
'GET'
);
$userInfo = json_decode($result,true);
if (empty($userInfo['data'])){
LogModel::addlog(["获取用户信息失败",$request->all()]);
throw new \Exception("获取用户信息失败");
}
$userInfo = $userInfo['data'];
$userid = $userInfo['userId'];
//$result = self::getUserPrivilege($request,['mis_uid'=>$userid]);
if (empty($user)){
//杨帆-yf18512-yf60144-8086
$data_arr = [
'name' => $userInfo['nickName'],
'password' => md5($password),
'organization_id' => 0,
'status' => 0,
'mis_uid' => $userid,
'user_type' => 0,
'create_time' => new UTCDateTime(time() * 1000),
];
$_id = UserModel::insertGetId($data_arr);
if (!$_id){
LogModel::addlog(['添加用户失败'=>json_decode($result)]);
throw new \Exception("添加用户失败");
}
}else{
$_id = $user->_id;
$flag = UserModel::where("_id",$_id)->update(['mis_uid'=>$userid]);
if (!$flag){
LogModel::addlog(['更新用户mis_uid失败'=>json_encode(['mis_uid'=>$userid])]);
throw new \Exception("更新用户mis_uid失败");
}
}
}else{
//$result = self::getUserPrivilege($request,['mis_uid'=>$user->mis_uid]);
if ($user['password'] != md5($password)){
throw new \Exception("用户名称或者密码错误");
}
if ($user['status']){
throw new \Exception("用户已被限制,请联系管理员");
}
$_id = $user->_id;
$userid = $user->mis_uid;
}
$result = self::getUserPrivilege($request,['mis_uid'=>$userid]);
if (empty($result)){
LogModel::addlog(["暂无业务权限,请联系管理员",$request->all()]);
throw new \Exception('暂无业务权限,请联系管理员',403);
}
$token = generateRandomNum();
$tmp['token'] = $newtoken = encrypt($userid."|".$token."|1ZGHd3pCc87AsQFBLLJeMjM4t57cli6Ar78qowe7");
$flag = DB::connection('mongodb')->collection('users')->where('_id',$_id)->update($tmp);
if (!$flag){
throw new DatabaseException('用户名信息更新失败');
}
$tmp['categories'] = $result;
}catch (\Exception $exception){
throw new DatabaseException($exception->getMessage());
}
return $tmp;
}
/**
* 获取用户业务信息
* @param $request
* @param $params
* @return array
* @throws DatabaseException
*/
public static function getUserPrivilege($request,$params){
try{
$request->replace(array_merge($request->all(),$params));
$catgList = MediaCategoryModel::get()->toArray();
$tmp = [];
foreach ($catgList as $key => $catg){
$request->replace(array_merge($request->all(),['appid'=>$catg['media_category_id']]));
$url = getRbac($request,'api/open/check',$catg['media_category_id']);
$data['appid'] = $catg['media_category_id'];
$data['uid'] = $request->mis_uid;
$data['tree'] = 1;
$result = http_request_code($url,
null,
'GET',
$data
);
$privilege = json_decode($result,true);
if (!empty($privilege['data'])){
array_push($tmp,$catg);
}
}
}catch (\Exception $exception){
throw new DatabaseException($exception->getMessage());
}
return $tmp;
}
/**
* 获取mis系统用户信息
* @param $request
* @return mixed
* @throws \Exception
*/
public static function getMisInfo($request){
try{
/**
* 获取mis用户基本信息
*/
/*$staffNo = $username; //工号
$url = 'http://api-mis.offcn.com/index.php/applogin/isworking';
$data = sign($staffNo);
$data['type'] = 6;
$data['username'] = $staffNo;*/
$request->replace(array_merge($request->all(),['mis_uid'=>'000000']));
$url = getRbac($request,"api/mis/userinfo",'','mis_user');
$result = http_request_code($url,
null,
'GET'
);
$userInfo = json_decode($result,true);
if (empty($userInfo['data']['userId'])){
LogModel::addlog(["用户不存在",$request->all()]);
throw new \Exception("用户不存在");
}
$userInfo = $userInfo['data'];
}catch (\Exception $exception){
throw new \Exception($exception->getMessage());
}
return $userInfo;
}
}
......@@ -3,6 +3,9 @@
namespace App\Providers;
use App\Model\ModuleModel;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
......@@ -23,15 +26,20 @@ class AppServiceProvider extends ServiceProvider
*
* @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){
$result = ModuleModel::getModuleList();
$user = Auth::user();
$result = ModuleModel::getModuleList($user,$c);
$view->with([
'left' => $result,
]);
});
};
}
}
......@@ -11,6 +11,7 @@ class User extends Authenticatable
use Notifiable;
protected $collection = 'users';
protected $connection = 'mongodb';
/**
* The attributes that should be hidden for arrays.
......
......@@ -67,7 +67,7 @@ return [
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class
'model' => App\Model\UserModel::class
],
// 'users' => [
......
......@@ -47,6 +47,8 @@ return [
'register_providers' => [],
'cleaners' => [
// See LaravelS's built-in cleaners: https://github.com/hhxsv5/laravel-s/blob/master/Settings.md#cleaners
Hhxsv5\LaravelS\Illuminate\Cleaners\SessionCleaner::class,
Hhxsv5\LaravelS\Illuminate\Cleaners\AuthCleaner::class,
],
'destroy_controllers' => [
'enable' => false,
......
[]
\ No newline at end of file
[{
"id": 2,
"pid": 0,
"name": "权限管理",
"icon": "&#xe623;",
"link": "/privilege",
"slug": "privilege.index",
"description": "",
"show": 1,
"sort": 1,
"key_name": "privilege",
"son": []
}, {
"id": 11,
"pid": 0,
"name": "媒体资源上传",
"icon": "&#xe60d;",
"link": "/media_command",
"slug": "media_command",
"description": "",
"show": 1,
"sort": 2,
"key_name": "media_command",
"son": []
}]
\ No newline at end of file
......@@ -3,7 +3,7 @@
"pid": 0,
"name": "用户管理",
"icon": "&#xe697;",
"link": "/member",
"link": "/member_manager",
"slug": "member.index",
"description": "",
"show": 1,
......@@ -103,8 +103,8 @@
"pid": 0,
"name": "媒资管理",
"icon": "&#xe60d;",
"link": "/manager",
"slug": "manager",
"link": "/media_manager",
"slug": "manager_manager",
"description": "",
"show": 1,
"sort": 2,
......@@ -114,23 +114,23 @@
"pid": 11,
"name": "媒资列表",
"icon": "",
"link": "/media_manager",
"slug": "media_manager.index",
"link": "/media_model",
"slug": "media_model.index",
"description": "",
"show": 1,
"sort": 25,
"key_name": "media_list"
"key_name": "media_model_list"
},{
"id": 23,
"pid": 11,
"name": "媒资删除",
"icon": "",
"link": "",
"slug": "media_manager.destroy",
"slug": "media_model.destroy",
"description": "",
"show": 0,
"sort": 25,
"key_name": "media_destroy"
"key_name": "media_model_destroy"
}, {
"id": 22,
"pid": 11,
......@@ -181,8 +181,8 @@
"pid": 0,
"name": "媒资类别管理",
"icon": "&#xe818;",
"link": "/media_category",
"slug": "media_category",
"link": "/media_category_manager",
"slug": "media_category_manager",
"description": "",
"show": 1,
"sort": 2,
......@@ -254,4 +254,16 @@
"sort": 25,
"key_name": "media_create"
}]
},{
"id": 2,
"pid": 0,
"name": "权限管理",
"icon": "&#xe623;",
"link": "/privilege",
"slug": "privilege.index",
"description": "",
"show": 1,
"sort": 1,
"key_name": "privilege",
"son": []
}]
\ No newline at end of file
......@@ -106,7 +106,7 @@
<a rel="nofollow" href="#" class="dropdown-item d-flex">
<div class="msg-profile"> <img src=" {{ asset('xadmin/img/avatar-1.jpg')}}" alt="..." class="img-fluid rounded-circle"></div>
<div class="msg-body">
<h3 class="h5">{{getAdmin()->name}}</h3>
<h3 class="h5">{{\Illuminate\Support\Facades\Auth::user()->name}}</h3>
</div>
</a>
<hr>
......@@ -134,7 +134,15 @@
{{--<hr>--}}
{{--</li>--}}
<li>
<a rel="nofollow" href="/web/logout" class="dropdown-item">
<a rel="nofollow" href="/web/admin" class="dropdown-item">
<div class="notification">
<div class="notification-content"><i class="fa fa-cog"></i>切换店铺</div>
</div>
</a>
</li>
<li>
<a rel="nofollow" href="javascript:;" class="dropdown-item" onclick="logout();">
<div class="notification">
<div class="notification-content"><i class="fa fa-power-off"></i>退出</div>
</div>
......@@ -247,4 +255,10 @@
</nav>
</header>
<script src="{{ asset('xadmin/js/language_002.js')}}"></script>
\ No newline at end of file
<script>
function logout() {
$.removeCookie('media_category_id')
$.removeCookie('appid')
window.location.href = "/web/logout";
}
</script>
......@@ -11,15 +11,15 @@
<div class="avatar"><img src=" {{ asset('xadmin/img/avatar-1.jpg')}}" alt="..."
class="img-fluid rounded-circle"></div>
<div class="title">
<h1 class="h4"><?=getAdmin()->name?></h1>
<h1 class="h4"><?=\Illuminate\Support\Facades\Auth::user()->name?></h1>
</div>
</div>
<hr>
<!-- Sidebar Navidation Menus-->
<ul class="list-unstyled first">
<li><a href="/web/admin" id="home-li"><i class="icon-home"></i>首页</a></li>
<li class=""><a href="/web/admin" id="home-li"><i class="icon-home"></i>首页</a></li>
@foreach($left as $key => $item)
<li class="">
<li class="{{parse_custom_str($item['link'])}}">
{{--<a href="index.blade.php2"><i class="icon-home"></i>Home</a>--}}
@if(count($item['son'])>0)
......@@ -35,9 +35,9 @@
@else
<a href="#top{{$key}}">
<a href="#top{{$key}}" onclick="redirectTo('{{get_prefix().$item["link"]}}')">
{{--<i class="{{$item['icon']}}" style="font-size:20px;"></i>--}}
<i class="icon-home"></i>
<i class="iconfont">{!! $item['icon'] !!}</i>
<cite>{{$item['name']}}</cite>
{{--<cite>{{trans('index.'.$item['key_name'])}} </cite>--}}
{{--<i class="iconfont nav_right">&#xe697;</i>--}}
......@@ -49,8 +49,8 @@
<ul id="top{{$key}}" class="second collapse list-unstyled">
@foreach($item['son'] as $k => $child_item)
@if($child_item['show'] == 1)
<li class="{{parse_custom_str($child_item['link'])}}">
<a href="{{get_prefix().$child_item['link']}}">
<li class="{{parse_custom_str($child_item['link'])}}" onclick="redirectTo('{{get_prefix().$child_item["link"]}}')">
<a href="javascript:;" >
{{--<i class="iconfont">&#xe6a7;</i>--}}
<cite>{{$child_item['name']}}</cite>
{{--<cite>{{ trans('index.'.$child_item['key_name']) }}</cite>--}}
......@@ -68,69 +68,110 @@
</ul>
</nav>
<style>
nav.side-navbar ul a.choice {
background: linear-gradient(to left, #7c8ce4, #2196f3) !important;
border-left: 4px solid #7b4397 !important;
color: #fff !important;
}
</style>
<script>
$('nav.side-navbar ul li').removeClass('active');
function secondSiliderBar() {
/**
* 处理包含有子类的侧边栏
*/
$('nav.side-navbar > ul li').removeClass('active');
/**
* 获取当前页面url控制器路径
* @type {string}
*/
var current_url = window.location.pathname;
var li_arr = $('nav.side-navbar ul > li');
var current_url = window.location.pathname;
console.log("current_url",current_url);
var li_arr = $('nav.side-navbar ul.second > li');
var urlexist = false;
var urlexist = false;
for (var i = 0; i < li_arr.length; i++) {
//console.log($(li_arr[i]).attr('class'))
// console.log('get_prefix()',"{{get_prefix()}}"+$(li_arr[i]).attr('class')+current_url)
for (var i = 0; i < li_arr.length; i++) {
console.log($(li_arr[i]).attr('class'))
if ("{{get_prefix()}}" + "/" + $(li_arr[i]).attr('class') == current_url) {
console.log('url_controller'+i,"{{get_prefix()}}"+"/"+$(li_arr[i]).attr('class'))
if ("{{get_prefix()}}" + "/" + $(li_arr[i]).attr('class') == current_url) {
urlexist = true;
$.cookie('previous_url', $(li_arr[i]).attr('class').substr($(li_arr[i]).attr('class').lastIndexOf("/") + 1));
urlexist = true;
if (urlexist) {
$.cookie('previous_url', $(li_arr[i]).attr('class').substr($(li_arr[i]).attr('class').lastIndexOf("/") + 1));
//console.log("$(li_arr[i]).attr('class') parent",$(li_arr[i]).parent().parent().addClass('active'))
if (urlexist) {
//设置选中侧边栏背景颜色,即ul.first li背景颜色
$(li_arr[i]).parent().parent().addClass('active');
//console.log("$(li_arr[i]).attr('class') parent",$(li_arr[i]).parent().parent().addClass('active'))
//设置选中侧边箭头朝下,即ul.first > a 属性aria-expanded=true
$(li_arr[i]).parent().parent().children("a:eq(0)").attr('aria-expanded', true);
//设置选中侧边栏背景颜色,即ul.first li背景颜色
$(li_arr[i]).parent().parent().addClass('active');
//设置选中侧边展开
$(li_arr[i]).parent().addClass('show');
//设置选中侧边箭头朝下,即ul.first > a 属性aria-expanded=true
$(li_arr[i]).parent().parent().children("a:eq(0)").attr('aria-expanded', true);
//设置选择项颜色
$(li_arr[i]).children("a:eq(0)").addClass('choice');
//设置选中侧边展开
$(li_arr[i]).parent().addClass('show');
//设置选择项颜色
$(li_arr[i]).children("a:eq(0)").addClass('choice');
console.log('$(li_arr[i])', $(li_arr[i]))
console.log('$(li_arr[i])', $(li_arr[i]))
}
}
}
}
if (!urlexist) {
previous_url = $.cookie('previous_url');
$('nav.side-navbar ul li.' + previous_url + '').parent().parent().addClass('active');
$('nav.side-navbar ul li.' + previous_url + '').parent().parent().children("a:eq(0)").attr('aria-expanded', true);
$('nav.side-navbar ul li.' + previous_url + '').parent().addClass('show');
$('nav.side-navbar ul li.' + previous_url + '').children("a:eq(0)").addClass('choice');
}
if (current_url == '/web/admin') {
$('a').removeClass('choice')
$('a').attr('aria-expanded', false)
$('ul').removeClass('show');
$('li').removeClass('active');
console.log("1111111111111111",urlexist)
if (!urlexist) {
previous_url = $.cookie('previous_url');
$('nav.side-navbar ul li.' + previous_url + '').parent().parent().addClass('active');
$('nav.side-navbar ul li.' + previous_url + '').parent().parent().children("a:eq(0)").attr('aria-expanded', true);
$('nav.side-navbar ul li.' + previous_url + '').parent().addClass('show');
$('nav.side-navbar ul li.' + previous_url + '').children("a:eq(0)").addClass('choice');
}
if (current_url == '/web/admin') {
$('a').removeClass('choice')
$('a').attr('aria-expanded', false)
$('ul').removeClass('show');
$('li').removeClass('active');
$('#home-li').addClass('choice');
}
}
$('#home-li').addClass('choice');
secondSiliderBar();
function redirectTo(url){
var category_id = $.cookie('media_category_id');
var appid = $.cookie('appid');
window.location.href = url+'?category_id='+category_id+'&appid='+appid;
}
</script>
<!DOCTYPE html>
<html>
@include('admin.common.commonMedia')
<body>
<!--====================================================
MAIN NAVBAR
======================================================-->
@include('admin.common.header')
<!--====================================================
PAGE CONTENT
======================================================-->
<div class="page-content d-flex align-items-stretch">
<!--***** SIDE NAVBAR *****-->
@include('admin.common.left')
<div class="content-inner">
<div class="control">
模块开发中
</div>
</div>
</div>
<!--Global Javascript -->
@include('admin.common.foot')
<style>
.control{
text-align: center;
line-height: 200px;
min-height: 200px;
font-size: 20px;
}
</style>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html>
@include('admin.common.commonMedia')
<body>
<!--====================================================
......@@ -15,97 +14,60 @@
<div class="page-content d-flex align-items-stretch">
<!--***** SIDE NAVBAR *****-->
@include('admin.common.left')
<div class="content-inner">
<div class="row" id="report4">
<div class="col-md-3" onclick="important_task('/web/pending_news')">
<div class="card text-center social-bottom sb-gp">
<i class="fa fa-google-plus"></i>
<div>0 </div>
<p>我的待办</p>
</div>
</div>
{{--@include('admin.common.left')--}}
<div class="col-md-3">
<div class="card text-center social-bottom sb-fb">
<i class="fa fa-facebook"></i>
<div>100 +</div>
<p>普通会员</p>
</div>
</div>
<div class="col-md-3">
<div class="card text-center social-bottom sb-tw">
<i class="fa fa-twitter"></i>
<div>100 +</div>
<p>管理员</p>
</div>
</div>
<div class="content-inner" style="width: 100%;">
<div class="col-md-3">
<div class="card text-center social-bottom sb-in">
<i class="fa fa-instagram"></i>
<div>500 +</div>
<p>已发布新闻</p>
</div>
</div>
@if(!empty($catgs))
</div>
<div class="row" id="report4">
<!--***** REPORT-2 *****-->
<div class="row" id="report2">
<div class="col-md-6">
<div class="card card-c1">
<div class="card-header card-chart" data-background-color="green">
<canvas class="ct-chart" id="myChart1" height="190"></canvas>
</div>
<div class="card-content">
<h4 class="title">Daily Sales</h4>
<p class="category">
<span class="text-success"><i class="fa fa-long-arrow-up"></i> 55% </span> increase in today sales.</p>
</div>
<div class="card-footer">
<div class="stats">
<i class="fa fa-clock-o"></i> updated 4 minutes ago
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card card-c1">
<div class="card-header card-chart" data-background-color="orange">
<canvas class="ct-chart" id="myChart2" height="190"></canvas>
</div>
<div class="card-content">
<h4 class="title">Email Subscriptions</h4>
<p class="category">Last Campaign Performance</p>
</div>
<div class="card-footer">
<div class="stats">
<i class="fa fa-clock-o"></i> campaign sent 2 days ago
</div>
@foreach($catgs as $catg)
<div class="col-md-4" onclick="important_task('/web/privilege','{{$catg["_id"]}}','{{$catg["media_category_id"]}}')">
<div class="card text-center social-bottom sb-in">
<i class="fa fa-instagram"></i>
{{--<div>500 +</div>--}}
<p>{{$catg['name']}}</p>
</div>
</div>
</div>
@endforeach
</div>
@else
<div class="no-service">暂无相关业务</div>
@endif
</div>
</div>
<!--Global Javascript -->
@include('admin.common.foot')
<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/tether.min.js')}}"></script>
<script src="{{ asset('xadmin/js/bootstrap.min.js')}}"></script>
<script src="{{ asset('xadmin/js/jquery.cookie.js')}}"></script>
<script src="{{ asset('xadmin/js/chart.min.js')}}"></script>
<script src="{{ asset('xadmin/js/front.js')}}"></script>
<link rel="stylesheet" href="{{ asset('xadmin/icon/iconfont.css')}}">
<!--Core Javascript -->
<script src="{{ asset('xadmin/js/mychart.js')}}"></script>
<script>
function important_task(url){
window.location.href = url;
function important_task(url,category_id,appid){
$.cookie('media_category_id',category_id)
$.cookie('appid',appid)
window.location.href = url+'?category_id='+category_id+'&appid='+appid;
}
</script>
</body>
</html>
\ No newline at end of file
......@@ -55,7 +55,7 @@
<input type="hidden" name="_token" value="{{csrf_token()}}">
<div class="form-group">
<label for="username">用户名</label>
<input type="text" class="form-control" id="username" name="name" value=""
<input type="text" class="form-control" id="username" name="username" value=""
placeholder="用户名" autocomplete="off">
</div>
<div class="form-group">
......@@ -85,7 +85,7 @@
$("#defaultForm").validate({
rules: {
name: {
username: {
required: true,
// minlength: 2
},
......@@ -96,7 +96,7 @@
},
messages: {
name: {
username: {
required: "用户名不能为空",
// minlength: "Your username must consist of at least 2 characters"
},
......
......@@ -37,11 +37,12 @@
</button>
<form>
<input type="text" name="media_name" class="form-input" placeholder="请输入媒资名称" value="{{$name}}" autocomplete="off">
<input type="text" name="media_name" class="form-input" placeholder="请输入媒资名称" value="{{$media_name}}" autocomplete="off">
<input type="text" style="width: 200px;" name="media_id" class="form-input" placeholder="请输入媒资编号" value="{{$media_id}}" autocomplete="off">
<input class="form-input" name="start_time" data-toggle="start_time" autocomplete="off" value="{{$start_time}}" placeholder="请输入开始时间"/>
<input class="form-input" name="end_time" data-toggle="end_time" autocomplete="off" value="{{$end_time}}" placeholder="请输入结束时间"/>
<input type="hidden" name="category_id" value="{{$category_id}}">
<input type="hidden" name="appid" value="{{$appid}}">
<button type="submit" class="btn btn-primary">搜索</button>
</form>
<span style="display: inline-block;height: 40px;line-height: 40px; float: right">共{{$medias->total()}}条</span>
......@@ -73,7 +74,7 @@
<td class="td-manage">
<a title="编辑" href="/web/media_manager/{{$media['_id']}}/edit">
<a title="编辑" href="/web/media_model/{{$media['_id']}}/edit">
<i class="iconfont">&#xe609;</i>
</a>
{{--<a onclick="x_admin_show('修改密码','/web/password/{{$user->id}}',500,300)" title="修改密码"--}}
......@@ -96,7 +97,7 @@
<div class="page">
<div>
{{$medias->appends(['name'=>$name,'start_time'=>$start_time,'end_time'=>$end_time,'media_id'=>$media_id])->links()}}
{{$medias->appends(['media_name'=>$media_name,'start_time'=>$start_time,'end_time'=>$end_time,'media_id'=>$media_id,'category_id'=>$category_id,'appid' => $appid ,'page_size' => $page_size])->links()}}
</div>
</div>
</div>
......@@ -140,7 +141,7 @@
confirm: function () {
fetch_response('DELETE',"/web/media_manager/"+id).then(function (res) {
fetch_response('DELETE',"/web/media_model/"+id).then(function (res) {
if (res.code==200) {
$('body').toast({
position:'fixed',
......@@ -149,7 +150,7 @@
top:'50%'
});
setTimeout(function () {
window.location.href='/web/media_manager';
window.location.href='/web/media_model?media_name={{$media_name}}&media_id={{$media_id}}&start_time={{$start_time}}&end_time={{$end_time}}&category_id={{$category_id}}&appid={{$appid}}';
},2000)
}else{
$('body').toast({
......
......@@ -46,7 +46,14 @@
<div class="col-md-12">
<div class="form-group">
<label for="name">栏目名称</label>
<input type="text" class="form-control" name="title" id="name" placeholder="栏目名称">
<input type="text" class="form-control" name="name" id="name" placeholder="栏目名称">
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label for="name">appID</label>
<input type="text" class="form-control" name="media_category_id" value="" id="media_category_id" placeholder="Rbac平台appID">
</div>
</div>
......@@ -54,8 +61,8 @@
<div class="form-group">
<label for="is_top">启用:</label>
<input type="radio" id="is_top" name="is_top" value="on">
<input type="radio" id="is_top" name="is_top" checked value="">
<input type="radio" id="status" name="status" value="on">
<input type="radio" id="status" name="status" checked value="">
</div>
</div>
......@@ -133,7 +140,7 @@
var form = document.querySelector("#form1");
var formdata = new FormData(form);
fetch_response('POST', '/web/news_category', formdata).then(function (res) {
fetch_response('POST', '/web/media_category', formdata).then(function (res) {
if (res.code == 200) {
$('body').toast({
position: 'fixed',
......@@ -142,7 +149,7 @@
top: '50%'
});
setTimeout(function () {
window.location.href = '/web/news_category';
window.location.href = '/web/media_category';
}, 2000)
} else {
......
......@@ -76,7 +76,7 @@
<a onclick="member_stop(this,'{{$media_category["_id"]}}')" href="javascript:;" status="{{$media_category['status']}}">
<i class="iconfont">@if( $media_category['status'] == 1 ) &#xe79e;@else&#xe689;@endif</i>
</a>
<a title="编辑" href="/web/member/{{$media_category['_id']}}/edit">
<a title="编辑" href="/web/media_category/{{$media_category['_id']}}/edit">
<i class="iconfont">&#xe609;</i>
</a>
{{--<a onclick="x_admin_show('修改密码','/web/password/{{$user->id}}',500,300)" title="修改密码"--}}
......
<!DOCTYPE html>
<html>
@include('admin.common.commonMedia')
<body>
<!--====================================================
MAIN NAVBAR
======================================================-->
<header class="header">
<nav class="navbar navbar-expand-lg ">
<div class="search-box">
<button class="dismiss"><i class="icon-close"></i></button>
<form id="searchForm" action="#" role="search">
<input type="search" placeholder="Search Now" class="form-control">
</form>
</div>
<div class="container-fluid ">
<div class="navbar-holder d-flex align-items-center justify-content-between">
<div class="navbar-header">
<a href="/web/admin" class="navbar-brand">
<div class="brand-text brand-big hidden-lg-down">
<h4>中公教育-媒资</h4>
{{--<img src=" {{ asset('xadmin/img/logo-white.png')}}" alt="Logo" style="width: 180px;height: auto;" class="img-fluid">--}}
</div>
<div class="brand-text brand-small"><img src=" {{ asset('xadmin/img/logo-icon.pn')}}g" alt="Logo" class="img-fluid"></div>
</a>
</div>
</div>
<ul class="nav-menu list-unstyled d-flex flex-md-row align-items-md-center">
<li class="nav-item dropdown"><a id="profile" class="nav-link logout" data-target="#" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><img src=" {{ asset('xadmin/img/avatar-1.jpg')}}" alt="..." class="img-fluid rounded-circle" style="height: 30px; width: 30px;"></a>
<ul aria-labelledby="profile" class="dropdown-menu profile">
<li>
<a rel="nofollow" href="#" class="dropdown-item d-flex">
<div class="msg-profile"> <img src=" {{ asset('xadmin/img/avatar-1.jpg')}}" alt="..." class="img-fluid rounded-circle"></div>
<div class="msg-body">
<h3 class="h5">{{\Illuminate\Support\Facades\Auth::user()->name}}</h3>
</div>
</a>
<hr>
</li>
<li>
<a rel="nofollow" href="/web/admin" class="dropdown-item">
<div class="notification">
<div class="notification-content"><i class="fa fa-power-off"></i>切换店铺</div>
</div>
</a>
</li>
<li>
<a rel="nofollow" href="/web/logout" class="dropdown-item">
<div class="notification">
<div class="notification-content"><i class="fa fa-power-off"></i>退出</div>
</div>
</a>
</li>
</ul>
</li>
</ul>
</div>
</nav>
</header>
<!--====================================================
PAGE CONTENT
======================================================-->
<div class="page-content d-flex align-items-stretch">
<!--***** SIDE NAVBAR *****-->
{{--@include('admin.common.left')--}}
<div class="content-inner" style="width: 100%;">
<div class="no-service">暂无相关业务</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/tether.min.js')}}"></script>
<script src="{{ asset('xadmin/js/bootstrap.min.js')}}"></script>
<script src="{{ asset('xadmin/js/jquery.cookie.js')}}"></script>
<script src="{{ asset('xadmin/js/chart.min.js')}}"></script>
<script src="{{ asset('xadmin/js/front.js')}}"></script>
<link rel="stylesheet" href="{{ asset('xadmin/icon/iconfont.css')}}">
<!--Core Javascript -->
<script>
function important_task(url,category_id){
$.cookie('media_category_id',category_id)
window.location.href = url+'?category_id='+category_id;
}
// var mainContent = document.getElementById('mainContent');
// mainContent.src = "http://baidu.com.cn"//嵌套网址
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html>
@include('admin.common.commonMedia')
<body>
<!--====================================================
MAIN NAVBAR
======================================================-->
@include('admin.common.header')
<!--====================================================
PAGE CONTENT
======================================================-->
<div class="page-content d-flex align-items-stretch">
<!--***** SIDE NAVBAR *****-->
@include('admin.common.left')
<div class="content-inner chart-cont">
<iframe id="mainContent" width="100%" height="100%"></iframe>
</div>
</div>
<!--Global Javascript -->
@include('admin.common.foot')
<!--Core Javascript -->
<link rel="stylesheet" href="{{ asset('xadmin/extra/jqueryConfirm/css/jquery-confirm.css')}}">
<script src="{{ asset('xadmin/extra/jqueryConfirm/js/jquery-confirm.min.js')}}"></script>
{{--<link rel="stylesheet" href="{{ asset('xadmin/extra/toast/css/toast.css')}}">--}}
<script>
setTimeout(function () {
var mainContent = document.getElementById('mainContent');
mainContent.src = "<?=$url?>"//嵌套网址
},1000)
</script>
</body>
</html>
\ No newline at end of file
......@@ -11,12 +11,12 @@
|
*/
use Illuminate\Support\Facades\Redirect;
Route::group(['prefix' => 'web','middleware'=>['web'],'namespace'=>'Web'],function(){
#后台首页
Route::get('admin','IndexController@index');
#Route::resource('member','MemberController');
});
//Route::group(['prefix' => 'web','middleware'=>['web'],'namespace'=>'Web'],function(){
// #后台首页
// Route::get('admin','IndexController@index');
// #Route::resource('member','MemberController');
//
//});
#跟目录跳转
Route::get('/',function(){
return Redirect::to('web/login');
......@@ -30,6 +30,15 @@ Route::group(['prefix' => 'web','middleware'=>[],'namespace'=>'Web'],function(){
});
#Auth::routes();
#根目录跳转
Route::get('/', function () {
return Redirect::to('web/login');
});
Route::get('/web', function () {
return Redirect::to('web/login');
});
//Auth::routes();
#Route::get('/home', 'HomeController@index')->name('home');
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