LoginActivity.java
package project.oleo;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import butterknife.ButterKnife;
import butterknife.BindView;
/**
* Created by hp on 2/10/2018.
*/
public class LoginActivity extends AppCompatActivity {
private static final String TAG = “LoginActivity”;
private static final int REQUEST_SIGNUP = 0;
private FirebaseAuth mAuth;
private SessionManager session;
private String email, password;
@BindView(R.id.input_email) EditText _emailText;
@BindView(R.id.input_password) EditText _passwordText;
@BindView(R.id.button_login) Button _loginButton;
@BindView(R.id.link_signup) TextView _signupLink;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ButterKnife.bind(this);
session = new SessionManager(this);
mAuth = FirebaseAuth.getInstance();
FirebaseUser user = mAuth.getCurrentUser();
if (user != null) {
onLoginSuccess();
}
_loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
login();
}
});
_signupLink.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Start the Signup activity
Intent intent = new Intent(getApplicationContext(), SignupActivity.class);
startActivityForResult(intent, REQUEST_SIGNUP);
}
});
}
public void login() {
Log.d(TAG, “Login”);
if (!validate()) {
onLoginFailed();
return;
}
_loginButton.setEnabled(false);
final ProgressDialog progressDialog = new ProgressDialog(LoginActivity.this);
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(false);
progressDialog.setMessage(“Authenticating…”);
progressDialog.show();
email = _emailText.getText().toString();
password = _passwordText.getText().toString();
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user’s information
Log.d(TAG, “signInWithEmail:success”);
FirebaseUser user = mAuth.getCurrentUser();
session.setUserID(user.getUid());
session.setEmail(email);
progressDialog.dismiss();
onLoginSuccess();
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, “signInWithEmail:failure”, task.getException());
progressDialog.dismiss();
onLoginFailed();
}
// …
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_SIGNUP) {
if (resultCode == RESULT_OK) {
// TODO: Implement successful signup logic here
// By default we just finish the Activity and log them in automatically
this.finish();
}
}
}
@Override
public void onBackPressed() {
// disable going back to the MainActivity
moveTaskToBack(true);
}
public void onLoginSuccess() {
_loginButton.setEnabled(true);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
public void onLoginFailed() {
Toast.makeText(getBaseContext(), “Login failed”, Toast.LENGTH_LONG).show();
_loginButton.setEnabled(true);
}
public boolean validate() {
boolean valid = true;
String email = _emailText.getText().toString();
String password = _passwordText.getText().toString();
if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
_emailText.setError(“enter a valid email address”);
valid = false;
} else {
_emailText.setError(null);
}
if (password.isEmpty() || password.length() < 4 || password.length() > 10) {
_passwordText.setError(“between 4 and 10 alphanumeric characters”);
valid = false;
} else {
_passwordText.setError(null);
}
return valid;
}
}