Merge branch 'ent-6034-Improvement-of-the-UM-profile' into 'develop'
Ent 6034 improvement of the um profile See merge request artica/pandorafms!3375
This commit is contained in:
commit
f9852f087c
|
@ -112,14 +112,88 @@ if (! check_acl($config['id_user'], 0, 'UM')) {
|
|||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Disabled at the moment.
|
||||
if (!check_referer()) {
|
||||
require ("general/noaccess.php");
|
||||
if (is_ajax()) {
|
||||
$delete_profile = (bool) get_parameter('delete_profile');
|
||||
if ($delete_profile) {
|
||||
$id2 = (string) get_parameter('id_user');
|
||||
$id_up = (int) get_parameter('id_user_profile');
|
||||
|
||||
return;
|
||||
$perfilUser = db_get_row('tusuario_perfil', 'id_up', $id_up);
|
||||
$id_perfil = $perfilUser['id_perfil'];
|
||||
$perfil = db_get_row('tperfil', 'id_perfil', $id_perfil);
|
||||
|
||||
db_pandora_audit(
|
||||
'User management',
|
||||
'Deleted profile for user '.io_safe_input($id2),
|
||||
false,
|
||||
false,
|
||||
'The profile with id '.$id_perfil.' in the group '.$perfilUser['id_grupo']
|
||||
);
|
||||
|
||||
$return = profile_delete_user_profile($id2, $id_up);
|
||||
ui_print_result_message(
|
||||
$return,
|
||||
__('Successfully deleted'),
|
||||
__('Could not be deleted')
|
||||
);
|
||||
|
||||
|
||||
$has_profile = db_get_row('tusuario_perfil', 'id_usuario', $id2);
|
||||
if ($has_profile == false) {
|
||||
$result = delete_user($id2);
|
||||
|
||||
if ($result) {
|
||||
db_pandora_audit(
|
||||
'User management',
|
||||
__('Deleted user %s', io_safe_input($id_user))
|
||||
);
|
||||
}
|
||||
|
||||
ui_print_result_message(
|
||||
$result,
|
||||
__('Successfully deleted'),
|
||||
__('There was a problem deleting the user')
|
||||
);
|
||||
|
||||
// Delete the user in all the consoles
|
||||
if (defined('METACONSOLE')) {
|
||||
$servers = metaconsole_get_servers();
|
||||
foreach ($servers as $server) {
|
||||
// Connect to the remote console
|
||||
metaconsole_connect($server);
|
||||
|
||||
// Delete the user
|
||||
$result = delete_user($id_user);
|
||||
if ($result) {
|
||||
db_pandora_audit(
|
||||
'User management',
|
||||
__('Deleted user %s from metaconsole', io_safe_input($id_user))
|
||||
);
|
||||
}
|
||||
|
||||
// Restore the db connection
|
||||
metaconsole_restore_db();
|
||||
|
||||
// Log to the metaconsole too
|
||||
if ($result) {
|
||||
db_pandora_audit(
|
||||
'User management',
|
||||
__('Deleted user %s from %s', io_safe_input($id_user), io_safe_input($server['server_name']))
|
||||
);
|
||||
}
|
||||
|
||||
ui_print_result_message(
|
||||
$result,
|
||||
__('Successfully deleted from %s', io_safe_input($server['server_name'])),
|
||||
__('There was a problem deleting the user from %s', io_safe_input($server['server_name']))
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
$tab = get_parameter('tab', 'user');
|
||||
|
||||
|
@ -168,9 +242,9 @@ if ($config['user_can_update_info']) {
|
|||
$new_user = (bool) get_parameter('new_user');
|
||||
$create_user = (bool) get_parameter('create_user');
|
||||
$add_profile = (bool) get_parameter('add_profile');
|
||||
$delete_profile = (bool) get_parameter('delete_profile');
|
||||
$update_user = (bool) get_parameter('update_user');
|
||||
$status = get_parameter('status', -1);
|
||||
$json_profile = get_parameter('json_profile', '');
|
||||
|
||||
// Reset status var if current action is not update_user
|
||||
if ($new_user || $create_user || $add_profile
|
||||
|
@ -372,6 +446,41 @@ if ($create_user) {
|
|||
|
||||
$user_info = get_user_info($id);
|
||||
$new_user = false;
|
||||
|
||||
if (!empty($json_profile)) {
|
||||
$json_profile = json_decode(io_safe_output($json_profile), true);
|
||||
foreach ($json_profile as $key => $profile) {
|
||||
if (!empty($profile)) {
|
||||
$group2 = $profile['group'];
|
||||
$profile2 = $profile['profile'];
|
||||
$tags = $profile['tags'];
|
||||
foreach ($tags as $k => $tag) {
|
||||
if (empty($tag)) {
|
||||
unset($tags[$k]);
|
||||
}
|
||||
}
|
||||
|
||||
$tags = implode(',', $tags);
|
||||
$no_hierarchy = $profile['hierarchy'];
|
||||
|
||||
db_pandora_audit(
|
||||
'User management',
|
||||
'Added profile for user '.io_safe_input($id2),
|
||||
false,
|
||||
false,
|
||||
'Profile: '.$profile2.' Group: '.$group2.' Tags: '.$tags
|
||||
);
|
||||
|
||||
$result_profile = profile_create_user_profile($id, $profile2, $group2, false, $tags, $no_hierarchy);
|
||||
|
||||
ui_print_result_message(
|
||||
$result_profile,
|
||||
__('Profile added successfully'),
|
||||
__('Profile cannot be added')
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$user_info = $values;
|
||||
$new_user = true;
|
||||
|
@ -598,7 +707,7 @@ if ($status != -1) {
|
|||
);
|
||||
}
|
||||
|
||||
if ($add_profile) {
|
||||
if ($add_profile && empty($json_profile)) {
|
||||
$id2 = (string) get_parameter('id');
|
||||
$group2 = (int) get_parameter('assign_group');
|
||||
$profile2 = (int) get_parameter('assign_profile');
|
||||
|
@ -628,34 +737,38 @@ if ($add_profile) {
|
|||
);
|
||||
}
|
||||
|
||||
if ($delete_profile) {
|
||||
$id2 = (string) get_parameter('id_user');
|
||||
$id_up = (int) get_parameter('id_user_profile');
|
||||
|
||||
$perfilUser = db_get_row('tusuario_perfil', 'id_up', $id_up);
|
||||
$id_perfil = $perfilUser['id_perfil'];
|
||||
$perfil = db_get_row('tperfil', 'id_perfil', $id_perfil);
|
||||
|
||||
db_pandora_audit(
|
||||
'User management',
|
||||
'Deleted profile for user '.io_safe_input($id2),
|
||||
false,
|
||||
false,
|
||||
'The profile with id '.$id_perfil.' in the group '.$perfilUser['id_grupo']
|
||||
);
|
||||
|
||||
$return = profile_delete_user_profile($id2, $id_up);
|
||||
ui_print_result_message(
|
||||
$return,
|
||||
__('Successfully deleted'),
|
||||
__('Could not be deleted')
|
||||
);
|
||||
}
|
||||
|
||||
if ($values) {
|
||||
$user_info = $values;
|
||||
}
|
||||
|
||||
if (!users_is_admin() && $config['id_user'] != $id && !$new_user) {
|
||||
$group_um = users_get_groups_UM($config['id_user']);
|
||||
if (isset($group_um[0])) {
|
||||
$group_um_string = implode(',', array_keys(users_get_groups($config['id_user'], 'um', true)));
|
||||
} else {
|
||||
$group_um_string = implode(',', array_keys($group_um));
|
||||
}
|
||||
|
||||
$sql = sprintf(
|
||||
"SELECT tusuario_perfil.* FROM tusuario_perfil
|
||||
INNER JOIN tperfil ON tperfil.id_perfil = tusuario_perfil.id_perfil
|
||||
WHERE id_usuario like '%s' AND id_grupo IN (%s) AND user_management = 0",
|
||||
$id,
|
||||
$group_um_string
|
||||
);
|
||||
|
||||
$result = db_get_all_rows_sql($sql);
|
||||
if ($result == false || $user_info['is_admin']) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access User Management'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (defined('METACONSOLE')) {
|
||||
if ($id) {
|
||||
echo '<div class="user_form_title">'.__('Update User').'</div>';
|
||||
|
@ -762,19 +875,22 @@ if ($config['user_can_update_password']) {
|
|||
$own_info = get_user_info($config['id_user']);
|
||||
$global_profile = '<div class="label_select_simple user_global_profile" ><span class="input_label" style="margin:0;">'.__('Global Profile').'</span>';
|
||||
$global_profile .= '<div class="switch_radio_button">';
|
||||
$global_profile .= html_print_radio_button_extended(
|
||||
'is_admin',
|
||||
1,
|
||||
[
|
||||
'label' => __('Administrator'),
|
||||
'help_tip' => __('This user has permissions to manage all. An admin user should not requiere additional group permissions, except for using Enterprise ACL.'),
|
||||
],
|
||||
$user_info['is_admin'],
|
||||
false,
|
||||
'',
|
||||
'',
|
||||
true
|
||||
);
|
||||
if (users_is_admin()) {
|
||||
$global_profile .= html_print_radio_button_extended(
|
||||
'is_admin',
|
||||
1,
|
||||
[
|
||||
'label' => __('Administrator'),
|
||||
'help_tip' => __('This user has permissions to manage all. An admin user should not requiere additional group permissions, except for using Enterprise ACL.'),
|
||||
],
|
||||
$user_info['is_admin'],
|
||||
false,
|
||||
'',
|
||||
'',
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
$global_profile .= html_print_radio_button_extended(
|
||||
'is_admin',
|
||||
0,
|
||||
|
@ -1027,7 +1143,7 @@ if ($meta) {
|
|||
$metaconsole_access_node .= html_print_checkbox('metaconsole_access_node', 1, $user_info['metaconsole_access_node'], true).'</div>';
|
||||
}
|
||||
|
||||
echo '<form method="post" autocomplete="off">';
|
||||
echo '<form id="user_profile_form" method="post" autocomplete="off">';
|
||||
|
||||
|
||||
if (!$id) {
|
||||
|
@ -1067,14 +1183,19 @@ if (!is_metaconsole()) {
|
|||
echo $search_custom_fields_view.$metaconsole_agents_manager.$metaconsole_assigned_server.$metaconsole_access_node;
|
||||
}
|
||||
|
||||
echo '</div>
|
||||
</div>
|
||||
echo '</div>
|
||||
</div>
|
||||
|
||||
<div class="user_edit_third_row white_box">
|
||||
<div class="edit_user_comments">'.$comments.'</div>
|
||||
</div>
|
||||
<div class="user_edit_third_row white_box">'.$ehorus.'</div>
|
||||
</div>';
|
||||
if (!empty($ehorus)) {
|
||||
echo '<div class="user_edit_third_row white_box">'.$ehorus.'</div>';
|
||||
}
|
||||
|
||||
echo '</div>';
|
||||
|
||||
profile_print_profile_table($id);
|
||||
|
||||
echo '<div style="width: 100%" class="action-buttons">';
|
||||
if ($config['admin_can_add_user']) {
|
||||
|
@ -1088,16 +1209,15 @@ if ($config['admin_can_add_user']) {
|
|||
}
|
||||
}
|
||||
|
||||
html_print_input_hidden('json_profile', '');
|
||||
|
||||
echo '</div>';
|
||||
echo '</form>';
|
||||
echo '<br />';
|
||||
|
||||
// Don't show anything else if we're creating an user
|
||||
if (!empty($id) && !$new_user) {
|
||||
profile_print_profile_table($id);
|
||||
}
|
||||
|
||||
enterprise_hook('close_meta_frame');
|
||||
$delete_image = html_print_input_image('del', 'images/cross.png', 1, '', true, ['onclick' => 'delete_profile(event, this)']);
|
||||
|
||||
|
||||
if (!is_metaconsole()) {
|
||||
?>
|
||||
|
@ -1132,13 +1252,14 @@ if (!is_metaconsole()) {
|
|||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
var json_profile = $('#hidden-json_profile');
|
||||
/* <![CDATA[ */
|
||||
$(document).ready (function () {
|
||||
$('input:radio[name="is_admin"]').change(function() {
|
||||
if($('#radiobtn0002').prop('checked')) {
|
||||
$('#metaconsole_agents_manager_div').show();
|
||||
$('#metaconsole_access_node_div').show();
|
||||
if($('#checkbox-metaconsole_agents_manager').prop('checked')) {
|
||||
if($('#checkbox-metaconsole_agents_manager').prop('checked')) {
|
||||
$('#metaconsole_assigned_server_div').show();
|
||||
}
|
||||
}
|
||||
|
@ -1167,8 +1288,105 @@ $(document).ready (function () {
|
|||
});
|
||||
$('#checkbox-ehorus_user_level_enabled').trigger('change');
|
||||
|
||||
var img_delete = '<?php echo $delete_image; ?>';
|
||||
var id_user = '<?php echo $id; ?>';
|
||||
var data = [];
|
||||
|
||||
$('input:image[name="add"]').click(function (e) {
|
||||
e.preventDefault();
|
||||
var profile = $('#assign_profile').val();
|
||||
var profile_text = $('#assign_profile option:selected').text();
|
||||
var group = $('#assign_group').val();
|
||||
var group_text = $('#assign_group option:selected').text();
|
||||
var tags = $('#assign_tags').val();
|
||||
var tags_text = $('#assign_tags option:selected').toArray().map(item => item.text).join();
|
||||
if ( $('#checkbox-no_hierarchy').is(':checked')) {
|
||||
var hierarchy = 1;
|
||||
var hierarchy_text = '<?php echo __('yes'); ?>';
|
||||
} else {
|
||||
var hierarchy = 0;
|
||||
var hierarchy_text = '<?php echo __('no'); ?>';
|
||||
}
|
||||
|
||||
if (profile === '0' || group === '-1') {
|
||||
alert('<?php echo __('please select profile and group'); ?>');
|
||||
return;
|
||||
}
|
||||
|
||||
if (id_user === '') {
|
||||
let new_json = `{"profile":${profile},"group":${group},"tags":[${tags}],"hierarchy":${hierarchy}}`;
|
||||
data.push(new_json);
|
||||
json_profile.val('['+data+']');
|
||||
$('#table_profiles tr:last').before(
|
||||
`<tr>
|
||||
<td>${profile_text}</td>
|
||||
<td>${group_text}</td>
|
||||
<td>${tags_text}</td>
|
||||
<td>${hierarchy_text}</td>
|
||||
<td>${img_delete}</td>
|
||||
</tr>`
|
||||
);
|
||||
} else {
|
||||
this.form.submit();
|
||||
}
|
||||
});
|
||||
|
||||
$('input:image[name="del"]').click(function (e) {
|
||||
e.preventDefault();
|
||||
var rows = $("#table_profiles tr").length;
|
||||
if (rows <= 3) {
|
||||
if (!confirm('<?php echo __('Deleting last profile'); ?>' + '. ' + '<?php echo __('Are you sure?'); ?>')) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var id_user_profile = $(this).siblings();
|
||||
id_user_profile = id_user_profile[1].value;
|
||||
var row = $(this).closest('tr');
|
||||
|
||||
var params = [];
|
||||
params.push("delete_profile=1");
|
||||
params.push("id_user=" + id_user);
|
||||
params.push("id_user_profile=" + id_user_profile);
|
||||
params.push("page=godmode/users/configure_user");
|
||||
jQuery.ajax ({
|
||||
data: params.join ("&"),
|
||||
type: 'POST',
|
||||
url: action="<?php echo ui_get_full_url('ajax.php', false, false, false); ?>",
|
||||
success: function (data) {
|
||||
row.remove();
|
||||
var rows = $("#table_profiles tr").length;
|
||||
if (rows <= 2) {
|
||||
window.location.replace("<?php echo ui_get_full_url('index.php?sec=gusuarios&sec2=godmode/users/user_list&tab=user&pure=0', false, false, false); ?>");
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('#submit-crtbutton').click(function (e) {
|
||||
e.preventDefault();
|
||||
var rows = $("#table_profiles tr").length;
|
||||
if (rows <= 2) {
|
||||
alert('<?php echo __('please add a profile'); ?>');
|
||||
} else {
|
||||
this.form.submit();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function delete_profile(event, btn) {
|
||||
event.preventDefault();
|
||||
var row = btn.parentNode.parentNode;
|
||||
var position = row.rowIndex;
|
||||
row.parentNode.removeChild(row);
|
||||
|
||||
var json = json_profile.val();
|
||||
var test = JSON.parse(json);
|
||||
delete test[position-1];
|
||||
json_profile.val(JSON.stringify(test));
|
||||
|
||||
}
|
||||
|
||||
function show_data_section () {
|
||||
section = $("#section").val();
|
||||
|
||||
|
|
|
@ -356,10 +356,23 @@ if (!defined('METACONSOLE')) {
|
|||
$table->valign[6] = 'top';
|
||||
}
|
||||
|
||||
$group_um = users_get_groups_UM($config['id_user']);
|
||||
if (isset($group_um[0])) {
|
||||
$group_um_string = implode(',', array_keys(users_get_groups($config['id_user'], 'um', true)));
|
||||
} else {
|
||||
$group_um_string = implode(',', array_keys($group_um));
|
||||
}
|
||||
|
||||
|
||||
$info1 = [];
|
||||
|
||||
$info1 = get_users($order);
|
||||
// Is admin or has group permissions all.
|
||||
if (users_is_admin() || isset($group_um[0])) {
|
||||
$info1 = get_users($order);
|
||||
} else {
|
||||
foreach ($group_um as $group => $value) {
|
||||
$info1 = array_merge($info1, users_get_users_by_group($group, $value));
|
||||
}
|
||||
}
|
||||
|
||||
// Filter the users
|
||||
if ($search) {
|
||||
|
@ -400,33 +413,7 @@ if ($search) {
|
|||
}
|
||||
}
|
||||
|
||||
// ~
|
||||
// ~ $filter_group
|
||||
// ~ $filter_search
|
||||
// ~
|
||||
$info = [];
|
||||
$own_info = get_user_info($config['id_user']);
|
||||
$own_groups = users_get_groups($config['id_user'], 'AR', $own_info['is_admin']);
|
||||
|
||||
if ($own_info['is_admin']) {
|
||||
$info = $info1;
|
||||
}
|
||||
// If user is not admin then don't display admin users and user of others groups.
|
||||
else {
|
||||
foreach ($info1 as $key => $usr) {
|
||||
$u = get_user_info($key);
|
||||
$g = users_get_groups($key, false, $u['is_admin']);
|
||||
$result = array_intersect($g, $own_groups);
|
||||
|
||||
// Show users without profile too.
|
||||
if (!empty($result) || (db_get_all_rows_field_filter('tusuario_perfil', 'id_usuario', $usr['id_user']) === false)) {
|
||||
$info[$key] = $usr;
|
||||
}
|
||||
|
||||
unset($u);
|
||||
unset($g);
|
||||
}
|
||||
}
|
||||
$info = $info1;
|
||||
|
||||
// Prepare pagination
|
||||
ui_pagination(count($info));
|
||||
|
@ -438,9 +425,41 @@ $rowPair = true;
|
|||
$iterator = 0;
|
||||
$cont = 0;
|
||||
foreach ($info as $user_id => $user_info) {
|
||||
if (!users_is_admin() && $user_info['is_admin']) {
|
||||
// If user is not admin then don't display admin users.
|
||||
continue;
|
||||
}
|
||||
|
||||
// User profiles.
|
||||
if (users_is_admin() || $user_id == $config['id_user']) {
|
||||
$user_profiles = db_get_all_rows_field_filter('tusuario_perfil', 'id_usuario', $user_id);
|
||||
} else {
|
||||
$user_profiles_aux = users_get_user_profile($user_id);
|
||||
$user_profiles = [];
|
||||
foreach ($group_um as $key => $value) {
|
||||
if (isset($user_profiles_aux[$key])) {
|
||||
$user_profiles[$key] = $user_profiles_aux[$key];
|
||||
if ($user_profiles_aux[$key]['user_management'] == 1) {
|
||||
$user_info['edit'] = 0;
|
||||
} else {
|
||||
$user_info['edit'] = 1;
|
||||
}
|
||||
|
||||
unset($user_profiles_aux[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($user_profiles_aux)) {
|
||||
$user_info['not_delete'] = 1;
|
||||
}
|
||||
|
||||
if ($user_profiles == false) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$cont++;
|
||||
|
||||
//
|
||||
// Manual pagination due the complicated process of the ACL data
|
||||
if ($cont <= $offset) {
|
||||
continue;
|
||||
|
@ -464,12 +483,14 @@ foreach ($info as $user_id => $user_info) {
|
|||
|
||||
$iterator++;
|
||||
|
||||
$data[0] = '<a href="index.php?sec='.$sec.'&sec2=godmode/users/configure_user&pure='.$pure.'&id='.$user_id.'">'.$user_id.'</a>';
|
||||
if (users_is_admin() || $config['id_user'] == $user_info['id_user'] || (!$user_info['is_admin'] && (!isset($user_info['edit']) || (isset($user_info['edit']) && $user_info['edit'])))) {
|
||||
$data[0] = '<a href="index.php?sec='.$sec.'&sec2=godmode/users/configure_user&pure='.$pure.'&id='.$user_id.'">'.$user_id.'</a>';
|
||||
} else {
|
||||
$data[0] = $user_id;
|
||||
}
|
||||
|
||||
$data[1] = '<ul style="margin-top: 0 !important; margin-left: auto !important; padding-left: 10px !important; list-style-type: none !important;">';
|
||||
$data[1] .= '<li>'.$user_info['fullname'].'</li>';
|
||||
/*
|
||||
$data[1] .= '<li><b>' . __('First name') . ':</b> ' . $user_info["firstname"] . '</li>';
|
||||
$data[1] .= '<li><b>' . __('Last name') . ':</b> ' . $user_info["lastname"] . '</li>';*/
|
||||
$data[1] .= '<li>'.$user_info['phone'].'</li>';
|
||||
$data[1] .= '<li>'.$user_info['email'].'</li>';
|
||||
$data[1] .= '</ul>';
|
||||
|
@ -485,20 +506,14 @@ foreach ($info as $user_id => $user_info) {
|
|||
]
|
||||
).' ';
|
||||
} else {
|
||||
/*
|
||||
$data[3] = html_print_image ("images/user_green.png", true,
|
||||
array ("alt" => __('User'),
|
||||
"title" => __('Standard User'))) . ' ';
|
||||
*/
|
||||
$data[3] = '';
|
||||
}
|
||||
|
||||
$data[4] = '';
|
||||
$result = db_get_all_rows_field_filter('tusuario_perfil', 'id_usuario', $user_id);
|
||||
if ($result !== false) {
|
||||
if ($user_profiles !== false) {
|
||||
if (defined('METACONSOLE')) {
|
||||
$data[4] .= "<div width='100%'>";
|
||||
foreach ($result as $row) {
|
||||
foreach ($user_profiles as $row) {
|
||||
$data[4] .= "<div style='float:left;'>";
|
||||
$data[4] .= profile_get_name($row['id_perfil']);
|
||||
$data[4] .= ' / </div>';
|
||||
|
@ -512,7 +527,7 @@ foreach ($info as $user_id => $user_info) {
|
|||
$data[4] .= '</div>';
|
||||
} else {
|
||||
$data[4] .= "<table width='100%'>";
|
||||
foreach ($result as $row) {
|
||||
foreach ($user_profiles as $row) {
|
||||
$data[4] .= '<tr>';
|
||||
$data[4] .= '<td>';
|
||||
$data[4] .= profile_get_name($row['id_perfil']);
|
||||
|
@ -531,21 +546,26 @@ foreach ($info as $user_id => $user_info) {
|
|||
$data[5] = ui_print_string_substr($user_info['comments'], 24, true);
|
||||
|
||||
$table->cellclass[][6] = 'action_buttons';
|
||||
if ($user_info['disabled'] == 0) {
|
||||
$data[6] = '<a href="index.php?sec='.$sec.'&sec2=godmode/users/user_list&disable_user=1&pure='.$pure.'&id='.$user_info['id_user'].'">'.html_print_image('images/lightbulb.png', true, ['title' => __('Disable')]).'</a>';
|
||||
} else {
|
||||
$data[6] = '<a href="index.php?sec='.$sec.'&sec2=godmode/users/user_list&disable_user=0&pure='.$pure.'&id='.$user_info['id_user'].'">'.html_print_image('images/lightbulb_off.png', true, ['title' => __('Enable')]).'</a>';
|
||||
}
|
||||
|
||||
$data[6] .= '<a href="index.php?sec='.$sec.'&sec2=godmode/users/configure_user&pure='.$pure.'&id='.$user_id.'">'.html_print_image('images/config.png', true, ['title' => __('Edit')]).'</a>';
|
||||
if ($config['admin_can_delete_user'] && $user_info['id_user'] != $config['id_user']) {
|
||||
$data[6] .= "<a href='index.php?sec=".$sec.'&sec2=godmode/users/user_list&user_del=1&pure='.$pure.'&delete_user='.$user_info['id_user']."'>".html_print_image('images/cross.png', true, ['title' => __('Delete'), 'onclick' => "if (! confirm ('".__('Deleting User').' '.$user_info['id_user'].'. '.__('Are you sure?')."')) return false"]).'</a>';
|
||||
if (defined('METACONSOLE')) {
|
||||
$data[6] .= "<a href='index.php?sec=".$sec.'&sec2=godmode/users/user_list&user_del=1&pure='.$pure.'&delete_user='.$user_info['id_user']."&delete_all=1'>".html_print_image('images/cross_double.png', true, ['title' => __('Delete from all consoles'), 'onclick' => "if (! confirm ('".__('Deleting User %s from all consoles', $user_info['id_user']).'. '.__('Are you sure?')."')) return false"]).'</a>';
|
||||
$data[6] = '';
|
||||
if (users_is_admin() || $config['id_user'] == $user_info['id_user'] || (!$user_info['is_admin'] && (!isset($user_info['edit']) || (isset($user_info['edit']) && $user_info['edit'])))) {
|
||||
if (!isset($user_info['not_delete'])) {
|
||||
if ($user_info['disabled'] == 0) {
|
||||
$data[6] = '<a href="index.php?sec='.$sec.'&sec2=godmode/users/user_list&disable_user=1&pure='.$pure.'&id='.$user_info['id_user'].'">'.html_print_image('images/lightbulb.png', true, ['title' => __('Disable')]).'</a>';
|
||||
} else {
|
||||
$data[6] = '<a href="index.php?sec='.$sec.'&sec2=godmode/users/user_list&disable_user=0&pure='.$pure.'&id='.$user_info['id_user'].'">'.html_print_image('images/lightbulb_off.png', true, ['title' => __('Enable')]).'</a>';
|
||||
}
|
||||
}
|
||||
|
||||
$data[6] .= '<a href="index.php?sec='.$sec.'&sec2=godmode/users/configure_user&pure='.$pure.'&id='.$user_id.'">'.html_print_image('images/config.png', true, ['title' => __('Edit')]).'</a>';
|
||||
if ($config['admin_can_delete_user'] && $user_info['id_user'] != $config['id_user'] && !isset($user_info['not_delete'])) {
|
||||
$data[6] .= "<a href='index.php?sec=".$sec.'&sec2=godmode/users/user_list&user_del=1&pure='.$pure.'&delete_user='.$user_info['id_user']."'>".html_print_image('images/cross.png', true, ['title' => __('Delete'), 'onclick' => "if (! confirm ('".__('Deleting User').' '.$user_info['id_user'].'. '.__('Are you sure?')."')) return false"]).'</a>';
|
||||
if (defined('METACONSOLE')) {
|
||||
$data[6] .= "<a href='index.php?sec=".$sec.'&sec2=godmode/users/user_list&user_del=1&pure='.$pure.'&delete_user='.$user_info['id_user']."&delete_all=1'>".html_print_image('images/cross_double.png', true, ['title' => __('Delete from all consoles'), 'onclick' => "if (! confirm ('".__('Deleting User %s from all consoles', $user_info['id_user']).'. '.__('Are you sure?')."')) return false"]).'</a>';
|
||||
}
|
||||
} else {
|
||||
$data[6] .= '';
|
||||
// Delete button not in this mode
|
||||
}
|
||||
} else {
|
||||
$data[6] .= '';
|
||||
// Delete button not in this mode
|
||||
}
|
||||
|
||||
array_push($table->data, $data);
|
||||
|
|
|
@ -188,6 +188,7 @@ function profile_print_profile_table($id)
|
|||
$title = __('Profiles/Groups assigned to this user');
|
||||
|
||||
$table = new stdClass();
|
||||
$table->id = 'table_profiles';
|
||||
$table->width = '100%';
|
||||
$table->class = 'info_table';
|
||||
if (defined('METACONSOLE')) {
|
||||
|
@ -216,10 +217,30 @@ function profile_print_profile_table($id)
|
|||
$table->head['actions'] = __('Action');
|
||||
$table->align['actions'] = 'center';
|
||||
|
||||
$result = db_get_all_rows_filter(
|
||||
'tusuario_perfil',
|
||||
['id_usuario' => $id]
|
||||
);
|
||||
if (users_is_admin()) {
|
||||
$result = db_get_all_rows_filter(
|
||||
'tusuario_perfil',
|
||||
['id_usuario' => $id]
|
||||
);
|
||||
} else {
|
||||
// Only profiles that can be viewed by the user.
|
||||
$group_um = users_get_groups_UM($config['id_user']);
|
||||
if (isset($group_um[0])) {
|
||||
$group_um_string = implode(',', array_keys(users_get_groups($config['id_user'], 'um', true)));
|
||||
} else {
|
||||
$group_um_string = implode(',', array_keys($group_um));
|
||||
}
|
||||
|
||||
$sql = sprintf(
|
||||
"SELECT tusuario_perfil.* FROM tusuario_perfil
|
||||
INNER JOIN tperfil ON tperfil.id_perfil = tusuario_perfil.id_perfil
|
||||
WHERE id_usuario like '%s' AND id_grupo IN (%s) AND user_management = 0",
|
||||
$id,
|
||||
$group_um_string
|
||||
);
|
||||
|
||||
$result = db_get_all_rows_sql($sql);
|
||||
}
|
||||
|
||||
if ($result === false) {
|
||||
$result = [];
|
||||
|
@ -285,6 +306,7 @@ function profile_print_profile_table($id)
|
|||
[
|
||||
'pandora_management' => '<> 1',
|
||||
'db_management' => '<> 1',
|
||||
'user_management' => '<> 1',
|
||||
]
|
||||
),
|
||||
'assign_profile',
|
||||
|
|
|
@ -668,3 +668,106 @@ function get_name_admin():string
|
|||
|
||||
return $mail;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Obtiene una matriz con los grupos como clave y si tiene o no permiso UM sobre ese grupo(valor)
|
||||
*
|
||||
* @param string User id
|
||||
* @return array Return .
|
||||
*/
|
||||
function users_get_groups_UM($id_user)
|
||||
{
|
||||
$sql = sprintf(
|
||||
"SELECT id_grupo, user_management FROM tusuario_perfil
|
||||
LEFT JOIN tperfil ON tperfil.id_perfil = tusuario_perfil.id_perfil
|
||||
WHERE id_usuario like '%s' AND user_management = 1 ORDER BY id_grupo",
|
||||
$id_user
|
||||
);
|
||||
|
||||
$groups = db_get_all_rows_sql($sql);
|
||||
$return = [];
|
||||
foreach ($groups as $key => $group) {
|
||||
if (!isset($return[$group['id_grupo']]) || (isset($return[$group['id_grupo']]) && $group['user_management'] != 0)) {
|
||||
$return[$group['id_grupo']] = $group['user_management'];
|
||||
}
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Obtiene una matriz con los grupos como clave y si tiene o no permiso UM sobre ese grupo(valor)
|
||||
*
|
||||
* @param string User id
|
||||
* @return array Return .
|
||||
*/
|
||||
function users_get_users_by_group($id_group, $um=false)
|
||||
{
|
||||
$sql = sprintf(
|
||||
"SELECT tusuario.* FROM tusuario
|
||||
INNER JOIN tusuario_perfil ON tusuario_perfil.id_usuario = tusuario.id_user
|
||||
AND tusuario_perfil.id_grupo = '%s'",
|
||||
$id_group
|
||||
);
|
||||
|
||||
$users = db_get_all_rows_sql($sql);
|
||||
$return = [];
|
||||
foreach ($users as $key => $user) {
|
||||
$return[$user['id_user']] = $user;
|
||||
$return[$user['id_user']]['edit'] = $um;
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
|
||||
function users_has_profile_without_UM($id_user, $id_groups)
|
||||
{
|
||||
$sql = sprintf(
|
||||
"SELECT id_usuario, tperfil.user_management FROM tusuario_perfil
|
||||
INNER JOIN tperfil ON tperfil.id_perfil = tusuario_perfil.id_perfil AND tperfil.user_management = 0
|
||||
WHERE tusuario_perfil.id_usuario like '%s' AND tusuario_perfil.id_grupo IN (%s)
|
||||
ORDER BY tperfil.user_management DESC",
|
||||
$id_user,
|
||||
$id_groups
|
||||
);
|
||||
|
||||
$without_um = db_get_all_rows_sql($sql);
|
||||
|
||||
if (isset($without_um[0])) {
|
||||
$sql = sprintf(
|
||||
"SELECT id_grupo, tperfil.* FROM tusuario_perfil
|
||||
INNER JOIN tperfil ON tperfil.id_perfil = tusuario_perfil.id_perfil
|
||||
WHERE tusuario_perfil.id_usuario like '%s'
|
||||
ORDER BY tperfil.user_management DESC",
|
||||
$id_user
|
||||
);
|
||||
|
||||
$um = db_get_all_rows_sql($sql);
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
function users_get_user_profile($id_user)
|
||||
{
|
||||
$sql = sprintf(
|
||||
"SELECT * FROM tusuario_perfil
|
||||
INNER JOIN tperfil ON tperfil.id_perfil = tusuario_perfil.id_perfil
|
||||
WHERE tusuario_perfil.id_usuario like '%s'",
|
||||
$id_user
|
||||
);
|
||||
|
||||
$aux = db_get_all_rows_sql($sql);
|
||||
$user_profiles = [];
|
||||
foreach ($aux as $key => $value) {
|
||||
$user_profiles[$value['id_grupo']] = $value;
|
||||
}
|
||||
|
||||
return $user_profiles;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue