implement captcha system

This commit is contained in:
Nima8FT 2025-04-23 20:03:31 +03:30
parent a42b9967d9
commit dad10fc532
4 changed files with 17 additions and 0 deletions

View File

@ -8,6 +8,7 @@ use App\Models\DeviceSession;
use App\Http\Requests\LoginRequest; use App\Http\Requests\LoginRequest;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Http;
class LoginController extends Controller class LoginController extends Controller
{ {
@ -23,6 +24,19 @@ class LoginController extends Controller
$remember = $request->has('remember'); $remember = $request->has('remember');
//captcha
$response = Http::asForm()->post('https://hcaptcha.com/siteverify', [
'secret' => 'ES_f05ab02ddc424bbabca7e82b79f1c09f',
'response' => $request->input('h-captcha-response'),
'remoteip' => $request->ip(),
]);
$verification = $response->json();
if (!isset($verification['success']) || $verification['success'] !== true) {
return back()->withErrors(['error' => 'captcha is not correct']);
}
if (!Auth::attempt($credentials, $remember)) { if (!Auth::attempt($credentials, $remember)) {
return back()->withErrors([ return back()->withErrors([
'email' => 'The provided credentials do not match our records.', 'email' => 'The provided credentials do not match our records.',

View File

@ -24,6 +24,7 @@ class LoginRequest extends FormRequest
return [ return [
'email' => 'required|email', 'email' => 'required|email',
'password' => 'required|min:8', 'password' => 'required|min:8',
'h-captcha-response' => 'required',
]; ];
} }
} }

View File

@ -45,6 +45,7 @@
{{ $message }} {{ $message }}
@enderror @enderror
</p> </p>
{{-- captcha scction --}}
<div class="mt-8"> <div class="mt-8">
<button type="submit" <button type="submit"
class="border border-[#e0e1dd] font-medium w-full p-2 rounded-md bg-[#e0e1dd] cursor-pointer hover:opacity-85 transition duration-300 ease-in-out text-black">Login</button> class="border border-[#e0e1dd] font-medium w-full p-2 rounded-md bg-[#e0e1dd] cursor-pointer hover:opacity-85 transition duration-300 ease-in-out text-black">Login</button>

View File

@ -11,6 +11,7 @@
<body> <body>
@yield('content') @yield('content')
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
</body> </body>
</html> </html>