Advertisement
Guest User

Signin Code

a guest
Jan 21st, 2020
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.18 KB | None | 0 0
  1. package com.semesta.suryakami;
  2.  
  3. import android.app.AlertDialog;
  4. import android.app.Dialog;
  5. import android.app.ProgressDialog;
  6. import android.content.DialogInterface;
  7. import android.content.Intent;
  8. import android.graphics.Color;
  9. import android.graphics.drawable.ColorDrawable;
  10. import android.os.Bundle;
  11. import android.text.InputType;
  12. import android.text.TextUtils;
  13. import android.view.View;
  14. import android.widget.Button;
  15. import android.widget.EditText;
  16. import android.widget.ImageButton;
  17. import android.widget.ImageView;
  18. import android.widget.LinearLayout;
  19. import android.widget.TextView;
  20. import android.widget.Toast;
  21.  
  22. import androidx.annotation.NonNull;
  23. import androidx.appcompat.widget.Toolbar;
  24. import androidx.appcompat.app.AppCompatActivity;
  25.  
  26. import com.google.android.gms.tasks.OnCompleteListener;
  27. import com.google.android.gms.tasks.OnFailureListener;
  28. import com.google.android.gms.tasks.OnSuccessListener;
  29. import com.google.android.gms.tasks.Task;
  30. import com.google.android.material.textfield.TextInputEditText;
  31. import com.google.firebase.auth.AuthResult;
  32. import com.google.firebase.auth.FirebaseAuth;
  33. import com.google.firebase.database.DatabaseReference;
  34. import com.google.firebase.database.FirebaseDatabase;
  35. import com.google.firebase.iid.FirebaseInstanceId;
  36.  
  37. import java.util.Objects;
  38.  
  39. public class SigninActivity extends AppCompatActivity {
  40.  
  41.     ImageButton backPress;
  42.     private TextInputEditText mSigninEmail, mSigninPassword;
  43.  
  44.     private Dialog epicDialog;
  45.  
  46.     private ProgressDialog mLoginProgress;
  47.     private FirebaseAuth mAuth;
  48.  
  49.     private DatabaseReference mUserDatabase;
  50.  
  51.     @Override
  52.     protected void onCreate(Bundle savedInstanceState) {
  53.         super.onCreate(savedInstanceState);
  54.         setContentView(R.layout.activity_signin);
  55.  
  56.         backPress = findViewById(R.id.backLogin);
  57.         mAuth = FirebaseAuth.getInstance();
  58.         mLoginProgress = new ProgressDialog( this );
  59.         mUserDatabase = FirebaseDatabase.getInstance().getReference().child( "Users" );
  60.  
  61.         epicDialog = new Dialog(this);
  62.         TextView mRecoverPassword = findViewById(R.id.recoverPassword);
  63.  
  64.         mSigninEmail = findViewById( R.id.signinEmail);
  65.         mSigninPassword = findViewById( R.id.signinPassword);
  66.         Button mSignin_btn = findViewById(R.id.buttonSignin);
  67.  
  68.         mRecoverPassword.setOnClickListener(new View.OnClickListener() {
  69.             @Override
  70.             public void onClick(View view) {
  71.                 showRecoverPasswordDialog();
  72.             }
  73.         });
  74.  
  75.         mSignin_btn.setOnClickListener(new View.OnClickListener() {
  76.             @Override
  77.             public void onClick(View v) {
  78.  
  79.                 if (validateEmailPassword()) {
  80.                     return;
  81.                 }
  82.  
  83.                 ShowReminderPopup();
  84.  
  85.             }
  86.         });
  87.  
  88.         backPress.setOnClickListener(new View.OnClickListener() {
  89.             @Override
  90.             public void onClick(View v) {
  91.                 onBackPressed();
  92.             }
  93.         });
  94.     }
  95.  
  96.     private void showRecoverPasswordDialog() {
  97.         //AlertDialog
  98.         AlertDialog.Builder builder = new AlertDialog.Builder(this);
  99.         builder.setTitle("Memulihkan Password");
  100.  
  101.         //set layout linear layout
  102.         LinearLayout linearLayout = new LinearLayout(this);
  103.         //views to set in dialog
  104.         final EditText emailText = new EditText(this);
  105.         emailText.setHint("Email Anda");
  106.         emailText.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
  107.         emailText.setMinEms(16);
  108.  
  109.         linearLayout.addView(emailText);
  110.         linearLayout.setPadding(10,10,10,10);
  111.  
  112.         builder.setView(linearLayout);
  113.  
  114.         //buttons recover
  115.         builder.setPositiveButton("Memulihkan", new DialogInterface.OnClickListener() {
  116.             @Override
  117.             public void onClick(DialogInterface dialogInterface, int i) {
  118.                 //input email
  119.                 String email = emailText.getText().toString().trim();
  120.                 beginRecovery(email);
  121.             }
  122.         });
  123.  
  124.         //buttons cancel
  125.         builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
  126.             @Override
  127.             public void onClick(DialogInterface dialogInterface, int i) {
  128.                 dialogInterface.dismiss();
  129.             }
  130.         });
  131.  
  132.         //show dialog
  133.         builder.create().show();
  134.     }
  135.  
  136.     private void beginRecovery(String email) {
  137.         mLoginProgress.setMessage("Mengirim Email...");
  138.         mLoginProgress.show();
  139.         mAuth.sendPasswordResetEmail(email).addOnCompleteListener(new OnCompleteListener<Void>() {
  140.             @Override
  141.             public void onComplete(@NonNull Task<Void> task) {
  142.                 mLoginProgress.dismiss();
  143.                 if (task.isSuccessful()) {
  144.  
  145.                     Toast.makeText(SigninActivity.this, "Email Terkirim", Toast.LENGTH_SHORT).show();
  146.  
  147.                 } else {
  148.  
  149.                     Toast.makeText(SigninActivity.this, "Gagal...", Toast.LENGTH_SHORT).show();
  150.  
  151.                 }
  152.  
  153.             }
  154.         }).addOnFailureListener(new OnFailureListener() {
  155.             @Override
  156.             public void onFailure(@NonNull Exception e) {
  157.                 mLoginProgress.dismiss();
  158.                 //get and show proper error message
  159.                 Toast.makeText(SigninActivity.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
  160.             }
  161.         });
  162.     }
  163.  
  164.  
  165.     private boolean validateEmailPassword() {
  166.  
  167.         String emailInput = (Objects.requireNonNull(mSigninEmail.getText()).toString().trim());
  168.         String passwordInput = (Objects.requireNonNull(mSigninPassword.getText()).toString().trim());
  169.  
  170.         if (emailInput.isEmpty() | passwordInput.isEmpty() ) {
  171.  
  172.             Toast.makeText(this, "Masukkan Email dan Password Anda", Toast.LENGTH_SHORT).show();
  173.             return true;
  174.  
  175.         } else {
  176.  
  177.             mSigninEmail.setError(null);
  178.             return false;
  179.         }
  180.  
  181.     }
  182.  
  183.     private void ShowReminderPopup() {
  184.  
  185.         epicDialog.setContentView(R.layout.activity_popup_reminder);
  186.         ImageView closePopup = epicDialog.findViewById(R.id.closePopupImg);
  187.         Button acceptBtn = epicDialog.findViewById(R.id.btnAccept);
  188.  
  189.         closePopup.setOnClickListener(new View.OnClickListener() {
  190.             @Override
  191.             public void onClick(View view) {
  192.                 epicDialog.dismiss();
  193.             }
  194.         });
  195.  
  196.         acceptBtn.setOnClickListener(new View.OnClickListener() {
  197.             @Override
  198.             public void onClick(View view) {
  199.  
  200.                 String email = Objects.requireNonNull(mSigninEmail.getText()).toString();
  201.                 String password = Objects.requireNonNull(mSigninPassword.getText()).toString();
  202.  
  203.                 if (!TextUtils.isEmpty( email ) || !TextUtils.isEmpty( password )){
  204.  
  205.                     mLoginProgress.setTitle( "Logging In" );
  206.                     mLoginProgress.setMessage( "Please Wait While We Check Your Credentials." );
  207.                     mLoginProgress.setCanceledOnTouchOutside( false );
  208.                     mLoginProgress.show();
  209.  
  210.                     loginUser(email,password);
  211.  
  212.                     epicDialog.dismiss();
  213.                 }
  214.  
  215.             }
  216.         });
  217.  
  218.         Objects.requireNonNull(epicDialog.getWindow()).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
  219.         epicDialog.show();
  220.  
  221.     }
  222.  
  223.     private void loginUser(String email, String password) {
  224.  
  225.         mAuth.signInWithEmailAndPassword( email, password ).addOnCompleteListener( new OnCompleteListener<AuthResult>() {
  226.             @Override
  227.             public void onComplete(@NonNull Task<AuthResult> task) {
  228.  
  229.                 if (task.isSuccessful()){
  230.  
  231.                     if (Objects.requireNonNull(mAuth.getCurrentUser()).isEmailVerified()) {
  232.  
  233.                         mLoginProgress.dismiss();
  234.                         String current_user_id = Objects.requireNonNull(mAuth.getCurrentUser()).getUid();
  235.                         String deviceToken = FirebaseInstanceId.getInstance().getToken();
  236.  
  237.                         mUserDatabase.child(current_user_id).child("device_token").setValue(deviceToken).addOnSuccessListener(new OnSuccessListener<Void>() {
  238.                             @Override
  239.                             public void onSuccess(Void aVoid) {
  240.  
  241.                                 Intent mainIntent = new Intent(SigninActivity.this, MainActivity.class);
  242.                                 mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
  243.                                 startActivity(mainIntent);
  244.                                 finish();
  245.                             }
  246.                         });
  247.  
  248.                     } else {
  249.  
  250.                         mLoginProgress.hide();
  251.                         Toast.makeText(SigninActivity.this, "Silahkan Verifikasi Alamat Email Anda.", Toast.LENGTH_LONG).show();
  252.                     }
  253.  
  254.                 } else {
  255.  
  256.                     mLoginProgress.hide();
  257.                     Toast.makeText(SigninActivity.this, "Tidak Bisa Masuk, Silahkan Cek Email dan Password Anda.", Toast.LENGTH_LONG).show();
  258.                 }
  259.  
  260.             }
  261.         } );
  262.  
  263.     }
  264.  
  265. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement