aboutsummaryrefslogtreecommitdiffstats
path: root/perllib
diff options
context:
space:
mode:
authorMatthew Somerville <matthew@mysociety.org>2016-04-27 10:51:06 +0100
committerMatthew Somerville <matthew@mysociety.org>2016-04-27 10:51:06 +0100
commit54f5fbe4bf319e5c8fdb6377838afbc811431a90 (patch)
tree764475bf961e6eb61353d13005b90499c786affd /perllib
parent0246627c929f700a46c5065ac1f70fe14aa1ac03 (diff)
Allow change of email in admin to existing entry.
Diffstat (limited to 'perllib')
-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} =