Merge remote-tracking branch 'origin/master'

This commit is contained in:
zhaoxiang 2018-03-03 15:48:10 +08:00
commit 02ec86dd39
9 changed files with 167 additions and 9 deletions

1
.gitignore vendored
View File

@ -1,2 +1 @@
.idea/
runtime/

View File

@ -0,0 +1,52 @@
<?php
/**
* 后台操作日志记录
* @since 2018-02-28
* @author zhaoxiang <zhaoxiang051405@gmail.com>
*/
namespace app\admin\behavior;
use app\model\ApiMenu;
use app\model\ApiUserAction;
use app\util\ReturnCode;
use think\Request;
class AdminLog {
/**
* 后台操作日志记录
* @author zhaoxiang <zhaoxiang051405@gmail.com>
* @return \think\response\Json
* @throws \think\Exception
* @throws \think\exception\DbException
*/
public function run() {
$header = config('apiAdmin.CROSS_DOMAIN');
$request = Request::instance();
$route = $request->routeInfo();
$userToken = $request->header('ApiAuth', '');
$userInfo = cache($userToken);
$userInfo = json_decode($userInfo, true);
$menuInfo = ApiMenu::get(['url' => $route['route']]);
if ($menuInfo) {
$menuInfo = $menuInfo->toArray();
} else {
$data = ['code' => ReturnCode::INVALID, 'msg' => '当前路由非法:'. $route['route'], 'data' => []];
return json($data, 200, $header);
}
ApiUserAction::create([
'actionName' => $menuInfo['name'],
'uid' => $userInfo['id'],
'nickname' => $userInfo['nickname'],
'addTime' => time(),
'url' => $route['route'],
'data' => json_encode($request->param())
]);
}
}

View File

@ -13,8 +13,6 @@ use think\Request;
class ApiAuth {
private $exclude = [];
/**
* 默认行为函数
* @return \think\response\Json
@ -23,9 +21,9 @@ class ApiAuth {
public function run() {
$request = Request::instance();
$header = config('apiAdmin.CROSS_DOMAIN');
$userToken = $request->header('ApiAuth', '');
if ($userToken) {
$userInfo = cache($userToken);
$ApiAuth = $request->header('ApiAuth', '');
if ($ApiAuth) {
$userInfo = cache($ApiAuth);
$userInfo = json_decode($userInfo, true);
if (!$userInfo || !isset($userInfo['id'])) {
$data = ['code' => ReturnCode::AUTH_ERROR, 'msg' => 'ApiAuth不匹配', 'data' => []];

View File

@ -29,8 +29,8 @@ class ApiPermission {
$request = Request::instance();
$route = $request->routeInfo();
$header = config('apiAdmin.CROSS_DOMAIN');
$userToken = $request->header('ApiAuth', '');
$userInfo = cache($userToken);
$ApiAuth = $request->header('ApiAuth', '');
$userInfo = cache($ApiAuth);
$userInfo = json_decode($userInfo, true);
if (!$this->checkAuth($userInfo['id'], $route['route'])) {
$data = ['code' => ReturnCode::INVALID, 'msg' => '非常抱歉,您没有权限怎么做!', 'data' => []];

View File

@ -0,0 +1,76 @@
<?php
/**
* 后台操作日志管理
* @since 2018-02-06
* @author zhaoxiang <zhaoxiang051405@gmail.com>
*/
namespace app\admin\controller;
use app\model\ApiAuthGroupAccess;
use app\model\ApiUser;
use app\model\ApiUserAction;
use app\model\ApiUserData;
use app\util\ReturnCode;
use app\util\Tools;
class Log extends Base {
/**
* 获取操作日志列表
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
* @author zhaoxiang <zhaoxiang051405@gmail.com>
*/
public function index() {
$limit = $this->request->get('size', config('apiAdmin.ADMIN_LIST_DEFAULT'));
$start = $limit * ($this->request->get('page', 1) - 1);
$type = $this->request->get('type', '');
$keywords = $this->request->get('keywords', '');
$where = [];
if ($type) {
switch ($type) {
case 1:
$where['url'] = ['like', "%{$keywords}%"];
break;
case 2:
$where['nickname'] = ['like', "%{$keywords}%"];
break;
case 3:
$where['uid'] = $keywords;
break;
}
}
$listInfo = (new ApiUserAction())->where($where)->order('addTime', 'DESC')->limit($start, $limit)->select();
$count = (new ApiUserAction())->where($where)->count();
$listInfo = Tools::buildArrFromObj($listInfo);
return $this->buildSuccess([
'list' => $listInfo,
'count' => $count
]);
}
/**
* 删除日志
* @return array
* @author zhaoxiang <zhaoxiang051405@gmail.com>
*/
public function del() {
$id = $this->request->get('id');
if (!$id) {
return $this->buildFailed(ReturnCode::EMPTY_PARAMS, '缺少必要参数');
}
ApiUserAction::destroy($id);
return $this->buildSuccess([]);
}
}

View File

@ -1,5 +1,9 @@
<?php
$afterBehavior = ['\app\admin\behavior\ApiAuth', '\app\admin\behavior\ApiPermission'];
$afterBehavior = [
'\app\admin\behavior\ApiAuth',
'\app\admin\behavior\ApiPermission',
'\app\admin\behavior\AdminLog'
];
return [
'[admin]' => [
@ -215,6 +219,14 @@ return [
'admin/AppGroup/changeStatus',
['method' => 'get', 'after_behavior' => $afterBehavior]
],
'Log/index' => [
'admin/Log/index',
['method' => 'get', 'after_behavior' => $afterBehavior]
],
'Log/del' => [
'admin/Log/del',
['method' => 'get', 'after_behavior' => $afterBehavior]
],
'__miss__' => ['admin/Miss/index'],
],
];

View File

@ -0,0 +1,13 @@
<?php
/**
*
* @since 2018-02-11
* @author zhaoxiang <zhaoxiang051405@gmail.com>
*/
namespace app\model;
class ApiUserAction extends Base {
}

View File

@ -0,0 +1,8 @@
<?php
/**
* Api路由
*/
use think\Route;
Route::miss('api/Index/index');
$afterBehavior = ['\app\api\behavior\ApiAuth', '\app\api\behavior\ApiPermission', '\app\api\behavior\RequestFilter'];

0
runtime/index.html Normal file
View File