/**
  * action 의 permission 설정 반환
  *
  * @param string $instanceId instance identifier
  * @return array
  */
 public function getPerms($instanceId)
 {
     $registered = $this->get($instanceId)->getRegistered();
     $perms = [];
     foreach ($this->actions as $action) {
         $pureGrant = $registered->pure($action);
         $mode = $pureGrant === null ? "inherit" : "manual";
         $perms[] = ['mode' => $mode, 'title' => $action, 'grant' => $this->getGrant($registered, $action), 'groups' => $this->assignor->all()];
     }
     return $perms;
 }
 public function edit($id)
 {
     $member = $this->members->find($id, ['groups', 'mails', 'accounts']);
     if ($member === null) {
         $e = new InvalidArgumentHttpException();
         $e->setMessage('존재하지 않는 회원입니다.');
         throw $e;
     }
     $ratings = Rating::getUsableAll();
     $ratingNames = ['member' => '일반', 'manager' => '관리자', 'super' => '최고관리자'];
     foreach ($ratings as $key => $rating) {
         $ratings[$key] = ['value' => $rating, 'text' => $ratingNames[$rating]];
         if ($rating === $member->rating) {
             $ratings[$key]['selected'] = 'selected';
         }
     }
     $groupEntities = $this->groups->all();
     $groups = [];
     $joinedGroups = array_pluck($member->groups ?: [], 'id');
     foreach ($groupEntities as $key => $group) {
         $groups[$key] = ['value' => $group->id, 'text' => $group->name];
         if (in_array($group->id, $joinedGroups)) {
             $groups[$key]['checked'] = 'checked';
         }
     }
     $status = [Member::STATUS_ACTIVATED => ['value' => Member::STATUS_ACTIVATED, 'text' => '승인됨'], Member::STATUS_DENIED => ['value' => Member::STATUS_DENIED, 'text' => '거부됨']];
     $status[$member->status]['selected'] = 'selected';
     // profileImage config
     $profileImgSize = config('xe.member.profileImage.size');
     // dynamic field
     $dynamicField = app('xe.dynamicField');
     $fieldTypes = $dynamicField->gets('member');
     $defaultAccount = null;
     if (isset($member->accounts)) {
         foreach ($member->accounts as $account) {
             if ($account->provider === Member::PROVIDER_DEFAULT) {
                 $defaultAccount = $account;
             }
         }
     }
     return Presenter::make('member.settings.member.edit', compact('member', 'ratings', 'groups', 'status', 'defaultAccount', 'fieldTypes', 'profileImgSize'));
 }
 /**
  * searchGroup
  *
  * @param GroupRepositoryInterface $groupRepo
  * @param null                     $keyword
  *
  * @return \Xpressengine\Presenter\RendererInterface
  */
 public function searchGroup(GroupRepositoryInterface $groupRepo, $keyword = null)
 {
     if ($keyword === null) {
         return Presenter::makeApi($groupRepo->all());
     }
     $matchedGroupList = $groupRepo->search(['name' => $keyword])->items();
     return Presenter::makeApi($matchedGroupList);
 }