Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions modules/member/conf/module.xml
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@
<action name="procMemberAdminUpdateGroupOrder" type="controller" />
<action name="procMemberAdminUpdateMembersGroup" type="controller" ruleset="manageMemberGroup" />
<action name="procMemberAdminDeleteMembers" type="controller" />
<action name="procMemberAdminLoginAs" type="controller" />
</actions>
<eventHandlers>
<eventHandler after="document.getDocumentMenu" class="controller" method="triggerGetDocumentMenu" />
Expand Down
3 changes: 3 additions & 0 deletions modules/member/lang/en.php
Original file line number Diff line number Diff line change
Expand Up @@ -407,3 +407,6 @@
$lang->member_number = 'Member identification number';
$lang->msg_change_after_click = 'Change after clicking link below';
$lang->msg_password_changed = 'Your password has been changed.';

$lang->cmd_login_as = 'Login as this member';
$lang->msg_confirm_login_as = 'Are you sure you want to login as this member? Your current admin session will be terminated.';
3 changes: 3 additions & 0 deletions modules/member/lang/ko.php
Original file line number Diff line number Diff line change
Expand Up @@ -411,3 +411,6 @@
$lang->member_number = '회원 번호';
$lang->msg_change_after_click = '아래 링크 클릭 후 변경 가능';
$lang->msg_password_changed = '비밀번호가 변경되었습니다.';

$lang->cmd_login_as = '해당 회원으로 로그인';
$lang->msg_confirm_login_as = '해당 회원으로 로그인하시겠습니까? 현재 관리자 세션이 종료됩니다.';
41 changes: 41 additions & 0 deletions modules/member/member.admin.controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -1802,6 +1802,47 @@ function moveJoinFormDown($member_join_form_srl)

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 */
21 changes: 20 additions & 1 deletion modules/member/tpl/member_list.html
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,12 @@ <h1>{$lang->user_list}</h1>
{zdate($member_info['last_login'], 'Y-m-d')}
</td>
<td class="rx_detail_marks">{$member_info['group_list']}&nbsp;</td>
<td class="nowr"><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminInsert', 'member_srl', $member_info['member_srl'])}">{$lang->inquiry}/{$lang->cmd_modify}</a></td>
<td class="nowr">
<a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminInsert', 'member_srl', $member_info['member_srl'])}">{$lang->inquiry}/{$lang->cmd_modify}</a>
<!--@if($member_info['member_srl'] != 4)-->
<a href="#" class="_login_as" data-member-srl="{$member_info['member_srl']}">{$lang->cmd_login_as}</a>
<!--@end-->
</td>
{@$used_values = ''}
<!--@foreach($usedIdentifiers as $name=>$title)-->
{@$used_values .= "\t".$member_info[$name]}
Expand Down Expand Up @@ -245,5 +250,19 @@ <h3>{$lang->about_send_message}</h3>
}
}
});
// Login as member
$('a._login_as').click(function(e){
e.preventDefault();
if(!confirm('{$lang->msg_confirm_login_as}')) return;
var member_srl = $(this).data('member-srl');
var $form = $('#loginAsForm');
$form.find('input[name=member_srl]').val(member_srl);
$form.submit();
});
});
</script>
<form id="loginAsForm" action="./" method="post" style="display:none">
<input type="hidden" name="module" value="member" />
<input type="hidden" name="act" value="procMemberAdminLoginAs" />
<input type="hidden" name="member_srl" value="" />
</form>