diff --git a/app/assets/javascripts/discourse/views/modal/login_view.js b/app/assets/javascripts/discourse/views/modal/login_view.js index f6f7232e7c3..1558273159d 100644 --- a/app/assets/javascripts/discourse/views/modal/login_view.js +++ b/app/assets/javascripts/discourse/views/modal/login_view.js @@ -16,6 +16,31 @@ Discourse.LoginView = Discourse.ModalBodyView.extend({ this.set('controller.lastY', e.screenY); }, + initPersona: function(){ + var readyCalled = false; + navigator.id.watch({ + onlogin: function(assertion) { + if (readyCalled) { + Discourse.ajax('/auth/persona/callback', { + type: 'POST', + data: { 'assertion': assertion }, + dataType: 'json' + }).then(function(data) { + Discourse.authenticationComplete(data); + }); + } + }, + onlogout: function() { + if (readyCalled) { + Discourse.logout(); + } + }, + onready: function() { + readyCalled = true; + } + }); + }, + didInsertElement: function(e) { this._super(); @@ -35,6 +60,12 @@ Discourse.LoginView = Discourse.ModalBodyView.extend({ } }); }); + + var view = this; + // load persona if needed + if(Discourse.SiteSettings.enable_persona_logins) { + $LAB.script("https://login.persona.org/include.js").wait(view.initPersona); + } } }); diff --git a/app/views/common/_persona_javascript.html.erb b/app/views/common/_persona_javascript.html.erb deleted file mode 100644 index 56ec0242574..00000000000 --- a/app/views/common/_persona_javascript.html.erb +++ /dev/null @@ -1,29 +0,0 @@ - - diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 753f3420f6e..6ae0584d1d7 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -69,7 +69,6 @@ <%= render :partial => "common/discourse_javascript" %> - <%= render :partial => "common/persona_javascript" if !current_user && SiteSetting.enable_persona_logins %> <%= render_google_analytics_code %>