/
denispirit
/
gruzovozoff
Обзор
Документация
Войти
/
denispirit
/
gruzovozoff
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
app/Http/Controllers/AuthController.php
103 строки
3 KB
denispirit
итоговый проект Грузовозофф
27 фев 2026, 09:30
27 фев 2026, 09:30
377ca07
Код
Авторство
О чём код?
<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rules\Password; class AuthController extends Controller { /** * Показать форму регистрации */ public function showRegistrationForm() { return view('auth.register'); } /** * Обработка регистрации */ public function register(Request $request) { $validator = Validator::make($request->all(), [ 'name' => ['required', 'string', 'max:255', 'regex:/^[а-яА-ЯёЁ\s]+$/u'], 'login' => ['required', 'string', 'min:6', 'max:255', 'unique:users', 'regex:/^[a-zA-Z0-9_]+$/'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'phone' => ['required', 'regex:/^\+7\(\d{3}\)-\d{3}-\d{2}-\d{2}$/'], 'password' => ['required', 'string', 'min:6', 'confirmed'], ], [ 'name.regex' => 'ФИО должно содержать только кириллические символы и пробелы.', 'login.regex' => 'Логин должен содержать только латинские буквы, цифры и подчеркивание.', 'phone.regex' => 'Телефон должен быть в формате +7(XXX)-XXX-XX-XX.', ]); if ($validator->fails()) { return redirect()->back() ->withErrors($validator) ->withInput(); } $user = User::create([ 'name' => $request->name, 'login' => $request->login, 'email' => $request->email, 'phone' => $request->phone, 'password' => Hash::make($request->password), ]); Auth::login($user); return redirect()->route('orders.index')->with('success', 'Регистрация прошла успешно!'); } /** * Показать форму авторизации */ public function showLoginForm() { return view('auth.login'); } /** * Обработка авторизации */ public function login(Request $request) { $credentials = $request->validate([ 'login' => ['required'], 'password' => ['required'], ]); if (Auth::attempt($credentials)) { $request->session()->regenerate(); // Перенаправляем админа в админ-панель if (Auth::user()->login === 'admin') { return redirect()->route('admin.index')->with('success', 'Добро пожаловать в панель администратора!'); } return redirect()->intended(route('orders.index'))->with('success', 'Добро пожаловать!'); } return back()->withErrors([ 'login' => 'Неверный логин или пароль.', ])->onlyInput('login'); } /** * Выход из системы */ public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect('/')->with('success', 'Вы успешно вышли из системы.'); } }