Skip to content

Instantly share code, notes, and snippets.

@mrobers1982
Created June 6, 2012 21:59
Show Gist options
  • Save mrobers1982/2885094 to your computer and use it in GitHub Desktop.
Save mrobers1982/2885094 to your computer and use it in GitHub Desktop.
Backplane/Federate SSO - missing displayName Patch
LF.config.jr_profile_cookie = 'janrainProfile';
LF.modules.Auth.userAuthSuccess = LF.modules.Auth.userAuthSuccess = function(response) {
clearTimeout(LF.Helpers.auth_timeout);
LF.Helpers.auth_timeout=null;
//backward compatibility if response is not wrapped
var result = response.data || response;
LF.Logger.stream('AUTH: Successfully logged the user in, jid is: '+ result.jid);
LF.Logger.log_default("***** LIVEFYRE: USER AUTH SUCCESS:", (typeof(result.jid) == 'undefined' || result.jid.indexOf('anonymous') > -1 ? 'Anonymous' : 'Authed user'));
/*
* For customer using Backplane with Federate SSO, we will need to get the user display name
* from the janrain profile cookie on the initial login as it will not be passed in the
* identity/login message. The display name will be a floating point number, e.g. 0.396338475234
* if we never received from Backplane.
*/
if (typeof Backplane === 'function' && !isNaN(parseFloat(result.display_name))) {
console.log("LIVEFYRE (Backplane): display name not set...obtaining from cookie: " + LF.config.jr_profile_cookie);
var jr_cookie = $jl.cookie(LF.config.jr_profile_cookie);
if (jr_cookie && $jl.parseJSON(jr_cookie)['displayName']) {
result.display_name = $jl.parseJSON(jr_cookie)['displayName'];
console.log("LIVEFYRE (Backplane): using display name: " + result.display_name);
} else {
console.log("LIVEFYRE (Backplane): display name not found");
}
}
//set Fyre user
var user = LF.modules.Auth.setUser(result);
//
LF.data.user = result;
//if the user logged in
if (!user.anon) {
LF.modules.Auth.trouble = false;
$jl('#login_issues').remove();
if (LF.Helpers.isUserSpecial()) {
// Make sure bootstrap wasn't already called with (me)
// If the livefyre_user is not defined, login_init wasn't used, so they weren't pre-logged in
// If the livefyre_user isn't special, only the regular version of boostrap was used, so we need to use the special version
if (typeof(window.livefyre_user) === 'undefined' || window.livefyre_user == null || window.livefyre_user.special) {
LF.Bootstrap.getConversationData();
}
if (typeof(window.livefyre_user) !== 'undefined' && window.livefyre_user != null) {
window.livefyre_user.bootstrap_loaded = false;
}
}
if (LF.modules.Namespace != null) {
LF.modules.Namespace.loaded = false;
}
// toggle like button
$jl('#lf_comments .lf_avatar > a[name="'+user.id+'"]').parent().siblings('.lf_like').html('Unlike');
} else {
LF.modules.Auth.showLoginError();
}
//now add the delete button to all the user's comment
if (user.moderator) {
LF.modules.Auth.setModerator();
} else {
$jl('#lf_fyre_head').find('.lf_logo').removeClass('moderator');
LF._.each(LF._.select(LF.Comments.models, function(e) { return e.get('user').id == user.id; }), function(e) {
if ($jl(e.view.el).find('.lf_mod_options').length == 0) {
$jl(e.view.el).find('.lf_flag').after('<span class="lf_mod_options"><a name="delete">delete</a></span>');
}
});
LF._.each(LF._.select(LF.FacebookComments.models, function(e) { return e.get('user').id == user.id; }), function(e) {
if ($jl(e.view.el).find('.lf_mod_options').length == 0) {
$jl(e.view.el).find('.lf_comment_date').after('<span class="lf_mod_options"><a name="delete">delete</a></span>');
}
});
LF._.each(LF._.select(LF.TwitterComments.models, function(e) { return e.get('user').id == user.id; }), function(e) {
if ($jl(e.view.el).find('.lf_mod_options').length == 0) {
$jl(e.view.el).find('.lf_twitter_reply').after('<span class="lf_mod_options"><a name="delete">delete</a></span>');
}
});
}
LF.modules.Auth.current_jid = user.jid;
LF.stats.pageRenderedAt = result.timestamp;
LF.stats.pageLoadedAt = new Date();
LF.modules.Auth.auth_pending = false;
//unqueue the next (auth required) action in the queue
//if the user is anonymous, clear the spinners
if (user.anon) {
$jl('.lf_post_spinner').hide();
if (!LF.Helpers.hasCustomTemplates()) {
$jl('#livefyre').find('.lf_post').html('Post comment as');
}
$jl('#lf_comment_form > .lf_action_bar > .lf_follow_link').removeClass('following');
//clear the action queue
LF.modules.Auth.cancelAuth();
//if IE, clear cookie
if ($jl.browser.msie) {
$jl.cookie('msie_token_response', null);
}
} else {
//so we authed, so the popup HAS to be closed.. lets make sure the interval is clear
clearTimeout(LF.Helpers.poll_interval);
LF.ActionQueue.unqueue();
if (!LF.Helpers.hasCustomTemplates()) {
$jl('#livefyre').find('.lf_post').html('Post comment');
}
LF.Dispatcher.dispatch('user_logged_in', {display_name: user.display_name});
//if IE, save cookie
if ($jl.browser.msie) {
$jl.cookie('msie_token_response', $jl.JSON.stringify(response));
}
}
//callback
if (typeof(LF.modules.Auth.finish_auth_callback) === 'function') {
LF.modules.Auth.finish_auth_callback();
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment