From 17b6c581947770e721631441ffcbeb9c51f841d3 Mon Sep 17 00:00:00 2001 From: Jayendra Date: Thu, 5 Dec 2019 12:37:02 +0530 Subject: [PATCH 01/11] Added account search grpc endpoints for market admin --- .../repositories/admin/AccountRepository.java | 217 +++++ .../account/services/AdminAccountsImpl.java | 767 ++++++++++++++++++ .../services/admin/AccountService.java | 72 ++ src/main/proto/AdminAccounts.proto | 144 ++++ 4 files changed, 1200 insertions(+) create mode 100644 src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java create mode 100644 src/main/java/biz/nynja/account/services/AdminAccountsImpl.java create mode 100644 src/main/java/biz/nynja/account/services/admin/AccountService.java create mode 100644 src/main/proto/AdminAccounts.proto diff --git a/src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java b/src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java new file mode 100644 index 0000000..4b7acf3 --- /dev/null +++ b/src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java @@ -0,0 +1,217 @@ +package biz.nynja.account.repositories.admin; + + +import biz.nynja.account.models.Account; +import com.datastax.driver.core.PagingState; +import com.datastax.driver.core.Statement; +import com.datastax.driver.core.querybuilder.QueryBuilder; +import com.grpcServer.entity.Account; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.cassandra.core.CassandraTemplate; +import org.springframework.data.cassandra.core.query.CassandraPageRequest; +import org.springframework.data.cassandra.core.query.Criteria; +import org.springframework.data.cassandra.core.query.Query; +import org.springframework.data.domain.Slice; +import org.springframework.stereotype.Repository; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +/** + * This Account Repository contains the account search functions + * for market admin panel to filter accounts while + * broadcasting message + * + * @author Jayendra + * @since 2019-12-04 + * + */ + + +@Repository +public class AccountRepository { + + + + @Autowired + private CassandraTemplate cassandraTemplate; + + private static final Class ENTITY_CLASS = Account.class; + private static final Logger logger = LoggerFactory.getLogger(AccountRepository.class); + + + public List getAccountByAccountId(UUID accountId) { + + Statement statement = QueryBuilder.select().from("account") + .where(QueryBuilder.eq("accountid", accountId)); + + return cassandraTemplate.select(statement, ENTITY_CLASS); + } + + public List getAccountByAuthenticationProvider(String authenticationprovider) { + + Statement statement = QueryBuilder.select().from("accountbyauthenticationprovider") + .where(QueryBuilder.eq("authenticationprovider", authenticationprovider)); + + return cassandraTemplate.select(statement, ENTITY_CLASS); + + } + + public List getAccountByUsername(String username) { + + Statement statement = QueryBuilder.select().from("accountbyusername") + .where(QueryBuilder.eq("username", username)); + + return cassandraTemplate.select(statement, ENTITY_CLASS); + + } + + public List getAccountByFirstname(String firstname) { + + Statement statement = QueryBuilder.select().from("accountbyfirstname") + .where(QueryBuilder.eq("firstname", firstname)); + + return cassandraTemplate.select(statement, ENTITY_CLASS); + + } + + public List getAccountByLastname(String lastname) { + + Statement statement = QueryBuilder.select().from("accountbylastname") + .where(QueryBuilder.eq("lastname", lastname)); + + return cassandraTemplate.select(statement, ENTITY_CLASS); + + } + + + public List getAllAccounts() { + String getAllAccounts = "SELECT * FROM " + cassandraTemplate.getTableName(ENTITY_CLASS).toString() + ""; + return (List) cassandraTemplate.select(getAllAccounts, ENTITY_CLASS); + } + + public List getAccountByIds(UUID[] acccountIds) { + + Query query = Query.query(Criteria.where("accountid").in(acccountIds)); + return (List) cassandraTemplate.select(query, ENTITY_CLASS); + } + + + public long getAllAccountsSize() { + + return cassandraTemplate.count(ENTITY_CLASS); + + } + + public List getAccountsByCreationTimeStamp(long fromCreationTime, long toCreationTime){ + + Statement statement = QueryBuilder.select().from("accountbycreationtimestamp") + .where(QueryBuilder.gte("creationtimestamp", fromCreationTime)) + .and(QueryBuilder.lte("creationtimestamp", toCreationTime)).allowFiltering(); + + return cassandraTemplate.select(statement, ENTITY_CLASS); + } + + + public Map getAccountsByCreationTimeStampPagination(long fromCreationTime, long toCreationTime, int fetchSize, String pageState) { + + Statement statement = QueryBuilder.select().from("accountbycreationtimestamp") + .where(QueryBuilder.gte("creationtimestamp", fromCreationTime)) + .and(QueryBuilder.lte("creationtimestamp", toCreationTime)).allowFiltering(); + + if (pageState != null) { + statement.setPagingState(PagingState.fromString(pageState)); + } + + Slice accounts = cassandraTemplate.slice(statement, ENTITY_CLASS); + List accountsList = accounts.getContent(); + + + if (accountsList != null) { + logger.info("Content Size : {}", accountsList.size()); + } + + logger.info("Accounts has next : {}", accounts.hasNext()); + + Map accountsPagedData = new HashMap<>(2); + + String nextPageState = null; + + if (accountsList == null || accountsList.size() == 0) { + logger.info("No more content in accounts pagination"); + System.out.println(""); + System.out.println("No more data in accounts pagination"); + return null; + + } else if (accountsList.size() < fetchSize) { + logger.info("No more content in next page"); + System.out.println(""); + System.out.println("No more data in next page"); + + nextPageState = "end"; + + } else { + + CassandraPageRequest next = (CassandraPageRequest) accounts.nextPageable(); + nextPageState = next.getPagingState().toString(); + } + + accountsPagedData.put("pageState", nextPageState); + accountsPagedData.put("accounts", accountsList); + + return accountsPagedData; + + } + + + public Map getAccountsByPagination(int fetchSize, String pageState) { + + com.datastax.driver.core.Statement select = QueryBuilder.select().from(cassandraTemplate.getTableName(ENTITY_CLASS).toString()).setFetchSize(fetchSize); + + if (pageState != null) { + select.setPagingState(PagingState.fromString(pageState)); + } + + Slice accounts = cassandraTemplate.slice(select, ENTITY_CLASS); + List accountsList = accounts.getContent(); + + if (accountsList != null) { + logger.info("Content Size : {}", accountsList.size()); + } + logger.info("Accounts has next : {}", accounts.hasNext()); + + + Map accountsPagedData = new HashMap<>(2); + + String nextPageState = null; + + if (accountsList == null || accountsList.size() == 0) { + logger.info("No more content in accounts pagination"); + System.out.println(""); + System.out.println("No more data in accounts pagination"); + return null; + + } else if (accountsList.size() < fetchSize) { + logger.info("No more content in next page"); + System.out.println(""); + System.out.println("No more data in next page"); + + nextPageState = "end"; + + } else { + + CassandraPageRequest next = (CassandraPageRequest) accounts.nextPageable(); + nextPageState = next.getPagingState().toString(); + } + + accountsPagedData.put("pageState", nextPageState); + accountsPagedData.put("accounts", accountsList); + + return accountsPagedData; + } + + +} diff --git a/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java b/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java new file mode 100644 index 0000000..5eaa8ba --- /dev/null +++ b/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java @@ -0,0 +1,767 @@ +package biz.nynja.account.services; + + +import biz.nynja.account.models.Account; +import biz.nynja.account.services.admin.AccountService; +import biz.nynja.admin.account.grpc.AccountDetails; +import biz.nynja.admin.account.grpc.AccountsList; +import biz.nynja.admin.account.grpc.AccountsResponse; +import biz.nynja.admin.account.grpc.AdminAccountsServiceGrpc.AdminAccountsServiceImplBase; +import biz.nynja.admin.account.grpc.ErrorResponse; +import com.google.protobuf.ProtocolStringList; +import org.lognet.springboot.grpc.GRpcService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +/** + * AdminAccountsImpl contains endpoints for market admin + * panel to filter accounts while broadcasting message + * + * @author Jayendra + * @since 2019-12-04 + * + */ + +@GRpcService +public class AdminAccountsImpl extends AdminAccountsServiceImplBase { + + @Autowired + private AccountService accountService; + + private static final Logger logger = LoggerFactory.getLogger(AdminAccountsImpl.class); + + @Override + public void searchByAccountId(biz.nynja.admin.account.grpc.SearchByAccountIdRequest request, + io.grpc.stub.StreamObserver responseObserver) { + + logger.info("Search Account By Account Id Endpoint."); + logger.info(""); + + String accountId = request.getAccountId(); + logger.info("Account-Id : " + accountId); + + List accountsList = null; + String nextPageState = null; + ErrorResponse errorResponse = null; + + + accountsList = accountService.getAccountByAccountId(UUID.fromString(accountId)); + logger.info("Accounts-list : {}", accountsList); + + + if (accountsList == null) { + logger.info("Account list in null."); + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else if (accountsList.size() == 0) { + logger.info("Account list size is zero."); + + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else { + + AccountsList.Builder accountsListBuilder = AccountsList.newBuilder(); + for (Account account : accountsList) { + + System.out.println(""); + System.out.println("Account : "); + System.out.println(account); + System.out.println(""); + + accountsListBuilder.addAccountDetails(AccountDetails.newBuilder().setFirstName((account.getFirstName() == null) ? "" : account.getFirstName()) + .setLastName((account.getLastName() == null) ? "" : account.getLastName()).setProfileId((account.getProfileId() == null) ? "" : account.getProfileId().toString()) + .setAccountId(account.getAccountId().toString()).setAuthenticationprovider((account.getAuthenticationProvider() == null) ? "" : account.getAuthenticationProvider()) + .setAuthenticationprovidertype((account.getAuthenticationProviderType() == null) ? "" : account.getAuthenticationProviderType()) + .setAccountMark((account.getAccountMark() != null) ? account.getAccountMark() : "").setAccountName((account.getAccountName() != null) ? account.getAccountName() : "") + .setAvatar((account.getAvatar() != null) ? account.getAvatar() : "").setCreationTimestamp((account.getCreationTimestamp() != null) ? account.getCreationTimestamp() : 0) + .setQrCode((account.getQrCode() != null) ? account.getQrCode() : "") + .setUsername(account.getUsername()).build()); + } + + accountsListBuilder.build(); + + AccountsResponse response = (errorResponse == null) ? AccountsResponse.newBuilder().setAccountsList(accountsListBuilder) + .build() : AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } + } + + @Override + public void getAccountsByCreationTime(biz.nynja.admin.account.grpc.GetAccountsByCreationTime request, + io.grpc.stub.StreamObserver responseObserver) { + + logger.info(""); + logger.info("Get accounts by creation time endpoint."); + + int limit = request.getLimit(); + String pageState = request.getPageState(); + int pagination = request.getPagination(); // Do pagination 'Yes' or 'No' + long fromCreationTime = request.getFromCreationTime(); + long toCreationTime = request.getToCreationTime(); + + logger.info("Limit : {}", limit); + logger.info("PageState : {}", pageState); + logger.info("Pagination : {}", pagination); + logger.info("FromCreationTime : {}", fromCreationTime); + logger.info("ToCreationTime : {}", toCreationTime); + logger.info(""); + + List accountsList = null; + String nextPageState = null; + ErrorResponse errorResponse = null; + + // Fetching records on basis of pagination. + if (pagination == 1) { + logger.info("Fetching records on basis of pagination."); + + + Map accountsMap = (pageState.equals("nil")) ? accountService.getAccountsByPagination(limit, null) : accountService.getAccountsByPagination(limit, pageState); + accountsList = (List) accountsMap.get("accounts"); + nextPageState = accountsMap.get("pageState").toString(); + + logger.info("Next page state : " + nextPageState); + + + if (accountsList == null) { + logger.info("Account list in null."); + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else if (accountsList.size() == 0) { + logger.info("Account list size is zero."); + + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else { + + AccountsList.Builder accountsListBuilder = AccountsList.newBuilder(); + + for (Account account : accountsList) { + + accountsListBuilder.addAccountDetails(AccountDetails.newBuilder().setFirstName((account.getFirstName() == null) ? "" : account.getFirstName()) + .setLastName((account.getLastName() == null) ? "" : account.getLastName()).setProfileId((account.getProfileId() == null) ? "" : account.getProfileId().toString()) + .setAccountId(account.getAccountId().toString()).setAuthenticationprovider((account.getAuthenticationProvider() == null) ? "" : account.getAuthenticationProvider()) + .setAuthenticationprovidertype((account.getAuthenticationProviderType() == null) ? "" : account.getAuthenticationProviderType()) + .setAccountMark((account.getAccountMark() != null) ? account.getAccountMark() : "").setAccountName((account.getAccountName() != null) ? account.getAccountName() : "") + .setAvatar((account.getAvatar() != null) ? account.getAvatar() : "").setCreationTimestamp((account.getCreationTimestamp() != null) ? account.getCreationTimestamp() : 0) + .setQrCode((account.getQrCode() != null) ? account.getQrCode() : "") + .setUsername(account.getUsername()).build()); + } + + if (nextPageState != null) { + accountsListBuilder.setNextPageState(nextPageState); + } + + accountsListBuilder.build(); + + AccountsResponse response = (errorResponse == null) ? AccountsResponse.newBuilder().setAccountsList(accountsListBuilder) + .build() : AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + + } + + } else { + logger.info("Not fetching records on basis of pagination."); + + accountsList = accountService.getAccountsByCreationTimeStamp(fromCreationTime, toCreationTime); + logger.info("Accounts-list : {}", accountsList); + + if (accountsList == null) { + logger.info("Account list in null."); + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else if (accountsList.size() == 0) { + logger.info("Account list size is zero."); + + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else { + + AccountsList.Builder accountsListBuilder = AccountsList.newBuilder(); + for (Account account : accountsList) { + + accountsListBuilder.addAccountDetails(AccountDetails.newBuilder().setFirstName((account.getFirstName() == null) ? "" : account.getFirstName()) + .setLastName((account.getLastName() == null) ? "" : account.getLastName()).setProfileId((account.getProfileId() == null) ? "" : account.getProfileId().toString()) + .setAccountId(account.getAccountId().toString()).setAuthenticationprovider((account.getAuthenticationProvider() == null) ? "" : account.getAuthenticationProvider()) + .setAuthenticationprovidertype((account.getAuthenticationProviderType() == null) ? "" : account.getAuthenticationProviderType()) + .setAccountMark((account.getAccountMark() != null) ? account.getAccountMark() : "").setAccountName((account.getAccountName() != null) ? account.getAccountName() : "") + .setAvatar((account.getAvatar() != null) ? account.getAvatar() : "").setCreationTimestamp((account.getCreationTimestamp() != null) ? account.getCreationTimestamp() : 0) + .setQrCode((account.getQrCode() != null) ? account.getQrCode() : "") + .setUsername(account.getUsername()).build()); + } + + accountsListBuilder.build(); + + AccountsResponse response = (errorResponse == null) ? AccountsResponse.newBuilder().setAccountsList(accountsListBuilder) + .build() : AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } + + } + + } + + @Override + public void getAccounts(biz.nynja.admin.account.grpc.GetAllAccountsRequest request, + io.grpc.stub.StreamObserver responseObserver) { + + logger.info(""); + logger.info("Get all accounts endpoint."); + + ProtocolStringList accountIdsList = request.getAccountIdsList(); + + // List accountIdsList = null; + int allAccounts = request.getAllAccounts(); + int pagination = request.getPagination(); + String pageState = request.getPageState(); + int limit = request.getLimit(); + + logger.info("Request Parameters"); + logger.info("accountIdsList : " + accountIdsList); + logger.info("allAccounts : " + allAccounts); + logger.info("pagination : " + pagination); + logger.info("pageState : " + pageState); + logger.info("limit : " + limit); + + /*System.out.println(""); + System.out.println("===================="); + System.out.println("Request Parameters :"); + System.out.println("===================="); + System.out.println(""); + System.out.println("accountIdsList : " + accountIdsList); + System.out.println("allAccounts : " + allAccounts); + System.out.println("pagination : " + pagination); + System.out.println("pageState : " + pageState); + System.out.println("limit : " + limit); + System.out.println(""); + System.out.println("------------");*/ + + List accountsList = null; + String nextPageState = null; + ErrorResponse errorResponse = null; + + + if (!accountIdsList.isEmpty()) { + logger.info("Fetching details on basis of given account Ids."); + System.out.println("Fetching details on basis of given account Ids."); + System.out.println(""); + + // Set accountIds = new HashSet<>(accountIdsList.size()); + + UUID[] accountIds = new UUID[accountIdsList.size()]; + + for (int i = 0; i <= accountIdsList.size() - 1; i++) { + accountIds[i] = UUID.fromString(accountIdsList.get(i)); + } + + accountsList = accountService.getAccountByIds(accountIds); + } else if (pagination == 1) { + + logger.info("Fetching details on basis of pagination."); + System.out.println(""); + System.out.println("Fetching details on basis of pagination."); + + if (pageState == null || pageState.equals("") || limit <= 0) { + + logger.info("Invalid input for pagination"); + logger.info("pageState : " + pageState); + logger.info("Limit : " + limit); + System.out.println(""); + System.out.println("Invalid input for pagination"); + System.out.println("limit : " + limit); + System.out.println("pageState : " + pageState); + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.INVALID_INPUT).setMessage("Your input is not valid.") + .build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } + + Map accountsMap = (pageState.equals("nil")) ? accountService.getAccountsByPagination(limit, null) : accountService.getAccountsByPagination(limit, pageState); + accountsList = (List) accountsMap.get("accounts"); + nextPageState = accountsMap.get("pageState").toString(); + + logger.info("Next page state : " + nextPageState); + System.out.println("Next page state : " + nextPageState); + + } else { + logger.info("Fetching all account Details."); + System.out.println("Fetching all account Details."); + System.out.println(""); + + accountsList = accountService.getAllAccounts(); + } + + logger.info("Accounts list size : " + accountsList.size()); + System.out.println("Accounts list size : " + accountsList.size()); + System.out.println(""); + + if (accountsList.size() <= 0) { + logger.info("No account details found : "); + System.out.println("No account details found : "); + System.out.println(""); + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } + + AccountsList.Builder accountsListBuilder = AccountsList.newBuilder(); + + for (Account account : accountsList) { + + /* accountsListBuilder.addAccountDetails(AccountDetails.newBuilder().setFirstName(account.getFirstName()) + .setLastName(account.getLastName()).setProfileId(account.getProfileId().toString()) + .setAccountId(account.getAccountId().toString()).setAuthenticationprovider(account.getAuthenticationProvider()) + .setAuthenticationprovidertype(account.getAuthenticationProviderType()) + .setUsername(account.getUsername()).build());*/ + + accountsListBuilder.addAccountDetails(AccountDetails.newBuilder().setFirstName((account.getFirstName() == null) ? "" : account.getFirstName()) + .setLastName((account.getLastName() == null) ? "" : account.getLastName()).setProfileId((account.getProfileId() == null) ? "" : account.getProfileId().toString()) + .setAccountId(account.getAccountId().toString()).setAuthenticationprovider((account.getAuthenticationProvider() == null) ? "" : account.getAuthenticationProvider()) + .setAuthenticationprovidertype((account.getAuthenticationProviderType() == null) ? "" : account.getAuthenticationProviderType()) + .setAccountMark((account.getAccountMark() != null) ? account.getAccountMark() : "").setAccountName((account.getAccountName() != null) ? account.getAccountName() : "") + .setAvatar((account.getAvatar() != null) ? account.getAvatar() : "").setCreationTimestamp((account.getCreationTimestamp() != null) ? account.getCreationTimestamp() : 0) + .setQrCode((account.getQrCode() != null) ? account.getQrCode() : "") + .setUsername(account.getUsername()).build()); + } + + if (nextPageState != null) { + accountsListBuilder.setNextPageState(nextPageState); + } + + accountsListBuilder.build(); + + AccountsResponse response = (errorResponse == null) ? AccountsResponse.newBuilder().setAccountsList(accountsListBuilder) + .build() : AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + + } + + + @Override + public void searchByUsername(biz.nynja.admin.account.grpc.SearchByUsernameRequest request, + io.grpc.stub.StreamObserver responseObserver) { + + logger.info("Search By Username Endpoint."); + logger.info(""); + + String username = request.getUsername(); + logger.info("Username : " + username); + + List accountsList = null; + String nextPageState = null; + ErrorResponse errorResponse = null; + + + accountsList = accountService.getAccountByUsername(username); + logger.info("Accounts-list : {}", accountsList); + + + if (accountsList == null) { + logger.info("Account list in null."); + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else if (accountsList.size() == 0) { + logger.info("Account list size is zero."); + + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else { + + AccountsList.Builder accountsListBuilder = AccountsList.newBuilder(); + for (Account account : accountsList) { + + System.out.println(""); + System.out.println("Account : "); + System.out.println(account); + System.out.println(""); + + accountsListBuilder.addAccountDetails(AccountDetails.newBuilder().setFirstName((account.getFirstName() == null) ? "" : account.getFirstName()) + .setLastName((account.getLastName() == null) ? "" : account.getLastName()).setProfileId((account.getProfileId() == null) ? "" : account.getProfileId().toString()) + .setAccountId(account.getAccountId().toString()).setAuthenticationprovider((account.getAuthenticationProvider() == null) ? "" : account.getAuthenticationProvider()) + .setAuthenticationprovidertype((account.getAuthenticationProviderType() == null) ? "" : account.getAuthenticationProviderType()) + .setAccountMark((account.getAccountMark() != null) ? account.getAccountMark() : "").setAccountName((account.getAccountName() != null) ? account.getAccountName() : "") + .setAvatar((account.getAvatar() != null) ? account.getAvatar() : "").setCreationTimestamp((account.getCreationTimestamp() != null) ? account.getCreationTimestamp() : 0) + .setQrCode((account.getQrCode() != null) ? account.getQrCode() : "") + .setUsername(account.getUsername()).build()); + } + + accountsListBuilder.build(); + + AccountsResponse response = (errorResponse == null) ? AccountsResponse.newBuilder().setAccountsList(accountsListBuilder) + .build() : AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } + + } + + @Override + public void searchByFirstname(biz.nynja.admin.account.grpc.SearchByFirstNameRequest request, + io.grpc.stub.StreamObserver responseObserver) { + + logger.info("Search By FirstName Endpoint."); + logger.info(""); + + String firstName = request.getFirstName(); + + logger.info("Firstname : " + firstName); + + List accountsList = null; + String nextPageState = null; + ErrorResponse errorResponse = null; + + accountsList = accountService.getAccountByFirstname(firstName); + logger.info("Accounts-list : {}", accountsList); + + + + if (accountsList == null) { + logger.info("Account list in null."); + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else if (accountsList.size() == 0) { + logger.info("Account list size is zero."); + + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else { + + AccountsList.Builder accountsListBuilder = AccountsList.newBuilder(); + for (Account account : accountsList) { + + accountsListBuilder.addAccountDetails(AccountDetails.newBuilder().setFirstName((account.getFirstName() == null) ? "" : account.getFirstName()) + .setLastName((account.getLastName() == null) ? "" : account.getLastName()).setProfileId((account.getProfileId() == null) ? "" : account.getProfileId().toString()) + .setAccountId(account.getAccountId().toString()).setAuthenticationprovider((account.getAuthenticationProvider() == null) ? "" : account.getAuthenticationProvider()) + .setAuthenticationprovidertype((account.getAuthenticationProviderType() == null) ? "" : account.getAuthenticationProviderType()) + .setAccountMark((account.getAccountMark() != null) ? account.getAccountMark() : "").setAccountName((account.getAccountName() != null) ? account.getAccountName() : "") + .setAvatar((account.getAvatar() != null) ? account.getAvatar() : "").setCreationTimestamp((account.getCreationTimestamp() != null) ? account.getCreationTimestamp() : 0) + .setQrCode((account.getQrCode() != null) ? account.getQrCode() : "") + .setUsername(account.getUsername()).build()); + } + + accountsListBuilder.build(); + + AccountsResponse response = (errorResponse == null) ? AccountsResponse.newBuilder().setAccountsList(accountsListBuilder) + .build() : AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } + + + } + + @Override + public void searchByLastname(biz.nynja.admin.account.grpc.SearchByLastNameRequest request, + io.grpc.stub.StreamObserver responseObserver) { + + logger.info("Search By LastName Endpoint."); + logger.info(""); + + String lastName = request.getLastName(); + + logger.info("Lastname : " + lastName); + + List accountsList = null; + String nextPageState = null; + ErrorResponse errorResponse = null; + + accountsList = accountService.getAccountByLastname(lastName); + logger.info("Accounts-list : {}", accountsList); + + + if (accountsList == null) { + logger.info("Account list in null."); + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else if (accountsList.size() == 0) { + logger.info("Account list size is zero."); + + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else { + + AccountsList.Builder accountsListBuilder = AccountsList.newBuilder(); + for (Account account : accountsList) { + + accountsListBuilder.addAccountDetails(AccountDetails.newBuilder().setFirstName((account.getFirstName() == null) ? "" : account.getFirstName()) + .setLastName((account.getLastName() == null) ? "" : account.getLastName()).setProfileId((account.getProfileId() == null) ? "" : account.getProfileId().toString()) + .setAccountId(account.getAccountId().toString()).setAuthenticationprovider((account.getAuthenticationProvider() == null) ? "" : account.getAuthenticationProvider()) + .setAuthenticationprovidertype((account.getAuthenticationProviderType() == null) ? "" : account.getAuthenticationProviderType()) + .setAccountMark((account.getAccountMark() != null) ? account.getAccountMark() : "").setAccountName((account.getAccountName() != null) ? account.getAccountName() : "") + .setAvatar((account.getAvatar() != null) ? account.getAvatar() : "").setCreationTimestamp((account.getCreationTimestamp() != null) ? account.getCreationTimestamp() : 0) + .setQrCode((account.getQrCode() != null) ? account.getQrCode() : "") + .setUsername(account.getUsername()).build()); + } + + accountsListBuilder.build(); + + AccountsResponse response = (errorResponse == null) ? AccountsResponse.newBuilder().setAccountsList(accountsListBuilder) + .build() : AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } + + } + + @Override + public void searchByPhoneNumber(biz.nynja.admin.account.grpc.SearchByPhoneNumberRequest request, + io.grpc.stub.StreamObserver responseObserver) { + + logger.info("Search By PhoneNumber Endpoint."); + logger.info(""); + + String phoneNumber = request.getPhoneNumber(); + + logger.info("Phonenumber : " + phoneNumber); + + List accountsList = null; + String nextPageState = null; + ErrorResponse errorResponse = null; + + accountsList = accountService.getAccountByAuthenticationProvider(phoneNumber); + logger.info("Accounts-list : {}", accountsList); + + + if (accountsList == null) { + logger.info("Account list in null."); + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else if (accountsList.size() == 0) { + logger.info("Account list size is zero."); + + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else { + + AccountsList.Builder accountsListBuilder = AccountsList.newBuilder(); + for (Account account : accountsList) { + + accountsListBuilder.addAccountDetails(AccountDetails.newBuilder().setFirstName((account.getFirstName() == null) ? "" : account.getFirstName()) + .setLastName((account.getLastName() == null) ? "" : account.getLastName()).setProfileId((account.getProfileId() == null) ? "" : account.getProfileId().toString()) + .setAccountId(account.getAccountId().toString()).setAuthenticationprovider((account.getAuthenticationProvider() == null) ? "" : account.getAuthenticationProvider()) + .setAuthenticationprovidertype((account.getAuthenticationProviderType() == null) ? "" : account.getAuthenticationProviderType()) + .setAccountMark((account.getAccountMark() != null) ? account.getAccountMark() : "").setAccountName((account.getAccountName() != null) ? account.getAccountName() : "") + .setAvatar((account.getAvatar() != null) ? account.getAvatar() : "").setCreationTimestamp((account.getCreationTimestamp() != null) ? account.getCreationTimestamp() : 0) + .setQrCode((account.getQrCode() != null) ? account.getQrCode() : "") + .setUsername(account.getUsername()).build()); + } + + accountsListBuilder.build(); + + AccountsResponse response = (errorResponse == null) ? AccountsResponse.newBuilder().setAccountsList(accountsListBuilder) + .build() : AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } + } + + @Override + public void searchByEmail(biz.nynja.admin.account.grpc.SearchByEmailRequest request, + io.grpc.stub.StreamObserver responseObserver) { + + logger.info("Search By Email Endpoint."); + logger.info(""); + + String email = request.getEmail(); + + logger.info("Email : " + email); + + List accountsList = null; + String nextPageState = null; + ErrorResponse errorResponse = null; + + accountsList = accountService.getAccountByAuthenticationProvider(email); + logger.info("Account-list : {}", accountsList); + + + + if (accountsList == null) { + logger.info("Account list in null."); + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else if (accountsList.size() == 0) { + logger.info("Account list size is zero."); + + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } else { + + AccountsList.Builder accountsListBuilder = AccountsList.newBuilder(); + for (Account account : accountsList) { + + accountsListBuilder.addAccountDetails(AccountDetails.newBuilder().setFirstName((account.getFirstName() == null) ? "" : account.getFirstName()) + .setLastName((account.getLastName() == null) ? "" : account.getLastName()).setProfileId((account.getProfileId() == null) ? "" : account.getProfileId().toString()) + .setAccountId(account.getAccountId().toString()).setAuthenticationprovider((account.getAuthenticationProvider() == null) ? "" : account.getAuthenticationProvider()) + .setAuthenticationprovidertype((account.getAuthenticationProviderType() == null) ? "" : account.getAuthenticationProviderType()) + .setAccountMark((account.getAccountMark() != null) ? account.getAccountMark() : "").setAccountName((account.getAccountName() != null) ? account.getAccountName() : "") + .setAvatar((account.getAvatar() != null) ? account.getAvatar() : "").setCreationTimestamp((account.getCreationTimestamp() != null) ? account.getCreationTimestamp() : 0) + .setQrCode((account.getQrCode() != null) ? account.getQrCode() : "") + .setUsername(account.getUsername()).build()); + } + + accountsListBuilder.build(); + + AccountsResponse response = (errorResponse == null) ? AccountsResponse.newBuilder().setAccountsList(accountsListBuilder) + .build() : AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } + } + + +} diff --git a/src/main/java/biz/nynja/account/services/admin/AccountService.java b/src/main/java/biz/nynja/account/services/admin/AccountService.java new file mode 100644 index 0000000..8bc6fa4 --- /dev/null +++ b/src/main/java/biz/nynja/account/services/admin/AccountService.java @@ -0,0 +1,72 @@ +package biz.nynja.account.services.admin; + +import biz.nynja.account.models.Account; +import biz.nynja.account.repositories.admin.AccountRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +/** + * This Account Service calls the functions of Account Repository + * which contains account search functions for market admin panel + * to filter accounts while broadcasting message + * + * @author Jayendra + * @since 2019-12-04 + * + */ + + +@Service +public class AccountService { + + @Autowired + private AccountRepository accountRepository; + + public List getAccountByAccountId(UUID accountId) { + return accountRepository.getAccountByAccountId(accountId); + } + + public List getAllAccounts() { + return accountRepository.getAllAccounts(); + } + + public Map getAccountsByPagination(int fetchSize, String pageState) { + return accountRepository.getAccountsByPagination(fetchSize, pageState); + } + + public long getAllAccountsSize() { + return accountRepository.getAllAccountsSize(); + } + + public List getAccountByIds(UUID[] accountIds) { + return accountRepository.getAccountByIds(accountIds); + } + + public Map getAccountsByCreationTimeStampPagination(long fromCreationTime, long toCreationTime, int fetchSize, String pageState) { + return accountRepository.getAccountsByCreationTimeStampPagination(fromCreationTime, toCreationTime, fetchSize, pageState); + } + + public List getAccountsByCreationTimeStamp(long fromCreationTime, long toCreationTime) { + return accountRepository.getAccountsByCreationTimeStamp(fromCreationTime, toCreationTime); + } + + public List getAccountByAuthenticationProvider(String authenticationprovider) { + return accountRepository.getAccountByAuthenticationProvider(authenticationprovider); + } + + public List getAccountByUsername(String username) { + return accountRepository.getAccountByUsername(username); + } + + public List getAccountByFirstname(String firstname) { + return accountRepository.getAccountByFirstname(firstname); + } + + public List getAccountByLastname(String lastname) { + return accountRepository.getAccountByLastname(lastname); + } +} + diff --git a/src/main/proto/AdminAccounts.proto b/src/main/proto/AdminAccounts.proto new file mode 100644 index 0000000..2cf443a --- /dev/null +++ b/src/main/proto/AdminAccounts.proto @@ -0,0 +1,144 @@ +syntax = "proto3"; + +option java_package = "biz.nynja.admin.account.grpc"; +option java_multiple_files = true; + + +/* Each user could have one or more roles listed bellow: */ +enum Role { + UNKNOWN_ROLE = 0; + USER = 1; // regular user + ACCOUNT_ADMIN = 2; // this role must be treated as account admin + AUTH_SERVICE = 3; // role used by the authentication service + AUTHENTICATION_ADMIN = 4; // this role must be treated as authentication admin +} + +message Date { + int32 year = 1; // year in format YYYY i.e 2019 + int32 month = 2; //month: from 1(January) to 12(December) + int32 day = 3; // valid day with value from 1 to 31 +} + + +enum AccessStatus { + UNKNOWN_ACCESS_STATUS = 0; + ENABLED = 1; // Regular running user. + SUSPENDED = 2; // Behaves exactly as deleted for certain period. + DISABLED = 3; // All requests from such user are discarded including login. +} + +enum ContactType { + MISSING_CONTACT_TYPE = 0; + PHONE_CONTACT = 1; + EMAIL_CONTACT = 2; + FACEBOOK_CONTACT = 3; + GOOGLEPLUS_CONTACT = 4; + TWITTER_CONTACT = 5; +} + +message ContactDetails { + ContactType type = 1; + string value = 2; // depends on the contact type. For example phone number when type is PHONE etc. + /* The label is not mandatory. It could be used only when type field is set to 'PHONE_CONTACT'. + * The value of this label should clarify the phone number: for example "work", "home" etc. */ + string label = 3; + string countrySelector = 4; // This is country selector for phone number contact info (selectors like BG, US and so on) +} + +message AccountDetails { + string accountId = 1; // account id + string profileId = 2; // profile id + string firstName = 3; // User's first name + string lastName = 4; // User's last name + string username = 5; // Unique identifier + string authenticationprovider = 6; + string authenticationprovidertype = 7; + AccessStatus accessStatus = 8; + string accountMark = 9; + string accountName = 10; + string avatar = 11; + Date birthday = 12; + repeated ContactDetails contactsInfo = 13; // Contacts that belong to the account + int64 creationTimestamp = 14; // Creation timestamp is set when account is created. + int64 lastUpdateTimestamp = 15; // Update timestamp is '0' if account is never updated. + string qrCode = 16; // Unique identifier that is used for generation of the QR + repeated Role roles = 17; // Array of Roles that belongs to the account +} + +message AccountsList { + repeated AccountDetails accountDetails = 1; + string nextPageState = 2; // pageState of next page if pagination is enabled in request. + +} + +message AccountsResponse { + oneof result { + ErrorResponse error = 1; + AccountsList accountsList = 2; + } +} + +message ErrorResponse { + enum Cause { + INTERNAL_SERVER_ERROR = 0; + INVALID_INPUT = 1; + ACCOUNTS_NOT_FOUND = 2; + } + Cause cause = 1; + string message = 2; +} + +message GetAllAccountsRequest { + + repeated string accountIds = 1; // Fetch details by given accountids + int32 allAccounts = 2; // Fetch all account details + int32 pagination = 3; // Do pagination 1 -> true, 0 -> false + int32 limit = 4; // (required only in case of pagination) Number of records in a page + string pageState = 5; // (required only in case of pagination) Defines next page, pageState = 'nil' incase of first page. + +} + +message SearchByUsernameRequest { + string username = 1; +} + +message SearchByFirstNameRequest { + string firstName = 1; +} + +message SearchByLastNameRequest { + string lastName = 1; +} + +message SearchByPhoneNumberRequest { + string phoneNumber = 1; +} + +message SearchByEmailRequest { + string email = 1; +} + +message SearchByAccountIdRequest { + string accountId = 1; +} + +message GetAccountsByCreationTime { + int64 fromCreationTime = 1; + int64 toCreationTime = 2; + int32 pagination = 3; // Do pagination 1 -> true, 0 -> false + int32 limit = 4; // (required only in case of pagination) Number of records in a page + string pageState = 5; // (required only in case of pagination) Defines next page, pageState = 'nil' incase of first page. +} + +service AdminAccountsService { + rpc getAccounts (GetAllAccountsRequest) returns (AccountsResponse); + rpc getAccountsByCreationTime (GetAccountsByCreationTime) returns (AccountsResponse); + rpc searchByUsername (SearchByUsernameRequest) returns (AccountsResponse); + rpc searchByFirstname (SearchByFirstNameRequest) returns (AccountsResponse); + rpc searchByLastname (SearchByLastNameRequest) returns (AccountsResponse); + rpc searchByPhoneNumber (SearchByPhoneNumberRequest) returns (AccountsResponse); + rpc searchByEmail (SearchByEmailRequest) returns (AccountsResponse); + rpc searchByAccountId (SearchByAccountIdRequest) returns (AccountsResponse); +} + + -- GitLab From c3613718f5c1241646ef583b15da51ad35eb7190 Mon Sep 17 00:00:00 2001 From: Jayendra Date: Thu, 5 Dec 2019 12:47:00 +0530 Subject: [PATCH 02/11] Updated response message for admin account endpoints --- .../account/services/AdminAccountsImpl.java | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java b/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java index 5eaa8ba..4044eea 100644 --- a/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java +++ b/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java @@ -57,7 +57,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { logger.info("Account list in null."); errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -69,7 +69,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -148,7 +148,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { logger.info("Account list in null."); errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -160,7 +160,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -207,7 +207,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { logger.info("Account list in null."); errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -219,7 +219,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -362,7 +362,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { System.out.println(""); errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); @@ -430,7 +430,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { logger.info("Account list in null."); errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -442,7 +442,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -506,7 +506,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { logger.info("Account list in null."); errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -518,7 +518,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -577,7 +577,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { logger.info("Account list in null."); errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -589,7 +589,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -647,7 +647,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { logger.info("Account list in null."); errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -659,7 +659,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -717,7 +717,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { logger.info("Account list in null."); errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); @@ -729,7 +729,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) - .setMessage("Accounts are found").build(); + .setMessage("Accounts are not found").build(); AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); responseObserver.onNext(response); -- GitLab From 49e59d2fc8e5a76e6cafa1e375b2f2fc52db89a8 Mon Sep 17 00:00:00 2001 From: Jayendra Date: Thu, 5 Dec 2019 14:33:49 +0530 Subject: [PATCH 03/11] Added protobuf maven plugin in pom --- .../repositories/admin/AccountRepository.java | 1 - .../account/services/AdminAccountsImpl.java | 37 +++++++++---------- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java b/src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java index 4b7acf3..09b1665 100644 --- a/src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java +++ b/src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java @@ -5,7 +5,6 @@ import biz.nynja.account.models.Account; import com.datastax.driver.core.PagingState; import com.datastax.driver.core.Statement; import com.datastax.driver.core.querybuilder.QueryBuilder; -import com.grpcServer.entity.Account; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java b/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java index 4044eea..8ef404d 100644 --- a/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java +++ b/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java @@ -3,12 +3,10 @@ package biz.nynja.account.services; import biz.nynja.account.models.Account; import biz.nynja.account.services.admin.AccountService; -import biz.nynja.admin.account.grpc.AccountDetails; -import biz.nynja.admin.account.grpc.AccountsList; -import biz.nynja.admin.account.grpc.AccountsResponse; +import biz.nynja.admin.account.grpc.*; import biz.nynja.admin.account.grpc.AdminAccountsServiceGrpc.AdminAccountsServiceImplBase; -import biz.nynja.admin.account.grpc.ErrorResponse; import com.google.protobuf.ProtocolStringList; +import io.grpc.stub.StreamObserver; import org.lognet.springboot.grpc.GRpcService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,8 +33,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { private static final Logger logger = LoggerFactory.getLogger(AdminAccountsImpl.class); @Override - public void searchByAccountId(biz.nynja.admin.account.grpc.SearchByAccountIdRequest request, - io.grpc.stub.StreamObserver responseObserver) { + public void searchByAccountId(SearchByAccountIdRequest request, StreamObserver responseObserver) { logger.info("Search Account By Account Id Endpoint."); logger.info(""); @@ -109,8 +106,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } @Override - public void getAccountsByCreationTime(biz.nynja.admin.account.grpc.GetAccountsByCreationTime request, - io.grpc.stub.StreamObserver responseObserver) { + public void getAccountsByCreationTime(GetAccountsByCreationTime request, + StreamObserver responseObserver) { logger.info(""); logger.info("Get accounts by creation time endpoint."); @@ -257,8 +254,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } @Override - public void getAccounts(biz.nynja.admin.account.grpc.GetAllAccountsRequest request, - io.grpc.stub.StreamObserver responseObserver) { + public void getAccounts(GetAllAccountsRequest request, + StreamObserver responseObserver) { logger.info(""); logger.info("Get all accounts endpoint."); @@ -408,8 +405,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { @Override - public void searchByUsername(biz.nynja.admin.account.grpc.SearchByUsernameRequest request, - io.grpc.stub.StreamObserver responseObserver) { + public void searchByUsername(SearchByUsernameRequest request, + StreamObserver responseObserver) { logger.info("Search By Username Endpoint."); logger.info(""); @@ -483,8 +480,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } @Override - public void searchByFirstname(biz.nynja.admin.account.grpc.SearchByFirstNameRequest request, - io.grpc.stub.StreamObserver responseObserver) { + public void searchByFirstname(SearchByFirstNameRequest request, + StreamObserver responseObserver) { logger.info("Search By FirstName Endpoint."); logger.info(""); @@ -555,8 +552,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } @Override - public void searchByLastname(biz.nynja.admin.account.grpc.SearchByLastNameRequest request, - io.grpc.stub.StreamObserver responseObserver) { + public void searchByLastname(SearchByLastNameRequest request, + StreamObserver responseObserver) { logger.info("Search By LastName Endpoint."); logger.info(""); @@ -625,8 +622,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } @Override - public void searchByPhoneNumber(biz.nynja.admin.account.grpc.SearchByPhoneNumberRequest request, - io.grpc.stub.StreamObserver responseObserver) { + public void searchByPhoneNumber(SearchByPhoneNumberRequest request, + StreamObserver responseObserver) { logger.info("Search By PhoneNumber Endpoint."); logger.info(""); @@ -694,8 +691,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } @Override - public void searchByEmail(biz.nynja.admin.account.grpc.SearchByEmailRequest request, - io.grpc.stub.StreamObserver responseObserver) { + public void searchByEmail(SearchByEmailRequest request, + StreamObserver responseObserver) { logger.info("Search By Email Endpoint."); logger.info(""); -- GitLab From 0acaf3401e72123c74b6ccc845c6ccb8682b9be3 Mon Sep 17 00:00:00 2001 From: Jayendra Date: Thu, 5 Dec 2019 14:38:07 +0530 Subject: [PATCH 04/11] Added protobuf maven plugin in pom --- pom.xml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/pom.xml b/pom.xml index e3c914b..ad5011a 100644 --- a/pom.xml +++ b/pom.xml @@ -192,11 +192,42 @@ + + + + kr.motd.maven + os-maven-plugin + 1.6.1 + + org.springframework.boot spring-boot-maven-plugin + + + org.xolstice.maven.plugins + protobuf-maven-plugin + 0.6.1 + + + com.google.protobuf:protoc:3.3.0:exe:${os.detected.classifier} + + grpc-java + + io.grpc:protoc-gen-grpc-java:1.4.0:exe:${os.detected.classifier} + + + + + + compile + compile-custom + + + + -- GitLab From 685fdd1a7df3e091d2e6fc13a1192f1a14209113 Mon Sep 17 00:00:00 2001 From: Jayendra Date: Thu, 5 Dec 2019 17:33:15 +0530 Subject: [PATCH 05/11] Resolved bugs in admin accounts grpc endpoints --- .../permissions/PermissionsInterceptor.java | 4 +- .../account/services/AdminAccountsImpl.java | 41 ++++++++++- .../services/admin/AccountService.java | 72 ------------------- .../repository/AdminAccountRepository.java} | 24 +++---- .../account/services/AccountServiceTests.java | 2 +- 5 files changed, 51 insertions(+), 92 deletions(-) delete mode 100644 src/main/java/biz/nynja/account/services/admin/AccountService.java rename src/main/java/biz/nynja/account/{repositories/admin/AccountRepository.java => services/admin/repository/AdminAccountRepository.java} (94%) diff --git a/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java b/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java index 63c7b1d..c5144b4 100644 --- a/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java +++ b/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java @@ -160,7 +160,7 @@ public class PermissionsInterceptor implements ServerInterceptor { // Get the rpc method called Method[] allMethods = SERVICE_CLASS.getDeclaredMethods(); Method[] adminMethods = ADMIN_SERVICE_CLASS.getDeclaredMethods(); - + for (Method method : allMethods) { if (method.getName().equals(rpc)) { return method; @@ -172,7 +172,7 @@ public class PermissionsInterceptor implements ServerInterceptor { return method; } } - + return null; } diff --git a/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java b/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java index 8ef404d..b9bc663 100644 --- a/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java +++ b/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java @@ -2,7 +2,7 @@ package biz.nynja.account.services; import biz.nynja.account.models.Account; -import biz.nynja.account.services.admin.AccountService; +import biz.nynja.account.services.admin.repository.AdminAccountRepository; import biz.nynja.admin.account.grpc.*; import biz.nynja.admin.account.grpc.AdminAccountsServiceGrpc.AdminAccountsServiceImplBase; import com.google.protobuf.ProtocolStringList; @@ -28,7 +28,7 @@ import java.util.UUID; public class AdminAccountsImpl extends AdminAccountsServiceImplBase { @Autowired - private AccountService accountService; + private AdminAccountRepository accountService; private static final Logger logger = LoggerFactory.getLogger(AdminAccountsImpl.class); @@ -134,7 +134,25 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { logger.info("Fetching records on basis of pagination."); - Map accountsMap = (pageState.equals("nil")) ? accountService.getAccountsByPagination(limit, null) : accountService.getAccountsByPagination(limit, pageState); + Map accountsMap = (pageState.equals("nil")) ? accountService.getAccountsByCreationTimeStampPagination(fromCreationTime, toCreationTime, limit, null) : accountService.getAccountsByCreationTimeStampPagination(fromCreationTime, toCreationTime, limit, pageState); + + if(accountsMap == null){ + + logger.info("No accounts found"); + logger.info(""); + + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are not found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } + accountsList = (List) accountsMap.get("accounts"); nextPageState = accountsMap.get("pageState").toString(); @@ -335,6 +353,23 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } Map accountsMap = (pageState.equals("nil")) ? accountService.getAccountsByPagination(limit, null) : accountService.getAccountsByPagination(limit, pageState); + + if(accountsMap == null){ + + logger.info("No accounts found"); + logger.info(""); + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are not found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } + accountsList = (List) accountsMap.get("accounts"); nextPageState = accountsMap.get("pageState").toString(); diff --git a/src/main/java/biz/nynja/account/services/admin/AccountService.java b/src/main/java/biz/nynja/account/services/admin/AccountService.java deleted file mode 100644 index 8bc6fa4..0000000 --- a/src/main/java/biz/nynja/account/services/admin/AccountService.java +++ /dev/null @@ -1,72 +0,0 @@ -package biz.nynja.account.services.admin; - -import biz.nynja.account.models.Account; -import biz.nynja.account.repositories.admin.AccountRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * This Account Service calls the functions of Account Repository - * which contains account search functions for market admin panel - * to filter accounts while broadcasting message - * - * @author Jayendra - * @since 2019-12-04 - * - */ - - -@Service -public class AccountService { - - @Autowired - private AccountRepository accountRepository; - - public List getAccountByAccountId(UUID accountId) { - return accountRepository.getAccountByAccountId(accountId); - } - - public List getAllAccounts() { - return accountRepository.getAllAccounts(); - } - - public Map getAccountsByPagination(int fetchSize, String pageState) { - return accountRepository.getAccountsByPagination(fetchSize, pageState); - } - - public long getAllAccountsSize() { - return accountRepository.getAllAccountsSize(); - } - - public List getAccountByIds(UUID[] accountIds) { - return accountRepository.getAccountByIds(accountIds); - } - - public Map getAccountsByCreationTimeStampPagination(long fromCreationTime, long toCreationTime, int fetchSize, String pageState) { - return accountRepository.getAccountsByCreationTimeStampPagination(fromCreationTime, toCreationTime, fetchSize, pageState); - } - - public List getAccountsByCreationTimeStamp(long fromCreationTime, long toCreationTime) { - return accountRepository.getAccountsByCreationTimeStamp(fromCreationTime, toCreationTime); - } - - public List getAccountByAuthenticationProvider(String authenticationprovider) { - return accountRepository.getAccountByAuthenticationProvider(authenticationprovider); - } - - public List getAccountByUsername(String username) { - return accountRepository.getAccountByUsername(username); - } - - public List getAccountByFirstname(String firstname) { - return accountRepository.getAccountByFirstname(firstname); - } - - public List getAccountByLastname(String lastname) { - return accountRepository.getAccountByLastname(lastname); - } -} - diff --git a/src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java b/src/main/java/biz/nynja/account/services/admin/repository/AdminAccountRepository.java similarity index 94% rename from src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java rename to src/main/java/biz/nynja/account/services/admin/repository/AdminAccountRepository.java index 09b1665..faf8afc 100644 --- a/src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java +++ b/src/main/java/biz/nynja/account/services/admin/repository/AdminAccountRepository.java @@ -1,5 +1,4 @@ -package biz.nynja.account.repositories.admin; - +package biz.nynja.account.services.admin.repository; import biz.nynja.account.models.Account; import com.datastax.driver.core.PagingState; @@ -13,33 +12,29 @@ import org.springframework.data.cassandra.core.query.CassandraPageRequest; import org.springframework.data.cassandra.core.query.Criteria; import org.springframework.data.cassandra.core.query.Query; import org.springframework.data.domain.Slice; -import org.springframework.stereotype.Repository; +import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; /** - * This Account Repository contains the account search functions - * for market admin panel to filter accounts while - * broadcasting message + * This Admin Account Repository contains account search functions for + * market admin panel to filter accounts while broadcasting message * * @author Jayendra * @since 2019-12-04 - * */ -@Repository -public class AccountRepository { - - +@Service +public class AdminAccountRepository { @Autowired private CassandraTemplate cassandraTemplate; private static final Class ENTITY_CLASS = Account.class; - private static final Logger logger = LoggerFactory.getLogger(AccountRepository.class); + private static final Logger logger = LoggerFactory.getLogger(AdminAccountRepository.class); public List getAccountByAccountId(UUID accountId) { @@ -105,7 +100,7 @@ public class AccountRepository { } - public List getAccountsByCreationTimeStamp(long fromCreationTime, long toCreationTime){ + public List getAccountsByCreationTimeStamp(long fromCreationTime, long toCreationTime) { Statement statement = QueryBuilder.select().from("accountbycreationtimestamp") .where(QueryBuilder.gte("creationtimestamp", fromCreationTime)) @@ -119,7 +114,7 @@ public class AccountRepository { Statement statement = QueryBuilder.select().from("accountbycreationtimestamp") .where(QueryBuilder.gte("creationtimestamp", fromCreationTime)) - .and(QueryBuilder.lte("creationtimestamp", toCreationTime)).allowFiltering(); + .and(QueryBuilder.lte("creationtimestamp", toCreationTime)).allowFiltering().setFetchSize(fetchSize); if (pageState != null) { statement.setPagingState(PagingState.fromString(pageState)); @@ -214,3 +209,4 @@ public class AccountRepository { } + diff --git a/src/test/java/biz/nynja/account/services/AccountServiceTests.java b/src/test/java/biz/nynja/account/services/AccountServiceTests.java index 148df8d..b1a1f30 100644 --- a/src/test/java/biz/nynja/account/services/AccountServiceTests.java +++ b/src/test/java/biz/nynja/account/services/AccountServiceTests.java @@ -111,7 +111,7 @@ import io.grpc.Metadata; import io.grpc.stub.MetadataUtils; /** - * AccountService unit tests. + * AdminAccountRepository unit tests. */ @RunWith(SpringRunner.class) -- GitLab From efb72d7e8efb46010e347bb6a8d8bb503ee773aa Mon Sep 17 00:00:00 2001 From: Jayendra Date: Fri, 6 Dec 2019 12:48:20 +0530 Subject: [PATCH 06/11] Renamed AccountAdmin grpc service --- .../permissions/PermissionsInterceptor.java | 12 +++++++ ...countsImpl.java => AdminService2Impl.java} | 33 ++++++++++++++++--- ...minAccounts.proto => admin_account2.proto} | 4 +-- 3 files changed, 42 insertions(+), 7 deletions(-) rename src/main/java/biz/nynja/account/services/{AdminAccountsImpl.java => AdminService2Impl.java} (97%) rename src/main/proto/{AdminAccounts.proto => admin_account2.proto} (98%) diff --git a/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java b/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java index c5144b4..f11e383 100644 --- a/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java +++ b/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java @@ -10,6 +10,7 @@ import java.util.Base64; import java.util.Optional; import java.util.UUID; +import biz.nynja.account.services.AdminService2Impl; import org.lognet.springboot.grpc.GRpcGlobalInterceptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,6 +53,9 @@ public class PermissionsInterceptor implements ServerInterceptor { private static final Class SERVICE_CLASS = AccountServiceImpl.class; private static final Class ADMIN_SERVICE_CLASS = AdminServiceImpl.class; + // Code added by Jayendra to Authrozie AdminService2Impl Endpoints + private static final Class ADMIN_SERVICE2_CLASS = AdminService2Impl.class; + public static final Metadata.Key ACCESS_TOKEN_METADATA = Metadata.Key.of("Authorization", ASCII_STRING_MARSHALLER); public static final Context.Key ACCESS_TOKEN_CTX = Context.key("accessToken"); @@ -160,6 +164,14 @@ public class PermissionsInterceptor implements ServerInterceptor { // Get the rpc method called Method[] allMethods = SERVICE_CLASS.getDeclaredMethods(); Method[] adminMethods = ADMIN_SERVICE_CLASS.getDeclaredMethods(); + // Added by Jayendra + Method[] admin2Methods = ADMIN_SERVICE2_CLASS.getDeclaredMethods(); + + for (Method method : admin2Methods) { + if (method.getName().equals(rpc)) { + return method; + } + } for (Method method : allMethods) { if (method.getName().equals(rpc)) { diff --git a/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java b/src/main/java/biz/nynja/account/services/AdminService2Impl.java similarity index 97% rename from src/main/java/biz/nynja/account/services/AdminAccountsImpl.java rename to src/main/java/biz/nynja/account/services/AdminService2Impl.java index b9bc663..2033ed1 100644 --- a/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java +++ b/src/main/java/biz/nynja/account/services/AdminService2Impl.java @@ -2,22 +2,28 @@ package biz.nynja.account.services; import biz.nynja.account.models.Account; +import biz.nynja.account.permissions.PerformPermissionCheck; +import biz.nynja.account.permissions.Permitted; +import biz.nynja.account.permissions.RoleConstants; import biz.nynja.account.services.admin.repository.AdminAccountRepository; -import biz.nynja.admin.account.grpc.*; -import biz.nynja.admin.account.grpc.AdminAccountsServiceGrpc.AdminAccountsServiceImplBase; +import biz.nynja.account2.admin.grpc.*; import com.google.protobuf.ProtocolStringList; import io.grpc.stub.StreamObserver; import org.lognet.springboot.grpc.GRpcService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; + import java.util.List; import java.util.Map; import java.util.UUID; /** - * AdminAccountsImpl contains endpoints for market admin + * AdminService2Impl contains endpoints for market admin * panel to filter accounts while broadcasting message + * This endpoints are permitted to Token with role admin + * + * This service contains endpoints which doesn't exists in AdminService * * @author Jayendra * @since 2019-12-04 @@ -25,14 +31,16 @@ import java.util.UUID; */ @GRpcService -public class AdminAccountsImpl extends AdminAccountsServiceImplBase { +public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountService2ImplBase { @Autowired private AdminAccountRepository accountService; - private static final Logger logger = LoggerFactory.getLogger(AdminAccountsImpl.class); + private static final Logger logger = LoggerFactory.getLogger(AdminService2Impl.class); @Override + @PerformPermissionCheck + @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void searchByAccountId(SearchByAccountIdRequest request, StreamObserver responseObserver) { logger.info("Search Account By Account Id Endpoint."); @@ -106,6 +114,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } @Override + @PerformPermissionCheck + @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void getAccountsByCreationTime(GetAccountsByCreationTime request, StreamObserver responseObserver) { @@ -272,6 +282,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } @Override + @PerformPermissionCheck + @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void getAccounts(GetAllAccountsRequest request, StreamObserver responseObserver) { @@ -359,6 +371,7 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { logger.info("No accounts found"); logger.info(""); + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) .setMessage("Accounts are not found").build(); @@ -440,6 +453,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { @Override + @PerformPermissionCheck + @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void searchByUsername(SearchByUsernameRequest request, StreamObserver responseObserver) { @@ -515,6 +530,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } @Override + @PerformPermissionCheck + @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void searchByFirstname(SearchByFirstNameRequest request, StreamObserver responseObserver) { @@ -587,6 +604,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } @Override + @PerformPermissionCheck + @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void searchByLastname(SearchByLastNameRequest request, StreamObserver responseObserver) { @@ -657,6 +676,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } @Override + @PerformPermissionCheck + @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void searchByPhoneNumber(SearchByPhoneNumberRequest request, StreamObserver responseObserver) { @@ -726,6 +747,8 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } @Override + @PerformPermissionCheck + @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void searchByEmail(SearchByEmailRequest request, StreamObserver responseObserver) { diff --git a/src/main/proto/AdminAccounts.proto b/src/main/proto/admin_account2.proto similarity index 98% rename from src/main/proto/AdminAccounts.proto rename to src/main/proto/admin_account2.proto index 2cf443a..86e3572 100644 --- a/src/main/proto/AdminAccounts.proto +++ b/src/main/proto/admin_account2.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -option java_package = "biz.nynja.admin.account.grpc"; +option java_package = "biz.nynja.account2.admin.grpc"; option java_multiple_files = true; @@ -130,7 +130,7 @@ message GetAccountsByCreationTime { string pageState = 5; // (required only in case of pagination) Defines next page, pageState = 'nil' incase of first page. } -service AdminAccountsService { +service AdminAccountService2 { rpc getAccounts (GetAllAccountsRequest) returns (AccountsResponse); rpc getAccountsByCreationTime (GetAccountsByCreationTime) returns (AccountsResponse); rpc searchByUsername (SearchByUsernameRequest) returns (AccountsResponse); -- GitLab From 40838733fc296b9c621b951f4910e0e3b3ed3b03 Mon Sep 17 00:00:00 2001 From: Jayendra Date: Fri, 6 Dec 2019 15:56:45 +0530 Subject: [PATCH 07/11] Removed admin token permission annotation in AdminService2Impl --- .../nynja/account/services/AdminService2Impl.java | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/main/java/biz/nynja/account/services/AdminService2Impl.java b/src/main/java/biz/nynja/account/services/AdminService2Impl.java index 2033ed1..2c08217 100644 --- a/src/main/java/biz/nynja/account/services/AdminService2Impl.java +++ b/src/main/java/biz/nynja/account/services/AdminService2Impl.java @@ -39,8 +39,6 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ private static final Logger logger = LoggerFactory.getLogger(AdminService2Impl.class); @Override - @PerformPermissionCheck - @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void searchByAccountId(SearchByAccountIdRequest request, StreamObserver responseObserver) { logger.info("Search Account By Account Id Endpoint."); @@ -114,8 +112,6 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ } @Override - @PerformPermissionCheck - @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void getAccountsByCreationTime(GetAccountsByCreationTime request, StreamObserver responseObserver) { @@ -282,8 +278,6 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ } @Override - @PerformPermissionCheck - @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void getAccounts(GetAllAccountsRequest request, StreamObserver responseObserver) { @@ -453,8 +447,6 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ @Override - @PerformPermissionCheck - @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void searchByUsername(SearchByUsernameRequest request, StreamObserver responseObserver) { @@ -604,8 +596,6 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ } @Override - @PerformPermissionCheck - @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void searchByLastname(SearchByLastNameRequest request, StreamObserver responseObserver) { @@ -676,8 +666,6 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ } @Override - @PerformPermissionCheck - @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void searchByPhoneNumber(SearchByPhoneNumberRequest request, StreamObserver responseObserver) { @@ -747,8 +735,6 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ } @Override - @PerformPermissionCheck - @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void searchByEmail(SearchByEmailRequest request, StreamObserver responseObserver) { -- GitLab From 42c59c20dad3c229fcfba8197b4b83a6af99f2c1 Mon Sep 17 00:00:00 2001 From: Jayendra Date: Fri, 6 Dec 2019 16:29:29 +0530 Subject: [PATCH 08/11] Removed validation of AccountService2 grpc endpoints from permission interceptor --- .../permissions/PermissionsInterceptor.java | 16 ++-------------- .../account/services/AdminService2Impl.java | 2 -- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java b/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java index f11e383..63c7b1d 100644 --- a/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java +++ b/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java @@ -10,7 +10,6 @@ import java.util.Base64; import java.util.Optional; import java.util.UUID; -import biz.nynja.account.services.AdminService2Impl; import org.lognet.springboot.grpc.GRpcGlobalInterceptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,9 +52,6 @@ public class PermissionsInterceptor implements ServerInterceptor { private static final Class SERVICE_CLASS = AccountServiceImpl.class; private static final Class ADMIN_SERVICE_CLASS = AdminServiceImpl.class; - // Code added by Jayendra to Authrozie AdminService2Impl Endpoints - private static final Class ADMIN_SERVICE2_CLASS = AdminService2Impl.class; - public static final Metadata.Key ACCESS_TOKEN_METADATA = Metadata.Key.of("Authorization", ASCII_STRING_MARSHALLER); public static final Context.Key ACCESS_TOKEN_CTX = Context.key("accessToken"); @@ -164,15 +160,7 @@ public class PermissionsInterceptor implements ServerInterceptor { // Get the rpc method called Method[] allMethods = SERVICE_CLASS.getDeclaredMethods(); Method[] adminMethods = ADMIN_SERVICE_CLASS.getDeclaredMethods(); - // Added by Jayendra - Method[] admin2Methods = ADMIN_SERVICE2_CLASS.getDeclaredMethods(); - - for (Method method : admin2Methods) { - if (method.getName().equals(rpc)) { - return method; - } - } - + for (Method method : allMethods) { if (method.getName().equals(rpc)) { return method; @@ -184,7 +172,7 @@ public class PermissionsInterceptor implements ServerInterceptor { return method; } } - + return null; } diff --git a/src/main/java/biz/nynja/account/services/AdminService2Impl.java b/src/main/java/biz/nynja/account/services/AdminService2Impl.java index 2c08217..a810653 100644 --- a/src/main/java/biz/nynja/account/services/AdminService2Impl.java +++ b/src/main/java/biz/nynja/account/services/AdminService2Impl.java @@ -522,8 +522,6 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ } @Override - @PerformPermissionCheck - @Permitted(role = RoleConstants.ACCOUNT_ADMIN) public void searchByFirstname(SearchByFirstNameRequest request, StreamObserver responseObserver) { -- GitLab From a492c0c0da0b9dcbf2d7ea14227331b1f58618ea Mon Sep 17 00:00:00 2001 From: Jayendra Date: Sat, 7 Dec 2019 09:11:45 +0530 Subject: [PATCH 09/11] Added methods of AdminService2Impl in PermissionInterceptor --- .../permissions/PermissionsInterceptor.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java b/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java index 63c7b1d..b66e9fb 100644 --- a/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java +++ b/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java @@ -10,6 +10,7 @@ import java.util.Base64; import java.util.Optional; import java.util.UUID; +import biz.nynja.account.services.AdminService2Impl; import org.lognet.springboot.grpc.GRpcGlobalInterceptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,6 +53,9 @@ public class PermissionsInterceptor implements ServerInterceptor { private static final Class SERVICE_CLASS = AccountServiceImpl.class; private static final Class ADMIN_SERVICE_CLASS = AdminServiceImpl.class; + // Added by Jayendra + private static final Class ADMIN_SERVICE2_CLASS = AdminService2Impl.class; + public static final Metadata.Key ACCESS_TOKEN_METADATA = Metadata.Key.of("Authorization", ASCII_STRING_MARSHALLER); public static final Context.Key ACCESS_TOKEN_CTX = Context.key("accessToken"); @@ -160,7 +164,8 @@ public class PermissionsInterceptor implements ServerInterceptor { // Get the rpc method called Method[] allMethods = SERVICE_CLASS.getDeclaredMethods(); Method[] adminMethods = ADMIN_SERVICE_CLASS.getDeclaredMethods(); - + Method[] admin2Methods = ADMIN_SERVICE2_CLASS.getDeclaredMethods(); + for (Method method : allMethods) { if (method.getName().equals(rpc)) { return method; @@ -172,7 +177,13 @@ public class PermissionsInterceptor implements ServerInterceptor { return method; } } - + + for (Method method : admin2Methods) { + if (method.getName().equals(rpc)) { + return method; + } + } + return null; } -- GitLab From c41bfd5c7a0c364569c3662d12f1f8a3aa8c76b7 Mon Sep 17 00:00:00 2001 From: Jayendra Date: Sat, 7 Dec 2019 10:31:57 +0530 Subject: [PATCH 10/11] Added Permitted annotations in AdminService2Impl endpoints --- .../biz/nynja/account/services/AdminService2Impl.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/biz/nynja/account/services/AdminService2Impl.java b/src/main/java/biz/nynja/account/services/AdminService2Impl.java index a810653..12d4a40 100644 --- a/src/main/java/biz/nynja/account/services/AdminService2Impl.java +++ b/src/main/java/biz/nynja/account/services/AdminService2Impl.java @@ -39,6 +39,7 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ private static final Logger logger = LoggerFactory.getLogger(AdminService2Impl.class); @Override + @Permitted(role = RoleConstants.ANY) public void searchByAccountId(SearchByAccountIdRequest request, StreamObserver responseObserver) { logger.info("Search Account By Account Id Endpoint."); @@ -112,6 +113,7 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ } @Override + @Permitted(role = RoleConstants.ANY) public void getAccountsByCreationTime(GetAccountsByCreationTime request, StreamObserver responseObserver) { @@ -278,6 +280,7 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ } @Override + @Permitted(role = RoleConstants.ANY) public void getAccounts(GetAllAccountsRequest request, StreamObserver responseObserver) { @@ -447,6 +450,7 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ @Override + @Permitted(role = RoleConstants.ANY) public void searchByUsername(SearchByUsernameRequest request, StreamObserver responseObserver) { @@ -522,6 +526,7 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ } @Override + @Permitted(role = RoleConstants.ANY) public void searchByFirstname(SearchByFirstNameRequest request, StreamObserver responseObserver) { @@ -594,6 +599,7 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ } @Override + @Permitted(role = RoleConstants.ANY) public void searchByLastname(SearchByLastNameRequest request, StreamObserver responseObserver) { @@ -664,6 +670,7 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ } @Override + @Permitted(role = RoleConstants.ANY) public void searchByPhoneNumber(SearchByPhoneNumberRequest request, StreamObserver responseObserver) { @@ -733,6 +740,7 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ } @Override + @Permitted(role = RoleConstants.ANY) public void searchByEmail(SearchByEmailRequest request, StreamObserver responseObserver) { -- GitLab From a7064029ba26eaf1d4a538c2efedaa9dcec31042 Mon Sep 17 00:00:00 2001 From: Ilia Krustev Date: Thu, 19 Mar 2020 14:54:28 +0200 Subject: [PATCH 11/11] NY-9632 login/register with email must be case insensitive --- .../components/AccountServiceHelper.java | 5 +++++ .../nynja/account/models/AccountBuilder.java | 7 +++++- .../AccountRepositoryAdditionalImpl.java | 9 ++++++-- .../account/services/AccountServiceImpl.java | 22 ++++++++++++++----- .../account/services/AdminService2Impl.java | 2 +- .../decomposition/AccountCreator.java | 5 +++++ 6 files changed, 41 insertions(+), 9 deletions(-) diff --git a/src/main/java/biz/nynja/account/components/AccountServiceHelper.java b/src/main/java/biz/nynja/account/components/AccountServiceHelper.java index c47fa78..b8b4071 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 6d7e3d5..858dd86 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 0a703de..ae92599 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 f5bcaee..6eda54c 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/AdminService2Impl.java b/src/main/java/biz/nynja/account/services/AdminService2Impl.java index 12d4a40..3f08369 100644 --- a/src/main/java/biz/nynja/account/services/AdminService2Impl.java +++ b/src/main/java/biz/nynja/account/services/AdminService2Impl.java @@ -747,7 +747,7 @@ public class AdminService2Impl extends AdminAccountService2Grpc.AdminAccountServ logger.info("Search By Email Endpoint."); logger.info(""); - String email = request.getEmail(); + String email = request.getEmail().toLowerCase(); logger.info("Email : " + email); 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 cdcb8ea..38980c6 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); -- GitLab