diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 39910d78..21aeb894 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -54,7 +54,8 @@ class Kernel extends HttpKernel * @var array */ protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, + 'admin_auth' => \App\Http\Middleware\Authenticate::class, + 'shop_auth' => \App\Http\Middleware\ShopAuthenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, diff --git a/app/Http/Middleware/ShopAuthenticate.php b/app/Http/Middleware/ShopAuthenticate.php new file mode 100644 index 00000000..af1a5e71 --- /dev/null +++ b/app/Http/Middleware/ShopAuthenticate.php @@ -0,0 +1,22 @@ +expectsJson()) { + // 后台 + return shop_route('login.show'); + } + } +} diff --git a/beike/Admin/Routes/admin.php b/beike/Admin/Routes/admin.php index 08e1bd09..33a2d6c9 100644 --- a/beike/Admin/Routes/admin.php +++ b/beike/Admin/Routes/admin.php @@ -9,7 +9,7 @@ Route::prefix('admin') Route::get('login', [\Beike\Admin\Http\Controllers\LoginController::class, 'show'])->name('login.show'); Route::post('login', [\Beike\Admin\Http\Controllers\LoginController::class, 'store'])->name('login.store'); - Route::middleware('auth:'.\Beike\Models\AdminUser::AUTH_GUARD) + Route::middleware('admin_auth:'.\Beike\Models\AdminUser::AUTH_GUARD) ->group(function () { Route::get('/', [\Beike\Admin\Http\Controllers\HomeController::class, 'index'])->name('home.index'); diff --git a/beike/Helpers.php b/beike/Helpers.php index d2fb0e18..00b93dc4 100644 --- a/beike/Helpers.php +++ b/beike/Helpers.php @@ -11,7 +11,7 @@ use Illuminate\Contracts\Auth\Authenticatable; * @param mixed $params * @return string */ -function admin_route($route, $params): string +function admin_route($route, $params = []): string { return route('admin.' . $route, $params); } @@ -23,7 +23,7 @@ function admin_route($route, $params): string * @param mixed $params * @return string */ -function shop_route($route, $params): string +function shop_route($route, array $params = []): string { return route('shop.' . $route, $params); } diff --git a/beike/Shop/Http/Controllers/account/AccountController.php b/beike/Shop/Http/Controllers/account/AccountController.php new file mode 100644 index 00000000..566c696e --- /dev/null +++ b/beike/Shop/Http/Controllers/account/AccountController.php @@ -0,0 +1,27 @@ + + * @created 2022-06-23 20:22:54 + * @modified 2022-06-23 20:22:54 + */ + +namespace Beike\Shop\Http\Controllers\account; + +use Beike\Models\Customer; +use Beike\Shop\Http\Controllers\Controller; +use function auth; +use function view; + +class AccountController extends Controller +{ + public function index() + { + $data = auth(Customer::AUTH_GUARD)->user()->toArray(); + return view('account', $data); + } + +} diff --git a/beike/Shop/Http/Controllers/LoginController.php b/beike/Shop/Http/Controllers/account/LoginController.php similarity index 78% rename from beike/Shop/Http/Controllers/LoginController.php rename to beike/Shop/Http/Controllers/account/LoginController.php index 22addc6d..3c5b5ed8 100644 --- a/beike/Shop/Http/Controllers/LoginController.php +++ b/beike/Shop/Http/Controllers/account/LoginController.php @@ -9,10 +9,15 @@ * @modified 2022-06-22 20:22:54 */ -namespace Beike\Shop\Http\Controllers; +namespace Beike\Shop\Http\Controllers\account; use Beike\Models\Customer; +use Beike\Shop\Http\Controllers\Controller; use Illuminate\Http\Request; +use function auth; +use function back; +use function redirect; +use function view; class LoginController extends Controller { @@ -29,7 +34,7 @@ class LoginController extends Controller ]); if (auth(Customer::AUTH_GUARD)->attempt($credentials)) { - return redirect(route('home')); + return redirect(shop_route('account.index')); } return back()->withErrors([ diff --git a/beike/Shop/Http/Controllers/account/LogoutController.php b/beike/Shop/Http/Controllers/account/LogoutController.php new file mode 100644 index 00000000..e946002c --- /dev/null +++ b/beike/Shop/Http/Controllers/account/LogoutController.php @@ -0,0 +1,35 @@ + + * @created 2022-06-23 20:22:54 + * @modified 2022-06-23 20:22:54 + */ + +namespace Beike\Shop\Http\Controllers\account; + +use Beike\Models\Customer; +use Beike\Shop\Http\Controllers\Controller; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use function auth; +use function back; +use function redirect; +use function view; + +class LogoutController extends Controller +{ + public function index(Request $request) + { + Auth::logout(); + + $request->session()->invalidate(); + + $request->session()->regenerateToken(); + + return redirect(shop_route('login.index')); + } +} diff --git a/beike/Shop/Http/Controllers/account/RegisterController.php b/beike/Shop/Http/Controllers/account/RegisterController.php new file mode 100644 index 00000000..0f65a1e4 --- /dev/null +++ b/beike/Shop/Http/Controllers/account/RegisterController.php @@ -0,0 +1,40 @@ + + * @created 2022-06-22 20:22:54 + * @modified 2022-06-22 20:22:54 + */ + +namespace Beike\Shop\Http\Controllers\account; + +use Beike\Models\Customer; +use Beike\Shop\Http\Controllers\Controller; +use Beike\Shop\Http\Requests\RegisterRequest; +use Illuminate\Support\Facades\Hash; +use function redirect; +use function view; + +class RegisterController extends Controller +{ + public function index() + { + return view('register'); + } + + public function store(RegisterRequest $request) + { + $customer = new Customer(); + $customer->name = $request->get('name', ''); + $customer->email = $request->get('email'); + $customer->customer_group_id = 0; + $customer->language_id = 0; + $customer->password = Hash::make($request->get('password')); + $customer->save(); + + return redirect(shop_route('login.index')); + } +} diff --git a/beike/Shop/Http/Requests/RegisterRequest.php b/beike/Shop/Http/Requests/RegisterRequest.php new file mode 100644 index 00000000..20369223 --- /dev/null +++ b/beike/Shop/Http/Requests/RegisterRequest.php @@ -0,0 +1,38 @@ + 'required|email:rfc,dns', + ]; + } + + public function attributes() + { + return [ + 'email' => '邮箱地址', + 'password' => '密码' + ]; + } +} diff --git a/beike/Shop/Routes/shop.php b/beike/Shop/Routes/shop.php index 0fbda175..4157c778 100644 --- a/beike/Shop/Routes/shop.php +++ b/beike/Shop/Routes/shop.php @@ -15,11 +15,15 @@ Route::prefix('/') Route::get('products/{product}', [Beike\Shop\Http\Controllers\ProductController::class, 'show'])->name('products.show'); - Route::get('login', [Beike\Shop\Http\Controllers\LoginController::class, 'index'])->name('login.index'); - Route::post('login', [Beike\Shop\Http\Controllers\LoginController::class, 'store'])->name('login.store'); + Route::get('login', [\Beike\Shop\Http\Controllers\account\LoginController::class, 'index'])->name('login.index'); + Route::post('login', [\Beike\Shop\Http\Controllers\account\LoginController::class, 'store'])->name('login.store'); + Route::get('register', [\Beike\Shop\Http\Controllers\account\RegisterController::class, 'index'])->name('register.index'); + Route::post('register', [\Beike\Shop\Http\Controllers\account\RegisterController::class, 'store'])->name('register.store'); + Route::get('logout', [\Beike\Shop\Http\Controllers\account\LogoutController::class, 'index'])->name('logout'); - Route::middleware('auth:'.\Beike\Models\Customer::AUTH_GUARD) + Route::middleware('shop_auth:'.\Beike\Models\Customer::AUTH_GUARD) ->group(function () { + Route::get('account', [\Beike\Shop\Http\Controllers\account\AccountController::class, 'index'])->name('account.index'); }); }); diff --git a/database/migrations/2022_06_23_075504_create_customer_table.php b/database/migrations/2022_06_23_075504_create_customer_table.php index fd289916..fe0de067 100644 --- a/database/migrations/2022_06_23_075504_create_customer_table.php +++ b/database/migrations/2022_06_23_075504_create_customer_table.php @@ -18,13 +18,13 @@ class CreateCustomerTable extends Migration $table->string('email')->unique(); $table->string('password'); $table->string('name'); - $table->string('avatar'); + $table->string('avatar')->default(''); $table->unsignedInteger('customer_group_id'); $table->unsignedInteger('language_id'); - $table->text('cart'); - $table->tinyInteger('status'); - $table->string('code', 40); - $table->string('from', 16); + $table->text('cart')->nullable(); + $table->tinyInteger('status')->default(0); + $table->string('code', 40)->default(''); + $table->string('from', 16)->default(''); $table->timestamps(); }); diff --git a/themes/default/account.blade.php b/themes/default/account.blade.php new file mode 100644 index 00000000..f65413f7 --- /dev/null +++ b/themes/default/account.blade.php @@ -0,0 +1,12 @@ +@extends('layout.master') + +@section('content') +
+

Account

+ 尊敬的会员 {{ $email }}, 欢迎您回来。 +
+
+ 退出 +
+ +@endsection diff --git a/themes/default/login.blade.php b/themes/default/login.blade.php index 481ca6d5..61471f99 100644 --- a/themes/default/login.blade.php +++ b/themes/default/login.blade.php @@ -1,8 +1,9 @@ @extends('layout.master') @section('content') +

Login

-
+ @csrf
@@ -37,5 +38,5 @@ - +
@endsection diff --git a/themes/default/register.blade.php b/themes/default/register.blade.php new file mode 100644 index 00000000..a2c6a364 --- /dev/null +++ b/themes/default/register.blade.php @@ -0,0 +1,42 @@ +@extends('layout.master') + +@section('content') +
+

Register

+
+ @csrf + +
+
+
+ 邮箱 +
+ +
+ @error('email') + + @enderror +
+ +
+
+
+ 密码 +
+ +
+ @error('password') + + @enderror +
+ + @if (session('error')) +
+ {{ session('error') }} +
+ @endif + + +
+
+@endsection