Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.sadmansakib.connectus.signup;
- import android.content.Intent;
- import android.os.Bundle;
- import android.support.annotation.NonNull;
- import android.support.v7.app.AppCompatActivity;
- import android.support.v7.widget.AppCompatEditText;
- import android.text.SpannableString;
- import android.text.Spanned;
- import android.text.TextPaint;
- import android.text.method.LinkMovementMethod;
- import android.text.style.ClickableSpan;
- import android.util.Log;
- import android.view.View;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.example.sadmansakib.connectus.R;
- import com.example.sadmansakib.connectus.login.LoginActivity;
- import com.example.sadmansakib.connectus.model.Students;
- import com.google.android.gms.tasks.OnCompleteListener;
- import com.google.android.gms.tasks.OnFailureListener;
- import com.google.android.gms.tasks.OnSuccessListener;
- import com.google.android.gms.tasks.Task;
- import com.google.firebase.auth.FirebaseAuth;
- import com.google.firebase.auth.FirebaseUser;
- import com.google.firebase.database.DatabaseReference;
- import com.google.firebase.database.FirebaseDatabase;
- import com.google.firebase.firestore.DocumentReference;
- import com.google.firebase.firestore.FirebaseFirestore;
- import java.util.Objects;
- public class SignupActivity extends AppCompatActivity {
- private static final String TAG = "account_creator";
- FirebaseAuth mAuth;
- TextView textView;
- FirebaseFirestore db;
- AppCompatEditText first_name,last_name,std_id,user_email,user_password;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mAuth=FirebaseAuth.getInstance();
- setContentView(R.layout.activity_signup);
- textView=findViewById(R.id.link_create);
- first_name=findViewById(R.id.first_name);
- last_name=findViewById(R.id.last_name);
- db = FirebaseFirestore.getInstance();
- std_id=findViewById(R.id.input_student_id);
- user_email=findViewById(R.id.input_email_create);
- user_password=findViewById(R.id.input_password_create);
- setClickableString("Login here","Already have an account? Login here",textView);
- }
- /* reuse method from login activity */
- private void setClickableString(String clickableValue, String wholeValue, TextView textView) {
- SpannableString spannableString = new SpannableString(wholeValue);
- int startindex= wholeValue.indexOf(clickableValue);
- int endindex = startindex+clickableValue.length();
- spannableString.setSpan(new ClickableSpan() {
- @Override
- public void updateDrawState(@NonNull TextPaint ds) {
- super.updateDrawState(ds);
- ds.setUnderlineText(true);
- }
- @Override
- public void onClick(@NonNull View widget) {
- startActivity(new Intent(getApplicationContext(),
- LoginActivity.class));
- }
- },startindex,endindex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
- textView.setText(spannableString);
- textView.setMovementMethod(LinkMovementMethod.getInstance());
- }
- public void Signup(View view) {
- final String email = Objects.requireNonNull(user_email.getText()).toString();
- final String password = Objects.requireNonNull(user_password.getText()).toString();
- Log.d(TAG, "Signup: "+email);
- Log.d(TAG, "Signup: "+password);
- if (email.length() != 0 && password.length() != 0) {
- if(email.contains("@gmail.com") || email.contains("@outlook.com") || email.contains("@yahoo.com")){
- createAccount(email, password);
- }else{
- user_email.setError("Not a valid email address");
- }
- }else{
- user_email.setError("Email required");
- user_password.setError("password required");
- }
- }
- private void createAccount(String email, String password) {
- mAuth.createUserWithEmailAndPassword(email, password)
- .addOnCompleteListener(this, task -> {
- if (task.isSuccessful()) {
- // Sign in success, update UI with the signed-in user's information
- Log.d(TAG, "createUserWithEmail:success");
- FirebaseUser user = mAuth.getCurrentUser();
- if(user!=null){
- addStudentToData();
- sendEmailVerification();
- }
- } else {
- // If sign in fails, display a message to the user.
- Log.e(TAG, "createUserWithEmail:failure", task.getException());
- Toast.makeText(getApplicationContext(), "Authentication failed.",
- Toast.LENGTH_SHORT).show();
- updateUI();
- }
- });
- }
- private void addStudentToData() {
- Students students= new Students(
- Objects.requireNonNull(first_name.getText()).toString(),
- Objects.requireNonNull(last_name.getText()).toString(),
- Objects.requireNonNull(user_email.getText()).toString(),
- Objects.requireNonNull(std_id.getText()).toString());
- db.collection("students")
- .document(Objects.requireNonNull(std_id.getText()).toString())
- .set(students)
- .addOnSuccessListener(aVoid ->
- Toast.makeText(getApplicationContext(),
- "User added to database!",
- Toast.LENGTH_SHORT).show())
- .addOnFailureListener(failure ->
- Toast.makeText(getApplicationContext(),
- "database failed!",
- Toast.LENGTH_SHORT).show());
- }
- private void sendEmailVerification() {
- FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
- assert user != null;
- user.sendEmailVerification().addOnCompleteListener(this, task -> {
- findViewById(R.id.btn_SignUp).setEnabled(true);
- if(task.isSuccessful()){
- Toast.makeText(getApplicationContext(),
- "Verification email sent to " + user.getEmail(),
- Toast.LENGTH_SHORT).show();
- FirebaseAuth.getInstance().signOut();
- startActivity(new Intent(getApplicationContext(),LoginActivity.class)
- .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
- finish();
- } else {
- Log.e(TAG, "sendEmailVerification", task.getException());
- Toast.makeText(getApplicationContext(),
- "Failed to send verification email.",
- Toast.LENGTH_SHORT).show();
- }
- });
- }
- private void updateUI() {
- overridePendingTransition(0, 0);
- finish();
- overridePendingTransition(0, 0);
- startActivity(getIntent());
- }
- }
Add Comment
Please, Sign In to add comment