Ensure that the user should be able to kill the session from Dashboard if the user has a 'pg_signal_backend' role. Fixes #6159

This commit is contained in:
Nikhil Mohite
2021-02-26 12:30:30 +05:30
committed by Akshay Joshi
parent f77fceb1b2
commit 8279e7e01c
4 changed files with 39 additions and 5 deletions

View File

@@ -30,7 +30,8 @@ define('pgadmin.dashboard', [
is_super_user = false,
current_user, maintenance_database,
is_server_dashboard = false,
is_database_dashboard = false;
is_database_dashboard = false,
can_signal_backend = false;
// Custom BackGrid cell, Responsible for cancelling active sessions
var customDashboardActionCell = Backgrid.Extension.DeleteCell.extend({
@@ -293,6 +294,7 @@ define('pgadmin.dashboard', [
// Check if user is super user
var server = treeHierarchy['server'];
maintenance_database = (server && server.db) || null;
can_signal_backend = server.user.can_signal_backend;
if (server && server.user && server.user.is_superuser) {
is_super_user = true;
@@ -1149,6 +1151,9 @@ define('pgadmin.dashboard', [
gettext('The session is already in idle state.')
);
return false;
} else if (can_signal_backend) {
// user with membership of 'pg_signal_backend' can terminate the session of non admin user.
return true;
} else if (is_super_user) {
// Super user can do anything
return true;