From 581eaadc0d1261a0add6e08948fbcc8e2e7ac350 Mon Sep 17 00:00:00 2001 From: rinkp Date: Mon, 29 May 2023 22:22:14 +0200 Subject: [PATCH] Fix GH-291, member must be able to keep own email --- module/Database/src/Controller/MemberController.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/module/Database/src/Controller/MemberController.php b/module/Database/src/Controller/MemberController.php index c7194af91..03a0c6430 100644 --- a/module/Database/src/Controller/MemberController.php +++ b/module/Database/src/Controller/MemberController.php @@ -75,12 +75,19 @@ public function renewAction(): ViewModel $request = $this->getRequest(); if ($request->isPost()) { + $oldEmail = $form->get('email')->getValue(); $form->setMutableData($request->getPost()->toArray()); - // find if there is an earlier member with the same email + // if we changed our email + // check if it is not in use by someone else if ( - $this->memberService->getMemberMapper()->hasMemberWith($form->get('email')->getValue()) - || $this->memberService->getProspectiveMemberMapper()->hasMemberWith($form->get('email')->getValue()) + $oldEmail !== $form->get('email')->getValue() + && ( + $this->memberService->getMemberMapper()->hasMemberWith($form->get('email')->getValue()) + || $this->memberService->getProspectiveMemberMapper()->hasMemberWith( + $form->get('email')->getValue(), + ) + ) ) { $form->get('email')->setMessages(['There already is a member with this email address.']); } elseif ($form->isValid()) {