From b045266619b8edfe7bc49c7d877f74f4191cc36d Mon Sep 17 00:00:00 2001 From: Monalika Patnaik Date: Wed, 19 Jul 2023 13:26:54 +0530 Subject: [PATCH 1/7] added-remove-user-column --- cgi/org.pl | 3 ++ templates/web/pages/org_form/org_form.tt.html | 44 +++++++++++++++++++ .../web/pages/org_profile/org_profile.tt.html | 35 --------------- 3 files changed, 47 insertions(+), 35 deletions(-) diff --git a/cgi/org.pl b/cgi/org.pl index aca2d296947cd..666ca5b72ea82 100644 --- a/cgi/org.pl +++ b/cgi/org.pl @@ -91,6 +91,9 @@ if (single_param('delete') eq 'on') { if ($admin) { $type = 'delete'; + my $groups_ref = ['admins', 'members']; + remove_user_from_org($org_ref, $User_id, $groups_ref); + $template_data_ref->{result} = "User Removed"; } else { display_error_and_exit($Lang{error_no_permission}{$lang}, 403); diff --git a/templates/web/pages/org_form/org_form.tt.html b/templates/web/pages/org_form/org_form.tt.html index 90b8c5e0e0741..24598f604f9d7 100644 --- a/templates/web/pages/org_form/org_form.tt.html +++ b/templates/web/pages/org_form/org_form.tt.html @@ -10,6 +10,50 @@
The organization [% orgid %] does not exist yet. It will be created if you submit the form.
[% END %] + [% IF org_members.size %] +

[% lang("organization_members") %]

+

[% lang("number_of_members") %][% sep %]: [% org_members.size %]

+
+ + + + + + + + + + + + + + + [% SET count = 1 %] + [% FOREACH users IN org_members %] + + + + + + + + + + [% SET count = count + 1 %] + [% END %] + +
[% lang("serial_no") %][% lang("username") %][% lang("name") %][% lang("email") %][% lang("select_lang") %][% lang("select_country") %][% lang("delete_user") %]
[% count %].[% users.userid %][% users.name %][% users.email %][% users.initial_lc %][% users.initial_cc %] +
+ + + + + +
+
+
+ [% END %] +

[% lang('org_profile_description') %]

diff --git a/templates/web/pages/org_profile/org_profile.tt.html b/templates/web/pages/org_profile/org_profile.tt.html index 76a3013fd62cb..6170c4f443c7a 100644 --- a/templates/web/pages/org_profile/org_profile.tt.html +++ b/templates/web/pages/org_profile/org_profile.tt.html @@ -14,41 +14,6 @@

[% lang("official_site") %]

[% END %] -[% IF org_members.size %] -

[% lang("organization_members") %]

-

[% lang("number_of_members") %][% sep %]: [% org_members.size %]

-
- - - - - - - - - - - - - - [% FOREACH users IN org_members %] - [% SET count = 1 %] - - - - - - - - - [% SET count = count + 1 %] - [% END %] - -
[% lang("serial_no") %][% lang("username") %][% lang("name") %][% lang("email") %][% lang("select_lang") %][% lang("select_country") %]
[% count %].[% users.userid %][% users.name %][% users.email %][% users.initial_lc %][% users.initial_cc %]
-
-[% END %] - -
[% FOREACH contact IN ['customer_service', 'commercial_service'] %] From fe6bdd3b825d26c8d6d74371c0ec78185dd30f3a Mon Sep 17 00:00:00 2001 From: Monalika Patnaik Date: Wed, 19 Jul 2023 22:25:57 +0530 Subject: [PATCH 2/7] updated-one --- cgi/org.pl | 17 +++++++++++++---- templates/web/pages/org_form/org_form.tt.html | 4 ++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/cgi/org.pl b/cgi/org.pl index 666ca5b72ea82..095563a042879 100644 --- a/cgi/org.pl +++ b/cgi/org.pl @@ -91,9 +91,6 @@ if (single_param('delete') eq 'on') { if ($admin) { $type = 'delete'; - my $groups_ref = ['admins', 'members']; - remove_user_from_org($org_ref, $User_id, $groups_ref); - $template_data_ref->{result} = "User Removed"; } else { display_error_and_exit($Lang{error_no_permission}{$lang}, 403); @@ -366,7 +363,19 @@ $template_data_ref->{profile_url} = canonicalize_tag_link("editors", "org-" . $orgid); $template_data_ref->{profile_name} = sprintf(lang('user_s_page'), $org_ref->{name}); } - elsif ($type eq 'delete') { + elsif ($type eq 'user_delete') { + $log->debug("before deleting the user from org", + {type => $type, action => $action, orgid => $orgid, userid => single_param('user_id')}) + if $log->is_debug(); + if (is_user_in_org_group($org_ref, $User_id, "admins")) { + my $groups_ref = ['members']; + my $user_to_remove = single_param('user_id'); + remove_user_from_org($orgid, $user_to_remove, $groups_ref); + $template_data_ref->{result} = "User successfully removed from the organization"; + $log->debug("after removal") + if $log->is_debug(); + } + } } diff --git a/templates/web/pages/org_form/org_form.tt.html b/templates/web/pages/org_form/org_form.tt.html index 24598f604f9d7..32481139b6a4e 100644 --- a/templates/web/pages/org_form/org_form.tt.html +++ b/templates/web/pages/org_form/org_form.tt.html @@ -38,9 +38,9 @@

[% lang("organization_members") %]

[% users.initial_lc %] [% users.initial_cc %] -
+ - + From 586741c10e49b8984a243477f9606a415a3c1346 Mon Sep 17 00:00:00 2001 From: Monalika Patnaik Date: Thu, 20 Jul 2023 21:42:12 +0530 Subject: [PATCH 3/7] moved-template-ref --- cgi/org.pl | 9 +++++++++ lib/ProductOpener/Display.pm | 8 -------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/cgi/org.pl b/cgi/org.pl index 095563a042879..c9d7c7f94cfe6 100644 --- a/cgi/org.pl +++ b/cgi/org.pl @@ -391,6 +391,15 @@ $log->debug("org form - template data", {template_data_ref => $template_data_ref}) if $log->is_debug(); +if (defined $User{pro_moderator}) { + my @org_members; + foreach my $member_id (sort keys %{$org_ref->{members}}) { + my $member_user_ref = retrieve_user($member_id); + push @org_members, $member_user_ref; + } + $template_data_ref->{org_members} = \@org_members; +} + $tt->process('web/pages/org_form/org_form.tt.html', $template_data_ref, \$html) or $html = "

template error: " . $tt->error() . "

"; diff --git a/lib/ProductOpener/Display.pm b/lib/ProductOpener/Display.pm index eed9d1c4090fb..1443c6ecbf5a6 100644 --- a/lib/ProductOpener/Display.pm +++ b/lib/ProductOpener/Display.pm @@ -3901,14 +3901,6 @@ HTML $user_template_data_ref->{edit_profile} = 1; $user_template_data_ref->{orgid} = $orgid; } - if (defined $User{pro_moderator}) { - my @org_members; - foreach my $member_id (sort keys %{$user_or_org_ref->{members}}) { - my $member_user_ref = retrieve_user($member_id); - push @org_members, $member_user_ref; - } - $user_template_data_ref->{org_members} = \@org_members; - } process_template('web/pages/org_profile/org_profile.tt.html', $user_template_data_ref, \$profile_html) From 72221269dbb1071e03dc68ece3880aefc5fa889a Mon Sep 17 00:00:00 2001 From: Monalika Patnaik Date: Thu, 20 Jul 2023 21:45:52 +0530 Subject: [PATCH 4/7] minor-changes --- cgi/org.pl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cgi/org.pl b/cgi/org.pl index c9d7c7f94cfe6..193d484e9bb16 100644 --- a/cgi/org.pl +++ b/cgi/org.pl @@ -391,14 +391,13 @@ $log->debug("org form - template data", {template_data_ref => $template_data_ref}) if $log->is_debug(); -if (defined $User{pro_moderator}) { +# allow org admins to view the list of users associated with their org my @org_members; foreach my $member_id (sort keys %{$org_ref->{members}}) { my $member_user_ref = retrieve_user($member_id); push @org_members, $member_user_ref; } $template_data_ref->{org_members} = \@org_members; -} $tt->process('web/pages/org_form/org_form.tt.html', $template_data_ref, \$html) or $html = "

template error: " . $tt->error() . "

"; From 14cc1b129250b264635e19c40b5e30e3a1d51180 Mon Sep 17 00:00:00 2001 From: Monalika Patnaik Date: Sat, 22 Jul 2023 02:39:16 +0530 Subject: [PATCH 5/7] removed-user-org-field --- cgi/org.pl | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/cgi/org.pl b/cgi/org.pl index 193d484e9bb16..8fdfe79f4fc20 100644 --- a/cgi/org.pl +++ b/cgi/org.pl @@ -364,16 +364,20 @@ $template_data_ref->{profile_name} = sprintf(lang('user_s_page'), $org_ref->{name}); } elsif ($type eq 'user_delete') { - $log->debug("before deleting the user from org", - {type => $type, action => $action, orgid => $orgid, userid => single_param('user_id')}) - if $log->is_debug(); - if (is_user_in_org_group($org_ref, $User_id, "admins")) { - my $groups_ref = ['members']; + + if (is_user_in_org_group($org_ref, $User_id, "members")) { + my $groups_ref = ['admins','members']; my $user_to_remove = single_param('user_id'); remove_user_from_org($orgid, $user_to_remove, $groups_ref); + + # Reset the 'org' field of the user + my $user_ref = retrieve_user($user_to_remove); + delete $user_ref->{org}; + delete $user_ref->{org_id}; + my $user_file = "$data_root/users/" . get_string_id_for_lang("no_language",$user_to_remove) . ".sto"; + store($user_file, $user_ref); $template_data_ref->{result} = "User successfully removed from the organization"; - $log->debug("after removal") - if $log->is_debug(); + } } From 84b148adffb310b83c170259fde2d9bf2a2a3916 Mon Sep 17 00:00:00 2001 From: Monalika Patnaik Date: Tue, 25 Jul 2023 02:09:12 +0530 Subject: [PATCH 6/7] org-page-display-done --- cgi/org.pl | 25 +++++++++---------- po/common/en.po | 4 +++ templates/web/pages/org_form/org_form.tt.html | 4 +-- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/cgi/org.pl b/cgi/org.pl index 8fdfe79f4fc20..50e96f8682b09 100644 --- a/cgi/org.pl +++ b/cgi/org.pl @@ -358,29 +358,28 @@ if ($type eq "edit") { store_org($org_ref); - $template_data_ref->{result} = lang("edit_org_result"); - - $template_data_ref->{profile_url} = canonicalize_tag_link("editors", "org-" . $orgid); - $template_data_ref->{profile_name} = sprintf(lang('user_s_page'), $org_ref->{name}); } elsif ($type eq 'user_delete') { if (is_user_in_org_group($org_ref, $User_id, "members")) { - my $groups_ref = ['admins','members']; + my $groups_ref = ['admins', 'members']; my $user_to_remove = single_param('user_id'); + # remove the user from org remove_user_from_org($orgid, $user_to_remove, $groups_ref); # Reset the 'org' field of the user my $user_ref = retrieve_user($user_to_remove); delete $user_ref->{org}; delete $user_ref->{org_id}; - my $user_file = "$data_root/users/" . get_string_id_for_lang("no_language",$user_to_remove) . ".sto"; + my $user_file = "$data_root/users/" . get_string_id_for_lang("no_language", $user_to_remove) . ".sto"; store($user_file, $user_ref); - $template_data_ref->{result} = "User successfully removed from the organization"; } } + $template_data_ref->{result} = lang("edit_org_result"); + $template_data_ref->{profile_url} = canonicalize_tag_link("editors", "org-" . $orgid); + $template_data_ref->{profile_name} = sprintf(lang('user_s_page'), $org_ref->{name}); } $template_data_ref->{orgid} = $orgid; @@ -396,12 +395,12 @@ $log->debug("org form - template data", {template_data_ref => $template_data_ref}) if $log->is_debug(); # allow org admins to view the list of users associated with their org - my @org_members; - foreach my $member_id (sort keys %{$org_ref->{members}}) { - my $member_user_ref = retrieve_user($member_id); - push @org_members, $member_user_ref; - } - $template_data_ref->{org_members} = \@org_members; +my @org_members; +foreach my $member_id (sort keys %{$org_ref->{members}}) { + my $member_user_ref = retrieve_user($member_id); + push @org_members, $member_user_ref; +} +$template_data_ref->{org_members} = \@org_members; $tt->process('web/pages/org_form/org_form.tt.html', $template_data_ref, \$html) or $html = "

template error: " . $tt->error() . "

"; diff --git a/po/common/en.po b/po/common/en.po index 0fdfa60ce370c..4da666f782afd 100644 --- a/po/common/en.po +++ b/po/common/en.po @@ -2207,6 +2207,10 @@ msgctxt "risk_level_3" msgid "High risks" msgstr "High risks" +msgctxt "remove_user" +msgid "Remove user" +msgstr "Remove user" + msgctxt "salt_equivalent" msgid "salt equivalent" msgstr "salt equivalent" diff --git a/templates/web/pages/org_form/org_form.tt.html b/templates/web/pages/org_form/org_form.tt.html index 32481139b6a4e..c349c38545cb5 100644 --- a/templates/web/pages/org_form/org_form.tt.html +++ b/templates/web/pages/org_form/org_form.tt.html @@ -38,12 +38,12 @@

[% lang("organization_members") %]

[% users.initial_lc %] [% users.initial_cc %] - + - + From 571213a6cfe6a1cbffe6048cdbbfbde8067e16bd Mon Sep 17 00:00:00 2001 From: Monalika Patnaik Date: Sun, 30 Jul 2023 22:00:51 +0530 Subject: [PATCH 7/7] added-separate-subroutine --- cgi/org.pl | 18 +++++------------- lib/ProductOpener/Users.pm | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/cgi/org.pl b/cgi/org.pl index 50e96f8682b09..6e4a48dc94b93 100644 --- a/cgi/org.pl +++ b/cgi/org.pl @@ -361,19 +361,11 @@ } elsif ($type eq 'user_delete') { - if (is_user_in_org_group($org_ref, $User_id, "members")) { - my $groups_ref = ['admins', 'members']; - my $user_to_remove = single_param('user_id'); - # remove the user from org - remove_user_from_org($orgid, $user_to_remove, $groups_ref); - - # Reset the 'org' field of the user - my $user_ref = retrieve_user($user_to_remove); - delete $user_ref->{org}; - delete $user_ref->{org_id}; - my $user_file = "$data_root/users/" . get_string_id_for_lang("no_language", $user_to_remove) . ".sto"; - store($user_file, $user_ref); - + if (is_user_in_org_group($org_ref, $User_id, "admins")) { + remove_user_by_org_admin($orgid, single_param('user_id')); + } + else { + display_error_and_exit($Lang{error_no_permission}{$lang}, 403); } } diff --git a/lib/ProductOpener/Users.pm b/lib/ProductOpener/Users.pm index e4bd4ff4ad351..7ca70a6142082 100644 --- a/lib/ProductOpener/Users.pm +++ b/lib/ProductOpener/Users.pm @@ -64,6 +64,7 @@ BEGIN { &create_password_hash &check_password_hash &retrieve_user + &remove_user_by_org_admin &check_session @@ -935,6 +936,19 @@ sub retrieve_user ($user_id) { return $user_ref; } +sub remove_user_by_org_admin ($orgid, $user_id) { + my $groups_ref = ['admins', 'members']; + remove_user_from_org($orgid, $user_id, $groups_ref); + + # Reset the 'org' field of the user + my $user_ref = retrieve_user($user_id); + delete $user_ref->{org}; + delete $user_ref->{org_id}; + my $user_file = "$data_root/users/" . get_string_id_for_lang("no_language", $user_id) . ".sto"; + store($user_file, $user_ref); + return; +} + sub init_user ($request_ref) { my $user_id = undef;