初始化
This commit is contained in:
52
addons/webman/middleware/AuthMiddleware.php
Normal file
52
addons/webman/middleware/AuthMiddleware.php
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace addons\webman\middleware;
|
||||
|
||||
use addons\webman\Admin;
|
||||
use addons\webman\model\AdminDepartment;
|
||||
use addons\webman\model\AdminUser;
|
||||
use addons\webman\model\Channel;
|
||||
use ExAdmin\ui\support\Token;
|
||||
use ExAdmin\ui\token\AuthException;
|
||||
use Webman\Http\Request;
|
||||
use Webman\Http\Response;
|
||||
use Webman\MiddlewareInterface;
|
||||
|
||||
|
||||
class AuthMiddleware implements MiddlewareInterface
|
||||
{
|
||||
public function process(Request $request, callable $handler): Response
|
||||
{
|
||||
list($class, $function) = Admin::getDispatch();
|
||||
if ($class != 'system' && $class != 'login') {
|
||||
try {
|
||||
Token::auth();
|
||||
/** @var AdminUser $user */
|
||||
$user = Admin::user();
|
||||
if ($user->type == AdminDepartment::TYPE_CHANNEL) {
|
||||
if (!empty($user->department_id)) {
|
||||
/** @var Channel $channel */
|
||||
$channel = Channel::where('department_id', $user->department_id)->first();
|
||||
if ($channel->status == 0 || $channel->department->status == 0) {
|
||||
throw new AuthException('渠道已禁用', 40006);
|
||||
}
|
||||
if (!empty($channel->deleted_at) || !empty($channel->department->deleted_at)) {
|
||||
throw new AuthException('渠道已删除', 40007);
|
||||
}
|
||||
} else {
|
||||
throw new AuthException('账号异常', 40008);
|
||||
}
|
||||
}
|
||||
if ($user->status == 0) {
|
||||
throw new AuthException('账号已禁用', 40009);
|
||||
}
|
||||
} catch (AuthException $exception) {
|
||||
return response(
|
||||
json_encode(['message' => $exception->getMessage(), 'code' => $exception->getCode()]),
|
||||
401,
|
||||
['Content-Type' => 'application/json']);
|
||||
}
|
||||
}
|
||||
return $handler($request);
|
||||
}
|
||||
}
|
||||
24
addons/webman/middleware/LoadLangPack.php
Normal file
24
addons/webman/middleware/LoadLangPack.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace addons\webman\middleware;
|
||||
|
||||
|
||||
use ExAdmin\ui\support\Container;
|
||||
use Illuminate\Support\Arr;
|
||||
use Webman\Http\Request;
|
||||
use Webman\Http\Response;
|
||||
use Webman\MiddlewareInterface;
|
||||
|
||||
|
||||
class LoadLangPack implements MiddlewareInterface
|
||||
{
|
||||
public function process(Request $request, callable $handler): Response
|
||||
{
|
||||
$lang = plugin()->webman->config('ui.lang');
|
||||
Arr::set($lang,'default',$request->cookie('ex_admin_lang',$lang['default']));
|
||||
admin_config(['lang'=>$lang], 'ui');
|
||||
Container::getInstance()->translator->setLocale($lang['default']);
|
||||
Container::getInstance()->translator->load(plugin()->webman->getPath() . DIRECTORY_SEPARATOR . 'lang', 'ex_admin_ui');
|
||||
return $handler($request);
|
||||
}
|
||||
}
|
||||
24
addons/webman/middleware/Permission.php
Normal file
24
addons/webman/middleware/Permission.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace addons\webman\middleware;
|
||||
|
||||
use addons\webman\Admin;
|
||||
use Webman\Http\Request;
|
||||
use Webman\Http\Response;
|
||||
use Webman\MiddlewareInterface;
|
||||
|
||||
class Permission implements MiddlewareInterface
|
||||
{
|
||||
public function process(Request $request, callable $handler): Response
|
||||
{
|
||||
list($class,$function) = Admin::getDispatch();
|
||||
$method = $request->input('_ajax',$request->method());
|
||||
if(!Admin::check($class,$function,$method)){
|
||||
return response(
|
||||
json_encode(['message' => admin_trans('admin.not_access_permission')]),
|
||||
405,
|
||||
['Content-Type' => 'application/json']);
|
||||
}
|
||||
return $handler($request);
|
||||
}
|
||||
}
|
||||
32
addons/webman/middleware/RequestMiddleware.php
Normal file
32
addons/webman/middleware/RequestMiddleware.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace addons\webman\middleware;
|
||||
|
||||
|
||||
use Symfony\Component\HttpFoundation\File\UploadedFile;
|
||||
use Symfony\Component\HttpFoundation\HeaderBag;
|
||||
use Webman\Http\Request;
|
||||
use Webman\Http\Response;
|
||||
use Webman\MiddlewareInterface;
|
||||
|
||||
class RequestMiddleware implements MiddlewareInterface
|
||||
{
|
||||
|
||||
public function process(Request $request, callable $handler): Response
|
||||
{
|
||||
//设置request
|
||||
\ExAdmin\ui\support\Request::init(function (\Symfony\Component\HttpFoundation\Request $q) use($request){
|
||||
$files = [];
|
||||
foreach ($request->file() as $key=>$file){
|
||||
$files[$key] = new UploadedFile($file->getPathname(),$file->getUploadName(),$file->getUploadMineType(),$file->getUploadErrorCode(),true);
|
||||
}
|
||||
$q->initialize($request->get(),$request->all(),[],$request->cookie(),$files,$_SERVER,$request->rawBody());
|
||||
$q->server->set('REQUEST_URI',$request->path());
|
||||
$q->headers = new HeaderBag($request->header());
|
||||
$q->setMethod($request->method());
|
||||
});
|
||||
|
||||
return $handler($request);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user