diff options
author | Matthew Somerville <matthew-github@dracos.co.uk> | 2016-05-06 10:59:34 +0100 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2016-05-06 10:59:34 +0100 |
commit | 49499f5a4f0f491c7f051a75a547ad85ea4159c0 (patch) | |
tree | a541d9c028d3a02a638c26cbc63dbf95c649fcdd /perllib/FixMyStreet/App/Controller/Admin.pm | |
parent | 89b0efeb94631c4c31ce33e7f98297e754dd226d (diff) | |
parent | 54f5fbe4bf319e5c8fdb6377838afbc811431a90 (diff) |
Merge remote-tracking branch 'mysociety/1207-update-email-to-existing'
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Admin.pm')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Admin.pm | 18 |
1 files 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} = |