From 2637cab2827a24867a547ab25a946034fe592744 Mon Sep 17 00:00:00 2001 From: NMerz Date: Sat, 24 Oct 2020 12:52:45 -0400 Subject: [PATCH] Create userID retrieval Lambda Allow for the retrieval of userIDs from email (or just generally). This may need the apigateway passthrough info modified for privacy protection --- Lambdas/Lists/User/src/UserGET.java | 11 +++++ Lambdas/Lists/User/src/UserGetter.java | 60 ++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 Lambdas/Lists/User/src/UserGET.java create mode 100644 Lambdas/Lists/User/src/UserGetter.java diff --git a/Lambdas/Lists/User/src/UserGET.java b/Lambdas/Lists/User/src/UserGET.java new file mode 100644 index 0000000..d9a7244 --- /dev/null +++ b/Lambdas/Lists/User/src/UserGET.java @@ -0,0 +1,11 @@ +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; + +import java.util.Map; + +public class UserGET implements RequestHandler, Object> { + + public Object handleRequest(Map inputMap, Context unfilled) { + return BasicHandler.handleRequest(inputMap, unfilled, UserGetter.class); + } +} diff --git a/Lambdas/Lists/User/src/UserGetter.java b/Lambdas/Lists/User/src/UserGetter.java new file mode 100644 index 0000000..043a0c2 --- /dev/null +++ b/Lambdas/Lists/User/src/UserGetter.java @@ -0,0 +1,60 @@ +import com.amazonaws.services.cognitoidp.AWSCognitoIdentityProvider; +import com.amazonaws.services.cognitoidp.AWSCognitoIdentityProviderClientBuilder; +import com.amazonaws.services.cognitoidp.model.AttributeType; +import com.amazonaws.services.cognitoidp.model.ListUsersRequest; +import com.amazonaws.services.cognitoidp.model.ListUsersResult; +import com.amazonaws.services.cognitoidp.model.UserType; + +import java.io.IOException; +import java.sql.Connection; +import java.util.*; + +public class UserGetter implements CallHandler { + private String cognitoID; + + public UserGetter(Connection connection, String cognitoID) { + this.cognitoID = cognitoID; + } + @Override + public Object conductAction(Map bodyMap, HashMap queryMap, String cognitoID) { + Properties cognitoProperties; + try { + cognitoProperties = DBConnector.loadProperties("cognitoProperties.json"); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + String userPoolId = cognitoProperties.get("userPoolId").toString(); + System.out.println(userPoolId); + ListUsersRequest checkRequest = new ListUsersRequest().withUserPoolId(userPoolId); + Object emailObject = bodyMap.get("emailToCheck"); + if (emailObject != null) { + checkRequest.setFilter("email=\"" + emailObject.toString() +"\""); + } else { + // checkRequest.setFilter("sub=\"" + cognitoID + "\""); + return cognitoID; + } + System.out.println(checkRequest); + AWSCognitoIdentityProvider awsCognitoIdentityProvider = AWSCognitoIdentityProviderClientBuilder.defaultClient(); + ListUsersResult foundUsersResult = awsCognitoIdentityProvider.listUsers(checkRequest); + List foundUsers = foundUsersResult.getUsers(); + if (foundUsers.size() != 1) { + System.out.println(foundUsers); + if (foundUsers.size() == 0) { + throw new InputMismatchException("Not user with given email"); + } + throw new InputMismatchException("Found more than one user with supposedly unique email"); + } + UserType foundUser = foundUsers.get(0); + System.out.println(foundUser.getAttributes()); + String sub = ""; + for (AttributeType attribute : foundUser.getAttributes()) { + if (attribute.getName().equals("sub")) { + sub = attribute.getValue(); + break; + } + System.out.println(attribute.getName() + ": " + attribute.getValue()); + } + return sub; + } +}