2012-02-22 3 views
0

locomotivecms (github)에 간단한 기능을 추가하려고합니다. 매우 간단한 기능 : 로그인 후 다른 페이지를 편집하려고하는 경우에도 현재 사용자는 "기본 관리 허브"(/ admin /)로 리디렉션됩니다. 대신 로그인 한 후 해당 페이지로 이동하게하십시오.Devise + LocomotiveCMS - 로그인을 요청하기 전에 방문한 페이지를 기억하십시오.

추가하는 것은 매우 간단하고 합리적인 것으로 보이지만 2 일 후에 내가 도움을 청하기로 결정했습니다.

이것은 내가 지금까지 알아 낸 것입니다.

  • 기관차는 간단한 "사용자"스키마를 사용하지 않는

    • 는이 응용 프로그램은 액티브를 사용하지 않지만 Mongoid은 (백엔드 DB는 MongoDB를)입니다. 인증은 "계정"(전자 메일, 암호, 이름 등)과 "사이트"(다중 사이트 CMS)의 두 부분으로 나뉩니다. "사이트"에는 "회원"이 많이 있습니다. 회원은 하나의 site_id와 account_id를 가지고 있습니다 (또한 역할은 중요하지만 중요하지 않습니다).
    • 기관차의 "행동"의 대부분은 /admin/ 경로 뒤에 있습니다. 예를 들어 로그인 경로는 /admin/log_in입니다. 대부분의 컨트롤러는 /admin/ 하위 폴더 안에 있습니다.
    • /admin/sessions_controllerthis bit이 발견되어 /admin/ 루트에 로그인 한 후 방문한 URL을 분명히 "고칩니다". A에 대한

      내가 제대로 고안의 설명서를 이해 한 경우
      def after_sign_in_path_for(resource) 
          stored_location_for(resource) || admin_pages_url 
      end 
      

      , stored_location_for 검색 :

      def after_sign_in_path_for(resource) 
          admin_pages_url 
      end 
      

      나는 내가 필요로하는 대신이 것을 거의 확신 :

    여기에 관련 비트입니다 세션의 가치 (기관차의 경우 session['admin_return_to'])를 "누군가 어딘가에 돌아가고 싶어하는지 확인"하십시오. 비어 있으면 || 관리자 루트에 대한 안전한 경로를 보장합니다.

    불행히도 이것은 작동하지 않습니다. 그것은 내가 필요한 세션 변수가 설정되지 않는 것 같습니다. 나는 Devise가 이런 종류의 것을 자동으로했다고 가정하고있었습니다.

    세션 값을 직접 설정해야합니까? 그렇다면 어디에서? 또는 내 가정이 틀렸는가?

    고맙습니다.

  • 답변

    0

    최상의 솔루션은 LocomotiveCMS의 최신 버전으로 업데이트하는 것입니다.