183 lines
7.6 KiB
Java
183 lines
7.6 KiB
Java
package monnethic.mobile.homepage;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.os.AsyncTask;
|
|
import android.support.v7.app.AppCompatActivity;
|
|
import android.os.Bundle;
|
|
import android.view.View;
|
|
import android.view.WindowManager;
|
|
import android.view.inputmethod.InputMethodManager;
|
|
import android.widget.Button;
|
|
import android.widget.EditText;
|
|
import android.widget.RelativeLayout;
|
|
import android.widget.Toast;
|
|
import com.example.monnthic.monnethicmobile.R;
|
|
import org.json.JSONObject;
|
|
import monnethic.mobile.database.User;
|
|
import monnethic.mobile.restApi.UserApiHandler;
|
|
import monnethic.mobile.wallet.HomeWalletActivity;
|
|
|
|
public class LoginActivity extends AppCompatActivity {
|
|
private EditText email;
|
|
private EditText password;
|
|
private Button buttonCancel;
|
|
private Button buttonOk;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setContentView(R.layout.activity_login);
|
|
email = findViewById(R.id.editTextEmail);
|
|
password = findViewById(R.id.editTextPassword);
|
|
buttonCancel = findViewById(R.id.buttonCancel);
|
|
buttonOk = findViewById(R.id.buttonOkLogin);
|
|
|
|
buttonCancel.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View view) {
|
|
finish();
|
|
}
|
|
});
|
|
buttonOk.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View view) {
|
|
validateInput();
|
|
}
|
|
});
|
|
}
|
|
|
|
/*
|
|
public void onClickForgetPassword(View v){
|
|
Toast.makeText(this, "Forget password", Toast.LENGTH_SHORT).show();
|
|
}
|
|
public void onClickForgetEmail(View v){
|
|
Toast.makeText(this, "Forget email", Toast.LENGTH_SHORT).show();
|
|
}
|
|
*/
|
|
|
|
private void validateInput(){
|
|
InputMethodManager inputMethodManager = (InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE);
|
|
inputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(),0);
|
|
if(InputController.isEmptyEdit(email)){
|
|
Toast.makeText(this, "You did not enter your email", Toast.LENGTH_SHORT).show();
|
|
} else if(!InputController.validEmail(email.getText().toString())){
|
|
Toast.makeText(this, "Your email is invalid", Toast.LENGTH_SHORT).show();
|
|
} else if(InputController.isEmptyEdit(password)) {
|
|
Toast.makeText(this, "You did not enter your password", Toast.LENGTH_SHORT).show();
|
|
} else {
|
|
User user = new User(email.getText().toString(),password.getText().toString());
|
|
new UserLoggerTask(this).execute(user);
|
|
}
|
|
}
|
|
|
|
//AsyncTask for login
|
|
private class UserLoggerTask extends AsyncTask<User,String,JSONObject> {
|
|
Context mContext;
|
|
RelativeLayout progress = findViewById(R.id.progressLayout);
|
|
private UserLoggerTask(final Context context){
|
|
mContext = context;
|
|
}
|
|
|
|
@Override
|
|
protected void onPreExecute() {
|
|
super.onPreExecute();
|
|
email.setEnabled(false);
|
|
password.setEnabled(false);
|
|
buttonCancel.setEnabled(false);
|
|
buttonOk.setEnabled(false);
|
|
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
|
|
progress.setVisibility(View.VISIBLE);
|
|
}
|
|
|
|
@Override
|
|
protected void onPostExecute(JSONObject jsonObject) {
|
|
try{
|
|
if(jsonObject!=null){
|
|
if(jsonObject.getInt("status")==404){
|
|
Toast.makeText(mContext, "User Not Found", Toast.LENGTH_SHORT).show();
|
|
|
|
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
|
|
progress.setVisibility(View.GONE);
|
|
email.setEnabled(true);
|
|
password.setEnabled(true);
|
|
buttonCancel.setEnabled(true);
|
|
buttonOk.setEnabled(true);
|
|
} else if(jsonObject.getInt("status")==403){
|
|
Toast.makeText(mContext, "Wrong authentication", Toast.LENGTH_SHORT).show();
|
|
|
|
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
|
|
progress.setVisibility(View.GONE);
|
|
email.setEnabled(true);
|
|
password.setEnabled(true);
|
|
buttonCancel.setEnabled(true);
|
|
buttonOk.setEnabled(true);
|
|
} else if(jsonObject.getInt("status")==200){
|
|
Intent walletHomeIntent = new Intent(LoginActivity.this, HomeWalletActivity.class);
|
|
walletHomeIntent.putExtra("USER_HASH", jsonObject.getString("user_hash"));
|
|
walletHomeIntent.putExtra("USER_PWD",password.getText().toString());
|
|
walletHomeIntent.putExtra("SESSION_ID",jsonObject.getString("session_id"));
|
|
walletHomeIntent.putExtra("email",email.getText().toString());
|
|
Boolean approved = new CheckApprovalTask().execute(jsonObject.getString("user_hash"),email.getText().toString()).get();
|
|
walletHomeIntent.putExtra("approved", approved.toString());
|
|
LoginActivity.this.startActivity(walletHomeIntent);
|
|
finish();
|
|
} else {
|
|
Toast.makeText(mContext, "AN ERROR OCCURED", Toast.LENGTH_SHORT).show();
|
|
|
|
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
|
|
progress.setVisibility(View.GONE);
|
|
email.setEnabled(true);
|
|
password.setEnabled(true);
|
|
buttonCancel.setEnabled(true);
|
|
buttonOk.setEnabled(true);
|
|
}
|
|
}else{
|
|
Toast.makeText(mContext, "AN ERROR OCCURED", Toast.LENGTH_SHORT).show();
|
|
|
|
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
|
|
progress.setVisibility(View.GONE);
|
|
email.setEnabled(true);
|
|
password.setEnabled(true);
|
|
buttonCancel.setEnabled(true);
|
|
buttonOk.setEnabled(true);
|
|
}
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
|
|
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
|
|
progress.setVisibility(View.GONE);
|
|
email.setEnabled(true);
|
|
password.setEnabled(true);
|
|
buttonCancel.setEnabled(true);
|
|
buttonOk.setEnabled(true);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected JSONObject doInBackground(User... u) {
|
|
try{
|
|
UserApiHandler userApiHandler = new UserApiHandler();
|
|
return userApiHandler.loginUser(u[0]);
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
return null;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
private class CheckApprovalTask extends AsyncTask<String,Boolean,Boolean>{
|
|
@Override
|
|
protected Boolean doInBackground(String... strings) {
|
|
try{
|
|
UserApiHandler userApiHandler = new UserApiHandler();
|
|
return userApiHandler.checkApproval(strings[0],strings[1]);
|
|
}catch (Exception e){
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
}
|