Changeset 1204
- Timestamp:
- 07/18/10 12:46:27 (3 years ago)
- Location:
- openid
- Files:
-
- 5 modified
-
files/lib/data/openid/OpenID.class.php (modified) (3 diffs)
-
files/lib/page/OpenIDPage.class.php (modified) (4 diffs)
-
files/lib/system/event/listener/UserLoginOpenIDListener.class.php (modified) (3 diffs)
-
package.xml (modified) (2 diffs)
-
templates/openidLogin.tpl (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
openid/files/lib/data/openid/OpenID.class.php
r1203 r1204 252 252 $user = $this->registerUser($me); 253 253 254 // update avatar255 $this->updateAvatar('https://graph.openid.com/'.$me['id'].'/picture', $user);256 257 254 // either user is new, oder just got a link, but add a openid link 258 255 $this->addOpenIDUser($me, $user); … … 261 258 if($user) { 262 259 260 die('login temporary disabled'); 263 261 // UserLoginForm should not write cookie, since interfaces only support unhashed password 264 262 $this->eventObj->useCookies = 0; … … 390 388 return $availableLanguages; 391 389 } 392 393 /**394 * downloads openid image and saves as avatar395 *396 * @param string $avatarURL397 * @param User $user398 * @return boolean399 */400 protected function updateAvatar($avatarURL, $user) {401 // existing avatar? skip openid download402 if ($user->avatarID || empty($avatarURL)) {403 return false;404 }405 406 try {407 $tmpName = FileUtil::downloadFileFromHttp($avatarURL, 'avatar');408 }409 catch (SystemException $e) {410 411 // skip, download is not that important412 return false;413 }414 415 $avatarID = AvatarEditor::create($tmpName, $avatarURL, 'avatarURL', $user->userID);416 417 // update user418 $sql = "UPDATE wcf".WCF_N."_user419 SET avatarID = ".$avatarID."420 WHERE userID = ".$user->userID;421 return WCF::getDB()->sendQuery($sql);422 }423 390 } -
openid/files/lib/page/OpenIDPage.class.php
r1203 r1204 2 2 // wcf imports 3 3 require_once(WCF_DIR.'lib/page/AbstractPage.class.php'); 4 require_once(WCF_DIR.'lib/data/openid/OpenID.class.php'); 4 5 5 6 /** 6 * 7 * handles authentication and user registration 7 8 * 8 9 * @author Torben Brodt … … 13 14 class OpenIDPage extends AbstractPage { 14 15 16 protected $identifier; 15 17 16 18 /** … … 20 22 parent::readParameters(); 21 23 22 24 $this->identifier = isset($_GET['identifier']) ? $_GET['identifier'] : null; 23 25 } 24 26 … … 29 31 parent::readData(); 30 32 33 $openid = new OpenID(); 34 35 if($this->identifier) { 36 $openid->tryAuthentication($this->identifier); 37 } else { 38 $openid->finishAuthentication(); 39 } 31 40 } 32 41 -
openid/files/lib/system/event/listener/UserLoginOpenIDListener.class.php
r1203 r1204 7 7 * 8 8 * @author Torben Brodt 9 * @url http://trac.easy-coding.de/trac/wcf/wiki/openid10 9 * @license GNU General Public License <http://opensource.org/licenses/gpl-3.0.html> 10 * @package de.easy-coding.wcf.openid 11 11 */ 12 12 class UserLoginOpenIDListener implements EventListener { … … 32 32 return; 33 33 } 34 35 // TODO: remove DEBUG 36 if(!isset($_GET['openid'])) { 37 return; 38 } 34 39 35 40 $this->eventObj = $eventObj; … … 47 52 48 53 WCF::getTPL()->assign(array( 49 'open ID' => OpenID::getReturnTo(),54 'openid_url' => OpenID::getReturnTo(), 50 55 )); 51 56 -
openid/package.xml
r1203 r1204 6 6 <packagedescription language="de"><![CDATA[Dieses Plugin verbindet openid mit dem WCF. So ist z.B. ein Direktlogin via openid möglich.]]></packagedescription> 7 7 <packagedescription><![CDATA[This enables all users to login with their openid account.]]></packagedescription> 8 <version>1.0.0 RC1</version>8 <version>1.0.0 Beta 1</version> 9 9 <date>DATE</date> 10 10 <plugin>com.woltlab.wcf</plugin> … … 31 31 <languages languagecode="en">en.xml</languages> 32 32 </instructions> 33 <instructions type="update" fromversion="1. 1.3">33 <instructions type="update" fromversion="1.0.0"> 34 34 <files>files.tar</files> 35 <templates>templates.tar</templates>36 <sql>update.sql</sql>37 38 <options>options.xml</options>39 <eventlistener>eventlistener.xml</eventlistener>40 <languages languagecode="de">de.xml</languages>41 <languages languagecode="en">en.xml</languages>42 35 </instructions> 43 36 </package> -
openid/templates/openidLogin.tpl
r1203 r1204 1 1 <div class="formElement"> 2 2 <div class="formField"> 3 <div id="fb-root"></div> 4 <script type="text/javascript"> 5 window.fbAsyncInit = function() { 6 FB.init({ 7 appId : '{FACEBOOK_APPID}', 8 session : {$session|json_encode}, // don't refetch the session when PHP already has it 9 status : true, // check login status 10 cookie : true, // enable cookies to allow the server to access the session 11 xfbml : true // parse XFBML 12 }); 3 <form method="get" action="{$openid_url}"> 4 <script type="text/javascript"> 5 function openid(elem, msg) { 6 var x = prompt(msg); 7 if(x) { 8 elem.href = elem.href.replace(/\\1/, x); 9 return true; 10 } 11 12 return false; 13 } 14 </script> 15 16 Sie können sich mit ihrem existieren Account bestimmter Anbieter bei uns authentifizieren.<br/> 17 Das ganze funktioniert ÃŒber die s.g. OpenID Schnittstelle - es werden keine Zugangsdaten ausgetauscht.<br/> 13 18 14 // whenever the user logs in, we refresh the page 15 FB.Event.subscribe('auth.login', function() { 16 window.location.reload(); 17 }); 18 }; 19 <a href="{$openid_url}&identifier=https://www.google.com/accounts/o8/id">Google</a> 20 <a href="{$openid_url}&identifier=http://yahoo.com/">Yahoo</a> 21 <a href="{$openid_url}&identifier=http://openid.aol.com/\1" onclick="return openid(this)">AOL</a> 22 <a href="{$openid_url}&identifier=http://\1.myopenid.com/" onclick="return openid(this)">myOpenID</a> 19 23 20 (function() { 21 var e = document.createElement('script'); 22 e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; 23 e.async = true; 24 document.getElementById('fb-root').appendChild(e); 25 }()); 26 </script> 27 28 <a href="{$loginUrl}"><img src="http://static.ak.fbcdn.net/rsrc.php/zB6N8/hash/4li2k73z.gif"></a> 24 <p>... oder geben Sie ihre OpenID manuell ein:<br/> 25 <input type="text" name="identifier" class="openid" value="https://www.google.com/accounts/o8/id" /></p> 26 <p> 27 <input type="submit" value="Weiter »" /> 28 </p> 29 </form> 29 30 </div> 30 31 </div>
