관리자 외의 역할에 kboard 관리자 권한을 부여하고 싶습니다.

안녕하세요?

우커머스에 연동해서 사용중입니다. Shop Manager 란 역할이 있어서, 이 역할로도 관리자처럼 kboard 관리를 할수 있게 하고 싶습니다.

kboard_class.php 를 수정하고 싶은데 어떻게 하면 될까요?

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • /kboard/class/KBoard.class.php 파일에 isAdmin() 메소드가 있습니다.

    if(@in_array('administrator', $this->userdata->roles) || @in_array('editor', $this->userdata->roles)){
                    // 최고관리자 허용
                    return true;
    }

    이쪽 부분에 role 을 추가해주시는게 좋겠습니다.

  • 아래와 같이 했는데 반응이 없는데 한 번 봐주시겠어요?

     

    public function isAdmin(){
            $admin_user = array_map(create_function('$string', 'return trim($string);'), explode(',', $this->admin_user));
            
            if($this->userdata->data->ID){
                if(@in_array('administrator', $this->userdata->roles) || @in_array('shop manager', $this->userdata->roles)){
                    // 최고관리자 허용
                    return true;
                }
                
                else if(@in_array('shop manager', $this->userdata->roles)){
                    // 샵매니저 허용
                    return true;
                }
                
                
                else if(@in_array($this->userdata->data->user_login, $admin_user)){
                    // 선택된 관리자 권한일때, 사용자명과 선택된관리자와 비교후, 일치하면 허용
                    return true;
                }
            }
            else{
                return false;
            }
        }

  • shop manager 라는 role이 등록되어 있나요?

    정확히 shop manager 라는게 있다면 동작될겁니다.

     

  • DB에 등록된대로 shop_manager로 했는데 여전히 안됩니다 ㅜㅜ

    어떻게 하면 될까요?

        /**
         * 관리자인지 확인한다.
         * @return boolean
         */
        public function isAdmin(){
            $admin_user = array_map(create_function('$string', 'return trim($string);'), explode(',', $this->admin_user));
            
            if($this->userdata->data->ID){
                if(@in_array('administrator', $this->userdata->roles) || @in_array('editor', $this->userdata->roles)){
                    // 최고관리자 허용
                    return true;
                }
                
                else if(@in_array('shop_manager', $this->userdata->roles)){
                    // 샵매니저 허용
                    return true;
                }
                
                
                else if(@in_array($this->userdata->data->user_login, $admin_user)){
                    // 선택된 관리자 권한일때, 사용자명과 선택된관리자와 비교후, 일치하면 허용
                    return true;
                }
            }
            else{
                return false;
            }
        }

  • 다시 확인해보니, 기본 관리자말고는 어떤 역할을 집어넣어도 안됩니다.

    editor 도 안되고 모든 역할이 안되는데 확인 부탁드립니다.

  • else if(@in_array('shop_manager', $this->userdata->roles)){
                    // 샵매니저 허용
                    return true;
    }

    위 코드 대신 아래코드를 추가하면 로그인된 모든 사용자가 관리자 게시글을 관리할 수 있게됩니다.

    else if(1){
                    return true;
    }

    무슨말이냐 하면.. 이쪽에 role을 추가하거나 프로그램 수정을 해서 true 값을 return 해주면 관리자로 인식을 하게됩니다.

     

     

    아래 코드를 추가해서 실제로 어떤값이 있는지도 확인해보세요.

    print_r($this->userdata->roles);
    exit;

     

     

    editor는 이미 아래처럼 추가되어 있습니다.

    if(@in_array('administrator', $this->userdata->roles) || @in_array('editor', $this->userdata->roles)){
                    // 최고관리자 허용
                    return true;
    }

  •  

    안녕하세요? 아래처럼 해봤는데 여전히 관리자를 제외한 어떤 사용자도 안됩니다. ㅜㅜ

    그리고 print 코드는 어떻게 추가하면 될지 몰라서 못해봤습니다.

    하도 답답해서 관리자 외에 플러그인 설치 권한을 준 다른 사용자가 플러그인 화면에서 게시판 추가 메뉴로 들어가면 이 페이지에 접근할 권한이 없습니다. 라고 합니다.

    확인부탁드립니다.

    /**
         * 관리자인지 확인한다.
         * @return boolean
         */
        public function isAdmin(){
            $admin_user = array_map(create_function('$string', 'return trim($string);'), explode(',', $this->admin_user));
            
            if($this->userdata->data->ID){
                if(@in_array('administrator', $this->userdata->roles) || @in_array('shop_manager', $this->userdata->roles)){
                    // 최고관리자 허용
                    return true;
                }
                
                else if(1){
                    return true;
                }
                
                
                else if(@in_array($this->userdata->data->user_login, $admin_user)){
                    // 선택된 관리자 권한일때, 사용자명과 선택된관리자와 비교후, 일치하면 허용
                    return true;
                }
            }
            else{
                return false;
            }
        }

  • 관리자 페이지에서 KBoard를 관리하시려는건가요??

    그럼 게시글 관리 부분을 수정하는게 아닙니다;;;

    index.php 파일에서 kboard_settings_menu() 함수에보시면 메뉴 추가하는 함수들이 있습니다.

    add_menu_page()
    add_submenu_page()

    이 함수들에도 권한을 변경해주셔야 합니다.

    또 kboard_update() 함수 쪽에도 아래와같이 Capability를 체크하고 있습니다.

    if(!current_user_can('activate_plugins')) wp_die('KBoard : 관리 권한이 없습니다.');

    한부분 수정해서는 어렵겠습니다.

    여러 부분을 수정하고 해당 사용자에게 Capability도 추가해주셔야 합니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기