save
This commit is contained in:
parent
6fe95afb9c
commit
2ce0adfdca
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,4 +5,5 @@
|
|||||||
.env
|
.env
|
||||||
src/plugin/admin/public/upload
|
src/plugin/admin/public/upload
|
||||||
src/plugin/admin/config/database.php
|
src/plugin/admin/config/database.php
|
||||||
|
src/plugin/admin/config/thinkorm.php
|
||||||
src/plugin/admin.zip
|
src/plugin/admin.zip
|
||||||
|
@ -17,7 +17,7 @@ class Auth
|
|||||||
* @param string $controller
|
* @param string $controller
|
||||||
* @param string $action
|
* @param string $action
|
||||||
* @return void
|
* @return void
|
||||||
* @throws \ReflectionException
|
* @throws \ReflectionException|BusinessException
|
||||||
*/
|
*/
|
||||||
public static function access(string $controller, string $action)
|
public static function access(string $controller, string $action)
|
||||||
{
|
{
|
||||||
@ -35,10 +35,15 @@ class Auth
|
|||||||
* @param int $code
|
* @param int $code
|
||||||
* @param string $msg
|
* @param string $msg
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws \ReflectionException
|
* @throws \ReflectionException|BusinessException
|
||||||
*/
|
*/
|
||||||
public static function canAccess(string $controller, string $action, int &$code = 0, string &$msg = ''): bool
|
public static function canAccess(string $controller, string $action, int &$code = 0, string &$msg = ''): bool
|
||||||
{
|
{
|
||||||
|
if (!$controller) {
|
||||||
|
$msg = '无法识别当前控制器';
|
||||||
|
$code = 3;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
// 获取控制器鉴权信息
|
// 获取控制器鉴权信息
|
||||||
$class = new \ReflectionClass($controller);
|
$class = new \ReflectionClass($controller);
|
||||||
$properties = $class->getDefaultProperties();
|
$properties = $class->getDefaultProperties();
|
||||||
|
@ -14,7 +14,6 @@ class Menu
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据key获取菜单
|
* 根据key获取菜单
|
||||||
*
|
|
||||||
* @param $key
|
* @param $key
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
@ -26,7 +25,6 @@ class Menu
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据id获得菜单
|
* 根据id获得菜单
|
||||||
*
|
|
||||||
* @param $id
|
* @param $id
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
@ -37,7 +35,6 @@ class Menu
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加菜单
|
* 添加菜单
|
||||||
*
|
|
||||||
* @param array $menu
|
* @param array $menu
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
@ -53,7 +50,6 @@ class Menu
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入菜单
|
* 导入菜单
|
||||||
*
|
|
||||||
* @param array $menu_tree
|
* @param array $menu_tree
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
@ -81,7 +77,6 @@ class Menu
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除菜单
|
* 删除菜单
|
||||||
*
|
|
||||||
* @param $key
|
* @param $key
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
@ -103,7 +98,6 @@ class Menu
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取菜单中某个(些)字段的值
|
* 获取菜单中某个(些)字段的值
|
||||||
*
|
|
||||||
* @param $menu
|
* @param $menu
|
||||||
* @param null $column
|
* @param null $column
|
||||||
* @param null $index
|
* @param null $index
|
||||||
|
@ -1,17 +1,24 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace plugin\admin\api;
|
namespace plugin\admin\api;
|
||||||
|
|
||||||
use plugin\admin\api\Auth;
|
|
||||||
use plugin\admin\app\model\Option;
|
|
||||||
use Webman\Http\Request;
|
use Webman\Http\Request;
|
||||||
use Webman\Http\Response;
|
use Webman\Http\Response;
|
||||||
use Webman\MiddlewareInterface;
|
use Webman\MiddlewareInterface;
|
||||||
|
use support\exception\BusinessException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对外提供的中间件
|
* 对外提供的webman-admin鉴权中间件
|
||||||
*/
|
*/
|
||||||
class Middleware implements MiddlewareInterface
|
class Middleware implements MiddlewareInterface
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* 鉴权
|
||||||
|
* @param Request $request
|
||||||
|
* @param callable $handler
|
||||||
|
* @return Response
|
||||||
|
* @throws \ReflectionException
|
||||||
|
* @throws BusinessException
|
||||||
|
*/
|
||||||
public function process(Request $request, callable $handler): Response
|
public function process(Request $request, callable $handler): Response
|
||||||
{
|
{
|
||||||
$controller = $request->controller;
|
$controller = $request->controller;
|
||||||
@ -23,7 +30,7 @@ class Middleware implements MiddlewareInterface
|
|||||||
if ($request->expectsJson()) {
|
if ($request->expectsJson()) {
|
||||||
$response = json(['code' => $code, 'msg' => $msg, 'type' => 'error']);
|
$response = json(['code' => $code, 'msg' => $msg, 'type' => 'error']);
|
||||||
} else {
|
} else {
|
||||||
$response = \response($msg, $code);
|
$response = \response($msg, 401);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$response = $request->method() == 'OPTIONS' ? response('') : $handler($request);
|
$response = $request->method() == 'OPTIONS' ? response('') : $handler($request);
|
||||||
|
@ -5,6 +5,7 @@ namespace plugin\admin\app\controller;
|
|||||||
use plugin\admin\app\common\Util;
|
use plugin\admin\app\common\Util;
|
||||||
use plugin\admin\app\model\User;
|
use plugin\admin\app\model\User;
|
||||||
use support\Db;
|
use support\Db;
|
||||||
|
use support\exception\BusinessException;
|
||||||
use support\Request;
|
use support\Request;
|
||||||
use support\Response;
|
use support\Response;
|
||||||
use think\db\Where;
|
use think\db\Where;
|
||||||
@ -29,6 +30,7 @@ class IndexController
|
|||||||
* 后台主页
|
* 后台主页
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @return Response
|
* @return Response
|
||||||
|
* @throws BusinessException
|
||||||
*/
|
*/
|
||||||
public function index(Request $request): Response
|
public function index(Request $request): Response
|
||||||
{
|
{
|
||||||
|
@ -43,7 +43,7 @@ class InstallController extends Base
|
|||||||
$password = $request->post('password');
|
$password = $request->post('password');
|
||||||
$database = $request->post('database');
|
$database = $request->post('database');
|
||||||
$host = $request->post('host');
|
$host = $request->post('host');
|
||||||
$port = $request->post('port');
|
$port = (int)$request->post('port') ?: 3306;
|
||||||
$overwrite = $request->post('overwrite');
|
$overwrite = $request->post('overwrite');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -74,6 +74,7 @@ class InstallController extends Base
|
|||||||
'wa_rules',
|
'wa_rules',
|
||||||
'wa_options',
|
'wa_options',
|
||||||
'wa_users',
|
'wa_users',
|
||||||
|
'wa_uploads',
|
||||||
];
|
];
|
||||||
|
|
||||||
if (!$overwrite) {
|
if (!$overwrite) {
|
||||||
@ -128,6 +129,46 @@ EOF;
|
|||||||
|
|
||||||
file_put_contents($database_config_file, $config_content);
|
file_put_contents($database_config_file, $config_content);
|
||||||
|
|
||||||
|
$think_orm_config = <<<EOF
|
||||||
|
<?php
|
||||||
|
return [
|
||||||
|
'default' => 'mysql',
|
||||||
|
'connections' => [
|
||||||
|
'mysql' => [
|
||||||
|
// 数据库类型
|
||||||
|
'type' => 'mysql',
|
||||||
|
// 服务器地址
|
||||||
|
'hostname' => '$host',
|
||||||
|
// 数据库名
|
||||||
|
'database' => '$database',
|
||||||
|
// 数据库用户名
|
||||||
|
'username' => '$user',
|
||||||
|
// 数据库密码
|
||||||
|
'password' => '$password',
|
||||||
|
// 数据库连接端口
|
||||||
|
'hostport' => $port,
|
||||||
|
// 数据库连接参数
|
||||||
|
'params' => [
|
||||||
|
// 连接超时3秒
|
||||||
|
\PDO::ATTR_TIMEOUT => 3,
|
||||||
|
],
|
||||||
|
// 数据库编码默认采用utf8
|
||||||
|
'charset' => 'utf8mb4',
|
||||||
|
// 数据库表前缀
|
||||||
|
'prefix' => '',
|
||||||
|
// 断线重连
|
||||||
|
'break_reconnect' => true,
|
||||||
|
// 关闭SQL监听日志
|
||||||
|
'trigger_sql' => true,
|
||||||
|
// 自定义分页类
|
||||||
|
'bootstrap' => ''
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
EOF;
|
||||||
|
file_put_contents(base_path() . '/plugin/admin/config/thinkorm.php', $think_orm_config);
|
||||||
|
|
||||||
|
|
||||||
// 尝试reload
|
// 尝试reload
|
||||||
if (function_exists('posix_kill')) {
|
if (function_exists('posix_kill')) {
|
||||||
set_error_handler(function () {});
|
set_error_handler(function () {});
|
||||||
|
@ -93,14 +93,17 @@ function refresh_admin_session(bool $force = false)
|
|||||||
if (!$force && $time_now - $session_last_update_time < $session_ttl) {
|
if (!$force && $time_now - $session_last_update_time < $session_ttl) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
$admin = Admin::find($admin_id)->toArray();
|
$session = request()->session();
|
||||||
|
$admin = Admin::find($admin_id);
|
||||||
if (!$admin) {
|
if (!$admin) {
|
||||||
throw new BusinessException('当前账户不存在或已被禁用');
|
$session->forget('admin');
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
$admin = $admin->toArray();
|
||||||
unset($admin['password']);
|
unset($admin['password']);
|
||||||
$admin['roles'] = $admin['roles'] ? explode(',', $admin['roles']) : [];
|
$admin['roles'] = $admin['roles'] ? explode(',', $admin['roles']) : [];
|
||||||
$admin['session_last_update_time'] = $time_now;
|
$admin['session_last_update_time'] = $time_now;
|
||||||
request()->session()->set('admin', $admin);
|
$session->set('admin', $admin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -122,11 +125,14 @@ function refresh_user_session(bool $force = false)
|
|||||||
if (!$force && $time_now - $session_last_update_time < $session_ttl) {
|
if (!$force && $time_now - $session_last_update_time < $session_ttl) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
$user = User::find($user_id)->toArray();
|
$session = request()->session();
|
||||||
|
$user = User::find($user_id);
|
||||||
if (!$user) {
|
if (!$user) {
|
||||||
throw new BusinessException('当前账户不存在或已被禁用');
|
$session->forget('user');
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
$user = $user->toArray();
|
||||||
unset($user['password']);
|
unset($user['password']);
|
||||||
$user['session_last_update_time'] = $time_now;
|
$user['session_last_update_time'] = $time_now;
|
||||||
request()->session()->set('user', $user);
|
$session->set('user', $user);
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user