diff --git a/core/users/app_config.php b/core/users/app_config.php index 8fb8742306..ab28445906 100644 --- a/core/users/app_config.php +++ b/core/users/app_config.php @@ -214,7 +214,7 @@ $apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true"; $z++; $apps[$x]['db'][$y]['fields'][$z]['name'] = "api_key"; - $apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid"; + $apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "text"; $apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text"; $apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)"; $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = ""; diff --git a/core/users/user_edit.php b/core/users/user_edit.php index b52b14f071..6eb2e94828 100644 --- a/core/users/user_edit.php +++ b/core/users/user_edit.php @@ -26,7 +26,7 @@ */ //includes - include "root.php"; + require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; @@ -150,7 +150,7 @@ //check required values if ($username == '') { - message::add($text['message-required'].$text['label-username'], 'negative', 7500); + $invalid[] = $text['label-username']; } if ((permission_exists('user_edit') && $action == 'edit' && $username != $username_old && $username != '') || (permission_exists('user_add') && $action == 'add' && $username != '')) { @@ -174,47 +174,52 @@ if ($password == '') { message::add($text['message-password_blank'], 'negative', 7500); } - if ($user_email == '') { - message::add($text['message-required'].$text['label-email'], 'negative', 7500); - } if ($group_uuid_name == '') { - message::add($text['message-required'].$text['label-group'], 'negative', 7500); + $invalid[] = $text['label-group']; } } + if (!valid_email($user_email)) { + $invalid[] = $text['label-email']; + } if (strlen($password) > 0) { if (is_numeric($required['length']) && $required['length'] != 0) { if (strlen($password) < $required['length']) { - message::add($text['message-required'].$text['label-characters'], 'negative', 7500); + $invalid[] = $text['label-characters']; } } if ($required['number']) { if (!preg_match('/(?=.*[\d])/', $password)) { - message::add($text['message-required'].$text['label-numbers'], 'negative', 7500); + $invalid[] = $text['label-numbers']; } } if ($required['lowercase']) { if (!preg_match('/(?=.*[a-z])/', $password)) { - message::add($text['message-required'].$text['label-lowercase_letters'], 'negative', 7500); + $invalid[] = $text['label-lowercase_letters']; } } if ($required['uppercase']) { if (!preg_match('/(?=.*[A-Z])/', $password)) { - message::add($text['message-required'].$text['label-uppercase_letters'], 'negative', 7500); + $invalid[] = $text['label-uppercase_letters']; } } if ($required['special']) { if (!preg_match('/(?=.*[\W])/', $password)) { - message::add($text['message-required'].$text['label-special_characters'], 'negative', 7500); + $invalid[] = $text['label-special_characters']; } } } //return if error - if (message::count() != 0) { + if (message::count() != 0 || (is_array($invalid) && @sizeof($invalid) != 0)) { + if ($invalid) { message::add($text['message-required'].implode(', ', $invalid), 'negative', 7500); } + persistent_form_values('store', $_POST); header("Location: user_edit.php".(permission_exists('user_edit') && $action != 'add' ? "?id=".urlencode($user_uuid) : null)); exit; } + else { + persistent_form_values('clear'); + } //save the data $i = $n = $x = $c = 0; //set initial array indexes @@ -550,61 +555,77 @@ else { message::add($text['message-add'],'positive'); } - header("Location: user_edit.php?id=".urldecode($user_uuid)); + if ($domain_uuid == $_SESSION['domain_uuid']) { + //same domain, edit user + header("Location: user_edit.php?id=".urldecode($user_uuid)); + } + else { + //different domain, return to list + header('Location: users.php'); + } exit; } -//populate the form with values from db - if ($action == 'edit') { - $sql = "select * from v_users where user_uuid = :user_uuid "; - if (!permission_exists('user_all')) { - $sql .= "and domain_uuid = :domain_uuid "; - $parameters['domain_uuid'] = $domain_uuid; - } - $parameters['user_uuid'] = $user_uuid; - $database = new database; - $row = $database->select($sql, $parameters, 'row'); - if (is_array($row) && sizeof($row) > 0) { - $domain_uuid = $row["domain_uuid"]; - $user_uuid = $row["user_uuid"]; - $username = $row["username"]; - $user_email = $row["user_email"]; - $api_key = $row["api_key"]; - $user_enabled = $row["user_enabled"]; - if (permission_exists('contact_view')) { - $contact_uuid = $row["contact_uuid"]; - } - $user_status = $row["user_status"]; - } - else { - message::add($text['message-invalid_user'], 'negative', 7500); - header("Location: user_edit.php?id=".$_SESSION['user_uuid']); - exit; - } - unset($sql, $parameters, $row); - - //get user settings - $sql = "select * from v_user_settings "; - $sql .= "where user_uuid = :user_uuid "; - $sql .= "and user_setting_enabled = 'true' "; - $parameters['user_uuid'] = $user_uuid; - $database = new database; - $result = $database->select($sql, $parameters, 'all'); - if (is_array($result)) { - foreach($result as $row) { - $name = $row['user_setting_name']; - $category = $row['user_setting_category']; - $subcategory = $row['user_setting_subcategory']; - if (strlen($subcategory) == 0) { - //$$category[$name] = $row['domain_setting_value']; - $user_settings[$category][$name] = $row['user_setting_value']; +//populate form + if (persistent_form_values('exists')) { + //populate the form with values from session variable + persistent_form_values('load'); + //clear, set $unsaved flag + persistent_form_values('clear'); + } + else { + //populate the form with values from db + if ($action == 'edit') { + $sql = "select * from v_users where user_uuid = :user_uuid "; + if (!permission_exists('user_all')) { + $sql .= "and domain_uuid = :domain_uuid "; + $parameters['domain_uuid'] = $domain_uuid; + } + $parameters['user_uuid'] = $user_uuid; + $database = new database; + $row = $database->select($sql, $parameters, 'row'); + if (is_array($row) && sizeof($row) > 0) { + $domain_uuid = $row["domain_uuid"]; + $user_uuid = $row["user_uuid"]; + $username = $row["username"]; + $user_email = $row["user_email"]; + $api_key = $row["api_key"]; + $user_enabled = $row["user_enabled"]; + if (permission_exists('contact_view')) { + $contact_uuid = $row["contact_uuid"]; + } + $user_status = $row["user_status"]; } else { - $user_settings[$category][$subcategory][$name] = $row['user_setting_value']; + message::add($text['message-invalid_user'], 'negative', 7500); + header("Location: user_edit.php?id=".$_SESSION['user_uuid']); + exit; } + unset($sql, $parameters, $row); + + //get user settings + $sql = "select * from v_user_settings "; + $sql .= "where user_uuid = :user_uuid "; + $sql .= "and user_setting_enabled = 'true' "; + $parameters['user_uuid'] = $user_uuid; + $database = new database; + $result = $database->select($sql, $parameters, 'all'); + if (is_array($result)) { + foreach($result as $row) { + $name = $row['user_setting_name']; + $category = $row['user_setting_category']; + $subcategory = $row['user_setting_subcategory']; + if (strlen($subcategory) == 0) { + //$$category[$name] = $row['domain_setting_value']; + $user_settings[$category][$name] = $row['user_setting_value']; + } + else { + $user_settings[$category][$subcategory][$name] = $row['user_setting_value']; + } + } + } + unset($sql, $parameters, $result, $row); } - } - unset($sql, $parameters, $result, $row); } //create token @@ -653,7 +674,7 @@ echo "