Advertisement
mythoc

Register

Jul 23rd, 2018
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.83 KB | None | 0 0
  1.  
  2.  
  3. import android.app.Dialog;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.support.annotation.NonNull;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.util.Log;
  9. import android.view.View;
  10. import android.view.WindowManager;
  11. import android.widget.Button;
  12. import android.widget.EditText;
  13. import android.widget.ProgressBar;
  14. import android.widget.TextView;
  15. import android.widget.Toast;
  16.  
  17. import com.google.android.gms.common.ConnectionResult;
  18. import com.google.android.gms.common.GoogleApiAvailability;
  19. import com.google.android.gms.tasks.OnCompleteListener;
  20. import com.google.android.gms.tasks.OnFailureListener;
  21. import com.google.android.gms.tasks.Task;
  22. import com.google.firebase.auth.AuthResult;
  23. import com.google.firebase.auth.FirebaseAuth;
  24. import com.google.firebase.auth.FirebaseUser;
  25. import com.nostra13.universalimageloader.core.ImageLoader;
  26.  
  27. import courses.pluralsight.com.tabianconsulting.utility.UniversalImageLoader;
  28.  
  29.  
  30. public class LoginActivity extends AppCompatActivity {
  31.  
  32.     private static final String TAG = "LoginActivity";
  33.     //constants
  34.     private static final int ERROR_DIALOG_REQUEST = 9001;
  35.  
  36.     //Firebase
  37.     private FirebaseAuth.AuthStateListener mAuthListener;
  38.  
  39.     // widgets
  40.     private EditText mEmail, mPassword;
  41.     private ProgressBar mProgressBar;
  42.     public static boolean isActivityRunning;
  43.  
  44.     @Override
  45.     protected void onCreate(Bundle savedInstanceState) {
  46.         super.onCreate(savedInstanceState);
  47.         setContentView(R.layout.activity_login);
  48.         mEmail = (EditText) findViewById(R.id.email);
  49.         mPassword = (EditText) findViewById(R.id.password);
  50.         mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
  51.  
  52.         setupFirebaseAuth();
  53.         initImageLoader();
  54.         if(servicesOK()){
  55.             init();
  56.         }
  57.         hideSoftKeyboard();
  58.  
  59.     }
  60.  
  61.     private void init(){
  62.         Button signIn = (Button) findViewById(R.id.email_sign_in_button);
  63.         signIn.setOnClickListener(new View.OnClickListener() {
  64.             @Override
  65.             public void onClick(View view) {
  66.  
  67.                 //check if the fields are filled out
  68.                 if(!isEmpty(mEmail.getText().toString())
  69.                         && !isEmpty(mPassword.getText().toString())){
  70.                     Log.d(TAG, "onClick: attempting to authenticate.");
  71.  
  72.                     showDialog();
  73.  
  74.                     FirebaseAuth.getInstance().signInWithEmailAndPassword(mEmail.getText().toString(),
  75.                             mPassword.getText().toString())
  76.                             .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
  77.                                 @Override
  78.                                 public void onComplete(@NonNull Task<AuthResult> task) {
  79.  
  80.                                     hideDialog();
  81.  
  82.                                 }
  83.                             }).addOnFailureListener(new OnFailureListener() {
  84.                         @Override
  85.                         public void onFailure(@NonNull Exception e) {
  86.                             Toast.makeText(LoginActivity.this, "Authentication Failed", Toast.LENGTH_SHORT).show();
  87.                             hideDialog();
  88.                         }
  89.                     });
  90.                 }else{
  91.                     Toast.makeText(LoginActivity.this, "You didn't fill in all the fields.", Toast.LENGTH_SHORT).show();
  92.                 }
  93.             }
  94.         });
  95.  
  96.         TextView register = (TextView) findViewById(R.id.link_register);
  97.         register.setOnClickListener(new View.OnClickListener() {
  98.             @Override
  99.             public void onClick(View view) {
  100.                 Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
  101.                 startActivity(intent);
  102.             }
  103.         });
  104.  
  105.         TextView resetPassword = (TextView) findViewById(R.id.forgot_password);
  106.         resetPassword.setOnClickListener(new View.OnClickListener() {
  107.             @Override
  108.             public void onClick(View v) {
  109.                 PasswordResetDialog dialog = new PasswordResetDialog();
  110.                 dialog.show(getSupportFragmentManager(), "dialog_password_reset");
  111.             }
  112.         });
  113.  
  114.         TextView resendEmailVerification = (TextView) findViewById(R.id.resend_verification_email);
  115.         resendEmailVerification.setOnClickListener(new View.OnClickListener() {
  116.             @Override
  117.             public void onClick(View v) {
  118.                 ResendVerificationDialog dialog = new ResendVerificationDialog();
  119.                 dialog.show(getSupportFragmentManager(), "dialog_resend_email_verification");
  120.             }
  121.         });
  122.     }
  123.  
  124.  
  125.     public boolean servicesOK(){
  126.         Log.d(TAG, "servicesOK: Checking Google Services.");
  127.  
  128.         int isAvailable = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(LoginActivity.this);
  129.  
  130.         if(isAvailable == ConnectionResult.SUCCESS){
  131.             //everything is ok and the user can make mapping requests
  132.             Log.d(TAG, "servicesOK: Play Services is OK");
  133.             return true;
  134.         }
  135.         else if(GoogleApiAvailability.getInstance().isUserResolvableError(isAvailable)){
  136.             //an error occured, but it's resolvable
  137.             Log.d(TAG, "servicesOK: an error occured, but it's resolvable.");
  138.             Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(LoginActivity.this, isAvailable, ERROR_DIALOG_REQUEST);
  139.             dialog.show();
  140.         }
  141.         else{
  142.             Toast.makeText(this, "Can't connect to mapping services", Toast.LENGTH_SHORT).show();
  143.         }
  144.  
  145.         return false;
  146.     }
  147.  
  148.     /**
  149.      * init universal image loader
  150.      */
  151.     private void initImageLoader(){
  152.         UniversalImageLoader imageLoader = new UniversalImageLoader(LoginActivity.this);
  153.         ImageLoader.getInstance().init(imageLoader.getConfig());
  154.     }
  155.  
  156.     /**
  157.      * Return true if the @param is null
  158.      * @param string
  159.      * @return
  160.      */
  161.     private boolean isEmpty(String string){
  162.         return string.equals("");
  163.     }
  164.  
  165.  
  166.     private void showDialog(){
  167.         mProgressBar.setVisibility(View.VISIBLE);
  168.  
  169.     }
  170.  
  171.     private void hideDialog(){
  172.         if(mProgressBar.getVisibility() == View.VISIBLE){
  173.             mProgressBar.setVisibility(View.INVISIBLE);
  174.         }
  175.     }
  176.  
  177.     private void hideSoftKeyboard(){
  178.         this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
  179.     }
  180.  
  181.     /*
  182.         ----------------------------- Firebase setup ---------------------------------
  183.      */
  184.     private void setupFirebaseAuth(){
  185.         Log.d(TAG, "setupFirebaseAuth: started.");
  186.  
  187.         mAuthListener = new FirebaseAuth.AuthStateListener() {
  188.             @Override
  189.             public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
  190.                 FirebaseUser user = firebaseAuth.getCurrentUser();
  191.                 if (user != null) {
  192.  
  193.                     //check if email is verified
  194.                     if(user.isEmailVerified()){
  195.                         Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
  196.                         Toast.makeText(LoginActivity.this, "Authenticated with: " + user.getEmail(), Toast.LENGTH_SHORT).show();
  197.  
  198.                         Intent intent = new Intent(LoginActivity.this, SignedInActivity.class);
  199.                         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
  200.  
  201.                         //check for extras from FCM
  202.                         if (getIntent().getExtras() != null) {
  203.                             Log.d(TAG, "initFCM: found intent extras: " + getIntent().getExtras().toString());
  204.                             for (String key : getIntent().getExtras().keySet()) {
  205.                                 Object value = getIntent().getExtras().get(key);
  206.                                 Log.d(TAG, "initFCM: Key: " + key + " Value: " + value);
  207.                             }
  208.                             String data = getIntent().getStringExtra("data");
  209.                             Log.d(TAG, "initFCM: data: " + data);
  210.                         }
  211.                         startActivity(intent);
  212.                         finish();
  213.  
  214.                     }else{
  215.                         Toast.makeText(LoginActivity.this, "Email is not Verified\nCheck your Inbox", Toast.LENGTH_SHORT).show();
  216.                         FirebaseAuth.getInstance().signOut();
  217.                     }
  218.  
  219.                 } else {
  220.                     // User is signed out
  221.                     Log.d(TAG, "onAuthStateChanged:signed_out");
  222.                 }
  223.                 // ...
  224.             }
  225.         };
  226.     }
  227.  
  228.     @Override
  229.     public void onStart() {
  230.         super.onStart();
  231.         FirebaseAuth.getInstance().addAuthStateListener(mAuthListener);
  232.         isActivityRunning = true;
  233.     }
  234.  
  235.     @Override
  236.     public void onStop() {
  237.         super.onStop();
  238.         if (mAuthListener != null) {
  239.             FirebaseAuth.getInstance().removeAuthStateListener(mAuthListener);
  240.         }
  241.         isActivityRunning = false;
  242.     }
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement