| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- <?php
- /**
- * Created by PhpStorm.
- * User: dingran
- * Date: 2019/2/19
- * Time: 下午5:08
- */
- namespace app\common\middleware;
- use app\common\services\Utils;
- use app\common\traits\JsonTrait;
- use app\platform\modules\application\models\AppUser;
- use Closure;
- use Illuminate\Support\Facades\Auth;
- class AuthenticateAdmin
- {
- use JsonTrait;
- /**
- * 公众号状态
- *
- */
- const UNIACID_STATUS = -1;
- /**
- * 用户状态
- *
- */
- const USER_STATUS = -2;
- /**
- * API访问状态
- *
- */
- const API_STATUS = -3;
- /**
- * 公共接口
- *
- * @var array
- */
- protected $except = [
- 'admin/index',
- ];
- /**
- * 非管理员有效访问接口
- *
- * @var array
- */
- protected $authApi = [
- 'admin/index',
- 'admin/shop',
- 'admin/application',
- 'admin/application/recycle',
- 'admin/appuser',
- 'admin/appuser/add',
- 'admin/appuser/delete',
- 'admin/appuser/checkname',
- 'admin/all/upload',
- 'admin/application/getApp',
- 'admin/application/delete/{id}',
- 'admin/application/add',
- 'admin/application/checkAddRole',
- 'admin/application/update/{id}',
- 'admin/application/switchStatus/{id}',
- 'admin/application/setTop/{id}',
- 'admin/all/list',
- 'admin/all/delImg',
- 'admin/user/modify_user',
- 'admin/user/send_code',
- 'admin/user/send_new_code',
- 'admin/user/user_change',
- 'admin/user/modify_mobile',
- 'admin/clear',
- 'admin/application/getMessage'
- ];
- /**
- * 访问用户
- *
- * @var null
- */
- private $account = null;
- /**
- * 公众号
- *
- * @var int
- */
- private $uniacid = 0;
- /**
- * 用户角色
- *
- * @var array
- */
- private $role = ['role' => '', 'isfounder' => false];
- /**
- * Handle an incoming request.
- *
- * @param $request
- * @param Closure $next
- *
- * @return mixed
- */
- public function handle($request, Closure $next)
- {
- global $_W;
- $check = $this->checkUserInfo();
- $uri = \Route::getCurrentRoute()->Uri();
- $uniacid = \YunShop::app()->uniacid;
- \YunShop::app()->uid = \Auth::guard('admin')->user()->uid;
- \YunShop::app()->username = \Auth::guard('admin')->user()->username;
- $_W['uid'] = \Auth::guard('admin')->user()->uid;
- $_W['username'] = \Auth::guard('admin')->user()->username;
- if (!$check['result']) {
- return $this->errorJson($check['msg'], ['status' => self::USER_STATUS]);
- }
- if (\Auth::guard('admin')->user()->uid == 1) {
- \YunShop::app()->role = 'founder';
- \YunShop::app()->isfounder = true;
- $this->role = ['role' => 'founder', 'isfounder' => true];
- } else {
- if (!in_array($uri, $this->authApi)) {
- return $this->errorJson('无访问权限', ['status' => self::API_STATUS]);
- }
- if (!empty($uniacid)) {
- $this->uniacid = $uniacid;
- $this->account = AppUser::getAccount(\Auth::guard('admin')->user()->uid, $uniacid);
- if (!is_null($this->account)) {
- $this->setRole();
- } else {
- $this->relogin();
- }
- }
- }
- return $next($request);
- }
- /**
- * 获取用户身份
- *
- * @return array
- */
- private function setRole()
- {
- if (\Auth::guard('admin')->user()->uid === 1) {
- \YunShop::app()->role = 'founder';
- \YunShop::app()->isfounder = true;
- $this->role = ['role' => 'founder', 'isfounder' => true];
- } else {
- \YunShop::app()->role = $this->account->role;
- \YunShop::app()->isfounder = false;
- $this->role = ['role' => $this->account->role, 'isfounder' => false];
- }
- }
- /**
- * 验证访问权限
- *
- * @return \Illuminate\Http\JsonResponse
- */
- private function relogin()
- {
- \Auth::guard('admin')->logout();
- request()->session()->flush();
- request()->session()->regenerate();
- Utils::removeUniacid();
- return $this->errorJson('用户不存在,请重新登录', ['login_status' => 1, 'login_url' => '/#/login']);
- }
- /**
- * 检测用户信息
- *
- * @return array
- */
- private function checkUserInfo()
- {
- $user = \Auth::guard('admin')->user();
- $result = 1;
- if ($user->status == 3) {
- $result = 0;
- $msg = '您已被禁用,请联系管理员';
- }
- if ($user->endtime != 0 && $user->endtime <= time()) {
- $result = 0;
- $msg = '您的账号已过期,请联系管理员';
- }
- return [
- 'result' => $result,
- 'msg' => $msg
- ];
- }
- /**
- * 获取错误信息
- *
- * @return mixed
- */
- private function errorMsg()
- {
- if (\Cache::has('app.access')) {
- $msg = \Cache::get('app.access');
- \Cache::forget('app.access');
- Utils::removeUniacid();
- return $msg;
- }
- }
- }
|