FavoritePath
Cargando...
Buscando...
Nada coincide
LoginActivity.java
1package uo269509.favoritepath.activity;
2
3import android.content.Intent;
4import android.os.Bundle;
5import android.widget.Button;
6import android.widget.EditText;
7import android.widget.Toast;
8
9import androidx.appcompat.app.AppCompatActivity;
10
11import com.google.android.gms.auth.api.signin.GoogleSignIn;
12import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
13import com.google.android.gms.auth.api.signin.GoogleSignInClient;
14import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
15import com.google.android.gms.common.SignInButton;
16import com.google.android.gms.common.api.ApiException;
17import com.google.android.gms.tasks.Task;
18import com.google.firebase.auth.AuthCredential;
19import com.google.firebase.auth.FirebaseAuth;
20import com.google.firebase.auth.FirebaseUser;
21import com.google.firebase.auth.GoogleAuthProvider;
22import com.google.firebase.firestore.CollectionReference;
23import com.google.firebase.firestore.DocumentSnapshot;
24import com.google.firebase.firestore.FirebaseFirestore;
25
26import java.util.ArrayList;
27import java.util.HashMap;
28import java.util.Map;
29
30import uo269509.favoritepath.R;
31
32public class LoginActivity extends AppCompatActivity {
33
34 private static final int RC_SIGN_IN = 1;
35 private EditText emailText;
36 private EditText passwordText;
37 private Button loginButton;
38 private Button registerButton;
39 private SignInButton googleButton;
40 private FirebaseAuth mAuth;
41 private FirebaseFirestore db;
42 GoogleSignInClient mGoogleSignInClient;
43
49 @Override
50 protected void onCreate(Bundle savedInstanceState) {
51 super.onCreate(savedInstanceState);
52 setContentView(R.layout.activity_login);
53 init();
54 loginButton.setOnClickListener(v -> loginUser());
55 registerButton.setOnClickListener(v -> registerUser());
56 googleButton.setOnClickListener(v -> signInWithGoogle());
57 }
58
67 @Override
68 public void onActivityResult(int requestCode, int resultCode, Intent data) {
69 super.onActivityResult(requestCode, resultCode, data);
70 if (requestCode == RC_SIGN_IN) {
71 Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
72 try {
73 GoogleSignInAccount account = task.getResult(ApiException.class);
74 firebaseAuthWithGoogle(account.getIdToken());
75 } catch (ApiException e) {
76 Toast.makeText(LoginActivity.this, "Login fallido", Toast.LENGTH_SHORT).show();
77 }
78 }
79 }
80
87 private void firebaseAuthWithGoogle(String idToken) {
88 AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null);
89 mAuth.signInWithCredential(credential)
90 .addOnCompleteListener(this, task -> {
91 if (task.isSuccessful()) {
92 FirebaseUser user = mAuth.getCurrentUser();
93 createUserInFirebaseFirestore(user.getEmail());
94 Intent intent = new Intent(LoginActivity.this, MainActivity.class);
95 startActivity(intent);
96 finish();
97 } else {
98 Toast.makeText(LoginActivity.this, "Autenticación fallida", Toast.LENGTH_SHORT).show();
99 }
100 });
101 }
102
108 private void loginUser() {
109 String email = emailText.getText().toString().trim();
110 String password = passwordText.getText().toString().trim();
111 if(email.isEmpty() || password.isEmpty()){
112 Toast.makeText(LoginActivity.this, "Rellene todos los campos", Toast.LENGTH_SHORT).show();
113 }else {
114 mAuth.signInWithEmailAndPassword(email, password)
115 .addOnCompleteListener(this, task -> {
116 if (task.isSuccessful()) {
117 Intent intent = new Intent(LoginActivity.this, MainActivity.class);
118 startActivity(intent);
119 finish();
120 } else {
121 Toast.makeText(LoginActivity.this, "Login fallido", Toast.LENGTH_SHORT).show();
122 }
123 });
124 }
125 }
126
133 private void registerUser() {
134 String email = emailText.getText().toString().trim();
135 String password = passwordText.getText().toString().trim();
136 if(password.length() < 6){
137 Toast.makeText(LoginActivity.this, "La contraseña debe tener 6 caracteres como mínimo", Toast.LENGTH_SHORT).show();
138 }
139 if(!email.isEmpty() && !password.isEmpty()) {
140 mAuth.createUserWithEmailAndPassword(email, password)
141 .addOnCompleteListener(this, task -> {
142 if (task.isSuccessful()) {
143 createUserInFirebaseFirestore(email);
144 Intent intent = new Intent(LoginActivity.this, MainActivity.class);
145 startActivity(intent);
146 finish();
147 } else {
148 Toast.makeText(LoginActivity.this, "Registro fallido",
149 Toast.LENGTH_SHORT).show();
150 }
151 });
152 }else{
153 Toast.makeText(LoginActivity.this, "Rellene todos los campos", Toast.LENGTH_SHORT).show();
154 }
155 }
156
161 public void createUserInFirebaseFirestore(String email){
162 CollectionReference usuarios = db.collection("usuarios");
163 usuarios.document(email).get().addOnCompleteListener(task -> {
164 if (task.isSuccessful()) {
165 DocumentSnapshot document = task.getResult();
166 if (!document.exists()) {
167 Map<String, Object> camposUsuario = new HashMap<>();
168 camposUsuario.put("nombre", email.split("@")[0].trim());
169 camposUsuario.put("descripcion", "");
170 ArrayList<String> nombreColecciones = new ArrayList<>();
171 nombreColecciones.add("Rutas propias");
172 nombreColecciones.add("Rutas favoritas");
173 camposUsuario.put("nombreColecciones",nombreColecciones);
174 usuarios.document(email).set(camposUsuario);
175 }
176 }
177 });
178
179 }
180
184 private void signInWithGoogle() {
185 mGoogleSignInClient.signOut();
186 startActivityForResult(mGoogleSignInClient.getSignInIntent(), RC_SIGN_IN);
187 }
188
192 public void init(){
193 emailText = findViewById(R.id.email_text);
194 passwordText = findViewById(R.id.password_text);
195 loginButton = findViewById(R.id.login_btn);
196 registerButton = findViewById(R.id.register_btn);
197 googleButton = findViewById(R.id.google_sign_in_button);
198 mAuth = FirebaseAuth.getInstance();
199 db = FirebaseFirestore.getInstance();
200 mGoogleSignInClient = GoogleSignIn.getClient(this, new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestIdToken(getString(R.string.default_web_client_id)).requestEmail().build());
201 }
202}
void onActivityResult(int requestCode, int resultCode, Intent data)
void onCreate(Bundle savedInstanceState)