2011-07-28 5 views
0

Jquery를 사용하여 사용자가 관리자인지 감지하고 사용자가 링크를 클릭하도록 허용하는 방법이 있는지 궁금합니다. admin 사용자의 경우 해당 링크에서 e.preventDeafult()이 활성화되어 있습니다.Drupal jquery 조건부 사용자 작업

그게 가능합니까?

답변

0

JS가 브라우저에서 실행되기 때문에 JS 코드를 항상 수정할 수있는 완벽한 방법은 없습니다. 그러나 여기에는 두 가지 해결책이 있습니다. 첫 번째 파일은 두 번째 파일보다 완전한 증거는 아니지만 훨씬 더 간단합니다. &은 더 나은 사용자 환경을 제공합니다.

  1. 은 PHP 템플릿이 jQuery 코드는 사용자가 관리자인지 확인하기 위해 액세스 할 수 있습니다 (예 : true 또는 false와 같은) 값을 포함하는 숨겨진 DIV 에코 되세요.

  2. 링크를 실제로 AJAX 요청을하십시오. 이렇게하면 요청이 이루어진 URL의 PHP가 결정을 내릴 수 있습니다. 이는, 1) DOM 값 (true 또는 false), 2) 스크립트 자체의 코드 (경우에 당신은 몰랐 :

# 1은 해킹이 개 장소를 제공하기 때문에 해킹하기가 쉽습니다 사용자가 바로 수정할 수 있습니다).

# 2는 두 번째 시나리오 만 제공합니다.

하지만 분명히 더 복잡합니다. 둘 다 해킹 가능하고 사용자는 신뢰할 수있는 사람이므로 (관리자이기 때문에) # 1로 가려고합니다.

저는 실제로이 Drupal 사이트에서 이런 종류의 일을합니다. 결코 보안 문제를 일으킬 수있는 곳에서는 절대 안됩니다 (즉, AJAX 요청을하는 경우 JS가 서버에 uid로 로그인 한 권한을 보내지 않고 대신 PHP에서 global $ user를 사용합니다) 요청을 처리하는 코드).

+0

의견을 보내 주셔서 감사합니다. MEsch 및 maxedison. maxedisons 첫 번째 제안은 구현 한 것입니다. 대신 숨겨진 div를 사용하는 대신 본문에 '로그인 한'클래스가 있는지 확인했습니다. 그런 다음 기본값을 허용하거나 허용하지 않습니다. – sisko

1

AJAX를 사용할 수 있지만 사용자가 자바 스크립트를 사용할 수없는 경우에도 링크 대상으로 이동합니다.

또 다른 접근법은 사용자가 관리자가 아닌 경우 단순히 링크 표시를 억제하는 것입니다.

두 경우 모두 서버 측에서만 사용자의 유효성을 검사하십시오. 악의적 인 사용자에 의해 손상 될 수 있으므로 자바 스크립트 유효성 검사에 의존하지 마십시오.

0

관리자에게 디버깅 메시지 만 표시하는 방법을 찾는 동안이 사실을 발견했습니다. 내가 만든 모든 사이트는 admin 메뉴 모듈을 사용하므로 $ ('body.admin-menu div # admin-menu')가 정의되어 있는지 확인합니다.

사용자를 중요한 페이지로 보내지 않거나 실제로 중요한 메시지를 표시하지 않기 때문에 제대로 작동하고 관리자 메뉴 모듈에서 추가하지 않은 요소를 추가 할 필요가 없습니다.