mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-27 15: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 {
|
public class MainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Acount object
|
||||||
|
*/
|
||||||
|
Account account;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_main);
|
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>
|
<full-backup-content>
|
||||||
|
|
||||||
|
<!-- Login tokens -->
|
||||||
|
<include domain="file" path="login_tokens.json" />
|
||||||
|
|
||||||
</full-backup-content>
|
</full-backup-content>
|
Loading…
Reference in New Issue
Block a user