Exemplo n.º 1
0
function getUserFormData($userid, $isProfile = false)
{
    $config = select_config();
    $data = array('is_profile' => $isProfile);
    if (isset($userid)) {
        $users = API::User()->get(array('userids' => $userid, 'output' => API_OUTPUT_EXTEND));
        $user = reset($users);
    }
    if (isset($userid) && (!isset($_REQUEST['form_refresh']) || isset($_REQUEST['register']))) {
        $data['alias'] = $user['alias'];
        $data['name'] = $user['name'];
        $data['surname'] = $user['surname'];
        $data['password1'] = null;
        $data['password2'] = null;
        $data['url'] = $user['url'];
        $data['autologin'] = $user['autologin'];
        $data['autologout'] = $user['autologout'];
        $data['lang'] = $user['lang'];
        $data['theme'] = $user['theme'];
        $data['refresh'] = $user['refresh'];
        $data['rows_per_page'] = $user['rows_per_page'];
        $data['user_type'] = $user['type'];
        $data['messages'] = getMessageSettings();
        $userGroups = API::UserGroup()->get(array('userids' => $userid, 'output' => array('usrgrpid')));
        $userGroup = zbx_objectValues($userGroups, 'usrgrpid');
        $data['user_groups'] = zbx_toHash($userGroup);
        $data['user_medias'] = array();
        $dbMedia = DBselect('SELECT m.mediaid,m.mediatypeid,m.period,m.sendto,m.severity,m.active' . ' FROM media m' . ' WHERE m.userid=' . zbx_dbstr($userid));
        while ($dbMedium = DBfetch($dbMedia)) {
            $data['user_medias'][] = $dbMedium;
        }
        if ($data['autologout'] > 0) {
            $_REQUEST['autologout'] = $data['autologout'];
        }
    } else {
        $data['alias'] = getRequest('alias', '');
        $data['name'] = getRequest('name', '');
        $data['surname'] = getRequest('surname', '');
        $data['password1'] = getRequest('password1', '');
        $data['password2'] = getRequest('password2', '');
        $data['url'] = getRequest('url', '');
        $data['autologin'] = getRequest('autologin', 0);
        $data['autologout'] = getRequest('autologout', 900);
        $data['lang'] = getRequest('lang', 'en_gb');
        $data['theme'] = getRequest('theme', THEME_DEFAULT);
        $data['refresh'] = getRequest('refresh', 30);
        $data['rows_per_page'] = getRequest('rows_per_page', 50);
        $data['user_type'] = getRequest('user_type', USER_TYPE_ZABBIX_USER);
        $data['user_groups'] = getRequest('user_groups', array());
        $data['change_password'] = getRequest('change_password');
        $data['user_medias'] = getRequest('user_medias', array());
        // set messages
        $data['messages'] = getRequest('messages', array());
        if (!isset($data['messages']['enabled'])) {
            $data['messages']['enabled'] = 0;
        }
        if (!isset($data['messages']['sounds.recovery'])) {
            $data['messages']['sounds.recovery'] = 'alarm_ok.wav';
        }
        if (!isset($data['messages']['triggers.recovery'])) {
            $data['messages']['triggers.recovery'] = 0;
        }
        if (!isset($data['messages']['triggers.severities'])) {
            $data['messages']['triggers.severities'] = array();
        }
        $data['messages'] = array_merge(getMessageSettings(), $data['messages']);
    }
    // authentication type
    if ($data['user_groups']) {
        $data['auth_type'] = getGroupAuthenticationType($data['user_groups'], GROUP_GUI_ACCESS_INTERNAL);
    } else {
        $data['auth_type'] = $userid === null ? $config['authentication_type'] : getUserAuthenticationType($userid, GROUP_GUI_ACCESS_INTERNAL);
    }
    // set autologout
    if ($data['autologin'] || !isset($data['autologout'])) {
        $data['autologout'] = 0;
    }
    // set media types
    if (!empty($data['user_medias'])) {
        $mediaTypeDescriptions = array();
        $dbMediaTypes = DBselect('SELECT mt.mediatypeid,mt.description FROM media_type mt WHERE ' . dbConditionInt('mt.mediatypeid', zbx_objectValues($data['user_medias'], 'mediatypeid')));
        while ($dbMediaType = DBfetch($dbMediaTypes)) {
            $mediaTypeDescriptions[$dbMediaType['mediatypeid']] = $dbMediaType['description'];
        }
        foreach ($data['user_medias'] as &$media) {
            $media['description'] = $mediaTypeDescriptions[$media['mediatypeid']];
        }
        unset($media);
        CArrayHelper::sort($data['user_medias'], array('description', 'sendto'));
    }
    // set user rights
    if (!$data['is_profile']) {
        $data['groups'] = API::UserGroup()->get(array('usrgrpids' => $data['user_groups'], 'output' => array('usrgrpid', 'name')));
        order_result($data['groups'], 'name');
        $group_ids = array_values($data['user_groups']);
        if (count($group_ids) == 0) {
            $group_ids = array(-1);
        }
        $db_rights = DBselect('SELECT r.* FROM rights r WHERE ' . dbConditionInt('r.groupid', $group_ids));
        // deny beat all, read-write beat read
        $tmp_permitions = array();
        while ($db_right = DBfetch($db_rights)) {
            if (isset($tmp_permitions[$db_right['id']]) && $tmp_permitions[$db_right['id']] != PERM_DENY) {
                $tmp_permitions[$db_right['id']] = $db_right['permission'] == PERM_DENY ? PERM_DENY : max($tmp_permitions[$db_right['id']], $db_right['permission']);
            } else {
                $tmp_permitions[$db_right['id']] = $db_right['permission'];
            }
        }
        $data['user_rights'] = array();
        foreach ($tmp_permitions as $id => $permition) {
            array_push($data['user_rights'], array('id' => $id, 'permission' => $permition));
        }
    }
    return $data;
}
Exemplo n.º 2
0
} elseif (isset($_REQUEST['user_medias']) && isset($_REQUEST['disable_media'])) {
    if (isset($_REQUEST['user_medias'][$_REQUEST['disable_media']])) {
        $_REQUEST['user_medias'][$_REQUEST['disable_media']]['active'] = 1;
    }
} elseif (isset($_REQUEST['del_user_media'])) {
    $user_medias_to_del = getRequest('user_medias_to_del', array());
    foreach ($user_medias_to_del as $mediaid) {
        if (isset($_REQUEST['user_medias'][$mediaid])) {
            unset($_REQUEST['user_medias'][$mediaid]);
        }
    }
} elseif (isset($_REQUEST['cancel'])) {
    ob_end_clean();
    redirect(CWebUser::$data['last_page']['url']);
} elseif (hasRequest('update')) {
    $auth_type = getUserAuthenticationType(CWebUser::$data['userid']);
    if ($auth_type != ZBX_AUTH_INTERNAL) {
        $_REQUEST['password1'] = $_REQUEST['password2'] = null;
    } else {
        $_REQUEST['password1'] = getRequest('password1');
        $_REQUEST['password2'] = getRequest('password2');
    }
    if ($_REQUEST['password1'] != $_REQUEST['password2']) {
        show_error_message(_('Cannot update user. Both passwords must be equal.'));
    } elseif (isset($_REQUEST['password1']) && CWebUser::$data['alias'] == ZBX_GUEST_USER && !zbx_empty($_REQUEST['password1'])) {
        show_error_message(_('For guest, password must be empty'));
    } elseif (isset($_REQUEST['password1']) && CWebUser::$data['alias'] != ZBX_GUEST_USER && zbx_empty($_REQUEST['password1'])) {
        show_error_message(_('Password should not be empty'));
    } else {
        $user = array();
        $user['userid'] = CWebUser::$data['userid'];
Exemplo n.º 3
0
    if (isset($_REQUEST['user_medias'][$_REQUEST['enable_media']])) {
        $_REQUEST['user_medias'][$_REQUEST['enable_media']]['active'] = 0;
    }
} elseif (isset($_REQUEST['user_medias']) && isset($_REQUEST['disable_media'])) {
    if (isset($_REQUEST['user_medias'][$_REQUEST['disable_media']])) {
        $_REQUEST['user_medias'][$_REQUEST['disable_media']]['active'] = 1;
    }
} elseif (hasRequest('add') || hasRequest('update')) {
    $config = select_config();
    $isValid = true;
    $usrgrps = getRequest('user_groups', array());
    // authentication type
    if ($usrgrps) {
        $authType = getGroupAuthenticationType($usrgrps, GROUP_GUI_ACCESS_INTERNAL);
    } else {
        $authType = hasRequest('userid') ? getUserAuthenticationType(getRequest('userid'), GROUP_GUI_ACCESS_INTERNAL) : $config['authentication_type'];
    }
    // password validation
    if ($authType != ZBX_AUTH_INTERNAL) {
        if (hasRequest('password1')) {
            show_error_message(_s('Password is unavailable for users with %1$s.', authentication2str($authType)));
            $isValid = false;
        } else {
            if (hasRequest('userid')) {
                $_REQUEST['password1'] = null;
                $_REQUEST['password2'] = null;
            } else {
                $_REQUEST['password1'] = 'zabbix';
                $_REQUEST['password2'] = 'zabbix';
            }
        }