Changeset 26604
- Timestamp:
- Jan 10, 2014, 9:51:32 PM (10 years ago)
- Location:
- extensions/oAuth
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/oAuth/admin/providers.php
r26556 r26604 8 8 if (isset($_POST['save_config'])) 9 9 { 10 $providers = array(); 10 $providers = array(); $count_enabled = 0; 11 11 foreach ($_POST['providers'] as $id => $data) 12 12 { 13 13 $data['enabled'] = $data['enabled']=='true'; 14 if ($data['enabled']) $count_enabled++; 14 15 15 16 if ($PROVIDERS_CONFIG[$id]['new_app_link'] and $data['enabled']) … … 21 22 $page['errors'][] = l10n('%s: invalid keys', $PROVIDERS_CONFIG[$id]['provider_name']); 22 23 } 23 }24 25 if ( ($id=='Wordpress' or $id=='Flickr' or $id=='Steam') and $data['enabled'] and !@$providers['OpenID']['enabled'] ) // in the template, OpenID must be before other OpenID based providers26 {27 $page['errors'][] = l10n('OpenID must be enabled in order to use %s authentication', $id);28 24 } 29 25 … … 43 39 44 40 $hybridauth_conf['providers'] = $providers; 41 $hybridauth_conf['total'] = count($hybridauth_conf['providers']); 42 $hybridauth_conf['enabled'] = $count_enabled; 45 43 46 44 if (!count($page['errors'])) … … 48 46 // generate config file 49 47 $content = "<?php\ndefined('PHPWG_ROOT_PATH') or die('Hacking attempt!');\n\nreturn "; 50 $content.= var_export(array ('providers'=>$providers), true);48 $content.= var_export(array_intersect_key($hybridauth_conf, array_flip(array('providers','total','enabled'))), true); 51 49 $content.= ";\n?>"; 52 50 -
extensions/oAuth/auth.php
r26556 r26604 15 15 } 16 16 17 if ( 18 !array_key_exists($provider, $hybridauth_conf['providers']) 19 or !$hybridauth_conf['providers'][$provider]['enabled'] 20 ) { 17 // OpenID is always enabled 18 $hybridauth_conf['providers']['OpenID']['enabled'] = true; 19 20 if (!array_key_exists($provider, $hybridauth_conf['providers']) 21 or !$hybridauth_conf['providers'][$provider]['enabled'] 22 ) 23 { 21 24 throw new Exception('Invalid provider!', 1002); 22 25 } -
extensions/oAuth/include/functions.inc.php
r26556 r26604 23 23 } 24 24 25 function get_activated_providers()25 function oauth_assign_template_vars($u_redirect=null) 26 26 { 27 global $ hybridauth_conf;27 global $template, $conf, $hybridauth_conf; 28 28 29 return array_filter($hybridauth_conf['providers'], create_function('$p', 'return $p["enabled"];')); 30 } 31 32 function oauth_assign_template_vars() 33 { 34 global $template, $conf; 29 $conf['oauth']['include_common_template'] = true; 35 30 36 if ($template->get_template_vars('OAUTH _URL') == null)31 if ($template->get_template_vars('OAUTH') == null) 37 32 { 33 $template->assign('OAUTH', array( 34 'conf' => $conf['oauth'], 35 'u_login' => get_root_url() . OAUTH_PATH . 'auth.php?provider=', 36 'providers' => $hybridauth_conf['providers'], 37 )); 38 38 $template->assign(array( 39 'oauth' => $conf['oauth'],40 'OAUTH_URL' => get_root_url() . OAUTH_PATH . 'auth.php?provider=',41 39 'OAUTH_PATH' => OAUTH_PATH, 42 40 'OAUTH_ABS_PATH' => realpath(OAUTH_PATH) . '/', 43 'PROVIDERS' => get_activated_providers(),44 41 'ABS_ROOT_URL' => rtrim(get_gallery_home_url(), '/') . '/', 45 42 )); 46 43 } 44 45 if (isset($u_redirect)) 46 { 47 $template->append('OAUTH', compact('u_redirect'), true); 48 } 47 49 } 50 51 function get_oauth_id($user_id) 52 { 53 global $conf; 54 55 $query = ' 56 SELECT oauth_id FROM ' . USERS_TABLE . ' 57 WHERE ' . $conf['user_fields']['id'] . ' = ' . $user_id . ' 58 AND oauth_id != "" 59 ;'; 60 $result = pwg_query($query); 61 62 if (!pwg_db_num_rows($result)) 63 { 64 return null; 65 } 66 else 67 { 68 list($oauth_id) = pwg_db_fetch_row($result); 69 return $oauth_id; 70 } 71 } -
extensions/oAuth/include/public_events.inc.php
r26556 r26604 7 7 function oauth_begin_identification() 8 8 { 9 global $template, $conf; 10 11 oauth_assign_template_vars(); 12 $template->assign('REDIRECT_TO', !empty($_GET['redirect']) ? urldecode($_GET['redirect']) : get_gallery_home_url()); 13 9 global $template, $conf, $hybridauth_conf; 10 11 if ($hybridauth_conf['enabled'] > 0) 12 { 13 return; 14 } 15 16 $u_redirect = !empty($_GET['redirect']) ? urldecode($_GET['redirect']) : get_gallery_home_url(); 17 oauth_assign_template_vars($u_redirect); 18 14 19 $template->set_prefilter('identification', 'oauth_add_buttons_prefilter'); 15 20 } … … 23 28 24 29 $query = ' 25 SELECT oauth_id FROM ' .USERS_TABLE.'26 WHERE ' .$conf['user_fields']['username'].' = "'.pwg_db_real_escape_string($username).'"30 SELECT oauth_id FROM ' . USERS_TABLE . ' 31 WHERE ' . $conf['user_fields']['username'] . ' = "' . pwg_db_real_escape_string($username) . '" 27 32 AND oauth_id != "" 28 33 ;'; … … 49 54 { 50 55 global $conf, $template, $hybridauth_conf, $page; 56 57 if ($hybridauth_conf['enabled'] == 0) 58 { 59 return; 60 } 51 61 52 62 // coming from identification page … … 69 79 } 70 80 71 $template->assign(array( 72 'OAUTH_PROVIDER' => $provider, 73 'OAUTH_USERNAME' => $remote_user->displayName, 74 'OAUTH_PROFILE_URL' => $remote_user->profileURL, 75 'OAUTH_AVATAR' => $remote_user->photoURL, 76 'OAUTH_PATH' => OAUTH_PATH, 81 $template->assign('OAUTH_USER', array( 82 'provider' => $provider, 83 'username' => $remote_user->displayName, 84 'u_profile' => $remote_user->profileURL, 85 'avatar' => $remote_user->photoURL, 77 86 )); 78 87 … … 84 93 if (isset($_POST['submit'])) 85 94 { 86 $page['errors'] = 87 register_user($_POST['login'], 88 hash('sha1', $oauth_id.$conf['secret_key']), 89 $_POST['mail_address'] 90 ); 91 92 if (count($page['errors']) == 0) 95 $user_id = register_user( 96 $_POST['login'], 97 hash('sha1', $oauth_id.$conf['secret_key']), 98 $_POST['mail_address'], 99 true, 100 $page['errors'], 101 false 102 ); 103 104 if ($user_id !== false) 93 105 { 94 106 pwg_unset_session_var('oauth_new_user'); 95 $user_id = get_userid($_POST['login']);96 107 97 108 // update oauth field 98 109 $query = ' 99 UPDATE ' .USERS_TABLE.'100 SET oauth_id = "' .$oauth_id.'"101 WHERE ' .$conf['user_fields']['id'].' = '.$user_id.'110 UPDATE ' . USERS_TABLE . ' 111 SET oauth_id = "' . $oauth_id . '" 112 WHERE ' . $conf['user_fields']['id'] . ' = ' . $user_id . ' 102 113 ;'; 103 114 pwg_query($query); … … 118 129 119 130 // template 131 $template->assign('OAUTH_PATH', OAUTH_PATH); 120 132 $template->set_prefilter('register', 'oauth_add_profile_prefilter'); 121 133 $template->set_prefilter('register', 'oauth_remove_password_fields_prefilter'); … … 128 140 else if ($conf['oauth']['display_register']) 129 141 { 130 oauth_assign_template_vars(); 131 $template->assign('REDIRECT_TO', get_gallery_home_url()); 142 oauth_assign_template_vars(get_gallery_home_url()); 132 143 133 144 $template->set_prefilter('register', 'oauth_add_buttons_prefilter'); … … 141 152 function oauth_begin_profile() 142 153 { 143 global $template, $user, $conf, $hybridauth_conf, $page; 144 145 $query = ' 146 SELECT oauth_id FROM '.USERS_TABLE.' 147 WHERE '.$conf['user_fields']['id'].' = '.$user['id'].' 148 AND oauth_id != "" 149 ;'; 150 $result = pwg_query($query); 151 152 if (!pwg_db_num_rows($result)) 153 { 154 return; 155 } 156 157 list($oauth_id) = pwg_db_fetch_row($result); 154 global $template, $user, $hybridauth_conf, $page; 155 156 $oauth_id = get_oauth_id($user['id']); 157 158 if (!isset($oauth_id)) 159 { 160 return; 161 } 162 158 163 list($provider) = explode('---', $oauth_id); 159 164 … … 165 170 $remote_user = $adapter->getUserProfile(); 166 171 167 $template->assign(array( 168 'OAUTH_PROVIDER' => $provider, 169 'OAUTH_USERNAME' => $remote_user->displayName, 170 'OAUTH_PROFILE_URL' => $remote_user->profileURL, 171 'OAUTH_AVATAR' => $remote_user->photoURL, 172 'OAUTH_PATH' => OAUTH_PATH, 172 $template->assign('OAUTH_USER', array( 173 'provider' => $provider, 174 'username' => $remote_user->displayName, 175 'u_profile' => $remote_user->profileURL, 176 'avatar' => $remote_user->photoURL, 173 177 )); 174 178 179 $template->assign('OAUTH_PATH', OAUTH_PATH); 175 180 $template->set_prefilter('profile_content', 'oauth_add_profile_prefilter'); 176 181 $template->set_prefilter('profile_content', 'oauth_remove_password_fields_prefilter'); … … 187 192 function oauth_logout($user_id) 188 193 { 189 global $conf, $hybridauth_conf; 190 191 $query = ' 192 SELECT oauth_id FROM '.USERS_TABLE.' 193 WHERE '.$conf['user_fields']['id'].' = '.$user_id.' 194 AND oauth_id != "" 195 ;'; 196 $result = pwg_query($query); 197 198 if (!pwg_db_num_rows($result)) 199 { 200 return; 201 } 202 203 list($oauth_id) = pwg_db_fetch_row($result); 194 global $hybridauth_conf; 195 196 $oauth_id = get_oauth_id($user_id); 197 198 if (!isset($oauth_id)) 199 { 200 return; 201 } 202 204 203 list($provider) = explode('---', $oauth_id); 205 204 … … 222 221 function oauth_blockmanager($menu_ref_arr) 223 222 { 224 global $template, $conf ;223 global $template, $conf, $hybridauth_conf; 225 224 226 225 $menu = &$menu_ref_arr[0]; 227 226 228 if (!$conf['oauth']['display_menubar'] or $menu->get_block('mbIdentification') == null) 229 { 230 return; 231 } 232 233 oauth_assign_template_vars(); 234 $template->assign('REDIRECT_TO', get_gallery_home_url()); 227 if ($hybridauth_conf['enabled'] == 0 or 228 !$conf['oauth']['display_menubar'] or 229 $menu->get_block('mbIdentification') == null 230 ) 231 { 232 return; 233 } 234 235 oauth_assign_template_vars(get_gallery_home_url()); 235 236 236 237 $template->set_prefilter('menubar', 'oauth_add_menubar_buttons_prefilter'); 238 } 239 240 function oauth_include_template() 241 { 242 global $conf, $template; 243 244 if (isset($conf['oauth']['include_common_template'])) 245 { 246 $template->set_filename('oauth', realpath(OAUTH_PATH . 'template/identification_common.tpl')); 247 $template->parse('oauth'); 248 } 237 249 } 238 250 … … 254 266 $script = ' 255 267 {footer_script require="jquery"} 256 jQuery("input[type= \'password\'], input[name=\'send_password_by_mail\']").parent().css("display", "none");268 jQuery("input[type=password], input[name=send_password_by_mail]").parent().hide(); 257 269 {/footer_script}'; 258 270 … … 263 275 function oauth_add_profile_prefilter($content) 264 276 { 265 $search = '# </legend>#';277 $search = '#(</legend>)#'; 266 278 $add = file_get_contents(OAUTH_PATH . 'template/profile.tpl'); 267 return preg_replace($search, ' </legend>'.$add, $content, 1);279 return preg_replace($search, '$1 '.$add, $content, 1); 268 280 } 269 281 270 282 function oauth_add_menubar_buttons_prefilter($content) 271 283 { 272 $search = ' {include file=$block->template|@get_extent:$id }';284 $search = '#({include file=\$block->template\|@?get_extent:\$id ?})#'; 273 285 $add = file_get_contents(OAUTH_PATH . 'template/identification_menubar.tpl'); 274 return str_replace($search, $search.$add, $content);275 } 286 return preg_replace($search, '$1 '.$add, $content); 287 } -
extensions/oAuth/main.inc.php
r26558 r26604 42 42 add_event_handler('loc_begin_register', 'oauth_begin_register'); 43 43 add_event_handler('loc_begin_profile', 'oauth_begin_profile'); 44 45 add_event_handler('loc_after_page_header', 'oauth_include_template'); 44 46 45 47 add_event_handler('try_log_user', 'oauth_try_log_user', EVENT_HANDLER_PRIORITY_NEUTRAL-30, 2); -
extensions/oAuth/maintain.inc.php
r26556 r26604 12 12 'menubar_icon' => '26px', 13 13 ); 14 15 private $file; 16 17 function __construct($plugin_id) 18 { 19 parent::__construct($plugin_id); 20 21 $this->file = PWG_LOCAL_DIR . 'config/hybridauth.inc.php'; 22 } 14 23 15 24 function install($plugin_version, &$errors=array()) … … 27 36 { 28 37 pwg_query('ALTER TABLE `' . USERS_TABLE . '` ADD `oauth_id` VARCHAR(255) DEFAULT NULL;'); 38 } 39 40 // add fields in hybridauth conf file 41 if (file_exists($this->file)) 42 { 43 $hybridauth_conf = include($this->file); 44 if (!isset($hybridauth_conf['total'])) 45 { 46 $enabled = array_filter($hybridauth_conf['providers'], create_function('$p', 'return $p["enabled"];')); 47 48 $hybridauth_conf['total'] = count($hybridauth_conf['providers']); 49 $hybridauth_conf['enabled'] = count($enabled); 50 51 $content = "<?php\ndefined('PHPWG_ROOT_PATH') or die('Hacking attempt!');\n\nreturn "; 52 $content.= var_export($hybridauth_conf, true); 53 $content.= ";\n?>"; 54 55 file_put_contents($this->file, $content); 56 } 29 57 } 30 58 … … 50 78 pwg_query('ALTER TABLE `'. USERS_TABLE .'` DROP `oauth_id`;'); 51 79 52 @unlink( PHPWG_PLUGINS_PATH . PWG_LOCAL_DIR . 'config/hybridauth.inc.php');80 @unlink($this->file); 53 81 } 54 82 } -
extensions/oAuth/template/auth.tpl
r26556 r26604 30 30 {elseif $REDIRECT_TO} 31 31 <script type="text/javascript"> 32 if (window.opener) window.opener.parent. redirect('{$REDIRECT_TO}');32 if (window.opener) window.opener.parent.oauth_redirect('{$REDIRECT_TO}'); 33 33 window.self.close(); 34 34 </script> -
extensions/oAuth/template/identification_common.tpl
r26556 r26604 12 12 {footer_script} 13 13 // redirect, called from the popup 14 function redirect(type) {15 var url = "{$REDIRECT_TO}";16 if (type of type != 'undefined'&& type != 'default') {17 url = "{$ABS_ROOT_URL}"+ type +".php";14 function oauth_redirect(type) { 15 var url = '{$OAUTH.u_redirect}'; 16 if (type && type != 'default') { 17 url = '{$ABS_ROOT_URL}'+ type +'.php'; 18 18 } 19 19 … … 24 24 function open_auth(url) { 25 25 window.open( 26 url + "&t="+ (new Date()).getTime(),27 "hybridauth_social_sing_on",28 "location=0,status=0,scrollbars=0,width=800,height=500"26 url + '&t=' + (new Date()).getTime(), 27 'hybridauth_social_sign_on', 28 'location=0,status=0,scrollbars=0,width=800,height=500' 29 29 ); 30 30 } 31 31 32 32 // click on a button 33 jQuery("a.oauth").click(function() { 33 jQuery('a.oauth').click(function(e) { 34 e.preventDefault(); 35 34 36 var idp = jQuery(this).data('idp'); 35 37 … … 38 40 switch(idp) { 39 41 case 'OpenID': 40 jQuery( "#openid_label").html('{'Please enter your OpenID URL'|translate|escape:javascript}'); break;42 jQuery('#openid_label').html('{'Please enter your OpenID URL'|translate|escape:javascript}'); break; 41 43 case 'Wordpress': case 'Flickr': case 'Steam': 42 jQuery( "#openid_label").html('{'Please enter your username'|translate|escape:javascript}'); break;44 jQuery('#openid_label').html('{'Please enter your username'|translate|escape:javascript}'); break; 43 45 } 44 46 … … 47 49 bg_color = $('body').css('background-color'); 48 50 } 49 jQuery( "#openid_form").css('background-color', bg_color);51 jQuery('#openid_form').css('background-color', bg_color); 50 52 51 jQuery( "#openid_form .oauth_38px").removeClass().addClass("oauth_38px "+ idp.toLowerCase());52 jQuery( "#openid_form h3").html(idp);53 jQuery( "#openid_form").data('idp', idp);53 jQuery('#openid_form .oauth_38px').removeClass().addClass('oauth_38px ' + idp.toLowerCase()); 54 jQuery('#openid_form h3').html(idp); 55 jQuery('#openid_form').data('idp', idp); 54 56 55 57 jQuery.colorbox({ 56 inline:true, 57 href:"#openid_form", 58 initialWidth:0, 59 initialHeight:0, 58 inline: true, 59 href: '#openid_form', 60 initialWidth: 0, 61 initialHeight: 0, 62 mawWidth: '100%', 60 63 onComplete: function(){ jQuery.colorbox.resize({ speed:0 }) } // prevent misalignement when icon not loaded 61 }) 64 }); 62 65 break; 63 66 64 67 default: 65 open_auth( "{$OAUTH_URL}"+ idp);68 open_auth('{$OAUTH.u_login}'+ idp); 66 69 } 67 68 return false;69 70 }); 70 71 71 jQuery("#openid_form").submit(function() { 72 jQuery('#openid_form').submit(function(e) { 73 e.preventDefault(); 74 72 75 var idp = jQuery(this).data('idp'); 73 var oi = jQuery( "#openid_form input[name='openid_identifier']").val();74 jQuery( "#openid_form input[name='openid_identifier']").val('');76 var oi = jQuery('#openid_form input[name=openid_identifier]').val(); 77 jQuery('#openid_form input[name=openid_identifier]').val(''); 75 78 76 jQuery( "#openid_label").removeClass('error');79 jQuery('#openid_label').removeClass('error'); 77 80 if (!oi) { 78 jQuery( "#openid_label").addClass('error');79 return false;81 jQuery('#openid_label').addClass('error'); 82 return; 80 83 } 81 84 82 85 switch(idp) { 83 case 'Wordpress': oi = "http://" + oi + ".wordpress.com"; break;84 case 'Flickr': oi = "http://www.flickr.com/photos/" + oi + "/"; break;85 case 'Steam': oi = "http://steamcommunity.com/openid/"+ oi; break;86 case 'Wordpress': oi = 'http://' + oi + '.wordpress.com'; break; 87 case 'Flickr': oi = 'http://www.flickr.com/photos/' + oi + '/'; break; 88 case 'Steam': oi = 'http://steamcommunity.com/openid/' + oi; break; 86 89 } 87 90 88 open_auth( "{$OAUTH_URL}OpenID&openid_identifier="+ encodeURI(oi));91 open_auth('{$OAUTH.u_login}OpenID&openid_identifier=' + encodeURI(oi)); 89 92 90 93 jQuery.colorbox.close(); 91 return false;92 94 }); 93 95 94 jQuery("#openid_cancel").click(function() { 95 jQuery("#openid_label").removeClass('error'); 96 jQuery('#openid_cancel').click(function(e) { 97 e.preventDefault(); 98 99 jQuery('#openid_label').removeClass('error'); 96 100 jQuery.colorbox.close(); 97 return false;98 101 }); 99 102 {/footer_script} … … 107 110 <div> 108 111 <br> 109 <label id="openid_label" for="openid_identifier"> Open ID URL</label>112 <label id="openid_label" for="openid_identifier"></label> 110 113 <br> 111 114 <input type="text" name="openid_identifier" id="openid_identifier" size="50"> -
extensions/oAuth/template/identification_menubar.tpl
r26556 r26604 1 {if $id == "mbIdentification" and isset($U_LOGIN) and count($PROVIDERS)} 2 {if not $OAUTH_JS_LOADED} 3 {assign var=OAUTH_JS_LOADED value=true} 4 {include file=$OAUTH_ABS_PATH|cat:'template/identification_common.tpl'} 5 {/if} 1 {if $id == "mbIdentification" and isset($U_LOGIN)} 6 2 {html_style} 7 dl#mbIdentification dd:first-of-type { padding-bottom:0 !important;8 3 dl#mbIdentification dd:first-of-type { padding-bottom:0 !important; } 4 #mbIdentification .oauth { margin:0 1px; } 9 5 {/html_style} 10 6 … … 14 10 <legend>{'Or sign in with'|translate}</legend> 15 11 16 {foreach from=$PROVIDERS item=provider key=p}{strip} 17 <a href="#" class="oauth oauth_{$oauth.menubar_icon} {$p|strtolower}" data-idp="{$p}" title="{$provider.name}"></a> 12 {foreach from=$OAUTH.providers item=provider key=p}{strip} 13 {if $provider.enabled} 14 <a href="#" class="oauth oauth_{$OAUTH.conf.menubar_icon} {$p|strtolower}" data-idp="{$p}" title="{$provider.name}"></a> 15 {/if} 18 16 {/strip}{/foreach} 19 17 </fieldset> -
extensions/oAuth/template/identification_page.tpl
r26556 r26604 1 {if count($PROVIDERS)} 2 {if not $OAUTH_JS_LOADED} 3 {assign var=OAUTH_JS_LOADED value=true} 4 {include file=$OAUTH_ABS_PATH|cat:'template/identification_common.tpl'} 1 {html_style} 2 #oauth_wrap .oauth { margin:0 2px; } 3 {/html_style} 4 5 <fieldset style="text-align:center;" id="oauth_wrap"> 6 <legend>{'Or sign in with'|translate}</legend> 7 8 {foreach from=$OAUTH.providers item=provider key=p}{strip} 9 {if $provider.enabled} 10 <a href="#" class="oauth oauth_{$OAUTH.conf.identification_icon} {$p|strtolower}" data-idp="{$p}" title="{$provider.name}"></a> 5 11 {/if} 6 {html_style} 7 #oauth_wrap .oauth { margin:0 2px; } 8 {/html_style} 9 10 <fieldset style="text-align:center;" id="oauth_wrap"> 11 <legend>{'Or sign in with'|translate}</legend> 12 13 {foreach from=$PROVIDERS item=provider key=p}{strip} 14 <a href="#" class="oauth oauth_{$oauth.identification_icon} {$p|strtolower}" data-idp="{$p}" title="{$provider.name}"></a> 15 {/strip}{/foreach} 16 </fieldset> 17 {/if} 12 {/strip}{/foreach} 13 </fieldset> -
extensions/oAuth/template/profile.tpl
r26556 r26604 19 19 20 20 <div id="oauth"> 21 {if $OAUTH_ AVATAR}22 <img src="{$OAUTH_ AVATAR}" class="avatar">21 {if $OAUTH_USER.avatar} 22 <img src="{$OAUTH_USER.avatar}" class="avatar"> 23 23 {else} 24 24 <img src="{$ROOT_URL}{$OAUTH_PATH}template/images/avatar-default.png" class="avatar"> 25 25 {/if} 26 26 27 {'Logged with'|translate} : <b>{$OAUTH_ PROVIDER}</b><br>28 <b>{'Username'|translate}</b> : {$OAUTH_USER NAME}<br>29 {if $OAUTH_ PROFILE_URL}<b>{'Profile URL'|translate}</b> : <a href="{$OAUTH_PROFILE_URL}">{$OAUTH_PROFILE_URL|truncate:40:' ... ':true:true}</a>{/if}27 {'Logged with'|translate} : <b>{$OAUTH_USER.provider}</b><br> 28 <b>{'Username'|translate}</b> : {$OAUTH_USER.username}<br> 29 {if $OAUTH_USER.u_profile}<b>{'Profile URL'|translate}</b> : <a href="{$OAUTH_USER.u_profile}">{$OAUTH_USER.u_profile|truncate:40:' ... ':true:true}</a>{/if} 30 30 </div>
Note: See TracChangeset
for help on using the changeset viewer.