간단히 말씀드리겠습니다:
액세스 제어 관련 코딩 시, 일반적으로 이러한 RBAC 체크는 서버 측에서 수행해야 합니다.
클라이언트 측 JavaScript에 있는 RBAC 코드는 클라이언트에 의해 조작될 수 있습니다.
즉, 스태프, 관리자, 모더레이터의 핵심 RBAC 권한을 정의할 때, (일반적으로) JavaScript가 아닌 Rails에서 이를 수행해야 합니다.
참고로, Discourse도 현재 RBAC를 이 방식으로 처리하고 있습니다. Discourse가 "guardian"이라고 부르는, class Guardian이라는 Ruby 클래스를 사용하는데, 해당 코드는 여기에서 확인할 수 있습니다:
개발자가 Discourse API를 호출하여 JavaScript 코드에 RBAC 체크를 추가하려 할 경우, 브라우저에서 실행되는 코드는 조작될 수 있으므로 이 코드가 손상될 수 있다는 점을 명심해야 합니다.
제 추천 사항은 모든 핵심 RBAC 코드가 서버 측에서 수행되도록 하고, 클라이언트 측 JavaScript로 이를 단축하지 않는 것입니다.