Guest User

Untitled

a guest
Dec 26th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.92 KB | None | 0 0
  1. package pk.edu.pcsm.pcsm_auth;
  2.  
  3. import android.content.Context;
  4. import android.os.Bundle;
  5. import android.support.annotation.NonNull;
  6. import android.support.annotation.Nullable;
  7. import android.support.v4.app.DialogFragment;
  8. import android.util.Log;
  9. import android.view.LayoutInflater;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.widget.EditText;
  13. import android.widget.TextView;
  14. import android.widget.Toast;
  15.  
  16. import com.google.android.gms.tasks.OnCompleteListener;
  17. import com.google.android.gms.tasks.OnFailureListener;
  18. import com.google.android.gms.tasks.Task;
  19. import com.google.firebase.auth.AuthCredential;
  20. import com.google.firebase.auth.AuthResult;
  21. import com.google.firebase.auth.EmailAuthProvider;
  22. import com.google.firebase.auth.FirebaseAuth;
  23. import com.google.firebase.auth.FirebaseUser;
  24.  
  25.  
  26. public class ResendVerificationDialog extends DialogFragment {
  27.  
  28. private static final String TAG = "ResendVerificationDialo";
  29.  
  30. //widgets
  31. private EditText mConfirmPassword, mConfirmEmail;
  32.  
  33. //vars
  34. private Context mContext;
  35.  
  36. @Nullable
  37. @Override
  38. public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  39. View view = inflater.inflate(R.layout.dialog_resend_verification, container, false);
  40. mConfirmPassword = (EditText) view.findViewById(R.id.confirm_password);
  41. mConfirmEmail = (EditText) view.findViewById(R.id.confirm_email);
  42. mContext = getActivity();
  43.  
  44.  
  45. TextView confirmDialog = (TextView) view.findViewById(R.id.dialogConfirm);
  46. confirmDialog.setOnClickListener(new View.OnClickListener() {
  47. @Override
  48. public void onClick(View v) {
  49. Log.d(TAG, "onClick: attempting to resend verification email.");
  50.  
  51. if (!isEmpty(mConfirmEmail.getText().toString())
  52. && !isEmpty(mConfirmPassword.getText().toString())) {
  53.  
  54. //temporarily authenticate and resend verification email
  55. authenticateAndResendEmail(mConfirmEmail.getText().toString(),
  56. mConfirmPassword.getText().toString());
  57. } else {
  58. Toast.makeText(mContext, "all fields must be filled out", Toast.LENGTH_SHORT).show();
  59. }
  60.  
  61.  
  62. }
  63. });
  64.  
  65. // Cancel button for closing the dialog
  66. TextView cancelDialog = (TextView) view.findViewById(R.id.dialogCancel);
  67. cancelDialog.setOnClickListener(new View.OnClickListener() {
  68. @Override
  69. public void onClick(View v) {
  70. getDialog().dismiss();
  71. }
  72. });
  73.  
  74. return view;
  75. }
  76.  
  77. /**
  78. * sends an email verification link to the user
  79. */
  80. public void sendVerificationEmail() {
  81. FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
  82.  
  83. if (user != null) {
  84. user.sendEmailVerification()
  85. .addOnCompleteListener(new OnCompleteListener<Void>() {
  86. @Override
  87. public void onComplete(@NonNull Task<Void> task) {
  88. if (task.isSuccessful()) {
  89. Toast.makeText(mContext, "Sent Verification Email", Toast.LENGTH_SHORT).show();
  90. } else {
  91. Toast.makeText(mContext, "couldn't send email", Toast.LENGTH_SHORT).show();
  92. }
  93. }
  94. });
  95. } else Log.d(TAG, "sendVerificationEmail: user null??");
  96.  
  97. }
  98.  
  99. /**
  100. * reauthenticate so we can send a verification email again
  101. *
  102. * @param email
  103. * @param password
  104. */
  105. private void authenticateAndResendEmail(String email, String password) {
  106. AuthCredential credential = EmailAuthProvider.getCredential(email, password);
  107. FirebaseAuth.getInstance().signInWithCredential(credential)
  108. .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
  109. @Override
  110. public void onComplete(@NonNull Task<AuthResult> task) {
  111. if (task.isSuccessful()) {
  112. Log.d(TAG, "onComplete: re-authenticate success.");
  113. sendVerificationEmail();
  114. FirebaseAuth.getInstance().signOut();
  115. getDialog().dismiss();
  116. }
  117. }
  118. }).addOnFailureListener(new OnFailureListener() {
  119. @Override
  120. public void onFailure(@NonNull Exception e) {
  121. Toast.makeText(mContext, "Invalid Credentials. \nReset your password and try again", Toast.LENGTH_SHORT).show();
  122. getDialog().dismiss();
  123. }
  124. });
  125. }
  126.  
  127.  
  128. /**
  129. * Return true if the @param is null
  130. *
  131. * @param string
  132. * @return
  133. */
  134. private boolean isEmpty(String string) {
  135. return string.equals("");
  136. }
  137. }
Add Comment
Please, Sign In to add comment