用户支持登录登出

This commit is contained in:
2022-08-07 13:13:10 +08:00
parent cca0958899
commit d07cad1cd8
15 changed files with 402 additions and 7 deletions

View File

@ -0,0 +1,67 @@
<?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"));
}
}

44
app/Models/User.php Normal file
View File

@ -0,0 +1,44 @@
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}

View File

@ -17,7 +17,7 @@ class RouteServiceProvider extends ServiceProvider
*
* @var string
*/
public const HOME = '/home';
public const HOME = '/';
/**
* The controller namespace for the application.
@ -38,10 +38,10 @@ class RouteServiceProvider extends ServiceProvider
$this->configureRateLimiting();
$this->routes(function () {
// Route::prefix('api')
// ->middleware('api')
// ->namespace($this->namespace)
// ->group(base_path('routes/api.php'));
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)