From 695e566d4a18349ce1c8ad19c428e68172b04146 Mon Sep 17 00:00:00 2001 From: Dave Roberts Date: Mon, 2 Dec 2024 14:18:57 +0000 Subject: [PATCH] Request reason complete --- lib/GADS.pm | 3 +- lib/GADS/Schema/Result/User.pm | 35 +++++++++-- .../components/data-table/lib/component.js | 3 +- .../components/modal/lib/component.js | 1 + .../modal/modals/user/lib/component.js | 4 +- views/wizard/user_add.tt | 59 +++++++++++++++++-- 6 files changed, 89 insertions(+), 16 deletions(-) diff --git a/lib/GADS.pm b/lib/GADS.pm index 7a830eac1..c3b2af6a5 100644 --- a/lib/GADS.pm +++ b/lib/GADS.pm @@ -1556,8 +1556,9 @@ any ['get', 'post'] => '/user_requests/' => require_any_role [qw/useradmin super if logged_in_user->id == $delete_id; my $usero = rset('User')->find($delete_id); + my $email_reject_text = param('reject_reason'); - if (process( sub { $usero->retire(send_reject_email => 1) })) + if (process( sub { $usero->retire(send_reject_email => 1, email_reject_text => $email_reject_text) })) { $audit->login_change("User ID $delete_id deleted"); return forwardHome( diff --git a/lib/GADS/Schema/Result/User.pm b/lib/GADS/Schema/Result/User.pm index 7de2dbe93..58aa90152 100644 --- a/lib/GADS/Schema/Result/User.pm +++ b/lib/GADS/Schema/Result/User.pm @@ -1014,6 +1014,25 @@ sub permissions } } +sub _map_fields { + my ($self, $text) = @_; + my @fields = ('firstname', 'surname', 'email', 'title', 'organisation', 'department', 'team'); + + if($text) { + foreach my $field (@fields) { + my $value = $self->$field || ''; + $text =~ s/\{$field\}/$value/g; + } + } + + if($text) { + my $notes = $self->account_request_notes || ''; + $text =~ s/\{notes\}/$notes/g; + } + + return $text; +} + sub retire { my ($self, %options) = @_; @@ -1023,16 +1042,20 @@ sub retire # Properly delete if account request - no record needed if ($self->account_request) { - $self->delete; - return unless $options{send_reject_email}; + if($options{send_reject_email}) { + my $email_body = $options{email_reject_text} || $site->email_reject_text || "Your account request has been rejected"; + $email_body = $self->_map_fields($email_body); + my $email = GADS::Email->instance; $email->send({ - subject => $site->email_reject_subject || "Account request rejected", - emails => [$self->email], - text => $site->email_reject_text || "Your account request has been rejected", + subject => $site->email_reject_subject || "Account request rejected", + emails => [$self->email], + text => $email_body, }); + } + $self->delete; - return; + return; } else { $self->search_related('user_graphs', {})->delete; diff --git a/src/frontend/components/data-table/lib/component.js b/src/frontend/components/data-table/lib/component.js index 8c83d888f..1bd3abf77 100644 --- a/src/frontend/components/data-table/lib/component.js +++ b/src/frontend/components/data-table/lib/component.js @@ -8,7 +8,6 @@ import 'datatables.net-rowreorder-bs4' import { setupDisclosureWidgets, onDisclosureClick } from 'components/more-less/lib/disclosure-widgets' import { moreLess } from 'components/more-less/lib/more-less' import { bindToggleTableClickHandlers } from './toggle-table' -import TypeaheadBuilder from 'util/typeahead' const MORE_LESS_TRESHOLD = 50 @@ -126,7 +125,7 @@ class DataTableComponent extends Component { fillModalData(row) { const fields = $(this.modal).find('input, textarea') - const btnReject = $(this.modal).find('.btn-js-reject-request') + const btnReject = $(this.modal).find('.btn-js-reject-request-send') const id = parseInt($(row).find(`td[data-id]`).data('id'), 10) if (id) $(this.modal).data('config').id = id diff --git a/src/frontend/components/modal/lib/component.js b/src/frontend/components/modal/lib/component.js index e7406c44e..76e828008 100644 --- a/src/frontend/components/modal/lib/component.js +++ b/src/frontend/components/modal/lib/component.js @@ -271,6 +271,7 @@ class ModalComponent extends Component { // Validate the required fields of the frame validateFrame() { + if(!this.frame) return; this.frame.isValid = true this.frame.requiredFields.each((i, field) => { diff --git a/src/frontend/components/modal/modals/user/lib/component.js b/src/frontend/components/modal/modals/user/lib/component.js index 5289dd7fb..68c9dd5d7 100644 --- a/src/frontend/components/modal/modals/user/lib/component.js +++ b/src/frontend/components/modal/modals/user/lib/component.js @@ -33,7 +33,9 @@ class UserModalComponent extends ModalComponent { } else { this.el.find('.js-add-user').hide() this.el.find('.js-approve-account').show() - this.el.find('.btn-js-reject-request').show() + this.el.find('.btn-js-reject-request').show().on("click", ()=>{ + this.activateFrame(4); + }) this.el.find('.btn-js-save .btn__title').html('Approve account') this.el.find('input[name="approve-account"]').val('true') } diff --git a/views/wizard/user_add.tt b/views/wizard/user_add.tt index c8aad503b..d9be7d322 100644 --- a/views/wizard/user_add.tt +++ b/views/wizard/user_add.tt @@ -29,9 +29,9 @@