如果因為管理員離職將后臺賬號刪除的話,那么管理員日志中將無法查看到該員工在職期間的操作記錄,為解決這一問題,我的思路不必刪除賬號,只需將賬號凍結(jié),員工操作日志永久保留,這是一種比較合理的處理方式。
第一步:修改數(shù)據(jù)庫,表ecs_admin_user增加一個字段status用來保存賬號狀態(tài)(1-正常,2-離職)。
ALTER TABLE ecs_admin_user ADD status SMALLINT( 5 ) UNSIGNED NOT NULL DEFAULT '1' COMMENT '賬號狀態(tài)';
第二步:修改相關(guān)語言文件,/languages/zh_cn/admin/privilege.php增加語言項。
$_LANG['login_freezing'] = '您輸入的帳號被凍結(jié),請聯(lián)系公司網(wǎng)站負(fù)責(zé)人。';
$_LANG['select_status'] = '賬號狀態(tài)';
$_LANG['normal'] = '正常';
$_LANG['left'] = '離職';
第三步:修改/admin/privilege.php,增加賬號狀態(tài)檢查。
1、$_REQUEST[‘act’] == 'signin'中添加代碼:
if ($row)
{
// 檢查是否為供貨商的管理員 所屬供貨商是否有效
if (!empty($row['suppliers_id']))
{
$supplier_is_check = suppliers_list_info(' is_check = 1 AND suppliers_id = ' . $row['suppliers_id']);
if (empty($supplier_is_check))
{
sys_msg($_LANG['login_disable'], 1);
}
}
/** 添加代碼開始 檢查帳號是否被凍結(jié) **/
if ($row['status'] == 2)
{
sys_msg($_LANG['login_freezing'], 1);
exit();
}
/** 添加代碼結(jié)束 檢查帳號是否被凍結(jié) **/
// 登錄成功
set_admin_session($row['user_id'], $row['user_name'], $row['action_list'], $row['last_login']);
$_SESSION['suppliers_id'] = $row['suppliers_id'];
}
2、文件末尾增加方法get_status_list,用來獲取賬號狀態(tài)。
function get_status_list()
{
$list = array();
$sql_id = 'SELECT user_id '.
'FROM ' .$GLOBALS['ecs']->table('admin_user');
$list = $GLOBALS['db']->getAll($sql_id);
$sql_st = 'SELECT distinct status '.
'FROM ' .$GLOBALS['ecs']->table('admin_user');
$list = $GLOBALS['db']->getAll($sql_st);
return $list;
}
3、$_REQUEST[‘act’] == 'signin'中修改語句為:
/* 檢查密碼是否正確 */
$sql = "SELECT user_id, user_name, password, last_login, action_list, last_login, suppliers_id, status".
" FROM " . $ecs->table('admin_user') .
" WHERE user_name = '" . $_POST['username']. "' AND password = '" . md5($_POST['password']) . "'";
4、添加管理員方法$_REQUEST[‘act’] == 'add'將賬號狀態(tài)賦值到模板:
$smarty->assign('select_status', get_status_list());
5、編輯管理員方法$_REQUEST[‘act’] == 'edit'''將賬號狀態(tài)賦值到模板:
/* 如果被編輯的管理員擁有了all這個權(quán)限,將不能編輯 */
if ($priv_str != 'all')
{
$smarty->assign('select_role', get_role_list());
$smarty->assign('select_status', get_status_list()); //添加的代碼
}
6、更新管理員信息方法$_REQUEST[‘act’] == ‘update’ || $_REQUEST[‘act’] == 'update_self''獲取表單中提交的賬號狀態(tài):
$admin_status = !empty($_REQUEST['status']) ? trim($_REQUEST['status']) : 1; //賬號狀態(tài)
//更新管理員信息
$sql = "UPDATE " .$ecs->table('admin_user'). " SET ".
"user_name = '$admin_name', ".
"email = '$admin_email', ".
"status = '$admin_status' ".
$action_list.
$role_id.
$password.
$nav_list.
"WHERE user_id = '$admin_id'";
7、更改獲取管理員列表get_admin_userlist方法:
function get_admin_userlist()
{
$list = array();
$sql = 'SELECT user_id, user_name, email, add_time, last_login, last_ip, status '. //增加status
'FROM ' .$GLOBALS['ecs']->table('admin_user').' ORDER BY user_id DESC';
$list = $GLOBALS['db']->getAll($sql);
foreach ($list AS $key=>$val)
{
$list[$key]['add_time'] = local_date($GLOBALS['_CFG']['time_format'], $val['add_time']);
$list[$key]['last_login'] = local_date($GLOBALS['_CFG']['time_format'], $val['last_login']);
}
return $list;
}
第四步:修改模板文件admin/templates/privilege_info.htm。
{if $select_role}
<tr>
<td class="label">{$lang.select_role}</td>
<td>
<select name="select_role">
<option value="">{$lang.select_please}</option>
{foreach from=$select_role item=list}
<option value="{$list.role_id}" {if $list.role_id eq $user.role_id } selected="selected" {/if} >{$list.role_name}</option>
{/foreach}
</select>
</td>
</tr>
{/if}
在以上代碼下添加加代碼:
{if $select_status}
<tr>
<td class="label">{$lang.select_status}</td>
<td>
<select name="status">
<option value="">{$lang.select_please}</option>
{foreach from=$select_status item=list}
<option value="{$list.status}">{if $list.status eq 1}{$lang.normal}{else}{$lang.left}{/if}</option>
{/foreach}
</select>
</td>
</tr>
{/if}
新聞熱點
疑難解答
圖片精選