35 private EditText etCorreo, etPassword;
41 public View
onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
42 View view = inflater.inflate(R.layout.fragment_login, container,
false);
45 etCorreo = view.findViewById(R.id.etCorreo);
46 etPassword = view.findViewById(R.id.etPassword);
47 Button btnLogin = view.findViewById(R.id.btnLogin);
48 TextView tvRegister = view.findViewById(R.id.tvRegister);
54 btnLogin.setOnClickListener(
new View.OnClickListener() {
56 public void onClick(View v) {
62 tvRegister.setOnClickListener(
new View.OnClickListener() {
64 public void onClick(View v) {
65 replaceFragment(new RegisterFragment());
72 private void performLogin() {
73 String email = etCorreo.getText().toString().trim();
74 String password = etPassword.getText().toString().trim();
77 if (email.isEmpty() || password.isEmpty()) {
78 Toast.makeText(getContext(),
"Por favor, completa todos los campos", Toast.LENGTH_SHORT).show();
83 if (!isValidEmail(email)) {
84 Toast.makeText(getContext(),
"Por favor, ingresa un correo electrónico válido", Toast.LENGTH_SHORT).show();
88 String url =
"https://backmobile1.onrender.com/appUSERS/login/";
91 JSONObject requestBody =
new JSONObject();
93 requestBody.put(
"email", email);
94 requestBody.put(
"password", password);
95 }
catch (JSONException e) {
101 JsonObjectRequest request =
new JsonObjectRequest(Request.Method.POST, url, requestBody,
102 new Response.Listener<JSONObject>() {
104 public void onResponse(JSONObject response) {
106 String token = response.getString(
"access");
107 String name = response.getString(
"nombre");
108 String surname = response.getString(
"apellido");
109 String email = response.getString(
"email");
110 String phone = response.getString(
"telefono");
111 String profileImageUrl = response.optString(
"imagen_perfil_url",
"");
112 String address = response.optString(
"direccion",
"");
115 Log.d(
"ImagenPerfil",
"URL recibida del backend: " + profileImageUrl);
116 Log.d(
"LoginFragment",
"Dirección recibida del backend: " + address);
117 Log.d(
"LoginFragment",
"Email guardado en SessionManager: " + email);
118 sessionManager.saveToken(token);
119 sessionManager.saveEmail(email);
120 profileManager.saveInfo(name, surname, email, phone, profileImageUrl, address);
123 Toast.makeText(getContext(),
"Inicio de sesión exitoso", Toast.LENGTH_SHORT).show();
124 replaceFragment(new HomeFragment());
125 } catch (JSONException e) {
127 Toast.makeText(getContext(),
"Respuesta inválida del servidor", Toast.LENGTH_SHORT).show();
130 },
new Response.ErrorListener() {
132 public void onErrorResponse(VolleyError error) {
134 String errorMessage = error.networkResponse !=
null && error.networkResponse.data !=
null
135 ?
new String(error.networkResponse.data)
136 :
"Error en el inicio de sesión";
138 if (errorMessage.contains(
"non_field_errors")) {
139 Toast.makeText(getContext(),
"Usuario no se reconoció o no existe. Por favor, regístrate.", Toast.LENGTH_LONG).show();
141 Toast.makeText(getContext(), errorMessage, Toast.LENGTH_SHORT).show();
147 RequestQueue queue = Volley.newRequestQueue(requireContext());
151 private boolean isValidEmail(String email) {
153 String emailPattern =
"[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
154 return email.matches(emailPattern);
157 public void saveUserProfile(String name, String surname, String email, String phone, String profileImageUrl) {
158 profileManager.saveInfo(name, surname, email, phone, profileImageUrl);
159 Toast.makeText(getContext(),
"Datos guardados correctamente", Toast.LENGTH_SHORT).show();
162 private void replaceFragment(Fragment newFragment) {
163 FragmentManager fragmentManager = requireActivity().getSupportFragmentManager();
164 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
165 fragmentTransaction.replace(R.id.fragment_container_view, newFragment);
166 fragmentTransaction.addToBackStack(
null);
167 fragmentTransaction.commit();