2013-11-27 2 views
0

내 레일 앱은 devin/omniauth를 사용하여 링크드 인 자격 증명을 사용하여 사이트에 새 사용자를 등록합니다.devise & omniauth를 사용한 2 단계 등록

제대로 작동하지만 두 번째 단계를 등록 프로세스에 추가하여 새 사용자가 사이트의 사용자 이름과 암호를 선택할 수 있도록하고 싶습니다.

나는 등록 절차를 완료의 new_user_registration_url을 고안 사용자를 리디렉션 시도했다, 그러나 말하는 오류 메시지가 내가 새 사용자를 만들려고하고있다 것처럼 리디렉션을 처리하고, 다시 맞이할 :

이 오류를 저장되는이 사용자를 금지 :

비밀번호

사용자 이름은 비워 둘 수 없습니다 비워 둘 수 없습니다

여기

내 omniauth_callbacks_controller.rb입니다 :

사람이 나는이 두 단계의 등록 절차를 만들기 위해 여기에서 진행할 수있는 방법을 알고 있나요

class OmniauthCallbacksController < Devise::OmniauthCallbacksController 
    def all 
    user = User.from_omniauth(request.env["omniauth.auth"]) 
    if user.encrypted_password.blank? || user.user_name.blank? 
     session["devise.user_attributes"] = user.attributes 
     redirect_to new_user_registration_url, :validate => false 
    else 
     if user.persisted? 
     flash[:success] = "Signed in!" 
     if user.role == "admin" 
      sign_in user 
      redirect_to admin_path 
     else 
      sign_in_and_redirect user 
     end 
     else 
     session["devise.user_attributes"] = user.attributes 
     redirect_to new_user_registration_url 
     end 
    end 
    end 
    alias_method :linkedin, :all 
?

+0

Devise :: RegistrationsController에서 상속 한 RegistrationsController를 만들었습니까? 그게 여기에없는 것 같아요. 그랬다면 질문을 편집하여 그 컨트롤러를 보여주십시오. – Ashitaka

+0

나는하지 않았다. 예제를 볼 수있는 온라인 리소스가 있습니까? – dmanaster

+0

그래. Railscast의 마법의 세계를 소개해 드리겠습니다. ** [OmniAuth Part 2] (http://railscasts.com/episodes/236-omniauth-part-2) **. ** [OmniAuth Part 1] (http://railscasts.com/episodes/235-omniauth-part-1) **을 즐기실 수도 있습니다. 그러나 파트 2는 귀하의 질문과 관련된 것입니다. – Ashitaka

답변

-1

일반적인 방법은 omniauth 콜백 페이지에 사용자 이름과 비밀번호로 양식이있는 페이지를 만드는 것입니다. 이 양식은 실제 사용자를 생성하는 작업에 게시됩니다.

+0

답장을 보내 주셔서 감사합니다.하지만 그게 내가하고 싶은 일이 아닙니다. 사용자 모델에는 이미 사용자 이름이 있으며 암호가 필요없이 이미 작동합니다. 사용자가 자신의 암호를 선택할 수있는 등록 프로세스를 만들려고합니다. – dmanaster

+0

답을 업데이트했습니다. 희망이 도움이됩니다. – davidfurber