Initial commit
Some checks failed
Deploy / deploy (push) Has been cancelled

This commit is contained in:
ssww23
2026-03-10 00:55:37 +03:00
parent fc0f28d830
commit 93a655235a
155 changed files with 24768 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
<?php
namespace App\Http\Controllers\Shop;
use App\Http\Controllers\Concerns\ManagesCaptcha;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rules\Password;
class AuthController extends Controller
{
use ManagesCaptcha;
private const LOGIN_CAPTCHA_CONTEXT = 'shop_login';
private const REGISTER_CAPTCHA_CONTEXT = 'shop_register';
public function showLoginForm(Request $request)
{
return view('shop.auth.login', [
'captchaQuestion' => $this->buildCaptchaQuestion($request, self::LOGIN_CAPTCHA_CONTEXT),
]);
}
public function login(Request $request)
{
$validated = $request->validate([
'email' => ['required', 'email'],
'password' => ['required', 'string'],
'captcha' => ['required', 'string', 'max:10'],
]);
if (!$this->captchaIsValid($request, self::LOGIN_CAPTCHA_CONTEXT)) {
return back()
->withInput($request->only('email', 'remember'))
->withErrors(['captcha' => 'Неверный ответ на капчу.']);
}
$credentials = [
'email' => $validated['email'],
'password' => $validated['password'],
];
$remember = $request->boolean('remember');
if (!Auth::attempt($credentials, $remember)) {
return back()
->withInput($request->only('email', 'remember'))
->withErrors(['email' => 'Неверный email или пароль.']);
}
$request->session()->regenerate();
$this->clearCaptcha($request, self::LOGIN_CAPTCHA_CONTEXT);
return redirect()->intended(route('account'));
}
public function showRegisterForm(Request $request)
{
return view('shop.auth.register', [
'captchaQuestion' => $this->buildCaptchaQuestion($request, self::REGISTER_CAPTCHA_CONTEXT),
]);
}
public function register(Request $request)
{
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'email', 'max:255', 'unique:users,email'],
'password' => ['required', 'confirmed', Password::defaults()],
'captcha' => ['required', 'string', 'max:10'],
]);
if (!$this->captchaIsValid($request, self::REGISTER_CAPTCHA_CONTEXT)) {
return back()
->withInput($request->only('name', 'email'))
->withErrors(['captcha' => 'Неверный ответ на капчу.']);
}
$user = User::create([
'name' => $validated['name'],
'email' => $validated['email'],
'password' => $validated['password'],
]);
Auth::login($user);
$request->session()->regenerate();
$this->clearCaptcha($request, self::REGISTER_CAPTCHA_CONTEXT);
return redirect()->route('account');
}
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect()->route('home');
}
}