diff --git a/module/sso/tao.php b/module/sso/tao.php index d4e4b9a60e..107ee30aef 100644 --- a/module/sso/tao.php +++ b/module/sso/tao.php @@ -26,8 +26,11 @@ class ssoTao extends ssoModel return false; } - $password = md5($data->bindPassword); - $user = $this->dao->select('*')->from(TABLE_USER)->where('account')->eq($data->bindUser)->andWhere('password')->eq($password)->andWhere('deleted')->eq('0')->fetch(); + $user = $this->dao->select('*')->from(TABLE_USER) + ->where('account')->eq($data->bindUser) + ->andWhere('password')->eq(md5($data->bindPassword)) + ->andWhere('deleted')->eq('0') + ->fetch(); if(empty($user)) { dao::$errors[] = $this->lang->sso->bindNoUser; @@ -49,7 +52,7 @@ class ssoTao extends ssoModel */ protected function addZTUser(object $data): object|false { - if(!$this->loadModel('user')->checkPassword()) return false; + if(!$this->loadModel('user')->checkPassword($data)) return false; $user = $this->dao->select('*')->from(TABLE_USER)->where('account')->eq($data->account)->fetch(); if($user) { diff --git a/module/sso/test/model/bind.php b/module/sso/test/model/bind.php new file mode 100644 index 0000000000..5636651ea0 --- /dev/null +++ b/module/sso/test/model/bind.php @@ -0,0 +1,58 @@ +#!/usr/bin/env php +bind(); +cid=0 + +- 绑定关联ranzhi账号。 + - 属性account @admin + - 属性ranzhi @ranzhi1 +- 添加关联ranzhi账号。 + - 属性account @user10 + - 属性ranzhi @ranzhi2 + +*/ +include dirname(__FILE__, 5) . '/test/lib/init.php'; +su('admin'); + +$user = zdTable('user'); +$user->password->range('e10adc3949ba59abbe56e057f20f883e'); +$user->gen(5); + +global $tester; +$ssoModel = $tester->loadModel('sso'); + +$_POST = array(); +$_POST['bindUser'] = 'admin'; +$_POST['bindPassword'] = '123456'; +$_POST['bindType'] = 'bind'; + +$ssoData = new stdclass(); +$ssoData->account = 'ranzhi1'; +$_SESSION['ssoData'] = $ssoData; + +$ssoModel->bind(); +r((array)$ssoModel->fetchById(1, 'user')) && p('account,ranzhi') && e('admin,ranzhi1'); //绑定关联ranzhi账号。 + +$_POST = array(); +$_POST['account'] = 'user10'; +$_POST['password1'] = '123456'; +$_POST['password2'] = '123456'; +$_POST['realname'] = 'admin'; +$_POST['gender'] = 'm'; +$_POST['email'] = 'admin@163.com'; +$_POST['role'] = 'dev'; +$_POST['bindType'] = 'add'; +$_POST['passwordStrength'] = '2'; +$_POST['passwordLength'] = strlen($_POST['password1']); + +$ssoData = new stdclass(); +$ssoData->account = 'ranzhi2'; +$_SESSION['ssoData'] = $ssoData; + +$ssoModel->config->safe = new stdclass(); +$ssoModel->config->safe->mode = 2; +$ssoModel->bind(); +r((array)$ssoModel->fetchById(6, 'user')) && p('account,ranzhi') && e('user10,ranzhi2'); //添加关联ranzhi账号。 diff --git a/module/sso/test/model/checkkey.php b/module/sso/test/model/checkkey.php new file mode 100644 index 0000000000..6ee968a287 --- /dev/null +++ b/module/sso/test/model/checkkey.php @@ -0,0 +1,31 @@ +#!/usr/bin/env php +checkKey(); +cid=0 + +- 不存在config->sso->turnon配置 @0 +- 不存在config->sso->key @0 +- hash和key不匹配 @0 +- hash和key相等 @1 + +*/ +include dirname(__FILE__, 5) . '/test/lib/init.php'; +su('admin'); + +global $tester; +$ssoModel = $tester->loadModel('sso'); + +r($ssoModel->checkKey()) && p() && e('0'); //不存在config->sso->turnon配置 + +$ssoModel->config->sso->turnon = true; +r($ssoModel->checkKey()) && p() && e('0'); //不存在config->sso->key + +$ssoModel->config->sso->key = 'test'; +$_GET['hash'] = '1234'; +r($ssoModel->checkKey()) && p() && e('0'); //hash和key不匹配 + +$_GET['hash'] = 'test'; +r($ssoModel->checkKey()) && p() && e('1'); //hash和key相等 diff --git a/module/sso/test/model/createuser.php b/module/sso/test/model/createuser.php index 9b353e1151..a945847f6b 100755 --- a/module/sso/test/model/createuser.php +++ b/module/sso/test/model/createuser.php @@ -1,43 +1,32 @@ #!/usr/bin/env php createUser(); -cid=1 -pid=1 - -用户存在的情况 >> fail -用户信息错误的情况 >> fail -用户不存在的情况 >> bindUser1 +cid=0 */ +include dirname(__FILE__, 5) . '/test/lib/init.php'; +include dirname(__FILE__, 2) . '/sso.class.php'; +su('admin'); + +zdTable('user')->gen(5); $sso = new ssoTest(); -$existsUser = array( - 'account' => 'admin' -); +$newUser = new stdclass(); +$newUser->account = 'admin'; +$newUser->realname = '绑定用户1'; +$newUser->email = 'user@test.com'; +$newUser->gender = 'm'; +$newUser->ranzhi = 'bindUser1'; -$newUser = array( - 'account' => 'bindUser1', - 'realname' => '绑定用户1', - 'email' => 'user@test.com', - 'gender' => 'm', - 'ranzhi' => 'bindUser1' -); +r($sso->createTest($newUser)) && p('data') && e('该用户名已经存在,请更换用户名,或直接绑定到该用户。'); // 用户存在的情况 -$failUser = array( - 'account' => 'bindUser2', - 'realname' => '绑定用户2', - 'email' => 'user@test.com', - 'gender' => '', - 'ranzhi' => 'bindUser2' -); +$newUser->account = 'bindUser1'; +r($sso->createTest($newUser)) && p('id') && e('6'); // 用户不存在的情况 -r($sso->createTest($existsUser)) && p('status') && e('fail'); // 用户存在的情况 -r($sso->createTest($failUser)) && p('status') && e('fail'); // 用户信息错误的情况 -r($sso->createTest($newUser)) && p('account') && e('bindUser1'); // 用户不存在的情况 +$newUser->account = 'bindUser2'; +$newUser->gender = ''; +r($sso->createTest($newUser)['data']['gender'][0]) && p() && e('『性别』不符合格式,应当为:『/f|m/』。'); // 用户信息错误的情况 diff --git a/module/sso/test/model/getbinduser.php b/module/sso/test/model/getbinduser.php index db9a7bdfd7..23354facad 100755 --- a/module/sso/test/model/getbinduser.php +++ b/module/sso/test/model/getbinduser.php @@ -1,24 +1,24 @@ #!/usr/bin/env php getBindUser(); -cid=1 -pid=1 +cid=0 -用户不存在绑定的情况 >> not user -用户存在绑定的情况 >> admin +- 传入空参数 @0 +- 查询未绑定用户 @0 +- 用户存在绑定的情况属性account @admin */ +include dirname(__FILE__, 5) . '/test/lib/init.php'; + +$user = zdTable('user'); +$user->ranzhi->range('1-20')->prefix('ranzhi'); +$user->gen(5); $sso = $tester->loadModel('sso'); -$emptyUser = ''; -$realUser = 'admin'; - -$res = $sso->getBindUser($emptyUser); -if(!$res) $res = 'not user'; -r($res) && p() && e('not user'); // 用户不存在绑定的情况 -r($sso->getBindUser($realUser)) && p('account') && e('admin'); // 用户存在绑定的情况 \ No newline at end of file +r($sso->getBindUser('')) && p() && e('0'); //传入空参数 +r($sso->getBindUser('use1')) && p() && e('0'); //查询未绑定用户 +r($sso->getBindUser('ranzhi1')) && p('account') && e('admin'); //用户存在绑定的情况 diff --git a/module/sso/test/model/getbindusers.php b/module/sso/test/model/getbindusers.php index 26136abc30..4a66a45e36 100755 --- a/module/sso/test/model/getbindusers.php +++ b/module/sso/test/model/getbindusers.php @@ -1,17 +1,23 @@ #!/usr/bin/env php getBindUsers(); -cid=1 -pid=1 +cid=0 -获取第一条记录账号 >> admin +- 查询记录条数 @4 +- 获取ranzhi1绑定的用户属性ranzhi1 @user1 */ +include dirname(__FILE__, 5) . '/test/lib/init.php'; + +$user = zdTable('user'); +$user->ranzhi->range('``,ranzhi1,ranzhi2,ranzhi3,ranzhi4'); +$user->gen(5); $sso = $tester->loadModel('sso'); -r($sso->getBindUsers()) && p('admin') && e('admin'); // 获取第一条记录账号 \ No newline at end of file +$users = $sso->getBindUsers(); +r(count($users)) && p() && e('4'); // 查询记录条数 +r($users) && p('ranzhi1') && e('user1'); // 获取ranzhi1绑定的用户 diff --git a/module/sso/test/sso.class.php b/module/sso/test/sso.class.php index 57753a8b63..9dbd8cc632 100644 --- a/module/sso/test/sso.class.php +++ b/module/sso/test/sso.class.php @@ -10,20 +10,12 @@ class ssoTest /** * Test create a user. * - * @param array $param + * @param object $user * @access public - * @return void + * @return array */ - public function createTest($param = array()) + public function createTest($user) { - foreach($param as $key => $value) $_POST[$key] = $value; - - $result = $this->objectModel->createUser(); - - unset($_POST); - if($result['status'] == 'fail') return 'fail'; - - $object = $this->objectModel->getBindUser($param['account']); - return $object; + return $this->objectModel->createUser($user); } } diff --git a/module/sso/test/tao/addztuser.php b/module/sso/test/tao/addztuser.php new file mode 100644 index 0000000000..13a7b273e2 --- /dev/null +++ b/module/sso/test/tao/addztuser.php @@ -0,0 +1,58 @@ +#!/usr/bin/env php +addZTUser(); +cid=0 + +- 低密码强度。第password1条的0属性 @密码必须10位及以上,且包含大小写字母、数字、特殊符号。 +- 用户名已经存在。 @该用户名已经存在,请更换用户名,或直接绑定到该用户。 +- 邮箱格式错误。第email条的0属性 @『邮箱』应当为合法的EMAIL。 +- 正确关联ranzhi账号。 + - 属性account @user10 + - 属性ranzhi @ranzhi1 + +*/ +include dirname(__FILE__, 5) . '/test/lib/init.php'; +su('admin'); + +zdTable('user')->gen(5); + +global $tester; +$ssoModel = $tester->loadModel('sso'); +$ssoModel->config->safe = new stdclass(); +$ssoModel->config->safe->mode = 2; + +$data = new stdclass(); +$data->account = 'admin'; +$data->password1 = '123456'; +$data->password2 = '123456'; +$data->realname = 'admin'; +$data->gender = 'm'; +$data->email = 'admin'; +$data->role = 'dev'; +$data->passwordStrength = '1'; +$data->passwordLength = strlen($data->password1); + +$ssoData = new stdclass(); +$ssoData->account = 'ranzhi1'; +$_SESSION['ssoData'] = $ssoData; + +$ssoModel->addZTUser($data); +r(dao::getError()) && p('password1:0') && e('密码必须10位及以上,且包含大小写字母、数字、特殊符号。'); //低密码强度。 + +$data->password1 = 'Admin123'; +$data->password2 = 'Admin123'; +$data->passwordStrength = '2'; +$data->passwordLength = strlen($data->password1); +$ssoModel->addZTUser($data); +r(dao::getError()) && p('0') && e('该用户名已经存在,请更换用户名,或直接绑定到该用户。'); //用户名已经存在。 + +$data->account = 'user10'; +$ssoModel->addZTUser($data); +r(dao::getError()) && p('email:0') && e('『邮箱』应当为合法的EMAIL。'); //邮箱格式错误。 + +$data->email = 'admin@163.com'; +$ssoModel->addZTUser($data); +r((array)$ssoModel->fetchById(6, 'user')) && p('account,ranzhi') && e('user10,ranzhi1'); //正确关联ranzhi账号。 diff --git a/module/sso/test/tao/bindztuser.php b/module/sso/test/tao/bindztuser.php new file mode 100644 index 0000000000..6a25e95ccc --- /dev/null +++ b/module/sso/test/tao/bindztuser.php @@ -0,0 +1,42 @@ +#!/usr/bin/env php +bindZTUser(); +cid=0 + +*/ +include dirname(__FILE__, 5) . '/test/lib/init.php'; +su('admin'); + +$user = zdTable('user'); +$user->password->range('e10adc3949ba59abbe56e057f20f883e'); +$user->gen(5); + +global $tester; +$ssoModel = $tester->loadModel('sso'); + +$data = new stdclass(); +$data->bindUser = 'admin'; +$data->bindPassword = ''; + +$ssoData = new stdclass(); +$ssoData->account = 'ranzhi1'; +$_SESSION['ssoData'] = $ssoData; + +$ssoModel->bindZTUser($data); +r(dao::getError()) && p('0') && e('密码不能为空'); //没有传入用户密码。 + +$data->bindPassword = '1234567'; +$ssoModel->bindZTUser($data); +r(dao::getError()) && p('0') && e('该用户的登录密码错误,或该用户不存在!'); //传入用户密码错误。 + +$data->bindPassword = '123456'; +$data->bindUser = 'user10'; +$ssoModel->bindZTUser($data); +r(dao::getError()) && p('0') && e('该用户的登录密码错误,或该用户不存在!'); //传入用户账号错误。 + +$data->bindUser = 'admin'; +$ssoModel->bindZTUser($data); +r((array)$ssoModel->fetchById(1, 'user')) && p('account,ranzhi') && e('admin,ranzhi1'); //正确关联ranzhi账号。