53 lines
1.5 KiB
PHP
53 lines
1.5 KiB
PHP
<?php
|
||
/**
|
||
* sso登录
|
||
* 访问地址如:http://demo.rockoa.com/api.php?m=opensso
|
||
*/
|
||
class openssoClassAction extends openapiAction
|
||
{
|
||
|
||
public function initAction()
|
||
{
|
||
$this->display= false;
|
||
}
|
||
|
||
public function indexAction()
|
||
{
|
||
$ssotoken = $this->get('ssotoken');
|
||
$lurl = urldecode($this->get('backurl')); //登录成功跳转地址urlencode
|
||
if(isempt($ssotoken))return '没有参数ssotoken';
|
||
|
||
$checkurls = $this->get('checkurl');
|
||
$checkurl = getconfig('sso_checkurl'); //验证地址
|
||
$ssokey = getconfig('sso_key'); //验证key
|
||
if($checkurls)$checkurl = c('rockwxqy')->geturlstr($checkurls,'','main');
|
||
|
||
if(isempt($checkurl))return '没有配置验证地址';
|
||
$jg = contain($checkurl,'?')?'&':'?';
|
||
|
||
$url = $checkurl.$jg.'ssotoken='.$ssotoken.'&ssokey='.$ssokey.'';
|
||
$user = c('curl')->getcurl($url); //要返回用户帐号/手机号
|
||
if(isempt($user))return '验证失败没有返回值';
|
||
|
||
//调用登录方法验证
|
||
$lobj = m('login');
|
||
$rand = md5(''.$this->rock->now.''.$user.'');
|
||
$lobj->setloginrand($rand);
|
||
$arr = $lobj->start($user, $rand, 'pc','SSO');
|
||
if(!is_array($arr)){
|
||
return $arr;
|
||
}else{
|
||
$uid = $arr['uid'];
|
||
$name = $arr['name'];
|
||
$user = $arr['user'];
|
||
$token = $arr['token'];
|
||
$lobj->setsession($uid, $name, $token, $user);
|
||
if(isempt($lurl)){
|
||
$lurl = 'index.php?m=index';
|
||
if($this->rock->ismobile())$lurl='index.php?d=we';
|
||
}
|
||
$this->rock->location($lurl);//跳转
|
||
return 'success';
|
||
}
|
||
}
|
||
}
|