diff --git a/src/main/java/biz/nynja/account/components/AccountServiceHelper.java b/src/main/java/biz/nynja/account/components/AccountServiceHelper.java index c47fa789bc087d4b2cb4b4839c5007de28c3ad57..b8b4071254c5f46af095b93d16e4b62867eb7d1c 100644 --- a/src/main/java/biz/nynja/account/components/AccountServiceHelper.java +++ b/src/main/java/biz/nynja/account/components/AccountServiceHelper.java @@ -3,6 +3,7 @@ */ package biz.nynja.account.components; +import biz.nynja.account.grpc.AuthenticationType; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; @@ -20,6 +21,10 @@ public class AccountServiceHelper { public Account getAccountByAuthenticationProviderHelper(String authenticationIdentifier, String type) { + if (AuthenticationType.EMAIL.toString().equals(type)) { + authenticationIdentifier = authenticationIdentifier.toLowerCase(); + } + List accounts = accountByAuthenticationProviderRepository .findAllByAuthenticationProvider(authenticationIdentifier); diff --git a/src/main/java/biz/nynja/account/models/AccountBuilder.java b/src/main/java/biz/nynja/account/models/AccountBuilder.java index 6d7e3d53a095e8f264a2285d73e8513d695d738a..858dd863e2acc6c96fde53e39ec2d2cc2cd45877 100644 --- a/src/main/java/biz/nynja/account/models/AccountBuilder.java +++ b/src/main/java/biz/nynja/account/models/AccountBuilder.java @@ -4,6 +4,7 @@ package biz.nynja.account.models; import biz.nynja.account.grpc.AccessStatus; +import biz.nynja.account.grpc.AuthenticationType; import biz.nynja.account.grpc.CompletePendingAccountCreationRequest; import biz.nynja.account.grpc.UpdateAccountRequest; import biz.nynja.account.validation.Validators; @@ -21,8 +22,12 @@ public class AccountBuilder { newAccount.setAccountId(pendingAccount.getAccountId()); newAccount.setProfileId(pendingAccount.getProfileId()); newAccount.setAccountMark(request.getAccountMark()); - newAccount.setAuthenticationProvider(pendingAccount.getAuthenticationProvider()); newAccount.setAuthenticationProviderType(pendingAccount.getAuthenticationProviderType()); + if (AuthenticationType.EMAIL.toString().equals(pendingAccount.getAuthenticationProviderType())) { + newAccount.setAuthenticationProvider(pendingAccount.getAuthenticationProvider().toLowerCase()); + } else { + newAccount.setAuthenticationProvider(pendingAccount.getAuthenticationProvider()); + } newAccount.setFirstName(request.getFirstName()); newAccount.setLastName(request.getLastName()); newAccount.setAvatar(request.getAvatar()); diff --git a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java index 924de5234b3d09fa4a2e5c182b0f42d3ce35c1d1..e68db817b524235b3bf0f630f38bc2d484e6acd3 100644 --- a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java +++ b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java @@ -3,6 +3,7 @@ */ package biz.nynja.account.repositories; +import biz.nynja.account.grpc.AuthenticationType; import java.time.DateTimeException; import java.time.Instant; import java.util.HashSet; @@ -983,8 +984,10 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio @Override public Optional getAccountByLoginOption(AuthenticationProvider loginOption) throws IncorrectAccountCountException { + String loginOptionValue = AuthenticationType.EMAIL.toString().equals(loginOption.getType()) ? + loginOption.getValue().toLowerCase() : loginOption.getValue(); ProfileByAuthenticationProvider profile = profileByAuthenticationProviderRepository - .findByAuthenticationProviderAndAuthenticationProviderType(loginOption.getValue(), + .findByAuthenticationProviderAndAuthenticationProviderType(loginOptionValue, loginOption.getType()); if (profile == null) { return Optional.empty(); @@ -1008,8 +1011,10 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio @Override public Optional searchAccountByLoginOption(AuthenticationProvider loginOption) throws IncorrectAccountCountException { + String loginOptionValue = AuthenticationType.EMAIL.toString().equals(loginOption.getType()) ? + loginOption.getValue().toLowerCase() : loginOption.getValue(); ProfileByAuthenticationProvider profileByAuthProvider = profileByAuthenticationProviderRepository - .findByAuthenticationProviderAndAuthenticationProviderType(loginOption.getValue(), + .findByAuthenticationProviderAndAuthenticationProviderType(loginOptionValue, loginOption.getType()); if (profileByAuthProvider == null) { return Optional.empty(); diff --git a/src/main/java/biz/nynja/account/services/AccountServiceImpl.java b/src/main/java/biz/nynja/account/services/AccountServiceImpl.java index f5bcaee78ce470e8bc58f7369430c3947036f73c..6eda54cf602eb8a74d426a5aa08f516dbe803e9c 100644 --- a/src/main/java/biz/nynja/account/services/AccountServiceImpl.java +++ b/src/main/java/biz/nynja/account/services/AccountServiceImpl.java @@ -6,7 +6,6 @@ package biz.nynja.account.services; import static biz.nynja.account.validation.Validators.account; import static biz.nynja.account.validation.Validators.authenticationProvider; import static biz.nynja.account.validation.Validators.pendingAccount; -import static biz.nynja.account.validation.Validators.phoneValidator; import static biz.nynja.account.validation.Validators.util; import java.util.List; @@ -480,11 +479,11 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas if (cause.isPresent()) { response = CreatePendingAccountResponse.newBuilder() .setError(ErrorResponse.newBuilder().setCause(cause.get())).build(); - logger.info("ERROR: Creating pending account for provider {} and accoutn Id {}.", + logger.info("ERROR: Creating pending account for provider {} and account Id {}.", request.getAuthenticationProvider(), response.getPendingAccountDetails().getAccountId()); } else { response = accountCreator.retrieveCreatePendingAccountResponse(request); - logger.info("SUCCESS: Created pending account for provider {} and accoutn Id {}.", + logger.info("SUCCESS: Created pending account for provider {} and account Id {}.", request.getAuthenticationProvider(), response.getPendingAccountDetails().getAccountId()); } @@ -498,8 +497,9 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas public void completePendingAccountCreation(CompletePendingAccountCreationRequest request, StreamObserver responseObserver) { - logger.info("Complete pending account creation for account id {} and username {} ...", request.getAccountId(), - request.getUsername().toLowerCase()); + logger.info("Complete pending account creation for account id {} and username {} ...", + request.getAccountId(), + request.getUsername()); logger.debug("Complete pending account creation...: {} ...", request); AccountResponse response = accountCreator.retrieveCompletePendingAccountResponse(request); @@ -686,6 +686,15 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas AddAuthenticationProviderRequest newRequest = AddAuthenticationProviderRequest.newBuilder() .setProfileId(request.getProfileId()).setAuthenticationProvider(newAuthProviderDetails).build(); request = newRequest; + } else if (request.getAuthenticationProvider().getAuthenticationType() == AuthenticationType.EMAIL) { + var lowercase = request.getAuthenticationProvider().getAuthenticationProvider().toLowerCase(); + request = request.toBuilder() + .setAuthenticationProvider( + request + .getAuthenticationProvider() + .toBuilder() + .setAuthenticationProvider(lowercase)) + .build(); } // Make sure that the requested profile id for update exists in DB. @@ -906,6 +915,9 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas if (request.getAuthenticationProvider().getAuthenticationType() == AuthenticationType.PHONE) { authenticationProviderToDelete.setValue(phoneNumberNormalizer .getNormalizedPhoneNumber(request.getAuthenticationProvider().getAuthenticationProvider())); + } else if (request.getAuthenticationProvider().getAuthenticationType() == AuthenticationType.EMAIL) { + authenticationProviderToDelete.setValue( + request.getAuthenticationProvider().getAuthenticationProvider().toLowerCase()); } Optional existingAuthProviderToDelete = AuthenticationProvider diff --git a/src/main/java/biz/nynja/account/services/decomposition/AccountCreator.java b/src/main/java/biz/nynja/account/services/decomposition/AccountCreator.java index cdcb8ea11eb4fbb575cc122c8e353a2f7d260d5a..38980c69a04da1486e86f234154dc6565455d395 100644 --- a/src/main/java/biz/nynja/account/services/decomposition/AccountCreator.java +++ b/src/main/java/biz/nynja/account/services/decomposition/AccountCreator.java @@ -68,6 +68,11 @@ public class AccountCreator { phoneNumberNormalizer.getNormalizedPhoneNumber(request.getAuthenticationProvider())) .build(); request = newRequest; + } else if (request.getAuthenticationType() == AuthenticationType.EMAIL) { + request = request + .toBuilder() + .setAuthenticationProvider(request.getAuthenticationProvider().toLowerCase()) + .build(); } CreatePendingAccountResponse response = updateAndValidatePendingAccountCreation(request);