Use AJAX for submitting Persona credentials.

Fixes issue with needing to unblock popups.
This commit is contained in:
Dan Callahan 2013-03-01 13:22:54 -06:00
parent ef8cf2f734
commit 23d812a4ab
2 changed files with 15 additions and 5 deletions

View File

@ -24,6 +24,11 @@ class Users::OmniauthCallbacksController < ApplicationController
when "persona" when "persona"
create_or_sign_on_user_using_persona(auth_token) create_or_sign_on_user_using_persona(auth_token)
end end
respond_to do |format|
format.html
format.json { render :json => @data }
end
end end
def failure def failure

View File

@ -1,15 +1,20 @@
<script src="https://login.persona.org/include.js"></script> <script src="https://login.persona.org/include.js"></script>
<form id="persona_assertion_form" action="/auth/persona/callback" method="post" target="_blank">
<input type='hidden' name='assertion'/>
</form>
<script> <script>
(function() { (function() {
var readyCalled = false; var readyCalled = false;
navigator.id.watch({ navigator.id.watch({
onlogin: function(assertion) { onlogin: function(assertion) {
if (readyCalled) { if (readyCalled) {
$('#persona_assertion_form input[name=assertion]').val(assertion);
$('#persona_assertion_form').submit(); $.ajax({
type: 'POST',
url: '/auth/persona/callback',
data: { 'assertion': assertion },
success: function(data, textStatus, jqXHR) {
Discourse.authenticationComplete(data);
},
dataType: 'json'
});
} }
}, },
onlogout: function() { onlogout: function() {