묻고답하기
권한을 임시적으로 부여할 수 없을까요?
2014.10.17 10:31
하나의 admin act를 특정 그룹에게 보여주고 싶은데 쉽게 되지 않네요.
모듈 관리자 등록을 안 하고 애드온이나 트리거를 통해서만 권한을 부여하고 싶습니다.
$logged_info->is_admin =='Y'; 으로 해보려고 했는데
이건 Context::set('logged_info', $logged_info) 를 해도 동작을 하지 않네요.
댓글 8
-
sejin7940
2014.10.17 10:49
-
Lansi
2014.10.17 10:58
$logged_info를 직접 수정할 수는 없을까요?
-
sejin7940
2014.10.17 11:07
모든 module 이 실행될때마다, module class 에서 각 모듈별로 권한 체크를 하게 되고
Admin 이 포함된 act 는 manager 권한이 없으면 무조건 거절되거든요
$logged_info 쪽에 is_admin 을 강제권한 주면 특정act 가 아니라 모든 act 가 다 공개가 될거예요
$logged_info 에 act 별 정보를 내장하는건 아니거든요. 최고관리자인지 여부만 저장될뿐..
-
Lansi
2014.10.17 11:13
어드빈 뷰를 일반 뷰로 옮겨야 겠네요...
답변 감사합니다!
-
SeungXE
2014.10.17 11:13
$logged_info를 건드리는건 너무 위험하다고 생각됩니다.
차라리 그냥 모듈을 수정하시는 것이 낫지 않을까요?
-
Lansi
2014.10.17 11:14
그냥 act를 일반 view로 옮기려구요
그 act에서만 따로 권한 체크를 해야할 듯 하네요
-
SeungXE
2014.10.17 11:18
좀 손이 많이 가지만 저라면 만약 그렇게 일부 admin act를 admin 권한 없이 주기 위해
위젯을 주로 사용합니다. 확장성이 뛰어나서요.
위젯 -> ajax을 통한 요청 -> 별도 쿼리로 변경.
저같은 경우 cafe xe나 게시판 관리자가 포인트 설정 등을 변경하지 못하게 하기 위해 전용 관리자 페이지를 따로 위젯 페이지로 구성했어요.
-
Lansi
2014.10.17 11:21
좀 번거로워지겠네요
전 최대한 모듈 내에서 끝내려고 하고
딱 그 하나만 이렇게 하면 돼서요
일반적인 act 라면 해당 모듈에서 제한이 없으면 다 접근이 가능합니다
문제는 Admin act 는 제한이 막혀있을거예요
이건 풀려면 Core의 modulehandler 와 moduleobject 쪽을 건드셔야할거예요.