Guest User

Untitled

a guest
Nov 22nd, 2018
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.00 KB | None | 0 0
  1. package com.example.sadmansakib.connectus.signup;
  2.  
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.support.annotation.NonNull;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.support.v7.widget.AppCompatEditText;
  8. import android.text.SpannableString;
  9. import android.text.Spanned;
  10. import android.text.TextPaint;
  11. import android.text.method.LinkMovementMethod;
  12. import android.text.style.ClickableSpan;
  13. import android.util.Log;
  14. import android.view.View;
  15. import android.widget.TextView;
  16. import android.widget.Toast;
  17.  
  18. import com.example.sadmansakib.connectus.R;
  19. import com.example.sadmansakib.connectus.login.LoginActivity;
  20. import com.example.sadmansakib.connectus.model.Students;
  21. import com.google.android.gms.tasks.OnCompleteListener;
  22. import com.google.android.gms.tasks.OnFailureListener;
  23. import com.google.android.gms.tasks.OnSuccessListener;
  24. import com.google.android.gms.tasks.Task;
  25. import com.google.firebase.auth.FirebaseAuth;
  26. import com.google.firebase.auth.FirebaseUser;
  27. import com.google.firebase.database.DatabaseReference;
  28. import com.google.firebase.database.FirebaseDatabase;
  29. import com.google.firebase.firestore.DocumentReference;
  30. import com.google.firebase.firestore.FirebaseFirestore;
  31.  
  32. import java.util.Objects;
  33.  
  34. public class SignupActivity extends AppCompatActivity {
  35.  
  36. private static final String TAG = "account_creator";
  37. FirebaseAuth mAuth;
  38. TextView textView;
  39. FirebaseFirestore db;
  40. AppCompatEditText first_name,last_name,std_id,user_email,user_password;
  41.  
  42. @Override
  43. protected void onCreate(Bundle savedInstanceState) {
  44. super.onCreate(savedInstanceState);
  45. mAuth=FirebaseAuth.getInstance();
  46. setContentView(R.layout.activity_signup);
  47. textView=findViewById(R.id.link_create);
  48. first_name=findViewById(R.id.first_name);
  49. last_name=findViewById(R.id.last_name);
  50. db = FirebaseFirestore.getInstance();
  51. std_id=findViewById(R.id.input_student_id);
  52. user_email=findViewById(R.id.input_email_create);
  53. user_password=findViewById(R.id.input_password_create);
  54. setClickableString("Login here","Already have an account? Login here",textView);
  55. }
  56.  
  57. /* reuse method from login activity */
  58. private void setClickableString(String clickableValue, String wholeValue, TextView textView) {
  59. SpannableString spannableString = new SpannableString(wholeValue);
  60. int startindex= wholeValue.indexOf(clickableValue);
  61. int endindex = startindex+clickableValue.length();
  62. spannableString.setSpan(new ClickableSpan() {
  63. @Override
  64. public void updateDrawState(@NonNull TextPaint ds) {
  65. super.updateDrawState(ds);
  66. ds.setUnderlineText(true);
  67. }
  68. @Override
  69. public void onClick(@NonNull View widget) {
  70. startActivity(new Intent(getApplicationContext(),
  71. LoginActivity.class));
  72. }
  73. },startindex,endindex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  74. textView.setText(spannableString);
  75. textView.setMovementMethod(LinkMovementMethod.getInstance());
  76. }
  77.  
  78. public void Signup(View view) {
  79. final String email = Objects.requireNonNull(user_email.getText()).toString();
  80. final String password = Objects.requireNonNull(user_password.getText()).toString();
  81. Log.d(TAG, "Signup: "+email);
  82. Log.d(TAG, "Signup: "+password);
  83. if (email.length() != 0 && password.length() != 0) {
  84. if(email.contains("@gmail.com") || email.contains("@outlook.com") || email.contains("@yahoo.com")){
  85. createAccount(email, password);
  86. }else{
  87. user_email.setError("Not a valid email address");
  88. }
  89.  
  90. }else{
  91. user_email.setError("Email required");
  92. user_password.setError("password required");
  93. }
  94. }
  95.  
  96. private void createAccount(String email, String password) {
  97. mAuth.createUserWithEmailAndPassword(email, password)
  98. .addOnCompleteListener(this, task -> {
  99. if (task.isSuccessful()) {
  100. // Sign in success, update UI with the signed-in user's information
  101. Log.d(TAG, "createUserWithEmail:success");
  102. FirebaseUser user = mAuth.getCurrentUser();
  103. if(user!=null){
  104. addStudentToData();
  105. sendEmailVerification();
  106. }
  107. } else {
  108. // If sign in fails, display a message to the user.
  109. Log.e(TAG, "createUserWithEmail:failure", task.getException());
  110. Toast.makeText(getApplicationContext(), "Authentication failed.",
  111. Toast.LENGTH_SHORT).show();
  112. updateUI();
  113. }
  114. });
  115. }
  116.  
  117. private void addStudentToData() {
  118. Students students= new Students(
  119. Objects.requireNonNull(first_name.getText()).toString(),
  120. Objects.requireNonNull(last_name.getText()).toString(),
  121. Objects.requireNonNull(user_email.getText()).toString(),
  122. Objects.requireNonNull(std_id.getText()).toString());
  123. db.collection("students")
  124. .document(Objects.requireNonNull(std_id.getText()).toString())
  125. .set(students)
  126. .addOnSuccessListener(aVoid ->
  127. Toast.makeText(getApplicationContext(),
  128. "User added to database!",
  129. Toast.LENGTH_SHORT).show())
  130. .addOnFailureListener(failure ->
  131. Toast.makeText(getApplicationContext(),
  132. "database failed!",
  133. Toast.LENGTH_SHORT).show());
  134. }
  135.  
  136.  
  137. private void sendEmailVerification() {
  138. FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
  139. assert user != null;
  140.  
  141. user.sendEmailVerification().addOnCompleteListener(this, task -> {
  142. findViewById(R.id.btn_SignUp).setEnabled(true);
  143. if(task.isSuccessful()){
  144. Toast.makeText(getApplicationContext(),
  145. "Verification email sent to " + user.getEmail(),
  146. Toast.LENGTH_SHORT).show();
  147. FirebaseAuth.getInstance().signOut();
  148. startActivity(new Intent(getApplicationContext(),LoginActivity.class)
  149. .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
  150. finish();
  151. } else {
  152. Log.e(TAG, "sendEmailVerification", task.getException());
  153. Toast.makeText(getApplicationContext(),
  154. "Failed to send verification email.",
  155. Toast.LENGTH_SHORT).show();
  156. }
  157. });
  158. }
  159.  
  160. private void updateUI() {
  161. overridePendingTransition(0, 0);
  162. finish();
  163. overridePendingTransition(0, 0);
  164. startActivity(getIntent());
  165. }
  166. }
Add Comment
Please, Sign In to add comment