MemberLevelAuth.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace app\frontend\modules\member\services;
  3. use app\framework\Support\Facades\Log;
  4. use app\frontend\modules\member\models\MemberModel;
  5. use app\frontend\modules\member\models\MemberLevel;
  6. class MemberLevelAuth
  7. {
  8. public $model = null;
  9. public function __construct()
  10. {
  11. $this->model = new MemberModel();
  12. }
  13. //在这里做验证权限
  14. public function doAuth($id, $allow_auth)
  15. {
  16. try {
  17. if (!is_array($allow_auth)) {
  18. $allow_auth = json_decode($allow_auth, true);
  19. }
  20. //如果用户没有设置权限则返回的checkitem数组为空,则所有用户皆可以访问
  21. if (!$allow_auth) {
  22. return true;
  23. }
  24. // 判断等级是否存在
  25. $is_exsit = MemberLevel::uniacid()->whereIn('id',$allow_auth)->pluck('id');
  26. if(!$is_exsit) return true;
  27. $result = $this->model->getUserInfoByUid($id);
  28. //如果找不到当前会员信息则返回false,无法访问
  29. if (!$result) {
  30. return false;
  31. }
  32. $result = $result->toArray();
  33. $member_level = $result['yz_member']['level_id'];
  34. //如果checkitem数组中包含all,则证明后台设置了全部等级可以访问
  35. if (in_array("all", $allow_auth, true)) {
  36. return true;
  37. }
  38. //如果用户等级在checkitem数组中则可以访问
  39. if (in_array($member_level, $allow_auth)) {
  40. return true;
  41. }
  42. return false;
  43. } catch (\Exception $e) {
  44. \Log::info($e->getMessage());
  45. return false;
  46. }
  47. }
  48. }