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 %>