* [refac bug #67692] Delete im_userdevice when change password.
This commit is contained in:
@@ -690,6 +690,7 @@ class userModel extends model
|
||||
}
|
||||
|
||||
if(dao::isError()) return $this->rollBack();
|
||||
if(!empty($user->password) && $user->password != $oldUser->password) $this->userTao->deleteImUserDevice($user->id);
|
||||
|
||||
$this->dao->commit();
|
||||
|
||||
@@ -838,6 +839,7 @@ class userModel extends model
|
||||
$this->dao->update(TABLE_USER)->set('password')->eq($user->password)->where('id')->eq($this->app->user->id)->exec();
|
||||
if(dao::isError()) return false;
|
||||
|
||||
$this->userTao->deleteImUserDevice($this->app->user->id);
|
||||
$this->loadModel('score')->create('user', 'changePassword', $this->computePasswordStrength($user->password1));
|
||||
|
||||
$this->app->user->password = $user->password;
|
||||
|
||||
@@ -138,4 +138,20 @@ class userTao extends userModel
|
||||
->groupBy('execution')
|
||||
->fetchPairs();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除 im_userdevice 表该用户的数据,以防止禅道修改密码后,禅道大桌面记住密码还能登录
|
||||
* Delete the im_userdevice table data of the user to prevent the user from logging in after the password is modified
|
||||
*
|
||||
* @param int $userID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function deleteImUserDevice(int $userID): void
|
||||
{
|
||||
try
|
||||
{
|
||||
$this->dao->delete()->from(TABLE_IM_USERDEVICE)->where('user')->eq($userID)->exec();
|
||||
} catch (Exception $e) {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
/**
|
||||
title=测试 userTao->deleteImUserDevice();
|
||||
cid=0
|
||||
|
||||
- 执行$oldTokens @2
|
||||
- 执行$oldTokens[1]
|
||||
- 属性user @1
|
||||
- 属性device @zentaoweb
|
||||
- 属性token @1
|
||||
- 执行$oldTokens[2]
|
||||
- 属性user @1
|
||||
- 属性device @desktop
|
||||
- 属性token @2
|
||||
- 执行$newTokens @0
|
||||
|
||||
*/
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
|
||||
zenData('user')->gen(3);
|
||||
$userdevice = zenData('im_userdevice');
|
||||
$userdevice->user->range('1-3{2}');
|
||||
$userdevice->device->range('zentaoweb,desktop');
|
||||
$userdevice->token->range('1-10');
|
||||
$userdevice->gen(4);
|
||||
|
||||
su('admin');
|
||||
|
||||
global $tester, $app;
|
||||
$userModel = $tester->loadModel('user');
|
||||
|
||||
$oldTokens = $userModel->dao->select('*')->from(TABLE_IM_USERDEVICE)->where('user')->eq($app->user->id)->orderBy('id')->fetchAll('id');
|
||||
$userModel->deleteImUserDevice($app->user->id);
|
||||
$newTokens = $userModel->dao->select('*')->from(TABLE_IM_USERDEVICE)->where('user')->eq($app->user->id)->fetchAll('id');
|
||||
|
||||
r(count($oldTokens)) && p() && e(2);
|
||||
r($oldTokens[1]) && p('user,device,token') && e('1,zentaoweb,1');
|
||||
r($oldTokens[2]) && p('user,device,token') && e('1,desktop,2');
|
||||
r(count($newTokens)) && p() && e(0);
|
||||
Reference in New Issue
Block a user