BusinessLogin.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Name: 芸众商城系统
  5. * Author: 广州市芸众信息科技有限公司
  6. * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
  7. * Date: 2021/9/22
  8. * Time: 13:37
  9. */
  10. namespace business\middleware;
  11. use app\common\traits\JsonTrait;
  12. use business\common\services\BusinessService;
  13. use business\common\services\SettingService;
  14. use Closure;
  15. class BusinessLogin
  16. {
  17. use JsonTrait;
  18. public function handle($request, Closure $next)
  19. {
  20. $uid = \YunShop::app()->getMemberId();
  21. if (!$business_id = SettingService::getBusinessId()) {
  22. return $this->errorJson(BusinessService::BUSINESS_LIST_MSG, BusinessService::getBusinessListReturn());
  23. }
  24. if (!\business\common\models\Business::uniacid()->where('status', 1)->find($business_id)) {
  25. return $this->errorJson(BusinessService::BUSINESS_LIST_MSG, BusinessService::getBusinessListReturn());
  26. }
  27. $business_auth = BusinessService::checkBusinessRight($business_id, $uid);
  28. if ($business_auth['identity'] < 1) {
  29. return $this->errorJson(BusinessService::BUSINESS_LIST_MSG, BusinessService::getBusinessListReturn());
  30. }
  31. $all_right = $business_auth['identity'] > 1; //判断是否法人人、创始人、管理员
  32. if (!$this->checkRoute($business_auth['route'], $all_right)) {
  33. return $this->errorJson('Sorry,您没有操作权限');
  34. }
  35. return $next($request);
  36. }
  37. public function checkRoute($route_arr = [], $all_right = false)
  38. {
  39. $route = request()->path();
  40. $route = explode('/', $route);
  41. $true_route = '';
  42. $module = $route[2];
  43. if ($module == 'plugin') {
  44. // $module = $route[3];
  45. $module = ucfirst(\Illuminate\Support\Str::camel($route[3]));
  46. foreach ($route as $k => $v) {
  47. if (in_array($k, [0, 1, 2])) continue;
  48. if ($v === null || $v === '' || $v === false) continue;
  49. $true_route .= '/' . $v;
  50. }
  51. } else {
  52. foreach ($route as $k => $v) {
  53. if (in_array($k, [0, 1, 2])) continue;
  54. if ($v === null || $v === '' || $v === false) continue;
  55. $true_route .= '/' . $v;
  56. }
  57. }
  58. if (substr($true_route, 0, 1) == '/') $true_route = substr($true_route, 1);;
  59. if (!$route_arr[$module]) {
  60. return false;
  61. }
  62. foreach ($route_arr[$module] as $v) {
  63. if ($v['route'] == $true_route && ($v['can'] || $all_right)) {
  64. return true;
  65. }
  66. }
  67. return false;
  68. }
  69. }