From 54f5fbe4bf319e5c8fdb6377838afbc811431a90 Mon Sep 17 00:00:00 2001 From: Matthew Somerville Date: Wed, 27 Apr 2016 10:51:06 +0100 Subject: Allow change of email in admin to existing entry. --- perllib/FixMyStreet/App/Controller/Admin.pm | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm index f54a862ab..3e757f227 100644 --- a/perllib/FixMyStreet/App/Controller/Admin.pm +++ b/perllib/FixMyStreet/App/Controller/Admin.pm @@ -1135,9 +1135,21 @@ sub user_edit : Path('user_edit') : Args(1) { return; } - $user->update; - if ($edited) { - $c->forward( 'log_edit', [ $id, 'user', 'edit' ] ); + my $existing_user = $c->model('DB::User')->search({ email => $user->email, id => { '!=', $user->id } })->first; + if ($existing_user) { + foreach (qw(Problem Comment Alert)) { + $c->model("DB::$_") + ->search({ user_id => $user->id }) + ->update({ user_id => $existing_user->id }); + } + $user->delete; + $c->forward( 'log_edit', [ $id, 'user', 'merge' ] ); + $c->res->redirect( $c->uri_for( 'user_edit', $existing_user->id ) ); + } else { + $user->update; + if ($edited) { + $c->forward( 'log_edit', [ $id, 'user', 'edit' ] ); + } } $c->stash->{status_message} = -- cgit v1.2.3