mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-02 01:52:10 +09:00
Add admin login-as (impersonate) feature to member admin list (#4)
Co-authored-by: Lastorder-DC <18280396+Lastorder-DC@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
This commit is contained in:
parent
fdb1f8269b
commit
fc0e8a9843
5 changed files with 68 additions and 1 deletions
|
|
@ -1802,6 +1802,47 @@ class MemberAdminController extends Member
|
|||
|
||||
return new BaseObject();
|
||||
}
|
||||
|
||||
/**
|
||||
* Login as a specific member (admin only)
|
||||
* @return void|BaseObject
|
||||
*/
|
||||
function procMemberAdminLoginAs()
|
||||
{
|
||||
// Check admin permission and CSRF token
|
||||
$logged_info = Context::get('logged_info');
|
||||
if(!$logged_info || $logged_info->is_admin !== 'Y' || !Rhymix\Framework\Security::checkCSRF())
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
$member_srl = Context::get('member_srl');
|
||||
if(!$member_srl)
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// Get target member info
|
||||
$member_info = MemberModel::getMemberInfoByMemberSrl($member_srl);
|
||||
if(!$member_info || !$member_info->member_srl)
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
}
|
||||
|
||||
// Do not allow login as the super admin (member_srl = 4)
|
||||
if(intval($member_info->member_srl) === 4)
|
||||
{
|
||||
throw new Rhymix\Framework\Exceptions\NotPermitted;
|
||||
}
|
||||
|
||||
// Perform login as the target member
|
||||
// Session::login() sets the basic session variables, and setSessionInfo() populates Context with member details
|
||||
Rhymix\Framework\Session::login($member_info->member_srl);
|
||||
$oMemberController = getController('member');
|
||||
$oMemberController->setSessionInfo();
|
||||
|
||||
$this->setRedirectUrl(getNotEncodedUrl(''));
|
||||
}
|
||||
}
|
||||
/* End of file member.admin.controller.php */
|
||||
/* Location: ./modules/member/member.admin.controller.php */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue