首页 > 网站 > 建站经验 > 正文

ecshop管理员离职冻结账号

2024-04-25 20:32:27
字体:
来源:转载
供稿:网友

如果因为管理员离职将后台账号删除的话,那么管理员日志中将无法查看到该员工在职期间的操作记录,为解决这一问题,我的思路不必删除账号,只需将账号冻结,员工操作日志永久保留,这是一种比较合理的处理方式。

第一步:修改数据库,表ecs_admin_user增加一个字段status用来保存账号状态(1-正常,2-离职)。

ALTER TABLE ecs_admin_user ADD status SMALLINT( 5 ) UNSIGNED NOT NULL DEFAULT '1' COMMENT '账号状态';

第二步:修改相关语言文件,/languages/zh_cn/admin/privilege.php增加语言项。

$_LANG['login_freezing'] = '您输入的帐号被冻结,请联系公司网站负责人。';

$_LANG['select_status'] = '账号状态';

$_LANG['normal'] = '正常';

$_LANG['left'] = '离职';

第三步:修改/admin/privilege.php,增加账号状态检查。

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);

}

}

/** 添加代码开始 检查帐号是否被冻结 **/

if ($row['status'] == 2)

{

sys_msg($_LANG['login_freezing'], 1);

exit();

}

/** 添加代码结束 检查帐号是否被冻结 **/

// 登录成功

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,用来获取账号状态。

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'将账号状态赋值到模板:

$smarty->assign('select_status',  get_status_list());

5、编辑管理员方法$_REQUEST[‘act’] == 'edit'''将账号状态赋值到模板:

/* 如果被编辑的管理员拥有了all这个权限,将不能编辑 */

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''获取表单中提交的账号状态:

$admin_status = !empty($_REQUEST['status']) ? trim($_REQUEST['status']) : 1; //账号状态

//更新管理员信息

$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}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表