diff --git a/Lambdas/Lists/User/resources/cognitoProperties.json b/Lambdas/Lists/User/resources/cognitoProperties.json new file mode 100644 index 0000000..a01aefd --- /dev/null +++ b/Lambdas/Lists/User/resources/cognitoProperties.json @@ -0,0 +1,3 @@ +{ + "userPoolId": "us-east-2_MFgSVKQMd", +} \ No newline at end of file diff --git a/Lambdas/Lists/User/src/UserDELETE.java b/Lambdas/Lists/User/src/UserDELETE.java new file mode 100644 index 0000000..b1a7076 --- /dev/null +++ b/Lambdas/Lists/User/src/UserDELETE.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 UserDELETE implements RequestHandler, Object> { + + public Object handleRequest(Map inputMap, Context unfilled) { + return BasicHandler.handleRequest(inputMap, unfilled, UserDeleter.class); + } +} \ No newline at end of file diff --git a/Lambdas/Lists/User/src/UserDeleter.java b/Lambdas/Lists/User/src/UserDeleter.java new file mode 100644 index 0000000..bd04d9b --- /dev/null +++ b/Lambdas/Lists/User/src/UserDeleter.java @@ -0,0 +1,59 @@ +import com.amazonaws.services.cognitoidp.AWSCognitoIdentityProvider; +import com.amazonaws.services.cognitoidp.AWSCognitoIdentityProviderClientBuilder; +import com.amazonaws.services.cognitoidp.model.AdminDeleteUserRequest; +import com.amazonaws.services.cognitoidp.model.AdminUserGlobalSignOutRequest; + +import java.io.IOException; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +public class UserDeleter implements CallHandler { + + private DBConnector connector; + private String cognitoID; + + //private final String REMOVE_FROM_LIST = "DELETE FROM ListProduct WHERE (ProductID = ? AND ListID = ?);"; + + public UserDeleter(DBConnector connector, String cognitoID) { + this.connector = connector; + this.cognitoID = cognitoID; + } + + public Object conductAction(Map bodyMap, HashMap queryString, String cognitoID) throws SQLException { + AWSCognitoIdentityProvider awsCognitoIdentityProvider = AWSCognitoIdentityProviderClientBuilder.defaultClient(); + 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); + AdminDeleteUserRequest adminDeleteUserRequest = new AdminDeleteUserRequest().withUserPoolId(userPoolId); + adminDeleteUserRequest.setUsername(cognitoID); + System.out.println(adminDeleteUserRequest); + awsCognitoIdentityProvider.adminDeleteUser(adminDeleteUserRequest); + AdminUserGlobalSignOutRequest adminUserGlobalSignOutRequest = new AdminUserGlobalSignOutRequest().withUserPoolId(userPoolId); + adminUserGlobalSignOutRequest.setUsername(cognitoID); + System.out.println(adminUserGlobalSignOutRequest); + awsCognitoIdentityProvider.adminUserGlobalSignOut(adminUserGlobalSignOutRequest); + + return null; + + // Connection connection = connector.getConnection(); +// try { +// PreparedStatement statement = connection.prepareStatement(REMOVE_FROM_LIST); +// statement.setInt(1, (Integer) bodyMap.get("ProductID")); +// statement.setInt(2, (Integer) bodyMap.get("ListID")); +// System.out.println(statement); +// statement.executeUpdate(); +// connection.commit(); +// } finally { +// connection.close(); +// } +// return null; + } +} diff --git a/Lambdas/Lists/pom.xml b/Lambdas/Lists/pom.xml index 1984615..9fb5565 100644 --- a/Lambdas/Lists/pom.xml +++ b/Lambdas/Lists/pom.xml @@ -42,13 +42,53 @@ org.apache.httpcomponents httpclient - 4.5 + 4.5.12 com.google.code.gson gson 2.8.6 + + com.amazonaws + aws-java-sdk-cognitoidentity + 1.11.875 + + + com.amazonaws + aws-java-sdk-cognitoidp + 1.11.875 + + + software.amazon.ion + ion-java + 1.5.1 + + + joda-time + joda-time + 2.10.6 + + + commons-logging + commons-logging + 1.2 + + + com.fasterxml.jackson.dataformat + jackson-dataformat-cbor + 2.11.3 + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + 2.8.5 + + + com.fasterxml.jackson.core + jackson-databind + 2.11.3 + 1.11 diff --git a/Lambdas/Lists/target/Lists-1.0-SNAPSHOT.jar b/Lambdas/Lists/target/Lists-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..a611fef Binary files /dev/null and b/Lambdas/Lists/target/Lists-1.0-SNAPSHOT.jar differ diff --git a/Lambdas/Lists/target/maven-archiver/pom.properties b/Lambdas/Lists/target/maven-archiver/pom.properties new file mode 100644 index 0000000..68bd418 --- /dev/null +++ b/Lambdas/Lists/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Mon Oct 05 10:19:24 EDT 2020 +groupId=groupId +artifactId=Lists +version=1.0-SNAPSHOT diff --git a/Lambdas/Lists/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/Lambdas/Lists/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..db1626f --- /dev/null +++ b/Lambdas/Lists/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,4 @@ +/Users/MNM/Documents/GitHub/Listify/Lambdas/Lists/src/main/java/CallHandler.java +/Users/MNM/Documents/GitHub/Listify/Lambdas/Lists/src/main/java/DBConnector.java +/Users/MNM/Documents/GitHub/Listify/Lambdas/Lists/src/main/java/BasicHandler.java +/Users/MNM/Documents/GitHub/Listify/Lambdas/Lists/src/main/java/InputUtils.java diff --git a/Listify/app/src/main/java/com/example/listify/AuthManager.java b/Listify/app/src/main/java/com/example/listify/AuthManager.java index 030fb88..6f87694 100644 --- a/Listify/app/src/main/java/com/example/listify/AuthManager.java +++ b/Listify/app/src/main/java/com/example/listify/AuthManager.java @@ -8,6 +8,7 @@ import com.amplifyframework.auth.options.AuthSignUpOptions; import com.amplifyframework.auth.result.AuthSignInResult; import com.amplifyframework.auth.result.AuthSignUpResult; import com.amplifyframework.core.Amplify; +import com.example.listify.data.User; import org.json.JSONException; import org.json.JSONObject; @@ -85,6 +86,10 @@ public class AuthManager { waiting = false; } + public void signOutSuccess() { + waiting = false; + } + public void startSignUp(String email, String password) throws AuthException { this.email = email; this.password = password; @@ -124,6 +129,11 @@ public class AuthManager { throwIfAuthError(); } + public void deleteUser(Requestor requestor) { + requestor.deleteObject("N/A", User.class); + Amplify.Auth.signOut(this::signOutSuccess, error -> setAuthError(error)); + } + public static Properties loadProperties(Context context, String path) throws IOException, JSONException { diff --git a/Listify/app/src/main/java/com/example/listify/MainActivity.java b/Listify/app/src/main/java/com/example/listify/MainActivity.java index 0e8061b..0e84fdb 100644 --- a/Listify/app/src/main/java/com/example/listify/MainActivity.java +++ b/Listify/app/src/main/java/com/example/listify/MainActivity.java @@ -14,8 +14,8 @@ import androidx.navigation.ui.AppBarConfiguration; import androidx.navigation.ui.NavigationUI; import com.amplifyframework.auth.AuthException; import com.example.listify.data.Item; -import com.example.listify.data.ListEntry; import com.example.listify.data.List; +import com.example.listify.data.ListEntry; import com.google.android.material.navigation.NavigationView; import org.json.JSONException; @@ -60,7 +60,7 @@ public class MainActivity extends AppCompatActivity { //------------------------------------------------------------------------------------------// - boolean testAPI = false; + boolean testAPI = true; //----------------------------------API Testing---------------------------------------------// if (testAPI) { @@ -78,6 +78,9 @@ public class MainActivity extends AppCompatActivity { } Requestor requestor = new Requestor(authManager, configs.getProperty("apiKey")); + + authManager.deleteUser(requestor); + //The name is the only part of this that is used, the rest is generated by the Lambda. List testList = new List(-1, "New List", "user filled by lambda", Instant.now().toEpochMilli()); //Everything except addedDate is used for ItemEntry diff --git a/Listify/app/src/main/java/com/example/listify/Requestor.java b/Listify/app/src/main/java/com/example/listify/Requestor.java index 5f34f98..4d0c6d1 100644 --- a/Listify/app/src/main/java/com/example/listify/Requestor.java +++ b/Listify/app/src/main/java/com/example/listify/Requestor.java @@ -24,20 +24,30 @@ public class Requestor { client = new OkHttpClient(); } - public void getObject(String id, Class classType, Receiver receiver) { - getObject(id, classType, receiver, null); - } - public void getListOfIds(Class ofType, Receiver successHandler, RequestErrorHandler failureHandler) { String getURL = DEV_BASEURL + "/" + ofType.getSimpleName() + "?id=-1"; Request postRequest = buildBaseRequest(getURL, "GET", null); launchCall(postRequest, successHandler, Integer[].class, failureHandler); } + public void getObject(String id, Class classType, Receiver receiver) { + getObject(id, classType, receiver, null); + } + public void getObject(String id, Class classType, Receiver successHandler, RequestErrorHandler failureHandler) { String getURL = DEV_BASEURL + "/" + classType.getSimpleName() + "?id=" + id; - Request postRequest = buildBaseRequest(getURL, "GET", null); - launchCall(postRequest, successHandler, classType, failureHandler); + Request getRequest = buildBaseRequest(getURL, "GET", null); + launchCall(getRequest, successHandler, classType, failureHandler); + } + + public void deleteObject(String id, Class classType) { + deleteObject(id, classType, null); + } + + public void deleteObject(String id, Class classType, RequestErrorHandler failureHandler) { + String deleteURL = DEV_BASEURL + "/" + classType.getSimpleName() + "?id=" + id; + Request deleteRequest = buildBaseRequest(deleteURL, "DELETE", "{}"); + launchCall(deleteRequest, null, classType, failureHandler); } public void postObject(Object toPost) throws JSONException { diff --git a/Listify/app/src/main/java/com/example/listify/data/User.java b/Listify/app/src/main/java/com/example/listify/data/User.java new file mode 100644 index 0000000..65ba3e6 --- /dev/null +++ b/Listify/app/src/main/java/com/example/listify/data/User.java @@ -0,0 +1,4 @@ +package com.example.listify.data; + +public class User { +}