포럼
카페XE 에서 관리자 권한 문제에 대해서...
2015.09.06 14:08
업데이트된 후? 인것 같네요...
카페 관리자가 관리페이지에서 메뉴 수정 클릭하면, 'You are not logged in as an administrator' 라는 메세지가 출력됩니다.
확인해 본 결과...
jQuery.exec_json('homepage.getHomepageMenuTplInfo', params, function(data) 실행과정에서 오류가 출력되네요.
모듈에서는 $grant->manager 가 true 로 되어 있으나, exec_json() 함수가 실행되면서 $grant->manager 에 값이 없어지네요.
액션 권한을 member 로 하면 오류없이 잘 출력됩니다. 카페 모듈의 문제가 아니라 코어의 문제인것 같은데요...
업데이트 전에는 잘 되었던것 같은데....
@BNU 님 점검 부탁드립니다.
몇가지 점검해 보았는데요. 업데이트된 후의 문제같지는 않고, 업데이트 전에도 계속 있던 문제인것 같습니다.
댓글 9
-
YJSoft
2015.09.06 14:41
-
배워서남준다
2015.09.06 14:47
비슷한 내용으로 지난 8월 7일 @ivyfory 님이 이슈를 올렸어도 아무런 응답이 없네요.
https://github.com/xpressengine/xe-core/issues/1697
함께 고민하며 풀어가야 할 숙제인듯 해서 올렸습니다....
아래는 또 다른 하나의 이슈이고요...
https://github.com/xpressengine/xe-module-cafe/issues/7
-
배워서남준다
2015.09.07 21:43
modules/module/module.model.php 에서
2000 - 2010 번째 라인에 $module_srl 이 없을때 조건문에서
if($this->isSiteAdmin(...)) 조건에서 사이트 관리자인 경우, $grant->manager 에 true 가 되었는데,
바로 아래 구문에서 최고관리자가 아닌경우일때, 사이트관리자인 경우에 $grant->manager 가 다시 false 로 바뀝니다.
$grant->is_admin = $grant->manager = ($member_info->is_admin == 'Y') ? true : false;
최고관리자인경우에만 $grant->manager 에 true 가 들어가야 할것 같네요.
그래서 최고관리자 조건문을 사이트관리자 체크 구문 위로 올리면 오류가 해결됩니다.
$grant->is_admin = $grant->manager = ($member_info->is_admin == 'Y') ? true : false;
if($this->isSiteAdmin($member_info, $module_info->site_srl))
{
$grant->access = $grant->manager = $grant->is_site_admin = true;
} -
직진회로
2015.10.01 15:17
이대로 해봤는데도 안되네요 ㅠ....
-
배워서남준다
2015.10.09 21:23
https://www.xpressengine.com/index.php?mid=forum&page=2&document_srl=23074499
이 부분도 함께 수정해 보세요.
저는 이렇게 수정한 뒤로 특별한 문제없이 가상사이트 잘 사용하고 있습니다만...
참고로, 가상사이트인 경우 멤버 그룹 리스트가 루트의 그룹 리스트로 출력되지 않고, 가상 사이트 그룹 정보로 출력됩니다.
그래서 경우에 따라서 그룹에 속해 있지 않아서 예상하지 않은 결과가 나올수 있습니다.
가상사이트가 아닌 일반 그룹의 권한을 가상 사이트에 적용하려면 적절한 곳에 아래 코드 추가해서 멤버 정보를 재설정 해야합니다.
if(!$member_info) $member_info = Context::get('logged_info');
$oMemberModel = getModel('member');
$member_info->group_list = $oMemberModel->getMemberGroups($member_info->member_srl, 0); -
배워서남준다
2015.10.10 00:01
가상사이트에서 위젯 추가시 모듈 선택창에 전체 메뉴가 아닌, 가상사이트 메뉴 모듈만 출력되게 하려면 아래와 같이 수정하면 됩니다.
./modules/admin/tpl/js/admin.js 를 다음과 같이 수정하면 됩니다. 참고로 xe는 기본으로 admin.min.js 파일을 로드하기때문에 admin.min.js 파일도 함께 수정하던가, 이름을 변경해서 admin.min.js 가 로드 안되게 해야합니다.
1. 2040번째쯤 라인에 아래 구문을 추가합니다. 주소창에 vid 가 있는지 체크하고, vid 주소(도메인) 값을 사용하기 위한 구문입니다.
var WGparams={};window.location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(str,key,value){WGparams[key] = value;});
2. 2157번째쯤 라인을 아래와 같이 수정합니다. vid 가 있는경우, 즉 가상사이트인 경우 site_srl 의 값은 전달하지 않습니다. site_srl 의 값을 전달하지 않으면 메뉴 추출시 가상 사이트 메뉴만 출력합니다.
if(WGparams.vid) var params = { menu_srl : 0 };
else var params = { menu_srl : 0, site_srl : site_srl_param };3. 2372번째쯤 라인의 for 구문 사이를 아래와 같이 수정합니다. 가상사이트인 경우 사이트 셀렉트 옵션 항목에 가상사이트 도메인만 출력되게 합니다. 가상 사이트가 아닌 경우는 처음처럼 모든 도메인 주소가 출력됩니다.
if(WGparams.vid) {
if(WGparams.vid == aSiteList[i].domain) $SiteSelector.append($("<option>").val(aSiteList[i].site_srl).html(aSiteList[i].domain));
} else $SiteSelector.append($("<option>").val(aSiteList[i].site_srl).html(aSiteList[i].domain));
수정한 파일 첨부합니다.
-
이온디
2015.10.11 01:39
이제 이거 관리하는 사람도 없는데 배워서남준다님이 배포 권한 넘겨받아서 관리하심이 어떨런지요 ^^;
-
배워서남준다
2015.10.13 18:52
글쎄요... 그럴까하고 생각도 해보았지만... 제 실력이 미천해서...
그거 보다는 저는 최대한 쉽고 편하게 홈페이지 만들수 있도록 하는것이 목적이라서 카페XE가 그런 부분에 좋은 기능들이 많아서 연구하고 있습니다.
사실 제가 원하는 기능들은 거의 다 구현을 다 했고요. 아무래도 호스팅사를 이용하기엔 용량이나 트래픽때문에 유지비용이 만만치 않아서 나스를 통해 서비스 해야할것 같은데... 그럴려면 나스에 회원정보 연동시켜야 해서 관련 모듈 제작중에 있습니다.
외국 사이트에 html5 템플릿 싸고 좋은거 많아서 XE로 편집해서 활용할 계획입니다. 이 부분도 어느 정도 마무린 되었고요.
혹시 나중에 배포해도 될만큼 완성되서 모두에게 유익이 된다면 그때 고려해 보겠습니다. ^^
-
이온디
2015.10.15 17:59
배워서남준다님께서 작업하시는 건 전부 다 유용하죠 ㅎㅎ 사용자들은 꼭 필요할 걸요 ㅎ
좋은 건 당장이 아니더라도 언제라도 필요로 하니깐요 ㅎㅎ
https://www.xpressengine.com/forum/22427114
XE 이슈 등록은 Github 프로젝트를 이용해주세요.