diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index dbc73c25f..a70b4c337 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -43,13 +43,15 @@ class AuthController extends Controller private function rules(Request $request): array { $additional_validation = ''; + $db_field = 'username'; if (filter_var($request->input('username'), FILTER_VALIDATE_EMAIL)) { $additional_validation = '|email'; + $db_field = 'email'; } return [ - 'username' => 'required'.$additional_validation, - 'password' => 'required', + 'username' => "required|string|exists:users,$db_field|$additional_validation", + 'password' => 'required|string', 'remember' => 'boolean', ]; } diff --git a/resources/js/Views/LoginPage.jsx b/resources/js/Views/LoginPage.jsx index 7877ba1d6..e605f283a 100644 --- a/resources/js/Views/LoginPage.jsx +++ b/resources/js/Views/LoginPage.jsx @@ -15,6 +15,7 @@ import Mdi from '../Components/Mdi.jsx'; import Page from '../Components/Page.jsx'; import { getFormData, + isFormValid, showSnackbar } from '../utils'; @@ -27,10 +28,10 @@ export default class LoginPage extends Page { {__('OpenSTAManager')}/

{__('Accedi')}

- + - + @@ -58,8 +59,14 @@ export default class LoginPage extends Page { async onLoginButtonClicked() { this.loading.show(); - const formData = getFormData($(this.element) - .find('#login')); + const form = $(this.element).find('#login'); + + if (!isFormValid(form)) { + this.loading.hide(); + return; + } + + const formData = getFormData(form); formData._token = $('meta[name="csrf-token"]').attr('content');