mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-23 13:59:29 +00:00
Login tokens can be saved
This commit is contained in:
parent
727b66b65c
commit
aeba9a615b
@ -0,0 +1,159 @@
|
||||
package org.communiquons.android.comunic.client;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Comunic account class
|
||||
*
|
||||
* Created by pierre on 10/29/17.
|
||||
*/
|
||||
|
||||
class Account {
|
||||
|
||||
/**
|
||||
* Utilities object
|
||||
*/
|
||||
private Utilities utils;
|
||||
|
||||
/**
|
||||
* Tokens list
|
||||
*/
|
||||
private ArrayList<String> tokens;
|
||||
|
||||
/**
|
||||
* Tokens file
|
||||
*/
|
||||
private String tokFilename = "login_tokens.json";
|
||||
|
||||
/**
|
||||
* Application context
|
||||
*/
|
||||
private Context mContext;
|
||||
|
||||
/**
|
||||
* Account class constructor
|
||||
*
|
||||
* @param context Context of the application
|
||||
*/
|
||||
Account(Context context){
|
||||
mContext = context;
|
||||
utils = new Utilities(context);
|
||||
|
||||
//Initializate tokens array
|
||||
tokens = new ArrayList<>();
|
||||
|
||||
//Debug test
|
||||
/*ArrayList<String> tokens = new ArrayList<>();
|
||||
tokens.add("cXNkZjVxNnM1NGRmNTRxczZkNGZxc2RmNAo");
|
||||
tokens.add("cXNkZjVxNnM1cXM4ZDdmODdxczhkZ3FzZGp");
|
||||
save_new_tokens(tokens);
|
||||
Log.v("Account", utils.file_get_content(tokFilename));
|
||||
|
||||
Log.v("Account", "You are signed in: " + (signed_in() ? "Yes" : "No"));*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether user is signed in or not
|
||||
*
|
||||
* @return True if signed in
|
||||
*/
|
||||
boolean signed_in(){
|
||||
|
||||
//Check if tokens are already loaded
|
||||
if(tokens.size() < 1){
|
||||
if(!load_tokens())
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to load tokens in tokens array
|
||||
*
|
||||
* @return False in case of failure
|
||||
*/
|
||||
private boolean load_tokens(){
|
||||
|
||||
String tokens_file;
|
||||
|
||||
//Get the tokens file content
|
||||
tokens_file = utils.file_get_content(tokFilename);
|
||||
|
||||
//Check if there was an error
|
||||
if(Objects.equals(tokens_file, ""))
|
||||
return false;
|
||||
|
||||
//Try to parse tokens file
|
||||
try {
|
||||
JSONArray tokens_array = new JSONArray(tokens_file);
|
||||
|
||||
//Process login tokens
|
||||
if(tokens_array.length() == 0)
|
||||
return false; //No tokens to process
|
||||
|
||||
for (int i = 0; i < tokens_array.length(); i++) {
|
||||
tokens.add(tokens_array.getString(i));
|
||||
}
|
||||
|
||||
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
|
||||
//Success
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save new tokens in tokens file
|
||||
*
|
||||
* @param toks The array containing the tokens
|
||||
* @return False in case of failure
|
||||
*/
|
||||
private boolean save_new_tokens(ArrayList<String> toks){
|
||||
|
||||
//Create tokens array
|
||||
JSONArray tokens = new JSONArray();
|
||||
|
||||
//Populate tokens array with new tokens
|
||||
for(int i = 0; i < toks.size(); i++){
|
||||
tokens.put(toks.get(i));
|
||||
}
|
||||
|
||||
//Convert JSON array into a string
|
||||
String tokens_string = tokens.toString();
|
||||
|
||||
//Try to write result to file
|
||||
if(!utils.file_put_contents(tokFilename, tokens_string)){
|
||||
Log.e("Account", "Couldn't save new tokens !");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove login tokens from device
|
||||
* @return False in case of failure
|
||||
*/
|
||||
private boolean remove_login_tokens(){
|
||||
if(!utils.file_put_contents(tokFilename, "[]"))
|
||||
return false;
|
||||
|
||||
//Create new array
|
||||
tokens = new ArrayList<>();
|
||||
|
||||
//Success
|
||||
return true;
|
||||
}
|
||||
}
|
@ -5,9 +5,16 @@ import android.os.Bundle;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
|
||||
/**
|
||||
* Acount object
|
||||
*/
|
||||
Account account;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
|
||||
account = new Account(this);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,94 @@
|
||||
package org.communiquons.android.comunic.client;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
|
||||
/**
|
||||
* Application utilities
|
||||
*
|
||||
* Created by pierre on 10/29/17.
|
||||
*/
|
||||
|
||||
class Utilities {
|
||||
|
||||
/**
|
||||
* Application context
|
||||
*/
|
||||
private Context mContext;
|
||||
|
||||
/**
|
||||
* Account class constructor
|
||||
*
|
||||
* @param context Context of the application
|
||||
*/
|
||||
Utilities(Context context){
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the content of a file
|
||||
*
|
||||
* @param filename the name of the file to get
|
||||
* @return The content of the file
|
||||
*/
|
||||
String file_get_content(String filename){
|
||||
|
||||
FileInputStream fileInputStream;
|
||||
|
||||
try {
|
||||
fileInputStream = mContext.openFileInput(filename);
|
||||
|
||||
String result = "";
|
||||
int currByte = 0;
|
||||
while(currByte != -1){
|
||||
|
||||
currByte = fileInputStream.read();
|
||||
|
||||
if(currByte != -1)
|
||||
result += (char) currByte;
|
||||
}
|
||||
|
||||
fileInputStream.close();
|
||||
|
||||
return result;
|
||||
}
|
||||
catch (Exception e){
|
||||
|
||||
//Print error stack
|
||||
Log.e("Utilities", "Couldn't get file content !");
|
||||
e.printStackTrace();
|
||||
|
||||
return ""; //This is a failure
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Write something to a file
|
||||
*
|
||||
* @param filename The name of the file to write
|
||||
* @param content The new content of the file
|
||||
* @return FALSE in case of failure
|
||||
*/
|
||||
boolean file_put_contents(String filename, String content){
|
||||
|
||||
FileOutputStream fileOutputStream;
|
||||
|
||||
try {
|
||||
fileOutputStream = mContext.openFileOutput(filename, Context.MODE_PRIVATE);
|
||||
fileOutputStream.write(content.getBytes());
|
||||
fileOutputStream.close();
|
||||
} catch (Exception e){
|
||||
e.printStackTrace();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//Success
|
||||
return true;
|
||||
}
|
||||
}
|
@ -6,4 +6,7 @@
|
||||
-->
|
||||
<full-backup-content>
|
||||
|
||||
<!-- Login tokens -->
|
||||
<include domain="file" path="login_tokens.json" />
|
||||
|
||||
</full-backup-content>
|
Loading…
Reference in New Issue
Block a user