From 9eaa5321d26712c4dbec3032428fd4f322642c8b Mon Sep 17 00:00:00 2001 From: Venkatesh Sangam Date: Wed, 3 Jul 2024 11:35:13 +0530 Subject: [PATCH 1/3] Google Method removed From UI and Java code --- .../java/ai/elimu/dao/ContributorDao.java | 5 +- .../ai/elimu/web/SignOnControllerGoogle.java | 171 ------------------ src/main/webapp/WEB-INF/jsp/sign-on.jsp | 6 - 3 files changed, 2 insertions(+), 180 deletions(-) delete mode 100644 src/main/java/ai/elimu/web/SignOnControllerGoogle.java diff --git a/src/main/java/ai/elimu/dao/ContributorDao.java b/src/main/java/ai/elimu/dao/ContributorDao.java index e7b4d7b74..126ec795c 100644 --- a/src/main/java/ai/elimu/dao/ContributorDao.java +++ b/src/main/java/ai/elimu/dao/ContributorDao.java @@ -2,10 +2,11 @@ import java.util.Calendar; import java.util.List; -import ai.elimu.model.contributor.Contributor; import org.springframework.dao.DataAccessException; +import ai.elimu.model.contributor.Contributor; + public interface ContributorDao extends GenericDao { Contributor read(String email) throws DataAccessException; @@ -16,8 +17,6 @@ public interface ContributorDao extends GenericDao { Contributor readByProviderIdWeb3(String id) throws DataAccessException; - Contributor readByProviderIdGoogle(String id) throws DataAccessException; - List readAllOrderedDesc() throws DataAccessException; List readAll(Calendar calendarFrom, Calendar calendarTo) throws DataAccessException; diff --git a/src/main/java/ai/elimu/web/SignOnControllerGoogle.java b/src/main/java/ai/elimu/web/SignOnControllerGoogle.java deleted file mode 100644 index fec465e3d..000000000 --- a/src/main/java/ai/elimu/web/SignOnControllerGoogle.java +++ /dev/null @@ -1,171 +0,0 @@ -package ai.elimu.web; - -import java.io.IOException; -import java.util.Arrays; -import java.util.Calendar; -import java.util.HashSet; -import javax.servlet.http.HttpServletRequest; -import org.apache.commons.lang.StringUtils; -import org.apache.logging.log4j.Logger; -import org.json.JSONObject; -import ai.elimu.dao.ContributorDao; -import ai.elimu.model.contributor.Contributor; -import ai.elimu.model.v2.enums.Environment; -import ai.elimu.model.enums.Role; -import ai.elimu.util.ConfigHelper; -import ai.elimu.web.context.EnvironmentContextLoaderListener; -import com.github.scribejava.apis.GoogleApi20; -import com.github.scribejava.core.builder.ServiceBuilder; -import com.github.scribejava.core.model.OAuth2AccessToken; -import com.github.scribejava.core.model.OAuthRequest; -import com.github.scribejava.core.model.Response; -import com.github.scribejava.core.model.Verb; -import com.github.scribejava.core.oauth.OAuth20Service; -import java.util.Random; -import java.util.concurrent.ExecutionException; -import org.apache.logging.log4j.LogManager; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -/** - * See https://console.developers.google.com/apis - *

- * - * Note that authentication for the same Google accounts are done in the Crowdsource - * app. See {@link ContributorRestController}. - */ -@Controller -public class SignOnControllerGoogle { - - private static final String PROTECTED_RESOURCE_URL = "https://www.googleapis.com/oauth2/v3/userinfo"; - - private OAuth20Service oAuth20Service; - - private final String secretState = "secret_" + new Random().nextInt(999_999); - - private Logger logger = LogManager.getLogger(); - - @Autowired - private ContributorDao contributorDao; - - @RequestMapping("/sign-on/google") - public String handleAuthorization(HttpServletRequest request) throws IOException { - logger.info("handleAuthorization"); - - String clientId = "108974530651-3g9r40r5s7it6p9vjh2e2eplgmm1to0d.apps.googleusercontent.com"; - String clientSecret = "mGlUmzxL2eP69HdVmPKtVLR7"; - String baseUrl = "http://localhost:8080/webapp"; - if (EnvironmentContextLoaderListener.env == Environment.TEST) { - clientId = "108974530651-fskde869tac7imherk2k516shfuvij76.apps.googleusercontent.com"; - clientSecret = ConfigHelper.getProperty("google.api.secret"); - baseUrl = "https://" + request.getServerName(); - } else if (EnvironmentContextLoaderListener.env == Environment.PROD) { - clientId = "108974530651-k68pccps2jb88fllofpcf8ht356v08e4.apps.googleusercontent.com"; - clientSecret = ConfigHelper.getProperty("google.api.secret"); - baseUrl = "https://" + request.getServerName(); - } - logger.info("baseUrl: " + baseUrl); - - oAuth20Service = new ServiceBuilder(clientId) - .apiSecret(clientSecret) - .defaultScope("email profile") // See "OAuth Consent Screen" at https://console.developers.google.com/apis/ - .callback(baseUrl + "/sign-on/google/callback") - .build(GoogleApi20.instance()); - - logger.info("Fetching the Authorization URL..."); - String authorizationUrl = oAuth20Service.createAuthorizationUrlBuilder() - .state(secretState) - .build(); - logger.info("Got the Authorization URL!"); - - return "redirect:" + authorizationUrl; - } - - @RequestMapping(value="/sign-on/google/callback", method=RequestMethod.GET) - public String handleCallback(HttpServletRequest request, Model model) { - logger.info("handleCallback"); - - String state = request.getParameter("state"); - logger.debug("state: " + state); - if (!secretState.equals(state)) { - return "redirect:/sign-on?error=state_mismatch"; - } else { - String code = request.getParameter("code"); - logger.debug("code: " + code); - - String responseBody = null; - - logger.info("Trading the Authorization Code for an Access Token..."); - try { - OAuth2AccessToken accessToken = oAuth20Service.getAccessToken(code); - logger.debug("accessToken: " + accessToken); - logger.info("Got the Access Token!"); - - // Access the protected resource - OAuthRequest oAuthRequest = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL); - oAuth20Service.signRequest(accessToken, oAuthRequest); - Response response = oAuth20Service.execute(oAuthRequest); - responseBody = response.getBody(); - logger.info("response.getCode(): " + response.getCode()); - logger.info("response.getBody(): " +response.getBody()); - } catch (IOException | InterruptedException | ExecutionException ex) { - logger.error(ex); - return "redirect:/sign-on?error=" + ex.getMessage(); - } - - JSONObject jsonObject = new JSONObject(responseBody); - logger.info("jsonObject: " + jsonObject); - - Contributor contributor = new Contributor(); - contributor.setEmail(jsonObject.getString("email")); - contributor.setProviderIdGoogle(jsonObject.getString("sub")); - contributor.setImageUrl(jsonObject.getString("picture")); - if (jsonObject.has("given_name")) { - contributor.setFirstName(jsonObject.getString("given_name")); - } - if (jsonObject.has("family_name")) { - contributor.setLastName(jsonObject.getString("family_name")); - } - - // Look for existing Contributor with matching e-mail address - Contributor existingContributor = contributorDao.read(contributor.getEmail()); - logger.info("existingContributor: " + existingContributor); - if (existingContributor == null) { - // Store new Contributor in database - contributor.setRegistrationTime(Calendar.getInstance()); - contributor.setRoles(new HashSet<>(Arrays.asList(Role.CONTRIBUTOR))); - contributorDao.create(contributor); - logger.info("Contributor " + contributor.getEmail() + " was created at " + request.getServerName()); - } else { - // Contributor already exists in database - // Update existing contributor with latest values fetched from provider - if (StringUtils.isNotBlank(contributor.getProviderIdGoogle())) { - existingContributor.setProviderIdGoogle(contributor.getProviderIdGoogle()); - } - if (StringUtils.isNotBlank(contributor.getImageUrl())) { - existingContributor.setImageUrl(contributor.getImageUrl()); - } - if (StringUtils.isNotBlank(contributor.getFirstName())) { - existingContributor.setFirstName(contributor.getFirstName()); - } - if (StringUtils.isNotBlank(contributor.getLastName())) { - existingContributor.setLastName(contributor.getLastName()); - } - contributorDao.update(existingContributor); - - contributor = existingContributor; - } - - // Authenticate - new CustomAuthenticationManager().authenticateUser(contributor); - - // Add Contributor object to session - request.getSession().setAttribute("contributor", contributor); - - return "redirect:/content"; - } - } -} diff --git a/src/main/webapp/WEB-INF/jsp/sign-on.jsp b/src/main/webapp/WEB-INF/jsp/sign-on.jsp index b287d05d5..27d69916c 100644 --- a/src/main/webapp/WEB-INF/jsp/sign-on.jsp +++ b/src/main/webapp/WEB-INF/jsp/sign-on.jsp @@ -13,12 +13,6 @@

:

-
From 710ae254307518d5781502c7ea18d16e5aede4d2 Mon Sep 17 00:00:00 2001 From: Venkatesh Sangam Date: Wed, 3 Jul 2024 15:21:03 +0530 Subject: [PATCH 2/3] Removed Google Sign-In --- src/main/java/ai/elimu/dao/ContributorDao.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/ai/elimu/dao/ContributorDao.java b/src/main/java/ai/elimu/dao/ContributorDao.java index 126ec795c..e7b4d7b74 100644 --- a/src/main/java/ai/elimu/dao/ContributorDao.java +++ b/src/main/java/ai/elimu/dao/ContributorDao.java @@ -2,11 +2,10 @@ import java.util.Calendar; import java.util.List; +import ai.elimu.model.contributor.Contributor; import org.springframework.dao.DataAccessException; -import ai.elimu.model.contributor.Contributor; - public interface ContributorDao extends GenericDao { Contributor read(String email) throws DataAccessException; @@ -17,6 +16,8 @@ public interface ContributorDao extends GenericDao { Contributor readByProviderIdWeb3(String id) throws DataAccessException; + Contributor readByProviderIdGoogle(String id) throws DataAccessException; + List readAllOrderedDesc() throws DataAccessException; List readAll(Calendar calendarFrom, Calendar calendarTo) throws DataAccessException; From c8f3fc72ed87b4b7d04530da3ab7e074693d5d18 Mon Sep 17 00:00:00 2001 From: Venkatesh Sangam Date: Wed, 3 Jul 2024 15:27:37 +0530 Subject: [PATCH 3/3] removed google sign-in --- src/main/java/ai/elimu/dao/ContributorDao.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/ai/elimu/dao/ContributorDao.java b/src/main/java/ai/elimu/dao/ContributorDao.java index e7b4d7b74..67623e3a8 100644 --- a/src/main/java/ai/elimu/dao/ContributorDao.java +++ b/src/main/java/ai/elimu/dao/ContributorDao.java @@ -2,10 +2,11 @@ import java.util.Calendar; import java.util.List; -import ai.elimu.model.contributor.Contributor; import org.springframework.dao.DataAccessException; +import ai.elimu.model.contributor.Contributor; + public interface ContributorDao extends GenericDao { Contributor read(String email) throws DataAccessException;