/** * User 가 권한이 있는 등급인지 판별 * * @param UserInterface $user user instance * @param string $criterion user rating keyword * @return bool */ protected function ratingInspect(UserInterface $user, $criterion) { if (Rating::compare($this->userRating($user), $criterion) == -1) { return false; } return true; }
/** * @expectedException \Xpressengine\User\Exceptions\UnknownCriterionException */ public function testCampareThrowException() { Rating::compare(Rating::MEMBER, 'foo'); }
/** * show user editing page * * @param $id * * @return \Xpressengine\Presenter\RendererInterface */ public function edit($id) { $user = $this->handler->users()->with('groups', 'emails', 'accounts')->find($id); if ($user === null) { $e = new InvalidArgumentHttpException(); $e->setMessage('존재하지 않는 회원입니다.'); throw $e; } $ratings = Rating::getUsableAll(); $ratingNames = ['member' => xe_trans('xe::memberRatingNormal'), 'manager' => xe_trans('xe::memberRatingManager'), 'super' => xe_trans('xe::memberRatingAdministrator')]; foreach ($ratings as $key => $rating) { $ratings[$key] = ['value' => $rating, 'text' => $ratingNames[$rating]]; if ($rating === $user->rating) { $ratings[$key]['selected'] = 'selected'; } } $groupList = $this->handler->groups()->all(); $groups = $this->getGroupInfo($groupList); foreach ($user->groups as $group) { $groups[$group->id]['checked'] = 'checked'; } $status = [\XeUser::STATUS_ACTIVATED => ['value' => \XeUser::STATUS_ACTIVATED, 'text' => xe_trans('xe::permitted')], \XeUser::STATUS_DENIED => ['value' => \XeUser::STATUS_DENIED, 'text' => xe_trans('xe::rejected')]]; $status[$user->status]['selected'] = 'selected'; // profileImage config $profileImgSize = config('xe.user.profileImage.size'); // dynamic field $dynamicField = app('xe.dynamicField'); $fieldTypes = $dynamicField->gets('user'); $defaultAccount = null; if (isset($user->accounts)) { foreach ($user->accounts as $account) { if ($account->provider === \XeUser::PROVIDER_DEFAULT) { $defaultAccount = $account; } } } return XePresenter::make('member.settings.member.edit', compact('user', 'ratings', 'groups', 'status', 'defaultAccount', 'fieldTypes', 'profileImgSize')); }
/** * getGrant * * @param $user * * @return array */ protected function getGrant($user) { $logged = Auth::user(); $grant = ['modify' => false, 'manage' => false]; if ($logged->getId() === $user->getId()) { $grant['modify'] = true; } if (Rating::compare($logged->getRating(), Rating::MANAGER) >= 0) { $grant['manage'] = true; $grant['modify'] = true; return $grant; } return $grant; }
/** * Finds whether user has manager or super rating. * * @return boolean */ public function isManager() { return Rating::compare($this->getRating(), Rating::MANAGER) >= 0; }