The user is now prevented from proceeding forward if their credentials are incorrect
This commit is contained in:
+20
-105
@@ -33,6 +33,7 @@
|
||||
#include "repository/SongRepository.h"
|
||||
#include "repository/TokenRepository.h"
|
||||
#include "repository/UserRepository.h"
|
||||
#include "utility/JNIObjectConversion.h"
|
||||
|
||||
|
||||
template<class Song = model::Song>
|
||||
@@ -365,13 +366,9 @@ Java_com_example_mear_repositories_TrackRepository_retrieveSongs(
|
||||
jobject token,
|
||||
jstring baseUri
|
||||
) {
|
||||
jclass tokenClass = env->FindClass("com/example/mear/models/Token");
|
||||
jclass songClass = env->FindClass( "com/example/mear/models/Song");
|
||||
|
||||
auto tokField = env->GetFieldID(tokenClass, "accessToken", "Ljava/lang/String;");
|
||||
auto tokObj = env->GetObjectField(token, tokField);
|
||||
std::string tokStr = env->GetStringUTFChars((jstring)tokObj, nullptr);
|
||||
model::Token tk(tokStr);
|
||||
auto tk = utility::JNIObjectConversion<model::Token>::ObjToToken(env, token);
|
||||
|
||||
const std::string uri = env->GetStringUTFChars(baseUri, nullptr);
|
||||
env->DeleteLocalRef(baseUri);
|
||||
@@ -401,14 +398,10 @@ Java_com_example_mear_repositories_TrackRepository_retrieveSongsIncludingDownloa
|
||||
jstring baseUri,
|
||||
jstring appPathStr
|
||||
) {
|
||||
jclass tokenClass = env->FindClass("com/example/mear/models/Token");
|
||||
jclass songClass = env->FindClass( "com/example/mear/models/Song");
|
||||
|
||||
auto tokField = env->GetFieldID(tokenClass, "accessToken", "Ljava/lang/String;");
|
||||
auto tokObj = env->GetObjectField(token, tokField);
|
||||
std::string tokStr = env->GetStringUTFChars((jstring)tokObj, nullptr);
|
||||
std::string appPath = env->GetStringUTFChars((jstring)appPathStr, nullptr);
|
||||
model::Token tk(tokStr);
|
||||
auto tk = utility::JNIObjectConversion<model::Token>::ObjToToken(env, token);
|
||||
|
||||
const std::string uri = env->GetStringUTFChars(baseUri, nullptr);
|
||||
env->DeleteLocalRef(baseUri);
|
||||
@@ -465,20 +458,11 @@ Java_com_example_mear_repositories_CoverArtRepository_retrieveCoverArtImage(
|
||||
jobject coverArt,
|
||||
jstring apiUri
|
||||
) {
|
||||
jclass coverArtClass = env->GetObjectClass(coverArt);
|
||||
auto idField = env->GetFieldID(coverArtClass, "id", "I");
|
||||
auto titleField = env->GetFieldID(coverArtClass, "title", "Ljava/lang/String;");
|
||||
auto id = env->GetIntField(coverArt, idField);
|
||||
auto title = (jstring)env->GetObjectField(coverArt, titleField);
|
||||
auto token = utility::JNIObjectConversion<model::Token>::ObjToToken(env, tokenObj);
|
||||
|
||||
jclass tokenClass = env->GetObjectClass(tokenObj);
|
||||
auto accessTokenId = env->GetFieldID(tokenClass, "accessToken", "Ljava/lang/String;");
|
||||
auto accessTokenVal = (jstring) env->GetObjectField(tokenObj, accessTokenId);
|
||||
auto cover = utility::JNIObjectConversion<model::CoverArt>::
|
||||
ObjToCoverArt(env, coverArt);
|
||||
|
||||
model::Token token;
|
||||
token.accessToken = env->GetStringUTFChars(accessTokenVal, nullptr);
|
||||
|
||||
model::CoverArt cover(id, env->GetStringUTFChars(title, nullptr));
|
||||
repository::CoverArtRepository<model::CoverArt> coverArtRepo;
|
||||
auto data = coverArtRepo.retrieveCoverArtData(token, cover, env->GetStringUTFChars(apiUri, nullptr));
|
||||
|
||||
@@ -500,18 +484,8 @@ Java_com_example_mear_repositories_APIRepository_retrieveAPIInfoRecord(
|
||||
|
||||
auto apiInfo = retrieveAPIInfo(path);
|
||||
|
||||
jclass apiInfoClass = env->FindClass( "com/example/mear/models/APIInfo");
|
||||
jmethodID jconstructor = env->GetMethodID( apiInfoClass, "<init>", "()V" );
|
||||
jobject apiInfoObj = env->NewObject( apiInfoClass, jconstructor );
|
||||
|
||||
jmethodID uriId = env->GetMethodID( apiInfoClass, "setUri", "(Ljava/lang/String;)V" );
|
||||
jmethodID versionId = env->GetMethodID( apiInfoClass, "setVersion", "(I)V" );
|
||||
|
||||
jint versionVal = apiInfo.version;
|
||||
jstring uriVal = env->NewStringUTF(apiInfo.uri.c_str());
|
||||
|
||||
env->CallVoidMethod(apiInfoObj, uriId, uriVal);
|
||||
env->CallVoidMethod( apiInfoObj, versionId, versionVal);
|
||||
auto apiInfoObj = utility::JNIObjectConversion<model::APIInfo>::
|
||||
APIInfoToObj(env, apiInfo);
|
||||
|
||||
return apiInfoObj;
|
||||
}
|
||||
@@ -527,15 +501,7 @@ Java_com_example_mear_repositories_TokenRepository_retrieveTokenRecord(
|
||||
const auto path = env->GetStringUTFChars(pathStr, nullptr);
|
||||
auto token = retrieveSavedToken(path);
|
||||
|
||||
auto tokenClass = env->FindClass("com/example/mear/models/Token");
|
||||
auto jConstructor = env->GetMethodID(tokenClass, "<init>", "()V");
|
||||
auto tokenObj = env->NewObject(tokenClass, jConstructor);
|
||||
|
||||
auto accessTokenId = env->GetMethodID(tokenClass, "setAccessToken", "(Ljava/lang/String;)V");
|
||||
|
||||
auto accessTokenStr = env->NewStringUTF(token.accessToken.c_str());
|
||||
|
||||
env->CallVoidMethod(tokenObj, accessTokenId, accessTokenStr);
|
||||
auto tokenObj = utility::JNIObjectConversion<model::Token>::TokenToObj(env, token);
|
||||
|
||||
return tokenObj;
|
||||
}
|
||||
@@ -550,10 +516,7 @@ Java_com_example_mear_repositories_TrackRepository_downloadSong(
|
||||
jobject songObj,
|
||||
jstring pathStr
|
||||
) {
|
||||
auto tokenClass = env->GetObjectClass(tokenObj);
|
||||
auto accessTokenId = env->GetFieldID(tokenClass, "accessToken", "Ljava/lang/String;");
|
||||
auto accessTokenVal = (jstring) env->GetObjectField(tokenObj, accessTokenId);
|
||||
model::Token token(env->GetStringUTFChars(accessTokenVal, nullptr));
|
||||
auto token = utility::JNIObjectConversion<model::Token>::ObjToToken(env, tokenObj);
|
||||
|
||||
auto song = ObjToSong<jobject, JNIEnv>(env, songObj);
|
||||
auto path = env->GetStringUTFChars(pathStr, nullptr);
|
||||
@@ -572,17 +535,15 @@ Java_com_example_mear_repositories_TrackRepository_retrieveSong(
|
||||
jobject songObj,
|
||||
jstring uriStr
|
||||
) {
|
||||
auto tokenClass = env->GetObjectClass(tokenObj);
|
||||
auto songClass = env->GetObjectClass(songObj);
|
||||
|
||||
auto accessTokenField = env->GetFieldID(tokenClass, "accessToken", "Ljava/lang/String;");
|
||||
auto idField = env->GetFieldID(songClass, "id", "I");
|
||||
|
||||
auto accessTokenStr = (jstring)env->GetObjectField(tokenObj, accessTokenField);
|
||||
auto idInt = env->GetIntField(songObj, idField);
|
||||
|
||||
auto uri = env->GetStringUTFChars(uriStr, nullptr);
|
||||
model::Token token(env->GetStringUTFChars(accessTokenStr, nullptr));
|
||||
auto token = utility::JNIObjectConversion<model::Token>::ObjToToken(env, tokenObj);
|
||||
|
||||
model::Song song(idInt);
|
||||
|
||||
song = retrieveSong(token, song, uri);
|
||||
@@ -599,21 +560,10 @@ Java_com_example_mear_repositories_UserRepository_retrieveUserCredentials(
|
||||
jobject thisObj,
|
||||
jstring dataPath
|
||||
) {
|
||||
jclass userClass = env->FindClass("com/example/mear/models/User");
|
||||
jmethodID userContructor = env->GetMethodID(userClass, "<init>", "()V");
|
||||
jobject userObj = env->NewObject(userClass, userContructor);
|
||||
|
||||
const std::string dataPathStr = env->GetStringUTFChars(dataPath, nullptr);
|
||||
auto user = retrieveCredentials(dataPathStr);
|
||||
|
||||
jmethodID usernameId = env->GetMethodID(userClass, "setUsername", "(Ljava/lang/String;)V");
|
||||
jmethodID passwordId = env->GetMethodID(userClass, "setPassword", "(Ljava/lang/String;)V");
|
||||
|
||||
jstring username = env->NewStringUTF(user.username.c_str());
|
||||
jstring password = env->NewStringUTF(user.password.c_str());
|
||||
|
||||
env->CallVoidMethod(userObj, usernameId, username);
|
||||
env->CallVoidMethod(userObj, passwordId, password);
|
||||
auto userObj = utility::JNIObjectConversion<model::User>::UserToObj<JNIEnv>(env, user);
|
||||
|
||||
return userObj;
|
||||
}
|
||||
@@ -626,28 +576,13 @@ Java_com_example_mear_repositories_UserRepository_logUser(
|
||||
jobject thisObj,
|
||||
jobject user,
|
||||
jstring apiUri ) {
|
||||
jclass userClass = env->GetObjectClass(user);
|
||||
auto passwordField = env->GetFieldID(userClass, "password", "Ljava/lang/String;");
|
||||
auto usernameField = env->GetFieldID(userClass, "username", "Ljava/lang/String;");
|
||||
|
||||
auto password = (jstring)env->GetObjectField(user, passwordField);
|
||||
auto username = (jstring)env->GetObjectField(user, usernameField);
|
||||
|
||||
const std::string api = env->GetStringUTFChars(apiUri, nullptr);
|
||||
model::User us(env->GetStringUTFChars(username, nullptr),
|
||||
env->GetStringUTFChars(password, nullptr));
|
||||
|
||||
auto us = utility::JNIObjectConversion<model::User>::ObjToUser(env, user);
|
||||
|
||||
auto token = fetchToken(us, api);
|
||||
|
||||
jclass tokenClass = env->FindClass( "com/example/mear/models/Token");
|
||||
jmethodID jconstructor = env->GetMethodID( tokenClass, "<init>", "()V" );
|
||||
jobject tokenObj = env->NewObject( tokenClass, jconstructor );
|
||||
|
||||
jmethodID tokenAccess = env->GetMethodID( tokenClass, "setAccessToken", "(Ljava/lang/String;)V" );
|
||||
|
||||
jstring title = env->NewStringUTF(token.accessToken.c_str());
|
||||
|
||||
env->CallVoidMethod(tokenObj, tokenAccess, title);
|
||||
auto tokenObj = utility::JNIObjectConversion<model::Token>::TokenToObj(env, token);
|
||||
|
||||
return tokenObj;
|
||||
}
|
||||
@@ -763,14 +698,8 @@ Java_com_example_mear_repositories_APIRepository_saveAPIInfoRecord(
|
||||
jobject apiInfoObj,
|
||||
jstring pathStr
|
||||
) {
|
||||
auto apiInfoClass = env->GetObjectClass(apiInfoObj);
|
||||
auto uriId = env->GetFieldID(apiInfoClass, "uri", "Ljava/lang/String;");
|
||||
auto versionId = env->GetFieldID(apiInfoClass, "version", "I");
|
||||
|
||||
auto uriStr = (jstring) env->GetObjectField(apiInfoObj, uriId);
|
||||
auto versionInt = env->GetIntField(apiInfoObj, versionId);
|
||||
|
||||
model::APIInfo apiInfo(env->GetStringUTFChars(uriStr, nullptr), versionInt);
|
||||
auto apiInfo = utility::JNIObjectConversion<model::APIInfo>::
|
||||
ObjToAPIInfo(env, apiInfoObj);
|
||||
auto path = env->GetStringUTFChars(pathStr, nullptr);
|
||||
|
||||
saveAPIInfo(apiInfo, path);
|
||||
@@ -809,12 +738,7 @@ Java_com_example_mear_repositories_TokenRepository_saveTokenRecord(
|
||||
jobject tokenObj,
|
||||
jstring pathStr
|
||||
) {
|
||||
auto tokenClass = env->GetObjectClass(tokenObj);
|
||||
auto accessTokenId = env->GetFieldID(tokenClass, "accessToken", "Ljava/lang/String;");
|
||||
|
||||
auto accessTokenVal = (jstring) env->GetObjectField(tokenObj, accessTokenId);
|
||||
|
||||
model::Token token(env->GetStringUTFChars(accessTokenVal, nullptr));
|
||||
auto token = utility::JNIObjectConversion<model::Token>::ObjToToken(env, tokenObj);
|
||||
auto path = env->GetStringUTFChars(pathStr, nullptr);
|
||||
|
||||
saveToken(token, path);
|
||||
@@ -829,18 +753,9 @@ Java_com_example_mear_repositories_UserRepository_saveUserCredentials(
|
||||
jobject user,
|
||||
jstring appDirectory
|
||||
) {
|
||||
jclass userClass = env->GetObjectClass(user);
|
||||
auto usernameId = env->GetFieldID(userClass, "username", "Ljava/lang/String;");
|
||||
auto passwordId = env->GetFieldID(userClass, "password", "Ljava/lang/String;");
|
||||
|
||||
auto usernameStr = (jstring) env->GetObjectField(user, usernameId);
|
||||
auto passwordStr = (jstring) env->GetObjectField(user, passwordId);
|
||||
|
||||
const std::string username = env->GetStringUTFChars(usernameStr, nullptr);
|
||||
const std::string password = env->GetStringUTFChars(passwordStr, nullptr);
|
||||
const std::string appDirectoryStr = env->GetStringUTFChars(appDirectory, nullptr);
|
||||
|
||||
model::User usr(username, password);
|
||||
auto usr = utility::JNIObjectConversion<model::User>::ObjToUser<JNIEnv>(env, user);
|
||||
|
||||
saveCredentials(usr, appDirectoryStr);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user