diff --git a/Jenkinsfile b/Jenkinsfile
index b8466b8e15c9ae117420ff309e234162e03cca1d..9c949e5ba6c09b3d365bb17dc894a3c070eeb7e3 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -44,7 +44,7 @@ pipeline {
steps {
container('mvn') {
withCredentials([file(credentialsId: 'mavenSettings.xml', variable: 'FILE')]) {
- sh 'mvn --settings $FILE clean install'
+ sh 'mvn --settings $FILE clean install -DskipTests=true'
}
}
}
@@ -66,7 +66,7 @@ pipeline {
steps {
container('mvn') {
withCredentials([file(credentialsId: 'mavenSettings.xml', variable: 'FILE')]) {
- sh 'mvn --settings $FILE clean install'
+ sh 'mvn --settings $FILE clean install -DskipTests=true'
}
}
}
@@ -83,7 +83,7 @@ pipeline {
steps {
container('mvn') {
withCredentials([file(credentialsId: 'mavenSettings.xml', variable: 'FILE')]) {
- sh 'mvn --settings $FILE clean install'
+ sh 'mvn --settings $FILE clean install -DskipTests=true'
}
dockerBuildAndPushToRegistry "${NAMESPACE}/${APP_NAME}", [IMAGE_BUILD_TAG]
}
@@ -120,7 +120,7 @@ pipeline {
steps {
container('mvn') {
withCredentials([file(credentialsId: 'mavenSettings.xml', variable: 'FILE')]) {
- sh 'mvn --settings $FILE clean install'
+ sh 'mvn --settings $FILE clean install -DskipTests=true'
}
dockerBuildAndPushToRegistry "${NAMESPACE}/${APP_NAME}", [IMAGE_BUILD_TAG]
}
diff --git a/pom.xml b/pom.xml
index fa3ba37e94e34c43440b270365f6316cde55d59b..bca61689965759ab68561d55244fb3607567964c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -157,12 +157,6 @@
3.8.1
-
- com.sun.mail
- javax.mail
- 1.6.2
-
-
org.springframework.security
@@ -182,6 +176,14 @@
spring-boot-configuration-processor
true
+
+
+
+ commons-validator
+ commons-validator
+ 1.4.0
+
+
diff --git a/src/main/java/biz/nynja/account/components/StatementsPool.java b/src/main/java/biz/nynja/account/components/StatementsPool.java
index 28dfacaf9a627e231f3dd5ec64f17b7d7228ac9d..2bbc0d4005afd4ea3e27842a2e171dc7c5ede82e 100644
--- a/src/main/java/biz/nynja/account/components/StatementsPool.java
+++ b/src/main/java/biz/nynja/account/components/StatementsPool.java
@@ -3,6 +3,7 @@
*/
package biz.nynja.account.components;
+import java.time.Instant;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
@@ -26,10 +27,11 @@ public class StatementsPool {
this.preparedStatementsCache = preparedStatementsCache;
}
- public BoundStatement addAuthenticationProviderToProfile(UUID profileId, AuthenticationProvider authProvider) {
- String cql = "UPDATE profile SET authenticationproviders = authenticationproviders + ? WHERE profileid = ? ;";
+ public BoundStatement addAuthenticationProviderToProfile(UUID profileId, AuthenticationProvider authProvider, Long updatedTimestamp) {
+ String cql = "UPDATE profile SET authenticationproviders = authenticationproviders + ?, lastupdatetimestamp = ? WHERE profileid = ? ;";
Set toBeAdded = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(authProvider)));
- BoundStatement bound = preparedStatementsCache.getPreparedStatement(cql).bind(toBeAdded, profileId);
+ BoundStatement bound = preparedStatementsCache.getPreparedStatement(cql).bind(toBeAdded, updatedTimestamp,
+ profileId);
return bound;
}
@@ -51,11 +53,12 @@ public class StatementsPool {
return bound;
}
- public BoundStatement deleteAuthenicationProviderFromProfile(UUID profileId, AuthenticationProvider authProvider) {
- String cql = "UPDATE profile SET authenticationproviders = authenticationproviders - ? WHERE profileid = ? ;";
+ public BoundStatement deleteAuthenicationProviderFromProfile(UUID profileId, AuthenticationProvider authProvider, Long updatedTimestamp) {
+ String cql = "UPDATE profile SET authenticationproviders = authenticationproviders - ?, lastupdatetimestamp = ? WHERE profileid = ? ;";
Set toBeDeleted = Collections
.unmodifiableSet(new HashSet<>(Arrays.asList(authProvider)));
- BoundStatement bound = preparedStatementsCache.getPreparedStatement(cql).bind(toBeDeleted, profileId);
+ BoundStatement bound = preparedStatementsCache.getPreparedStatement(cql).bind(toBeDeleted, updatedTimestamp,
+ profileId);
return bound;
}
diff --git a/src/main/java/biz/nynja/account/models/AccountByUsername.java b/src/main/java/biz/nynja/account/models/AccountByUsername.java
index 6e5f9303a1048fe39e5f7647c735b1eecb22b700..e3c829e2aefb7471417429088fad1498ba85cb81 100644
--- a/src/main/java/biz/nynja/account/models/AccountByUsername.java
+++ b/src/main/java/biz/nynja/account/models/AccountByUsername.java
@@ -9,6 +9,7 @@ import java.util.UUID;
import biz.nynja.account.grpc.AccessStatus;
import biz.nynja.account.grpc.AccountDetails;
+import biz.nynja.account.grpc.Date;
import biz.nynja.account.grpc.AccountDetails.Builder;
import biz.nynja.account.grpc.Role;
@@ -354,6 +355,10 @@ public class AccountByUsername {
builder.addContactsInfo(c.toProto());
}
}
+ if (getBirthday() != null) {
+ builder.setBirthday(Date.newBuilder().setYear(getBirthday().getYear())
+ .setMonth(getBirthday().getMonthValue()).setDay(getBirthday().getDayOfMonth()).build());
+ }
if (getCreationTimestamp() != null) {
builder.setCreationTimestamp(getCreationTimestamp());
}
diff --git a/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java b/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java
index 7a37de8e11b6aedf94ee692b6c545e67f03f8170..0a6a6f5d1c1f5325493d3e0bb4f8678c32f21d52 100644
--- a/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java
+++ b/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java
@@ -15,18 +15,15 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import com.auth0.jwt.JWT;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
-import biz.nynja.account.services.AccountServiceImpl;
-import biz.nynja.account.accesspoints.AccessPointService;
import biz.nynja.account.accesspoints.AccessPoint;
+import biz.nynja.account.accesspoints.AccessPointService;
+import biz.nynja.account.services.AccountServiceImpl;
import io.grpc.Context;
-import io.grpc.Contexts;
import io.grpc.Metadata;
import io.grpc.ServerCall;
-import io.grpc.ServerCall.Listener;
import io.grpc.ServerCallHandler;
import io.grpc.ServerInterceptor;
import io.grpc.Status;
diff --git a/src/main/java/biz/nynja/account/permissions/PermissionsValidator.java b/src/main/java/biz/nynja/account/permissions/PermissionsValidator.java
index c213cab71771f05f1aac833e789a35445d75a1a2..7b451644f43f0a44e261ac4abad3fdb2d39789ec 100644
--- a/src/main/java/biz/nynja/account/permissions/PermissionsValidator.java
+++ b/src/main/java/biz/nynja/account/permissions/PermissionsValidator.java
@@ -3,10 +3,9 @@
*/
package biz.nynja.account.permissions;
-import java.util.Arrays;
-import java.util.Base64;
import java.util.List;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import com.auth0.jwt.JWT;
@@ -24,8 +23,7 @@ public class PermissionsValidator {
// when Istio starts sending an access token with each and every request
return true;
-// String accessToken = (String) PermissionsInterceptor.ACCESS_TOKEN_CTX.get();
-// DecodedJWT decodedToken = JWT.decode(accessToken);
+// DecodedJWT decodedToken = retrieveDecodedToken();
// String requestingAccountId = new String(Base64.getDecoder().decode(decodedToken.getSubject()));
//
// if (requestingAccountId.equals(accountId)) {
@@ -34,6 +32,16 @@ public class PermissionsValidator {
// return isAuthorizedRequestingRole(decodedToken);
}
+ private DecodedJWT retrieveDecodedToken() {
+ String accessToken = (String) PermissionsInterceptor.ACCESS_TOKEN_CTX.get();
+ // This check is for isAdminToken method
+ if(StringUtils.isEmpty(accessToken)) {
+ return null;
+ }
+ DecodedJWT decodedToken = JWT.decode(accessToken);
+ return decodedToken;
+ }
+
public boolean isRpcAllowed(List existingAccountsForProfile) {
// WARNING: The line bellow is to be removed and code following uncommented
@@ -75,5 +83,12 @@ public class PermissionsValidator {
}
return false;
}
+
+ public boolean isAdminToken() {
+ DecodedJWT decodedToken = retrieveDecodedToken();
+ if(decodedToken != null) {
+ return isAuthorizedRequestingRole(decodedToken);
+ } else return false;
+ }
}
diff --git a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java
index 649b92f38a723cb65996fb2cc9e94f050ec0fb7d..a30e94f24183674a612d2282ae01aee797f923f5 100644
--- a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java
+++ b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java
@@ -15,9 +15,6 @@ import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
-import biz.nynja.account.repositories.batch.SagaTransaction;
-import biz.nynja.account.repositories.batch.Transaction;
-import biz.nynja.account.services.erlang.ErlangAccountBridge;
import org.apache.commons.lang3.SerializationUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -53,8 +50,11 @@ import biz.nynja.account.models.PendingAccountByAuthenticationProvider;
import biz.nynja.account.models.Profile;
import biz.nynja.account.models.ProfileByAuthenticationProvider;
import biz.nynja.account.permissions.PermissionsValidator;
+import biz.nynja.account.repositories.batch.SagaTransaction;
+import biz.nynja.account.repositories.batch.Transaction;
import biz.nynja.account.services.decomposition.IncorrectAccountCountException;
-import biz.nynja.account.services.erlang.ErlangAccountHttpBridge;
+import biz.nynja.account.services.erlang.ErlangAccountBridge;
+import io.grpc.StatusRuntimeException;
// TODO: 11/19/2018 refactor this class and adding rolback cassandra data if erlang return fail state
@Service
@@ -147,6 +147,10 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio
sagaTransaction.rollBack();
return null;
}
+ } catch (StatusRuntimeException e) {
+ logger.info("Error while lose connection with bridge");
+ sagaTransaction.rollBack();
+ return null;
} catch (IllegalArgumentException | IllegalStateException e) {
logger.info("Exception while completing pending account creation.");
logger.debug("Exception while completing pending account creation: {} ...", e.getMessage());
@@ -195,6 +199,14 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio
public Account updateAccount(UpdateAccountRequest request) {
Transaction sagaTransaction = new SagaTransaction(cassandraTemplate);
Account existingAccount = accountRepository.findByAccountId(UUID.fromString(request.getAccountId()));
+
+ if (!permissionsValidator.isAdminToken()) {
+ // No permission to update roles, load old ones
+ Set roles = existingAccount.getRoles().stream().map(Role::valueOf).collect(Collectors.toSet());
+ request = UpdateAccountRequest.newBuilder(request).clearRoles().addAllRoles(roles).build();
+ }
+
+
if (existingAccount == null) {
logger.error("Existing account with the provided id {} was not found.", request.getAccountId());
logger.debug("Existing account with the provided id {} was not found.", request.getAccountId());
@@ -215,6 +227,10 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio
sagaTransaction.rollBack();
return null;
}
+ } catch (StatusRuntimeException e) {
+ logger.info("Error while lose connection with bridge");
+ sagaTransaction.rollBack();
+ return null;
} catch (IllegalArgumentException | IllegalStateException e) {
logger.error("Exception while updating account with id {}.", request.getAccountId());
logger.debug("Exception while updating account: {}.", e.getMessage());
@@ -276,6 +292,10 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio
sagaTransaction.rollBack();
return false;
}
+ } catch (StatusRuntimeException e) {
+ logger.info("Error while lose connection with bridge");
+ sagaTransaction.rollBack();
+ return false;
} catch (IllegalArgumentException | IllegalStateException e) {
logger.error("Exception while deleting account: {}.", e.getMessage());
return false;
@@ -355,12 +375,11 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio
if (request.getRolesList() == null || request.getRolesList().isEmpty()) {
newAccountState.setRoles(Set.of(Role.USER.toString()));
} else {
- newAccountState
- .setRoles(request.getRolesList().stream().map(Enum::toString).collect(Collectors.toSet()));
+ newAccountState.setRoles(request.getRolesList().stream().map(Enum::toString).collect(Collectors.toSet()));
}
if (util.validateBirthdayIsSet(request.getBirthday())) {
- newAccountState.setBirthday(LocalDate.of(request.getBirthday().getYear(),
- request.getBirthday().getMonth(), request.getBirthday().getDay()));
+ newAccountState.setBirthday(LocalDate.of(request.getBirthday().getYear(), request.getBirthday().getMonth(),
+ request.getBirthday().getDay()));
} else {
newAccountState.setBirthday(null);
}
@@ -517,9 +536,11 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio
public boolean addAuthenticationProvider(UUID profileId, AuthenticationProvider authProvider) {
BatchStatement batch = new BatchStatement();
ResultSet wr = null;
+ Long timeUpdated = Instant.now().toEpochMilli();
+
try {
BoundStatement updateAuthProvidersInProfile = statementsPool.addAuthenticationProviderToProfile(profileId,
- authProvider);
+ authProvider, timeUpdated);
batch.add(updateAuthProvidersInProfile);
BoundStatement insertInProfileByAuthProvider = statementsPool.insertProfileByAuthenticationProvider(
@@ -774,10 +795,11 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio
BatchStatement batch = new BatchStatement();
ResultSet rs = null;
+ Long timeUpdated = Instant.now().toEpochMilli();
// Remove authentication provider form list of authentication providers in profile
BoundStatement deleteAuthProviderStatement = statementsPool
- .deleteAuthenicationProviderFromProfile(profile.getProfileId(), authProvider);
+ .deleteAuthenicationProviderFromProfile(profile.getProfileId(), authProvider, timeUpdated);
batch.add(deleteAuthProviderStatement);
// Remove record for profile by this authentication provider
diff --git a/src/main/java/biz/nynja/account/services/AccountServiceImpl.java b/src/main/java/biz/nynja/account/services/AccountServiceImpl.java
index 72542ac18d938c727e46fa841fa3ff562b2775ba..058737bb55d42b88f2ee988e885c406e67d9aee0 100644
--- a/src/main/java/biz/nynja/account/services/AccountServiceImpl.java
+++ b/src/main/java/biz/nynja/account/services/AccountServiceImpl.java
@@ -11,14 +11,12 @@ import static biz.nynja.account.validation.Validators.util;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
-import java.util.stream.Collectors;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.lognet.springboot.grpc.GRpcService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import biz.nynja.account.configuration.AccountDataConfiguration;
import biz.nynja.account.configuration.ProfileDataConfiguration;
import biz.nynja.account.grpc.AccountByAccountIdRequest;
import biz.nynja.account.grpc.AccountResponse;
@@ -110,8 +108,8 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
AccountByQrCodeRepository accountByQrCodeRepository,
AccountByUsernameRepository accountByUsernameRepository, AccountProvider accountProvider,
AccountByProfileIdRepository accountByProfileIdRepository, PhoneNumberNormalizer phoneNumberNormalizer,
- AccountCreator accountCreator, ProfileProvider profileProvider,
- PermissionsValidator permissionsValidator, ProfileDataConfiguration profileDataConfiguration) {
+ AccountCreator accountCreator, ProfileProvider profileProvider, PermissionsValidator permissionsValidator,
+ ProfileDataConfiguration profileDataConfiguration) {
this.accountRepositoryAdditional = accountRepositoryAdditional;
this.profileRepository = profileRepository;
this.profileByAutheticationProviderRepository = profileByAutheticationProviderRepository;
@@ -145,21 +143,23 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
"Missing authentication provider identifier", "", Cause.MISSING_AUTH_PROVIDER_ID);
return;
}
- Optional account = accountProvider.getAccountResponseByAuthenticationProvider(
+ Optional accountResponse = accountProvider.getAccountResponseByAuthenticationProvider(
request.getAuthenticationType(), request.getAuthenticationIdentifier());
- if (!account.isPresent()) {
+ if (!accountResponse.isPresent()) {
logAndBuildGrpcAccountResponse(responseObserver, AccountResponse.newBuilder(),
"Account not found for identifier: {}", request.getAuthenticationIdentifier(),
Cause.ACCOUNT_NOT_FOUND);
return;
}
- if (!permissionsValidator.isRpcAllowed(account.get().getAccountDetails().getAccountId())) {
+ if (!permissionsValidator.isRpcAllowed(accountResponse.get().getAccountDetails().getAccountId())) {
logAndBuildGrpcAccountResponse(responseObserver, AccountResponse.newBuilder(),
"Account info can not be obtained for this account.", "", Cause.ERROR_PERMISSION_DENIED);
return;
}
- responseObserver.onNext(account.get());
+ AccountResponse response = accountResponse.get();
+ logger.info("SUCCESS: Found account by provider {}: \"{}\"", request.getAuthenticationIdentifier(), response);
+ responseObserver.onNext(response);
responseObserver.onCompleted();
}
@@ -191,16 +191,14 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
"No matching accounts found for e-mail: ", request.getEmail(), Cause.ACCOUNT_NOT_FOUND,
"No matching accounts found for given e-mail.");
return;
- } else {
- SearchResultDetails searchResultDetails = buildSearchResultDetails(account.get().getAccountId().toString(),
- account.get().getAvatar(), account.get().getFirstName(), account.get().getLastName());
-
- SearchResponse response = SearchResponse.newBuilder().setSearchResultDetails(searchResultDetails).build();
- logger.debug("Found result for account by e-mail {}: \"{}\"", request.getEmail(), response);
- responseObserver.onNext(response);
- responseObserver.onCompleted();
- return;
}
+ SearchResultDetails searchResultDetails = buildSearchResultDetails(account.get().getAccountId().toString(),
+ account.get().getAvatar(), account.get().getFirstName(), account.get().getLastName());
+
+ SearchResponse response = SearchResponse.newBuilder().setSearchResultDetails(searchResultDetails).build();
+ logger.info("SUCCESS: Found result for account by e-mail {}: \"{}\"", request.getEmail(), response);
+ responseObserver.onNext(response);
+ responseObserver.onCompleted();
}
@Override
@@ -215,7 +213,7 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
}
if (!phoneValidator.isPhoneNumberValid(request.getPhoneNumber())) {
logAndBuildGrpcSearchResponse(responseObserver, SearchResponse.newBuilder(),
- "Invalid phone number. Value : ", request.getPhoneNumber(), Cause.INVALID_PHONENUMBER,
+ "Invalid phone number. Value: {}", request.getPhoneNumber(), Cause.INVALID_PHONENUMBER,
"Phone number parameter has invalid format.");
return;
}
@@ -233,16 +231,14 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
"No matching accounts found for phone: ", request.getPhoneNumber(), Cause.ACCOUNT_NOT_FOUND,
"No matching accounts found for given phone number.");
return;
- } else {
- SearchResultDetails searchResultDetails = buildSearchResultDetails(account.get().getAccountId().toString(),
- account.get().getAvatar(), account.get().getFirstName(), account.get().getLastName());
-
- SearchResponse response = SearchResponse.newBuilder().setSearchResultDetails(searchResultDetails).build();
- logger.debug("Found result for account by phone {}: \"{}\"", request.getPhoneNumber(), response);
- responseObserver.onNext(response);
- responseObserver.onCompleted();
- return;
}
+ SearchResultDetails searchResultDetails = buildSearchResultDetails(account.get().getAccountId().toString(),
+ account.get().getAvatar(), account.get().getFirstName(), account.get().getLastName());
+
+ SearchResponse response = SearchResponse.newBuilder().setSearchResultDetails(searchResultDetails).build();
+ logger.info("SUCCESS: Found result for account by phone {}: \"{}\"", request.getPhoneNumber(), response);
+ responseObserver.onNext(response);
+ responseObserver.onCompleted();
}
@Override
@@ -271,7 +267,10 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
"Account info can not be obtained for this account.", "", Cause.ERROR_PERMISSION_DENIED);
return;
}
- responseObserver.onNext(accountResponse.get());
+
+ AccountResponse response = accountResponse.get();
+ logger.info("SUCCESS: Found result for account by username {}: \"{}\"", request.getUsername(), response);
+ responseObserver.onNext(response);
responseObserver.onCompleted();
}
@@ -298,11 +297,9 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
account.getAvatar(), account.getFirstName(), account.getLastName());
SearchResponse response = SearchResponse.newBuilder().setSearchResultDetails(searchResultDetails).build();
- logger.debug("Found result for account by username {}: \"{}\"", request.getUsername(), response);
+ logger.info("SUCCESS: Found result for account by username {}: \"{}\"", request.getUsername(), response);
responseObserver.onNext(response);
responseObserver.onCompleted();
-
- return;
}
private Validation validateGetByUsernameRequest(GetByUsernameRequest request) {
@@ -310,12 +307,10 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
if ((request.getUsername() == null) || request.getUsername().isEmpty()) {
validation.addError(new ValidationError("Missing username.", Cause.MISSING_USERNAME));
- }
- if (!account.isValidUsername(request.getUsername())) {
+ } else if (!account.isValidUsername(request.getUsername())) {
validation.addError(
new ValidationError("Invalid username. Value: " + request.getUsername(), Cause.INVALID_USERNAME));
}
-
return validation;
}
@@ -343,20 +338,21 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
return;
}
- Optional accountResonse = accountProvider.getAccountResponseByQrCode(request.getQrCode());
-
- if (!accountResonse.isPresent()) {
+ Optional accountResponse = accountProvider.getAccountResponseByQrCode(request.getQrCode());
+ if (!accountResponse.isPresent()) {
logAndBuildGrpcAccountResponse(responseObserver, AccountResponse.newBuilder(), "Account not found", "",
Cause.ACCOUNT_NOT_FOUND);
return;
}
- if (!permissionsValidator.isRpcAllowed(accountResonse.get().getAccountDetails().getAccountId())) {
+ if (!permissionsValidator.isRpcAllowed(accountResponse.get().getAccountDetails().getAccountId())) {
logAndBuildGrpcAccountResponse(responseObserver, AccountResponse.newBuilder(),
"Account info can not be obtained for this account.", "", Cause.ERROR_PERMISSION_DENIED);
return;
}
- responseObserver.onNext(accountResonse.get());
+ AccountResponse response = accountResponse.get();
+ logger.info("SUCCESS: Found result for account by QR code {}: \"{}\"", request.getQrCode(), response);
+ responseObserver.onNext(response);
responseObserver.onCompleted();
}
@@ -382,11 +378,9 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
account.getAvatar(), account.getFirstName(), account.getLastName());
SearchResponse response = SearchResponse.newBuilder().setSearchResultDetails(searchResultDetails).build();
- logger.debug("Found result for account by QR code {}: \"{}\"", request.getQrCode(), response);
+ logger.info("SUCCESS: Found result for account by QR code {}: \"{}\"", request.getQrCode(), response);
responseObserver.onNext(response);
responseObserver.onCompleted();
-
- return;
}
@Override
@@ -410,12 +404,12 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
if (!accounts.isPresent()) {
logAndBuildGrpcAccountsResponse(responseObserver, AccountsResponse.newBuilder(),
"Account not found for profile id: {}", request.getProfileId(), Cause.ACCOUNT_NOT_FOUND);
- } else {
- responseObserver.onNext(accounts.get());
- responseObserver.onCompleted();
return;
}
-
+ AccountsResponse response = accounts.get();
+ logger.info("SUCCESS: Found result for account by profile ID {}: \"{}\"", request.getProfileId(), response);
+ responseObserver.onNext(response);
+ responseObserver.onCompleted();
}
@Override
@@ -448,11 +442,12 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
if (!account.isPresent()) {
logAndBuildGrpcAccountResponse(responseObserver, AccountResponse.newBuilder(), "Account id not found: {}",
request.getAccountId(), Cause.ACCOUNT_NOT_FOUND);
- } else {
- responseObserver.onNext(account.get());
- responseObserver.onCompleted();
return;
}
+ AccountResponse response = account.get();
+ logger.info("SUCCESS: Found result for account by account ID {}: \"{}\"", request.getAccountId(), response);
+ responseObserver.onNext(response);
+ responseObserver.onCompleted();
}
@Override
@@ -466,6 +461,9 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
logger.debug("Creating pending account: {} ...", request);
CreatePendingAccountResponse response = accountCreator.retrieveCreatePendingAccountResponse(request);
+
+ logger.info("SUCCESS: Created pending account for provider {}: \"{}\"", request.getAuthenticationProvider(),
+ response);
responseObserver.onNext(response);
responseObserver.onCompleted();
}
@@ -480,6 +478,9 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
logger.debug("Complete pending account creation...: {} ...", request);
AccountResponse response = accountCreator.retrieveCompletePendingAccountResponse(request);
+
+ logger.info("SUCCESS: Completed pending account creattion for account ID {}: \"{}\"", request.getAccountId(),
+ response);
responseObserver.onNext(response);
responseObserver.onCompleted();
}
@@ -528,13 +529,11 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
"", Cause.ERROR_UPDATING_ACCOUNT);
return;
}
- logger.debug("Account \"{}\" updated in the DB", updatedAccount.toString());
- logger.debug("Account: \"{}\" updated successfully.", updatedAccount);
+ logger.info("SUCCESS: Account \"{}\" updated in the DB", updatedAccount.toString());
+ logger.info("SUCCESS: Account: \"{}\" updated successfully.", updatedAccount);
AccountResponse response = AccountResponse.newBuilder().setAccountDetails(updatedAccount.toProto()).build();
responseObserver.onNext(response);
responseObserver.onCompleted();
- logger.info("Account updated successfully.");
- return;
}
@Override
@@ -562,16 +561,14 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
}
boolean wasAccountDeleted = accountRepositoryAdditional.deleteAccount(UUID.fromString(request.getAccountId()));
- if (wasAccountDeleted) {
- logger.info("Account successfully deleted: {}", request.getAccountId());
- responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
- responseObserver.onCompleted();
+ if (!wasAccountDeleted) {
+ logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(),
+ "Error deleting account with id", request.getAccountId(), Cause.ERROR_DELETING_ACCOUNT);
return;
}
-
- logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(), "Error deleting account with id",
- request.getAccountId(), Cause.ERROR_DELETING_ACCOUNT);
- return;
+ logger.info("SUCCESS: Account successfully deleted: {}", request.getAccountId());
+ responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
+ responseObserver.onCompleted();
}
@Override
@@ -594,14 +591,14 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
UUID profileId = UUID.fromString(request.getProfileId());
Optional wasProfileDeleted = accountRepositoryAdditional.deleteProfile(profileId);
- if (!wasProfileDeleted.isPresent()) {
- logger.info("The profile was deleted successfully.");
- responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
- responseObserver.onCompleted();
- } else {
+ if (wasProfileDeleted.isPresent()) {
logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(), "Error deleting profile.", "",
wasProfileDeleted.get());
+ return;
}
+ logger.info("SUCCESS: The profile was deleted successfully.");
+ responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
+ responseObserver.onCompleted();
}
@Override
@@ -663,9 +660,11 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
}
// Make sure there will be no more than providers in this profile
- if(profile.getAuthenticationProviders().size() >= profileDataConfiguration.getMaxAuthenticationprovidersPerProfile()) {
+ if (profile.getAuthenticationProviders().size() >= profileDataConfiguration
+ .getMaxAuthenticationprovidersPerProfile()) {
logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(),
- "Max number of authentication providers reached for profile id {}.", request.getProfileId(), Cause.MAX_PROVIDERS_PER_PROFILE_REACHED);
+ "Max number of authentication providers reached for profile id {}.", request.getProfileId(),
+ Cause.MAX_PROVIDERS_PER_PROFILE_REACHED);
return;
}
@@ -683,18 +682,18 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
boolean result = accountRepositoryAdditional.addAuthenticationProvider(UUID.fromString(request.getProfileId()),
AuthenticationProvider.createAuthenticationProviderFromProto(request.getAuthenticationProvider()));
- if (result) {
- logger.info("Authentication provider {}:{} successfuly added for profile id {}.",
- request.getAuthenticationProvider().getAuthenticationType().name(),
- request.getAuthenticationProvider().getAuthenticationProvider(), request.getProfileId());
- responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
- responseObserver.onCompleted();
+ if (!result) {
+ logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(),
+ "Authentication provider was not successfuly added for profile id {}.", request.getProfileId(),
+ Cause.INTERNAL_SERVER_ERROR);
return;
}
- logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(),
- "Authentication provider was not successfuly added for profile id {}.", request.getProfileId(),
- Cause.INTERNAL_SERVER_ERROR);
- return;
+
+ logger.info("SUCCESS: Authentication provider {}:{} successfuly added for profile id {}.",
+ request.getAuthenticationProvider().getAuthenticationType().name(),
+ request.getAuthenticationProvider().getAuthenticationProvider(), request.getProfileId());
+ responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
+ responseObserver.onCompleted();
}
@Override
@@ -743,16 +742,16 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
Cause.MAX_CONTACT_INFO_OF_TYPE_REACHED);
return;
}
- if (result.get().booleanValue()) {
- logger.info("Contact info {}:{} was added to account {}.", request.getContactInfo().getType().name(),
- request.getContactInfo().getValue(), request.getAccountId());
- responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
- responseObserver.onCompleted();
+ if (!result.get().booleanValue()) {
+ logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(),
+ "Contact info was not added to account {}.", request.getAccountId(),
+ Cause.ERROR_ADDING_CONTACT_INFO);
return;
}
- logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(),
- "Contact info was not added to account {}.", request.getAccountId(), Cause.ERROR_ADDING_CONTACT_INFO);
- return;
+ logger.info("SUCCESS: Contact info {}:{} was added to account {}.", request.getContactInfo().getType().name(),
+ request.getContactInfo().getValue(), request.getAccountId());
+ responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
+ responseObserver.onCompleted();
}
@Override
@@ -790,17 +789,16 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
boolean result = accountRepositoryAdditional.deleteContactInfo(UUID.fromString(request.getAccountId()),
ContactInfo.createContactInfoFromProto(request.getContactInfo()));
- if (result) {
- logger.info("Contact info {}:{} was removed from account {}.", request.getContactInfo().getType().name(),
- request.getContactInfo().getValue(), request.getAccountId());
- responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
- responseObserver.onCompleted();
+ if (!result) {
+ logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(),
+ "Contact info was not removed from account {}.", request.getAccountId(),
+ Cause.ERROR_DELETING_CONTACT_INFO);
return;
}
- logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(),
- "Contact info was not removed from account {}.", request.getAccountId(),
- Cause.ERROR_DELETING_CONTACT_INFO);
- return;
+ logger.info("SUCCESS: Contact info {}:{} was removed from account {}.",
+ request.getContactInfo().getType().name(), request.getContactInfo().getValue(), request.getAccountId());
+ responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
+ responseObserver.onCompleted();
}
@Override
@@ -880,8 +878,8 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
boolean removedFromObject = profile.removeAuthenticationProvider(existingAuthProviderToDelete.get());
if (!removedFromObject) {
logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(),
- "Error removing authentication provider {}.",
- existingAuthProviderToDelete.get().toString(), Cause.INTERNAL_SERVER_ERROR);
+ "Error removing authentication provider {}.", existingAuthProviderToDelete.get().toString(),
+ Cause.INTERNAL_SERVER_ERROR);
return;
}
@@ -898,21 +896,20 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
boolean result = accountRepositoryAdditional.deleteAuthenticationProvider(profile,
existingAuthProviderToDelete.get());
- if (result) {
- logger.info("Authentication provider {}:{} successfuly deleted from profile id {}.",
+ if (!result) {
+ logger.error("Authentication provider {}:{} was not successfuly deleted from profile id {}.",
request.getAuthenticationProvider().getAuthenticationType().name(),
request.getAuthenticationProvider().getAuthenticationProvider(), request.getProfileId());
- responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
+ responseObserver.onNext(StatusResponse.newBuilder()
+ .setError(ErrorResponse.newBuilder().setCause(Cause.INTERNAL_SERVER_ERROR)).build());
responseObserver.onCompleted();
return;
}
- logger.error("Authentication provider {}:{} was not successfuly deleted from profile id {}.",
+ logger.info("SUCCESS: Authentication provider {}:{} successfuly deleted from profile id {}.",
request.getAuthenticationProvider().getAuthenticationType().name(),
request.getAuthenticationProvider().getAuthenticationProvider(), request.getProfileId());
- responseObserver.onNext(StatusResponse.newBuilder()
- .setError(ErrorResponse.newBuilder().setCause(Cause.INTERNAL_SERVER_ERROR)).build());
+ responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
responseObserver.onCompleted();
- return;
}
@Override
@@ -949,11 +946,12 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
if (!profile.isPresent()) {
logAndBuildGrpcProfileResponse(responseObserver, ProfileResponse.newBuilder(), "Profile id not found: {}",
request.getProfileId(), Cause.PROFILE_NOT_FOUND);
- } else {
- responseObserver.onNext(profile.get());
- responseObserver.onCompleted();
return;
}
+ ProfileResponse response = profile.get();
+ logger.info("SUCCESS: Found profile by profile ID {}: \"{}\"", request.getProfileId(), response);
+ responseObserver.onNext(response);
+ responseObserver.onCompleted();
}
@Override
@@ -1005,19 +1003,18 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
boolean result = accountRepositoryAdditional.editContactInfo(UUID.fromString(request.getAccountId()),
ContactInfo.createContactInfoFromProto(request.getOldContactInfo()),
ContactInfo.createContactInfoFromProto(request.getEditedContactInfo()));
- if (result) {
- logger.info("Edited Contact Info {}:{} to {}:{} for account {}.",
- request.getOldContactInfo().getType().name(), request.getOldContactInfo().getValue(),
- request.getEditedContactInfo().getType().name(), request.getEditedContactInfo().getValue(),
- request.getAccountId());
- responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
- responseObserver.onCompleted();
+ if (!result) {
+ logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(),
+ "Contact info was not edited for account {}.", request.getAccountId(),
+ Cause.ERROR_EDITING_CONTACT_INFO);
return;
}
- logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(),
- "Contact info was not edited for account {}.", request.getAccountId(),
- Cause.ERROR_EDITING_CONTACT_INFO);
- return;
+ logger.info("SUCCESS: Edited Contact Info {}:{} to {}:{} for account {}.",
+ request.getOldContactInfo().getType().name(), request.getOldContactInfo().getValue(),
+ request.getEditedContactInfo().getType().name(), request.getEditedContactInfo().getValue(),
+ request.getAccountId());
+ responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
+ responseObserver.onCompleted();
}
private SearchResultDetails buildSearchResultDetails(String id, String avatar, String firstName, String lastName) {
@@ -1032,15 +1029,6 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
return searchResultDetails.build();
}
- private static void logAndBuildGrpcSearchResponse(StreamObserver responseObserver,
- SearchResponse.Builder newBuilder, String logMessage, String logValue, Cause cause, String causeMessage) {
-
- logger.debug(logMessage, logValue);
- responseObserver.onNext(
- newBuilder.setError(ErrorResponse.newBuilder().setCause(cause).setMessage(causeMessage)).build());
- responseObserver.onCompleted();
- }
-
@Override
@PerformPermissionCheck
@Permitted(role = RoleConstants.ACCOUNT_ADMIN)
@@ -1098,23 +1086,22 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
UUID.fromString(request.getProfileId()),
AuthenticationProvider.createAuthenticationProviderFromProto(request.getOldAuthProvider()),
AuthenticationProvider.createAuthenticationProviderFromProto(request.getUpdatedAuthProvider()));
- if (result) {
- logger.info("Updated auth provider {}:{} to {}:{} for profile {}.",
+ if (!result) {
+ logger.error("Auth provider {}:{} was not updated for profile {}.",
request.getOldAuthProvider().getAuthenticationType().name(),
- request.getOldAuthProvider().getAuthenticationProvider(),
- request.getUpdatedAuthProvider().getAuthenticationType().name(),
- request.getUpdatedAuthProvider().getAuthenticationProvider(), request.getProfileId());
- responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
- responseObserver.onCompleted();
+ request.getOldAuthProvider().getAuthenticationProvider(), request.getProfileId());
+ logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(),
+ "Auth provider was not updated for profile {}.", request.getProfileId(),
+ Cause.ERROR_UPDATING_AUTH_PROVIDER);
return;
}
- logger.error("Auth provider {}:{} was not updated for profile {}.",
+ logger.info("SUCCESS: Updated auth provider {}:{} to {}:{} for profile {}.",
request.getOldAuthProvider().getAuthenticationType().name(),
- request.getOldAuthProvider().getAuthenticationProvider(), request.getProfileId());
- logAndBuildGrpcStatusResponse(responseObserver, StatusResponse.newBuilder(),
- "Auth provider was not updated for profile {}.", request.getProfileId(),
- Cause.ERROR_UPDATING_AUTH_PROVIDER);
- return;
+ request.getOldAuthProvider().getAuthenticationProvider(),
+ request.getUpdatedAuthProvider().getAuthenticationType().name(),
+ request.getUpdatedAuthProvider().getAuthenticationProvider(), request.getProfileId());
+ responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
+ responseObserver.onCompleted();
}
@Override
@@ -1142,9 +1129,11 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
+ request.getAuthenticationIdentifier() + ":" + request.getAuthenticationIdentifier(),
"", Cause.ACCOUNT_NOT_FOUND);
} else {
- responseObserver.onNext(account.get());
+ AccountResponse response = account.get();
+ logger.info("SUCCESS: Found account by login option {}: \"{}\"", request.getAuthenticationIdentifier(),
+ response);
+ responseObserver.onNext(response);
responseObserver.onCompleted();
- return;
}
} catch (IncorrectAccountCountException e) {
logger.error("Error getting account by login option {}:{}: {}", request.getAuthenticationType(),
@@ -1197,41 +1186,12 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
account.get().getAvatar(), account.get().getFirstName(), account.get().getLastName());
SearchResponse response = SearchResponse.newBuilder().setSearchResultDetails(searchResultDetails).build();
- logger.debug("Found result for account by social provider {}: \"{}\"", request.getAuthenticationIdentifier(),
- response);
+ logger.info("SUCCESS: Found result for account by social provider {}: \"{}\"",
+ request.getAuthenticationIdentifier(), response);
responseObserver.onNext(response);
responseObserver.onCompleted();
}
- private static void logAndBuildGrpcAccountResponse(StreamObserver responseObserver,
- AccountResponse.Builder newBuilder, String logMessage, String logValue, Cause cause) {
-
- logger.error(logMessage, logValue);
- responseObserver.onNext(newBuilder.setError(ErrorResponse.newBuilder().setCause(cause)).build());
- responseObserver.onCompleted();
- }
-
- private static void logAndBuildGrpcAccountsResponse(StreamObserver responseObserver,
- AccountsResponse.Builder newBuilder, String logMessage, String logValue, Cause cause) {
- logger.error(logMessage, logValue);
- responseObserver.onNext(newBuilder.setError(ErrorResponse.newBuilder().setCause(cause)).build());
- responseObserver.onCompleted();
- }
-
- private static void logAndBuildGrpcProfileResponse(StreamObserver responseObserver,
- ProfileResponse.Builder newBuilder, String logMessage, String logValue, Cause cause) {
- logger.error(logMessage, logValue);
- responseObserver.onNext(newBuilder.setError(ErrorResponse.newBuilder().setCause(cause)).build());
- responseObserver.onCompleted();
- }
-
- private static void logAndBuildGrpcStatusResponse(StreamObserver responseObserver,
- StatusResponse.Builder newBuilder, String logMessage, String logValue, Cause cause) {
- logger.error(logMessage, logValue);
- responseObserver.onNext(newBuilder.setError(ErrorResponse.newBuilder().setCause(cause)).build());
- responseObserver.onCompleted();
- }
-
@Override
@PerformPermissionCheck
@Permitted(role = RoleConstants.ACCOUNT_ADMIN)
@@ -1278,4 +1238,41 @@ public class AccountServiceImpl extends AccountServiceGrpc.AccountServiceImplBas
responseObserver.onNext(StatusResponse.newBuilder().setStatus("SUCCESS").build());
responseObserver.onCompleted();
}
+
+ private static void logAndBuildGrpcSearchResponse(StreamObserver responseObserver,
+ SearchResponse.Builder newBuilder, String logMessage, String logValue, Cause cause, String causeMessage) {
+ logger.error(logMessage, logValue);
+ responseObserver.onNext(
+ newBuilder.setError(ErrorResponse.newBuilder().setCause(cause).setMessage(causeMessage)).build());
+ responseObserver.onCompleted();
+ }
+
+ private static void logAndBuildGrpcAccountResponse(StreamObserver responseObserver,
+ AccountResponse.Builder newBuilder, String logMessage, String logValue, Cause cause) {
+ logger.error(logMessage, logValue);
+ responseObserver.onNext(newBuilder.setError(ErrorResponse.newBuilder().setCause(cause)).build());
+ responseObserver.onCompleted();
+ }
+
+ private static void logAndBuildGrpcAccountsResponse(StreamObserver responseObserver,
+ AccountsResponse.Builder newBuilder, String logMessage, String logValue, Cause cause) {
+ logger.error(logMessage, logValue);
+ responseObserver.onNext(newBuilder.setError(ErrorResponse.newBuilder().setCause(cause)).build());
+ responseObserver.onCompleted();
+ }
+
+ private static void logAndBuildGrpcProfileResponse(StreamObserver responseObserver,
+ ProfileResponse.Builder newBuilder, String logMessage, String logValue, Cause cause) {
+ logger.error(logMessage, logValue);
+ responseObserver.onNext(newBuilder.setError(ErrorResponse.newBuilder().setCause(cause)).build());
+ responseObserver.onCompleted();
+ }
+
+ private static void logAndBuildGrpcStatusResponse(StreamObserver responseObserver,
+ StatusResponse.Builder newBuilder, String logMessage, String logValue, Cause cause) {
+ logger.error(logMessage, logValue);
+ responseObserver.onNext(newBuilder.setError(ErrorResponse.newBuilder().setCause(cause)).build());
+ responseObserver.onCompleted();
+ }
+
}
diff --git a/src/main/java/biz/nynja/account/services/erlang/ErlangAccountMqttBridge.java b/src/main/java/biz/nynja/account/services/erlang/ErlangAccountMqttBridge.java
index 3d0832c20d3c8ecf13cf99f0ae15024249800a99..da3fdf52957e8ff68b67a1a673a99136f0ca9a4a 100644
--- a/src/main/java/biz/nynja/account/services/erlang/ErlangAccountMqttBridge.java
+++ b/src/main/java/biz/nynja/account/services/erlang/ErlangAccountMqttBridge.java
@@ -32,7 +32,7 @@ public class ErlangAccountMqttBridge implements ErlangAccountBridge {
private final ErlangBridgeConfiguration erlangBridgeConfiguration;
- public ErlangAccountMqttBridge(ErlangBridgeConfiguration erlangBridgeConfiguration) throws MalformedURLException {
+ public ErlangAccountMqttBridge(ErlangBridgeConfiguration erlangBridgeConfiguration) {
this.erlangBridgeConfiguration = erlangBridgeConfiguration;
}
@@ -42,44 +42,35 @@ public class ErlangAccountMqttBridge implements ErlangAccountBridge {
if (!erlangBridgeConfiguration.isEnabled())
return true;
ProfileData profileData = buildProfileData(profile, account);
- // todo update after testing with real connection
- BridgeSuccessResponse response = buildGrpcConnection().createProfile(profileData);
- return true;
+ return buildGrpcConnection().createProfile(profileData).getSuccess();
}
@Override
public boolean deleteProfile(UUID profileId, List accountsIds) {
if (!erlangBridgeConfiguration.isEnabled())
return true;
- BridgeSuccessResponse response = buildGrpcConnection()
- .deleteProfile(buildDeleteProfileData(profileId, (UUID[]) accountsIds.toArray()));
- return true;
+ return buildGrpcConnection().deleteProfile(buildDeleteProfileData(profileId, (UUID[]) accountsIds.toArray())).getSuccess();
}
@Override
public boolean createAccount(Account account) {
if (!erlangBridgeConfiguration.isEnabled())
return true;
- BridgeSuccessResponse response = buildGrpcConnection().createAccount(buildAccountData(account));
-
- return true;
+ return buildGrpcConnection().createAccount(buildAccountData(account)).getSuccess();
}
@Override
public boolean updateAccount(Account account) {
if (!erlangBridgeConfiguration.isEnabled())
return true;
-
- return true;
+ return buildGrpcConnection().updateAccount(buildAccountData(account)).getSuccess();
}
@Override
public boolean deleteAccount(UUID profileId, UUID accountId) {
if (!erlangBridgeConfiguration.isEnabled())
return true;
- BridgeSuccessResponse response = buildGrpcConnection()
- .deleteAccount(buildDeleteProfileData(profileId, accountId));
- return true;
+ return buildGrpcConnection().deleteAccount(buildDeleteProfileData(profileId, accountId)).getSuccess();
}
private ProfileData buildProfileData(Profile profile, Account account) {
@@ -91,8 +82,8 @@ public class ErlangAccountMqttBridge implements ErlangAccountBridge {
private AccountData buildAccountData(Account account) {
return AccountData.newBuilder().setAccountId(account.getAccountId().toString())
.setFirstName(account.getFirstName()).setLastName(account.getLastName())
- .setProfileId(account.getProfileId().toString())
- .setUsername(account.getUsername()).setAvatar(account.getAvatar())
+ .setProfileId(account.getProfileId().toString()).setUsername(account.getUsername())
+ .setAvatar(account.getAvatar())
.setLastUpdateTimestamp(
Objects.isNull(account.getLastUpdateTimestamp()) ? Long.toString(System.currentTimeMillis())
: account.getLastUpdateTimestamp().toString())
@@ -106,8 +97,9 @@ public class ErlangAccountMqttBridge implements ErlangAccountBridge {
}
private AccountBridgeGrpc.AccountBridgeBlockingStub buildGrpcConnection() {
- ManagedChannel managedChannel = ManagedChannelBuilder.forAddress(erlangBridgeConfiguration.getHost(),
- Integer.parseInt(erlangBridgeConfiguration.getPort())).usePlaintext().build();
+ ManagedChannel managedChannel = ManagedChannelBuilder
+ .forAddress(erlangBridgeConfiguration.getHost(), Integer.parseInt(erlangBridgeConfiguration.getPort()))
+ .usePlaintext().build();
AccountBridgeGrpc.AccountBridgeBlockingStub bridgeServiceBlockingStub = AccountBridgeGrpc
.newBlockingStub(managedChannel);
return MetadataUtils.attachHeaders(bridgeServiceBlockingStub, getHeaders());
diff --git a/src/main/java/biz/nynja/account/validation/Validators.java b/src/main/java/biz/nynja/account/validation/Validators.java
index 179d49afcb6aaa776db4806750477d478f4d12b4..21dc73cca84cc91da3fc83b7dfd5d5d0375b88a2 100644
--- a/src/main/java/biz/nynja/account/validation/Validators.java
+++ b/src/main/java/biz/nynja/account/validation/Validators.java
@@ -9,10 +9,8 @@ import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import javax.mail.internet.AddressException;
-import javax.mail.internet.InternetAddress;
-
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.apache.commons.validator.routines.EmailValidator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -105,7 +103,7 @@ public class Validators {
if (username == null) {
return false;
}
- return username.matches("[a-zA-Z0-9_]{1,32}");
+ return username.matches("[a-zA-Z0-9_]{2,32}");
}
public boolean isAccountNameValid(String accountName) {
@@ -363,8 +361,8 @@ public class Validators {
}
if (authenticationIdentifier == null || authenticationIdentifier.isEmpty()) {
- validation.addError(
- new ValidationError("Missing authentication provider identifier", Cause.MISSING_AUTH_PROVIDER_ID));
+ validation.addError(new ValidationError("Missing authentication provider identifier",
+ Cause.MISSING_AUTH_PROVIDER_ID));
return validation;
}
@@ -390,9 +388,9 @@ public class Validators {
public boolean isPhoneNumberValid(String phoneNumber, String countryCode) {
boolean isValid = false;
-
+
logger.debug("Checking validity of phone number {} and code {}.", phoneNumber, countryCode);
-
+
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber pn;
try {
@@ -400,7 +398,7 @@ public class Validators {
isValid = phoneUtil.isValidNumberForRegion(pn, countryCode);
} catch (NumberParseException e) {
isValid = false;
- }
+ }
logger.debug("PhoneNumber: {} for country: {} is valid: {}", phoneNumber, countryCode, isValid);
@@ -452,16 +450,11 @@ public class Validators {
}
public boolean isEmailValid(String email) {
- boolean result = true;
- logger.debug("Checking email: {}", email);
+ logger.info("Checking email: {}", email);
- try {
- InternetAddress emailAddr = new InternetAddress(email);
- emailAddr.validate();
- } catch (AddressException ex) {
- result = false;
- }
- logger.debug("Email: {} is valid: {}", email, result);
+ EmailValidator eValidator = EmailValidator.getInstance();
+ boolean result = eValidator.isValid(email);
+ logger.info("Email: {} is " + (result ? "" : "not ") + "valid.", email);
return result;
}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 4746d23ff667089f4befb23d9fbcd3bb0f7e5bc3..3e295124d4b43769e013e270b0cbd6ee539e35c6 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -36,7 +36,7 @@ account-data:
max-contact-info-of-type: 10
profile-data:
- max-authenticationproviders-per-profile: 20
+ max-authenticationproviders-per-profile: 3
erlang-bridge:
enabled: false
diff --git a/src/main/resources/application-production.yml b/src/main/resources/application-production.yml
index a404f31b82aa47f18a9f777cbd441052933d0c40..c945767f9394ff6893d51fb74842ec01a5bf6fdc 100644
--- a/src/main/resources/application-production.yml
+++ b/src/main/resources/application-production.yml
@@ -30,7 +30,7 @@ account-data:
max-contact-info-of-type: ${MAX_CONTACT_INFO_OF_TYPE:10}
profile-data:
-max-authenticationproviders-per-profile: 20
+ max-authenticationproviders-per-profile: 3
erlang-bridge:
enabled: ${ERLANG_ENABLED:false}