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; + } +}