admin/app/frontend/modules/member/services/MemberLevelAuth.php

57 lines
1.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\frontend\modules\member\services;
use app\framework\Support\Facades\Log;
use app\frontend\modules\member\models\MemberModel;
use app\frontend\modules\member\models\MemberLevel;
class MemberLevelAuth
{
public $model = null;
public function __construct()
{
$this->model = new MemberModel();
}
//在这里做验证权限
public function doAuth($id, $allow_auth)
{
try {
if (!is_array($allow_auth)) {
$allow_auth = json_decode($allow_auth, true);
}
//如果用户没有设置权限则返回的checkitem数组为空则所有用户皆可以访问
if (!$allow_auth) {
return true;
}
// 判断等级是否存在
$is_exsit = MemberLevel::uniacid()->whereIn('id',$allow_auth)->pluck('id');
if(!$is_exsit) return true;
$result = $this->model->getUserInfoByUid($id);
//如果找不到当前会员信息则返回false无法访问
if (!$result) {
return false;
}
$result = $result->toArray();
$member_level = $result['yz_member']['level_id'];
//如果checkitem数组中包含all则证明后台设置了全部等级可以访问
if (in_array("all", $allow_auth, true)) {
return true;
}
//如果用户等级在checkitem数组中则可以访问
if (in_array($member_level, $allow_auth)) {
return true;
}
return false;
} catch (\Exception $e) {
\Log::info($e->getMessage());
return false;
}
}
}