Advertisement
mythoc

Register

Jul 23rd, 2018
788
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.84 KB | None | 0 0
  1.  
  2.  
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.support.annotation.NonNull;
  6. import android.support.annotation.Nullable;
  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.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.AuthResult;
  20. import com.google.firebase.auth.FirebaseAuth;
  21. import com.google.firebase.auth.FirebaseUser;
  22. import com.google.firebase.database.DatabaseReference;
  23. import com.google.firebase.database.FirebaseDatabase;
  24.  
  25. import courses.pluralsight.com.tabianconsulting.models.User;
  26.  
  27.  
  28. public class RegisterActivity extends AppCompatActivity {
  29.  
  30.     private static final String TAG = "RegisterActivity";
  31.  
  32.     private static final String DOMAIN_NAME = "gmail.com";
  33.  
  34.     //widgets
  35.     private EditText mEmail, mPassword, mConfirmPassword;
  36.     private Button mRegister;
  37.     private ProgressBar mProgressBar;
  38.  
  39.     //vars
  40.     public static boolean isActivityRunning;
  41.  
  42.     @Override
  43.     protected void onCreate(@Nullable Bundle savedInstanceState) {
  44.         super.onCreate(savedInstanceState);
  45.         setContentView(R.layout.activity_register);
  46.         mEmail = (EditText) findViewById(R.id.input_email);
  47.         mPassword = (EditText) findViewById(R.id.input_password);
  48.         mConfirmPassword = (EditText) findViewById(R.id.input_confirm_password);
  49.         mRegister = (Button) findViewById(R.id.btn_register);
  50.         mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
  51.  
  52.         mRegister.setOnClickListener(new View.OnClickListener() {
  53.             @Override
  54.             public void onClick(View view) {
  55.                 Log.d(TAG, "onClick: attempting to register.");
  56.  
  57.                 //check for null valued EditText fields
  58.                 if(!isEmpty(mEmail.getText().toString())
  59.                         && !isEmpty(mPassword.getText().toString())
  60.                         && !isEmpty(mConfirmPassword.getText().toString())){
  61.  
  62.                     //check if user has a company email address
  63.                     if(isValidDomain(mEmail.getText().toString())){
  64.  
  65.                         //check if passwords match
  66.                         if(doStringsMatch(mPassword.getText().toString(), mConfirmPassword.getText().toString())){
  67.  
  68.                             //Initiate registration task
  69.                             registerNewEmail(mEmail.getText().toString(), mPassword.getText().toString());
  70.                         }else{
  71.                             Toast.makeText(RegisterActivity.this, "Passwords do not Match", Toast.LENGTH_SHORT).show();
  72.                         }
  73.                     }else{
  74.                         Toast.makeText(RegisterActivity.this, "Please Register with Company Email", Toast.LENGTH_SHORT).show();
  75.                     }
  76.  
  77.                 }else{
  78.                     Toast.makeText(RegisterActivity.this, "You must fill out all the fields", Toast.LENGTH_SHORT).show();
  79.                 }
  80.             }
  81.         });
  82.  
  83.         hideSoftKeyboard();
  84.  
  85.     }
  86.  
  87.  
  88.     /**
  89.      * Register a new email and password to Firebase Authentication
  90.      * @param email
  91.      * @param password
  92.      */
  93.     public void registerNewEmail(final String email, String password){
  94.  
  95.         showDialog();
  96.  
  97.         FirebaseAuth.getInstance().createUserWithEmailAndPassword(email, password)
  98.                 .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
  99.                     @Override
  100.                     public void onComplete(@NonNull Task<AuthResult> task) {
  101.                         Log.d(TAG, "createUserWithEmail:onComplete:" + task.isSuccessful());
  102.  
  103.                         if (task.isSuccessful()){
  104.                             Log.d(TAG, "onComplete: AuthState: " + FirebaseAuth.getInstance().getCurrentUser().getUid());
  105.  
  106.                             //send email verificaiton
  107.                             sendVerificationEmail();
  108.  
  109.                             //insert some default data
  110.                             User user = new User();
  111.                             user.setName(email.substring(0, email.indexOf("@")));
  112.                             user.setPhone("1");
  113.                             user.setProfile_image("");
  114.                             user.setSecurity_level("1");
  115.                             user.setUser_id(FirebaseAuth.getInstance().getCurrentUser().getUid());
  116.                             FirebaseDatabase.getInstance().getReference()
  117.                                     .child(getString(R.string.dbnode_users))
  118.                                     .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
  119.                                     .setValue(user)
  120.                                     .addOnCompleteListener(new OnCompleteListener<Void>() {
  121.                                         @Override
  122.                                         public void onComplete(@NonNull Task<Void> task) {
  123.                                             FirebaseAuth.getInstance().signOut();
  124.  
  125.                                             //redirect the user to the login screen
  126.                                             redirectLoginScreen();
  127.                                         }
  128.                                     }).addOnFailureListener(new OnFailureListener() {
  129.                                 @Override
  130.                                 public void onFailure(@NonNull Exception e) {
  131.                                     Toast.makeText(RegisterActivity.this, "something went wrong.", Toast.LENGTH_SHORT).show();
  132.                                     FirebaseAuth.getInstance().signOut();
  133.  
  134.                                     //redirect the user to the login screen
  135.                                     redirectLoginScreen();
  136.                                 }
  137.                             });
  138.  
  139.                         }
  140.                         if (!task.isSuccessful()) {
  141.                             Toast.makeText(RegisterActivity.this, "Unable to Register",
  142.                                     Toast.LENGTH_SHORT).show();
  143.                         }
  144.                         hideDialog();
  145.  
  146.                         // ...
  147.                     }
  148.                 });
  149.     }
  150.  
  151.     /**
  152.      * sends an email verification link to the user
  153.      */
  154.     private void sendVerificationEmail() {
  155.         FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
  156.  
  157.         if (user != null) {
  158.             user.sendEmailVerification()
  159.                     .addOnCompleteListener(new OnCompleteListener<Void>() {
  160.                         @Override
  161.                         public void onComplete(@NonNull Task<Void> task) {
  162.                             if (task.isSuccessful()) {
  163.                                 Toast.makeText(RegisterActivity.this, "Sent Verification Email", Toast.LENGTH_SHORT).show();
  164.                             }
  165.                             else{
  166.                                 Toast.makeText(RegisterActivity.this, "Couldn't Verification Send Email", Toast.LENGTH_SHORT).show();
  167.                             }
  168.                         }
  169.                     });
  170.         }
  171.  
  172.     }
  173.  
  174.     /**
  175.      * Returns True if the user's email contains '@tabian.ca'
  176.      * @param email
  177.      * @return
  178.      */
  179.     private boolean isValidDomain(String email){
  180.         Log.d(TAG, "isValidDomain: verifying email has correct domain: " + email);
  181.         String domain = email.substring(email.indexOf("@") + 1).toLowerCase();
  182.         Log.d(TAG, "isValidDomain: users domain: " + domain);
  183.         return domain.equals(DOMAIN_NAME);
  184.     }
  185.  
  186.     /**
  187.      * Redirects the user to the login screen
  188.      */
  189.     private void redirectLoginScreen(){
  190.         Log.d(TAG, "redirectLoginScreen: redirecting to login screen.");
  191.  
  192.         Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
  193.         startActivity(intent);
  194.         finish();
  195.     }
  196.     /**
  197.      * Return true if @param 's1' matches @param 's2'
  198.      * @param s1
  199.      * @param s2
  200.      * @return
  201.      */
  202.     private boolean doStringsMatch(String s1, String s2){
  203.         return s1.equals(s2);
  204.     }
  205.  
  206.     /**
  207.      * Return true if the @param is null
  208.      * @param string
  209.      * @return
  210.      */
  211.     private boolean isEmpty(String string){
  212.         return string.equals("");
  213.     }
  214.  
  215.  
  216.     private void showDialog(){
  217.         mProgressBar.setVisibility(View.VISIBLE);
  218.  
  219.     }
  220.  
  221.     private void hideDialog(){
  222.         if(mProgressBar.getVisibility() == View.VISIBLE){
  223.             mProgressBar.setVisibility(View.INVISIBLE);
  224.         }
  225.     }
  226.  
  227.     private void hideSoftKeyboard(){
  228.         this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
  229.     }
  230.  
  231.     @Override
  232.     public void onStart() {
  233.         super.onStart();
  234.         isActivityRunning = true;
  235.     }
  236.  
  237.     @Override
  238.     public void onStop() {
  239.         super.onStop();
  240.         isActivityRunning = false;
  241.     }
  242.  
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement