Merge branch 'ent-9648-Notificaciones-por-defecto-en-creación-de-usuario' into 'develop'
Added control for add the notifications by default to users See merge request artica/pandorafms!5195
This commit is contained in:
commit
60a76530e0
|
@ -1,22 +1,38 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
// Pandora FMS - http://pandorafms.com
|
/**
|
||||||
// ==================================================
|
* MySQL Authentication functions.
|
||||||
// Copyright (c) 2005-2021 Artica Soluciones Tecnologicas
|
*
|
||||||
// Please see http://pandorafms.org for full contribution list
|
* @category Functions.
|
||||||
// This program is free software; you can redistribute it and/or
|
* @package Pandora FMS
|
||||||
// modify it under the terms of the GNU Lesser General Public License
|
* @subpackage Login.
|
||||||
// as published by the Free Software Foundation; version 2
|
* @version 1.0.0
|
||||||
// This program is distributed in the hope that it will be useful,
|
* @license See below
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
*
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* ______ ___ _______ _______ ________
|
||||||
// GNU General Public License for more details.
|
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||||
|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||||
|
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||||
|
*
|
||||||
|
* ============================================================================
|
||||||
|
* Copyright (c) 2005-2022 Artica Soluciones Tecnologicas
|
||||||
|
* Please see http://pandorafms.org for full contribution list
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation for version 2.
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
* ============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Begin.
|
||||||
/**
|
/**
|
||||||
* @package Include/auth
|
* @package Include/auth
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!isset($config)) {
|
if (isset($config) === false) {
|
||||||
die(
|
die(
|
||||||
'
|
'
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
|
@ -63,7 +79,7 @@ $config['user_can_update_password'] = true;
|
||||||
$config['admin_can_add_user'] = true;
|
$config['admin_can_add_user'] = true;
|
||||||
$config['admin_can_delete_user'] = true;
|
$config['admin_can_delete_user'] = true;
|
||||||
$config['admin_can_disable_user'] = false;
|
$config['admin_can_disable_user'] = false;
|
||||||
// currently not implemented
|
// Currently not implemented.
|
||||||
$config['admin_can_make_admin'] = true;
|
$config['admin_can_make_admin'] = true;
|
||||||
|
|
||||||
|
|
||||||
|
@ -544,7 +560,7 @@ function get_user_fullname($user)
|
||||||
/**
|
/**
|
||||||
* Gets the users email
|
* Gets the users email
|
||||||
*
|
*
|
||||||
* @param mixed User id.
|
* @param mixed $user User id.
|
||||||
*
|
*
|
||||||
* @return string The users email address
|
* @return string The users email address
|
||||||
*/
|
*/
|
||||||
|
@ -557,14 +573,14 @@ function get_user_email($user)
|
||||||
/**
|
/**
|
||||||
* Gets a Users info
|
* Gets a Users info
|
||||||
*
|
*
|
||||||
* @param mixed User id
|
* @param mixed $user User id.
|
||||||
*
|
*
|
||||||
* @return mixed An array of users
|
* @return mixed An array of users
|
||||||
*/
|
*/
|
||||||
function get_user_info($user)
|
function get_user_info($user)
|
||||||
{
|
{
|
||||||
static $cache_user_info = [];
|
static $cache_user_info = [];
|
||||||
if (array_key_exists($user, $cache_user_info)) {
|
if (array_key_exists($user, $cache_user_info) === true) {
|
||||||
return $cache_user_info[$user];
|
return $cache_user_info[$user];
|
||||||
} else {
|
} else {
|
||||||
$return = db_get_row('tusuario', 'id_user', get_user_id($user));
|
$return = db_get_row('tusuario', 'id_user', get_user_id($user));
|
||||||
|
@ -579,24 +595,19 @@ function get_user_info($user)
|
||||||
* We can't simplify this because some auth schemes (like LDAP) automatically (or it's at least cheaper to) return all the information
|
* We can't simplify this because some auth schemes (like LDAP) automatically (or it's at least cheaper to) return all the information
|
||||||
* Functions like get_user_info allow selection of specifics (in functions_db)
|
* Functions like get_user_info allow selection of specifics (in functions_db)
|
||||||
*
|
*
|
||||||
* @param string Field to order by (id_user, fullname or registered)
|
* @param mixed $order Field to order by (id_user, fullname or registered).
|
||||||
|
* @param string $filter Filter.
|
||||||
|
* @param string $fields Fields.
|
||||||
*
|
*
|
||||||
* @return array An array of user information
|
* @return array An array of user information
|
||||||
*/
|
*/
|
||||||
function get_users($order='fullname', $filter=false, $fields=false)
|
function get_users($order='fullname', $filter=false, $fields=false)
|
||||||
{
|
{
|
||||||
if (is_array($order)) {
|
if (is_array($order) === true) {
|
||||||
$filter['order'] = $order['field'].' '.$order['order'];
|
$filter['order'] = $order['field'].' '.$order['order'];
|
||||||
} else {
|
} else {
|
||||||
switch ($order) {
|
if ($order !== 'registered' || $order !== 'last_connect' || $order !== 'fullname') {
|
||||||
case 'registered':
|
$order = 'fullname';
|
||||||
case 'last_connect':
|
|
||||||
case 'fullname':
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
$order = 'fullname';
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$filter['order'] = $order.' ASC';
|
$filter['order'] = $order.' ASC';
|
||||||
|
@ -618,9 +629,11 @@ function get_users($order='fullname', $filter=false, $fields=false)
|
||||||
/**
|
/**
|
||||||
* Sets the last login for a user
|
* Sets the last login for a user
|
||||||
*
|
*
|
||||||
* @param string User id
|
* @param string $id_user User id.
|
||||||
|
*
|
||||||
|
* @return mixed.
|
||||||
*/
|
*/
|
||||||
function process_user_contact($id_user)
|
function process_user_contact(string $id_user)
|
||||||
{
|
{
|
||||||
return db_process_sql_update(
|
return db_process_sql_update(
|
||||||
'tusuario',
|
'tusuario',
|
||||||
|
@ -633,6 +646,10 @@ function process_user_contact($id_user)
|
||||||
/**
|
/**
|
||||||
* Create a new user
|
* Create a new user
|
||||||
*
|
*
|
||||||
|
* @param string $id_user Id User.
|
||||||
|
* @param string $password Password for this user.
|
||||||
|
* @param array $user_info Array with information of the user.
|
||||||
|
*
|
||||||
* @return boolean false
|
* @return boolean false
|
||||||
*/
|
*/
|
||||||
function create_user($id_user, $password, $user_info)
|
function create_user($id_user, $password, $user_info)
|
||||||
|
@ -643,16 +660,48 @@ function create_user($id_user, $password, $user_info)
|
||||||
$values['last_connect'] = 0;
|
$values['last_connect'] = 0;
|
||||||
$values['registered'] = get_system_time();
|
$values['registered'] = get_system_time();
|
||||||
|
|
||||||
return (@db_process_sql_insert('tusuario', $values)) !== false;
|
$output = (@db_process_sql_insert('tusuario', $values)) !== false;
|
||||||
|
|
||||||
|
// Add user to notification system.
|
||||||
|
if ($output !== false) {
|
||||||
|
if (isset($values['is_admin']) === true && (bool) $values['is_admin'] === true) {
|
||||||
|
// Administrator user must be activated in all notifications sections.
|
||||||
|
$notificationSources = db_get_all_rows_filter('tnotification_source', [], 'id');
|
||||||
|
foreach ($notificationSources as $notification) {
|
||||||
|
@db_process_sql_insert(
|
||||||
|
'tnotification_source_user',
|
||||||
|
[
|
||||||
|
'id_source' => $notification['id'],
|
||||||
|
'id_user' => $id_user,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Other users only will be activated in `Message` notifications.
|
||||||
|
$notificationSource = db_get_value('id', 'tnotification_source', 'description', 'Message');
|
||||||
|
@db_process_sql_insert(
|
||||||
|
'tnotification_source_user',
|
||||||
|
[
|
||||||
|
'id_source' => $notificationSource,
|
||||||
|
'id_user' => $id_user,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save password history
|
* Save password history
|
||||||
*
|
*
|
||||||
|
* @param string $id_user Id User.
|
||||||
|
* @param string $password Password of user.
|
||||||
|
*
|
||||||
* @return boolean false
|
* @return boolean false
|
||||||
*/
|
*/
|
||||||
function save_pass_history($id_user, $password)
|
function save_pass_history(string $id_user, string $password)
|
||||||
{
|
{
|
||||||
$values['id_user'] = $id_user;
|
$values['id_user'] = $id_user;
|
||||||
$values['password'] = md5($password);
|
$values['password'] = md5($password);
|
||||||
|
@ -665,9 +714,11 @@ function save_pass_history($id_user, $password)
|
||||||
/**
|
/**
|
||||||
* Deletes the user
|
* Deletes the user
|
||||||
*
|
*
|
||||||
* @param string User id
|
* @param string $id_user User id.
|
||||||
|
*
|
||||||
|
* @return boolean.
|
||||||
*/
|
*/
|
||||||
function delete_user($id_user)
|
function delete_user(string $id_user)
|
||||||
{
|
{
|
||||||
$result = db_process_sql_delete(
|
$result = db_process_sql_delete(
|
||||||
'tusuario_perfil',
|
'tusuario_perfil',
|
||||||
|
@ -685,6 +736,12 @@ function delete_user($id_user)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove from notification list as well.
|
||||||
|
$result = db_process_sql_delete(
|
||||||
|
'tnotification_source_user',
|
||||||
|
['id_user' => $id_user]
|
||||||
|
);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -693,15 +750,15 @@ function delete_user($id_user)
|
||||||
* Update the password in MD5 for user pass as id_user with
|
* Update the password in MD5 for user pass as id_user with
|
||||||
* password in plain text.
|
* password in plain text.
|
||||||
*
|
*
|
||||||
* @param string user User ID
|
* @param string $user User ID.
|
||||||
* @param string password Password in plain text.
|
* @param string $password_new Password in plain text.
|
||||||
*
|
*
|
||||||
* @return mixed False in case of error or invalid values passed. Affected rows otherwise
|
* @return mixed False in case of error or invalid values passed. Affected rows otherwise
|
||||||
*/
|
*/
|
||||||
function update_user_password($user, $password_new)
|
function update_user_password(string $user, string $password_new)
|
||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
if (isset($config['auth']) && $config['auth'] == 'pandora') {
|
if (isset($config['auth']) === true && $config['auth'] === 'pandora') {
|
||||||
$sql = sprintf(
|
$sql = sprintf(
|
||||||
"UPDATE tusuario SET password = '".md5($password_new)."', last_pass_change = '".date('Y-m-d H:i:s', get_system_time())."' WHERE id_user = '".$user."'"
|
"UPDATE tusuario SET password = '".md5($password_new)."', last_pass_change = '".date('Y-m-d H:i:s', get_system_time())."' WHERE id_user = '".$user."'"
|
||||||
);
|
);
|
||||||
|
@ -714,7 +771,7 @@ function update_user_password($user, $password_new)
|
||||||
);
|
);
|
||||||
$remote_pass_update = db_process_sql($sql, 'affected_rows', $connection);
|
$remote_pass_update = db_process_sql($sql, 'affected_rows', $connection);
|
||||||
|
|
||||||
if (!$remote_pass_update) {
|
if ((bool) $remote_pass_update === false) {
|
||||||
$config['auth_error'] = __('Could not changes password on remote pandora');
|
$config['auth_error'] = __('Could not changes password on remote pandora');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -735,14 +792,14 @@ function update_user_password($user, $password_new)
|
||||||
* Update the data of a user that user is choose with
|
* Update the data of a user that user is choose with
|
||||||
* id_user.
|
* id_user.
|
||||||
*
|
*
|
||||||
* @param string user User ID
|
* @param string $id_user User ID.
|
||||||
* @param array values Associative array with index as name of field and content.
|
* @param array $values Associative array with index as name of field and content.
|
||||||
*
|
*
|
||||||
* @return mixed False in case of error or invalid values passed. Affected rows otherwise
|
* @return mixed False in case of error or invalid values passed. Affected rows otherwise
|
||||||
*/
|
*/
|
||||||
function update_user($id_user, $values)
|
function update_user(string $id_user, array $values)
|
||||||
{
|
{
|
||||||
if (! is_array($values)) {
|
if (is_array($values) === false) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue