Esempio n. 1
0
/**
 * 删除角色
 *
 * @params arr  $filter  过滤条件
 */
function del_role($filter = array())
{
    global $_LANG;
    /* 根据角色信息(信任)删除 */
    if (is_array($filter['info']) && !empty($filter['info'])) {
        /* 系统内置角色,保留 */
        if (intval($filter['info']['role_id']) == 1) {
            return array('error' => 1, 'message' => $_LANG['lawless_submit']);
        }
        /* 子角色IDS(包括自身) */
        $ids = sub_role_id(array('info' => $filter['info']), true);
        /* 删除角色权限 */
        del_role_privilege(array('role_ids' => $ids));
        /* 重置管理员中的角色ID */
        $sql = 'UPDATE ' . tname('admin') . ' SET role_id=0 WHERE role_id IN("' . implode('","', $ids) . '")';
        $GLOBALS['db']->query($sql);
        /* 删除角色 */
        lrtree_del(array('table' => tname('role'), 'info' => $filter['info']));
        return array('error' => 0, 'message' => $_LANG['del_ok']);
    }
    return array('error' => 1, 'message' => $_LANG['fail_del']);
}
Esempio n. 2
0
    /* 数据提取并初始化$_POST */
    $fields = post_role('edit');
    /* 允许写入检查 */
    allow_write(info_parent_role(array('info' => $info)));
    /* ------ 当对角色的某一权限撤销时,其下级角色对该权限的拥有权也将被撤销 ---- */
    /* 取得提交的角色丢失的权限IDS */
    $role_privilege_ids = all_role_privilege_id(array('role_id' => $info['role_id']));
    $lost_privilege_ids = array_diff($role_privilege_ids, $_POST['privilege_ids']);
    /* 删除角色小于被编角色的且权限在 $lost_privilege_ids 中的权限 */
    $sub_role_ids = sub_role_id(array('info' => $info), false);
    del_role_privilege(array('role_ids' => $sub_role_ids, 'privilege_ids' => $lost_privilege_ids));
    /* ---------------------------------- END ----------------------------------- */
    /* 数据更新 */
    if ($db->update(tname('role'), $fields, 'role_id=' . $info['role_id'])) {
        /* 删除角色权限 */
        del_role_privilege(array('role_id' => $info['role_id']));
        /* 写入角色权限 */
        post_privilege_insert($info['role_id']);
        /* 写入日志 */
        admin_log(admin_privilege_name_fk('role.php', 'edit') . ': ' . $info['name']);
        /* 初始化权限系统的权限文件和系统提示 */
        init_privilege_sys_pfile();
        make_json_ok();
    }
} elseif ($_REQUEST['act'] == 'ufield') {
    /* 权限检查 */
    admin_privilege_valid('role.php', 'edit');
    /* 更新字段 - 角色名称 */
    if (in_array($_POST['field'], array('name'))) {
        /* 数据检查 */
        post_role_check(array($_POST['field'] => $_POST['val']));
Esempio n. 3
0
/**
 * 删除权限
 *
 * @params arr  $filter  过滤条件
 */
function del_privilege($filter)
{
    global $_LANG;
    /* 根据权限ID删除 */
    if (is_numeric($filter['privilege_id']) && intval($filter['privilege_id']) > 0) {
        /* 删除管理员权限和角色权限 */
        del_admin_privilege(array('privilege_id' => $filter['privilege_id']));
        del_role_privilege(array('privilege_id' => $filter['privilege_id']));
        /* 删除权限 */
        $GLOBALS['db']->delete(tname('privilege'), 'privilege_id=' . intval($filter['privilege_id']));
        return array('error' => 0, 'message' => $_LANG['del_ok']);
    }
    /* 根据模块ID删除 */
    if (is_numeric($filter['module_id']) && intval($filter['module_id']) > 0) {
        /* 取得模块的所有权限 */
        $priv_ids = privilege_ids(array('module_id' => $filter['module_id']));
        /* 删除管理员权限和角色权限 */
        del_admin_privilege(array('privilege_ids' => $priv_ids));
        del_role_privilege(array('privilege_ids' => $priv_ids));
        /* 删除权限 */
        $GLOBALS['db']->delete(tname('privilege'), 'module_id=' . intval($filter['module_id']));
        return array('error' => 0, 'message' => $_LANG['del_ok']);
    }
    return array('error' => 1, 'message' => $_LANG['fail_del']);
}