AuthModel.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace App\Models;
  3. use App\Core\Application;
  4. use App\Core\Model;
  5. /*
  6. * Modelo que representa la tabla
  7. * de usuarios para la autenticación.
  8. */
  9. class AuthModel extends Model
  10. {
  11. public string $email = '';
  12. public string $password = '';
  13. /*
  14. * Establece las reglas de validación
  15. * del formulario de inicio de sesión.
  16. */
  17. public function rules(): array
  18. {
  19. return [
  20. 'email' => [self::RULE_REQUIRED, self::RULE_EMAIL],
  21. 'password' => [self::RULE_REQUIRED, [self::RULE_MIN, 'min' => 8], [self::RULE_MAX, 'max' => 32]],
  22. ];
  23. }
  24. /*
  25. * Establece las etiquetas de los campos
  26. * del formulario de inicio de sesión.
  27. */
  28. public function labels(): array
  29. {
  30. return [
  31. 'email' => 'Correo electrónico',
  32. 'password' => 'Contraseña',
  33. ];
  34. }
  35. /*
  36. * Comprueba e inicia la sesión de un usuario.
  37. */
  38. public function login()
  39. {
  40. $userAuth = UserModel::findOne(['email' => $this->email]);
  41. if (empty($userAuth)) {
  42. $this->addError('email', 'No existe un usuario con esa dirección de correo electrónico.');
  43. return false;
  44. }
  45. // Comprueba la contraseña del usuario.
  46. if (! password_verify($this->password, $userAuth->password)) {
  47. $this->addError('password', 'La constraseña del usuario es incorrecta.');
  48. return false;
  49. }
  50. return Application::$app->login($userAuth);
  51. }
  52. }