Changeset 1204

Show
Ignore:
Timestamp:
07/18/10 12:46:27 (3 years ago)
Author:
d0nut
Message:

added openid page and openid button template

Location:
openid
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • openid/files/lib/data/openid/OpenID.class.php

    r1203 r1204  
    252252                        $user = $this->registerUser($me); 
    253253 
    254                         // update avatar 
    255                         $this->updateAvatar('https://graph.openid.com/'.$me['id'].'/picture', $user); 
    256  
    257254                        // either user is new, oder just got a link, but add a openid link 
    258255                        $this->addOpenIDUser($me, $user); 
     
    261258                if($user) { 
    262259 
     260                        die('login temporary disabled'); 
    263261                        // UserLoginForm should not write cookie, since interfaces only support unhashed password 
    264262                        $this->eventObj->useCookies = 0; 
     
    390388                return $availableLanguages; 
    391389        } 
    392  
    393         /** 
    394          * downloads openid image and saves as avatar 
    395          * 
    396          * @param       string          $avatarURL 
    397          * @param       User            $user 
    398          * @return      boolean 
    399          */ 
    400         protected function updateAvatar($avatarURL, $user) { 
    401                 // existing avatar? skip openid download 
    402                 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 important 
    412                         return false; 
    413                 } 
    414  
    415                 $avatarID = AvatarEditor::create($tmpName, $avatarURL, 'avatarURL', $user->userID); 
    416  
    417                 // update user 
    418                 $sql = "UPDATE  wcf".WCF_N."_user 
    419                         SET     avatarID = ".$avatarID." 
    420                         WHERE   userID = ".$user->userID; 
    421                 return WCF::getDB()->sendQuery($sql); 
    422         } 
    423390} 
  • openid/files/lib/page/OpenIDPage.class.php

    r1203 r1204  
    22// wcf imports 
    33require_once(WCF_DIR.'lib/page/AbstractPage.class.php'); 
     4require_once(WCF_DIR.'lib/data/openid/OpenID.class.php'); 
    45 
    56/** 
    6  *  
     7 * handles authentication and user registration 
    78 *  
    89 * @author      Torben Brodt 
     
    1314class OpenIDPage extends AbstractPage { 
    1415 
     16        protected $identifier; 
    1517         
    1618        /** 
     
    2022                parent::readParameters(); 
    2123                 
    22                  
     24                $this->identifier = isset($_GET['identifier']) ? $_GET['identifier'] : null; 
    2325        } 
    2426         
     
    2931                parent::readData(); 
    3032                 
     33                $openid = new OpenID(); 
     34                 
     35                if($this->identifier) { 
     36                        $openid->tryAuthentication($this->identifier); 
     37                } else { 
     38                        $openid->finishAuthentication(); 
     39                } 
    3140        } 
    3241         
  • openid/files/lib/system/event/listener/UserLoginOpenIDListener.class.php

    r1203 r1204  
    77 *  
    88 * @author      Torben Brodt 
    9  * @url         http://trac.easy-coding.de/trac/wcf/wiki/openid 
    109 * @license     GNU General Public License <http://opensource.org/licenses/gpl-3.0.html> 
     10 * @package     de.easy-coding.wcf.openid 
    1111 */ 
    1212class UserLoginOpenIDListener implements EventListener { 
     
    3232                        return; 
    3333                } 
     34                 
     35                // TODO: remove DEBUG 
     36                if(!isset($_GET['openid'])) { 
     37                        return; 
     38                } 
    3439 
    3540                $this->eventObj = $eventObj; 
     
    4752 
    4853                WCF::getTPL()->assign(array( 
    49                         'openID' => OpenID::getReturnTo(), 
     54                        'openid_url' => OpenID::getReturnTo(), 
    5055                )); 
    5156 
  • openid/package.xml

    r1203 r1204  
    66                <packagedescription language="de"><![CDATA[Dieses Plugin verbindet openid mit dem WCF. So ist z.B. ein Direktlogin via openid möglich.]]></packagedescription> 
    77                <packagedescription><![CDATA[This enables all users to login with their openid account.]]></packagedescription> 
    8                 <version>1.0.0 RC 1</version> 
     8                <version>1.0.0 Beta 1</version> 
    99                <date>DATE</date> 
    1010                <plugin>com.woltlab.wcf</plugin> 
     
    3131                <languages languagecode="en">en.xml</languages> 
    3232        </instructions> 
    33         <instructions type="update" fromversion="1.1.3"> 
     33        <instructions type="update" fromversion="1.0.0"> 
    3434                <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> 
    4235        </instructions> 
    4336</package> 
  • openid/templates/openidLogin.tpl

    r1203 r1204  
    11<div class="formElement"> 
    22        <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/> 
    1318 
    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> 
    1923 
    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 &raquo;" /> 
     28                        </p> 
     29                </form> 
    2930        </div> 
    3031</div>