mirror of https://github.com/MISP/misp-bump
roles will be saved on device
roles get updated on login and profile updatepull/5/head
parent
55713e8a99
commit
cd802fbccf
|
@ -3,13 +3,6 @@ package lu.circl.mispbump.activities;
|
|||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
@ -17,13 +10,22 @@ import android.view.View;
|
|||
import android.widget.Button;
|
||||
import android.widget.ProgressBar;
|
||||
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import lu.circl.mispbump.R;
|
||||
import lu.circl.mispbump.auxiliary.DialogManager;
|
||||
import lu.circl.mispbump.auxiliary.PreferenceManager;
|
||||
import lu.circl.mispbump.auxiliary.MispRestClient;
|
||||
import lu.circl.mispbump.auxiliary.PreferenceManager;
|
||||
import lu.circl.mispbump.models.restModels.Organisation;
|
||||
import lu.circl.mispbump.models.restModels.Role;
|
||||
import lu.circl.mispbump.models.restModels.User;
|
||||
|
||||
/**
|
||||
|
@ -126,6 +128,19 @@ public class LoginActivity extends AppCompatActivity {
|
|||
mispRestClient.isAvailable(new MispRestClient.AvailableCallback() {
|
||||
@Override
|
||||
public void available() {
|
||||
mispRestClient.getRoles(new MispRestClient.AllRolesCallback() {
|
||||
@Override
|
||||
public void success(Role[] roles) {
|
||||
preferenceManager.setRoles(roles);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(String error) {
|
||||
// TODO what to do if an error occures?
|
||||
Snackbar.make(constraintLayout, error, Snackbar.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
|
||||
mispRestClient.getMyUser(new MispRestClient.UserCallback() {
|
||||
@Override
|
||||
public void success(final User user) {
|
||||
|
|
|
@ -29,6 +29,7 @@ import lu.circl.mispbump.auxiliary.PreferenceManager;
|
|||
import lu.circl.mispbump.auxiliary.TileDrawable;
|
||||
import lu.circl.mispbump.customViews.MaterialPreferenceText;
|
||||
import lu.circl.mispbump.models.restModels.Organisation;
|
||||
import lu.circl.mispbump.models.restModels.Role;
|
||||
import lu.circl.mispbump.models.restModels.User;
|
||||
import lu.circl.mispbump.security.KeyStoreWrapper;
|
||||
|
||||
|
@ -131,14 +132,22 @@ public class ProfileActivity extends AppCompatActivity {
|
|||
}
|
||||
|
||||
public void updateProfile() {
|
||||
// progressBar.setVisibility(View.VISIBLE);
|
||||
mispRestClient.getRoles(new MispRestClient.AllRolesCallback() {
|
||||
@Override
|
||||
public void success(Role[] roles) {
|
||||
preferenceManager.setRoles(roles);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failure(String error) {
|
||||
Snackbar.make(rootLayout, error, Snackbar.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
|
||||
mispRestClient.getMyUser(new MispRestClient.UserCallback() {
|
||||
@Override
|
||||
public void success(final User user) {
|
||||
|
||||
preferenceManager.setUserInfo(user);
|
||||
|
||||
mispRestClient.getOrganisation(user.org_id, new MispRestClient.OrganisationCallback() {
|
||||
@Override
|
||||
public void success(Organisation organisation) {
|
||||
|
@ -178,8 +187,7 @@ public class ProfileActivity extends AppCompatActivity {
|
|||
builder.setPositiveButton("Delete & Logout", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
PreferenceManager prefs = PreferenceManager.getInstance(ProfileActivity.this);
|
||||
prefs.clearAllData();
|
||||
preferenceManager.clearAllData();
|
||||
KeyStoreWrapper.deleteAllStoredKeys();
|
||||
|
||||
Intent login = new Intent(getApplicationContext(), LoginActivity.class);
|
||||
|
|
|
@ -2,7 +2,6 @@ package lu.circl.mispbump.auxiliary;
|
|||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.util.Log;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
@ -21,16 +20,14 @@ import javax.crypto.NoSuchPaddingException;
|
|||
|
||||
import lu.circl.mispbump.models.UploadInformation;
|
||||
import lu.circl.mispbump.models.restModels.Organisation;
|
||||
import lu.circl.mispbump.models.restModels.Role;
|
||||
import lu.circl.mispbump.models.restModels.User;
|
||||
import lu.circl.mispbump.security.KeyStoreWrapper;
|
||||
|
||||
public class PreferenceManager {
|
||||
|
||||
private static final String TAG = "PreferenceManager";
|
||||
|
||||
private static final String PREFERENCES_FILE = "user_settings";
|
||||
|
||||
private static final String SAVE_CREDENTIALS = "save_credentials";
|
||||
private static final String SERVER_URL = "server_url";
|
||||
private static final String AUTOMATION_KEY = "user_automation";
|
||||
|
||||
|
@ -39,6 +36,8 @@ public class PreferenceManager {
|
|||
|
||||
private static final String UPLOAD_INFO = "upload_info";
|
||||
|
||||
private static final String MISP_ROLES = "misp_roles";
|
||||
|
||||
private SharedPreferences preferences;
|
||||
private static PreferenceManager instance;
|
||||
|
||||
|
@ -61,6 +60,36 @@ public class PreferenceManager {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Save downloaded MISP roles on device.
|
||||
* @param roles {@link Role}
|
||||
*/
|
||||
public void setRoles(Role[] roles) {
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putString(MISP_ROLES, new Gson().toJson(roles));
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets downloaded and saved MISP roles if available.
|
||||
* <p/>
|
||||
* Roles are downloaded on login and updated with each profile update.
|
||||
*
|
||||
* @return {@link Role}[] or null
|
||||
*/
|
||||
public Role[] getRoles() {
|
||||
Type type = new TypeToken<Role[]>() {}.getType();
|
||||
String rolesString = preferences.getString(MISP_ROLES, "");
|
||||
|
||||
assert rolesString != null;
|
||||
if (rolesString.isEmpty()) {
|
||||
return null;
|
||||
} else {
|
||||
return new Gson().fromJson(rolesString, type);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Saves user infos from "users/view/me" (encrypted)
|
||||
*
|
||||
|
@ -430,26 +459,13 @@ public class PreferenceManager {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set if credentials (authkey & server url) should be saved locally.
|
||||
*
|
||||
* @param save enable or disable
|
||||
* @deprecated currently not used because automation key is needed to do requests to your misp instance.
|
||||
* If this should be an option in future: misp automation key would be needed on each sync process.
|
||||
*/
|
||||
public void setSaveCredentials(boolean save) {
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putBoolean(SAVE_CREDENTIALS, save);
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
public boolean getSaveCredentials() {
|
||||
return preferences.getBoolean(SAVE_CREDENTIALS, false);
|
||||
}
|
||||
|
||||
|
||||
public void clearAllData() {
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
|
||||
clearServerUrl();
|
||||
clearAutomationKey();
|
||||
clearUploadInformation();
|
||||
|
||||
editor.clear();
|
||||
editor.apply();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue