68 lines
1.9 KiB
PHP
68 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller as BaseController;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
class UserController extends BaseController
|
|
{
|
|
public function login_page(Request $request)
|
|
{
|
|
return view("user.login");
|
|
}
|
|
|
|
public function authenticate(Request $request): \Illuminate\Http\RedirectResponse
|
|
{
|
|
$request->validate([
|
|
"username" => ["required"],
|
|
"password" => ["required"],
|
|
]);
|
|
$credentials = [
|
|
"password" => $request->post("password"),
|
|
];
|
|
if (str_contains($request->post("username"), "@")) {
|
|
$credentials["email"] = $request->post("username");
|
|
} else {
|
|
$credentials["name"] = $request->post("username");
|
|
}
|
|
if (Auth::attempt($credentials, $request->post("remember", 0) == 1)) {
|
|
$request->session()->regenerate();
|
|
return redirect()->intended();
|
|
}
|
|
return back()->withErrors([
|
|
"username" => "无此用户",
|
|
]);
|
|
}
|
|
|
|
public function logout(Request $request)
|
|
{
|
|
Auth::logout();
|
|
$request->session()->invalidate();
|
|
$request->session()->regenerateToken();
|
|
return redirect("/");
|
|
}
|
|
|
|
public function register_page(Request $request)
|
|
{
|
|
return view("user.register");
|
|
}
|
|
|
|
public function register(Request $request)
|
|
{
|
|
$request_payload = $request->validate([
|
|
"name" => ["required", "unique:users"],
|
|
"email" => ["required", "email", "unique:users"],
|
|
"password" => ["required"],
|
|
]);
|
|
$user = new User();
|
|
$request_payload["password"] = Hash::make($request_payload["password"]);
|
|
$user->fill($request_payload);
|
|
$user->save();
|
|
return redirect(route("login"));
|
|
}
|
|
}
|