2011-06-23 19:04:32 +04:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* ownCloud
|
|
|
|
*
|
|
|
|
* @author Robin Appelman
|
|
|
|
* @copyright 2011 Robin Appelman icewind1991gmailc.om
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 3 of the License, or any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Affero General Public
|
|
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2012-07-24 02:02:01 +04:00
|
|
|
require_once('openid/class.openid.v3.php');
|
2011-06-23 19:04:32 +04:00
|
|
|
|
|
|
|
/**
|
2012-05-08 11:07:11 +04:00
|
|
|
* Class for user OpenId backend
|
2011-06-23 19:04:32 +04:00
|
|
|
*/
|
2011-07-29 23:36:03 +04:00
|
|
|
class OC_USER_OPENID extends OC_User_Backend {
|
2011-06-23 19:04:32 +04:00
|
|
|
/**
|
|
|
|
* @brief Check if the password is correct
|
|
|
|
* @param $uid The username
|
|
|
|
* @param $password The password
|
|
|
|
* @returns true/false
|
|
|
|
*
|
|
|
|
* Check if the password is correct without logging in the user
|
|
|
|
*/
|
|
|
|
public function checkPassword( $uid, $password ){
|
|
|
|
// Get identity from user and redirect browser to OpenID Server
|
2012-06-29 20:36:58 +04:00
|
|
|
$openid = new SimpleOpenID();
|
2011-06-23 19:04:32 +04:00
|
|
|
$openid->SetIdentity($uid);
|
2012-05-31 22:16:44 +04:00
|
|
|
$openid->SetTrustRoot('http://' . OCP\Util::getServerHost());
|
2011-06-23 19:04:32 +04:00
|
|
|
if ($openid->GetOpenIDServer()){
|
2012-05-31 22:16:44 +04:00
|
|
|
$openid->SetApprovedURL('http://' . OCP\Util::getServerHost() . OC::$WEBROOT); // Send Response from OpenID server to this script
|
2011-06-23 19:04:32 +04:00
|
|
|
$openid->Redirect(); // This will redirect user to OpenID Server
|
|
|
|
exit;
|
|
|
|
}else{
|
2011-06-23 19:58:27 +04:00
|
|
|
return false;
|
2011-06-23 19:04:32 +04:00
|
|
|
}
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* find the user that can be authenticated with an openid identity
|
|
|
|
*/
|
|
|
|
public static function findUserForIdentity($identity){
|
2012-07-30 22:46:14 +04:00
|
|
|
$query=OCP\DB::prepare('SELECT `userid` FROM `*PREFIX*preferences` WHERE `appid`=? AND `configkey`=? AND `configvalue`=?');
|
2011-06-23 19:04:32 +04:00
|
|
|
$result=$query->execute(array('user_openid','identity',$identity))->fetchAll();
|
|
|
|
if(count($result)>0){
|
|
|
|
return $result[0]['userid'];
|
|
|
|
}else{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|