aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Controller/Admin.pm
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2016-05-06 10:59:34 +0100
committerMatthew Somerville <matthew-github@dracos.co.uk>2016-05-06 10:59:34 +0100
commit49499f5a4f0f491c7f051a75a547ad85ea4159c0 (patch)
treea541d9c028d3a02a638c26cbc63dbf95c649fcdd /perllib/FixMyStreet/App/Controller/Admin.pm
parent89b0efeb94631c4c31ce33e7f98297e754dd226d (diff)
parent54f5fbe4bf319e5c8fdb6377838afbc811431a90 (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.pm18
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} =