diff --git a/app/Http/Controllers/Admin/SettingController.php b/app/Http/Controllers/Admin/SettingController.php index bdcf822..32fcb1f 100644 --- a/app/Http/Controllers/Admin/SettingController.php +++ b/app/Http/Controllers/Admin/SettingController.php @@ -9,7 +9,7 @@ use Illuminate\Http\Request; use Log; use Maatwebsite\Excel\Facades\Excel; - +use App\Models\User; class SettingController extends Controller { @@ -62,4 +62,26 @@ public function promoCodeCreate(Request $request) } } + public function adminIndex(Request $request) + { + $data = User::paginate(15); + + return view('admin.setting.adminlist', ['data' => $data]); + } + + public function loginStatus(Request $request) + { + $user = User::where('id', $request->id)->first(); + $user->can_login = $request->can_login; + $user->save(); + + return response()->json([ + 'status' => 'success', + 'msg' => '狀態已更新', + 'can_login' => $user->can_login, + ]); + + + } + } diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/LoginController.php index b4ba140..a7e6304 100644 --- a/app/Http/Controllers/LoginController.php +++ b/app/Http/Controllers/LoginController.php @@ -42,6 +42,7 @@ public function redirectToProvider(Request $request) */ public function handleProviderCallback(Request $request) { + // 从 Session 获取 $redirectTo $redirectTo = session('redirect_to', 'member'); @@ -70,6 +71,7 @@ public function handleProviderCallback(Request $request) 'avatar' => $avatar, 'source' => 'cafeg', 'email' => $email, + 'can_login' => 0, ]); Auth::guard('web')->login($newUser); } diff --git a/app/Http/Middleware/AdminAuth.php b/app/Http/Middleware/AdminAuth.php new file mode 100644 index 0000000..842a4f0 --- /dev/null +++ b/app/Http/Middleware/AdminAuth.php @@ -0,0 +1,25 @@ +can_login == 1) { + return $next($request); + } + return redirect()->route('admin.login')->with('error', '此帳號未開通,請聯繫管理員'); + + } +} diff --git a/app/Http/Middleware/AdminRedirect.php b/app/Http/Middleware/AdminRedirect.php index ee3d596..293fb56 100644 --- a/app/Http/Middleware/AdminRedirect.php +++ b/app/Http/Middleware/AdminRedirect.php @@ -20,7 +20,7 @@ public function handle(Request $request, Closure $next): Response if (!Auth::check() && $request->path() != 'admin/register') { return redirect()->route('admin.login'); } - if (Auth::check() && $request->path() == 'admin/login') { + if (Auth::check() && $request->path() == 'admin/login' && Auth::user()->can_login == 1) { return redirect()->route('admin.index'); } diff --git a/app/Models/Member.php b/app/Models/Member.php index 7f1281c..09f2a3a 100644 --- a/app/Models/Member.php +++ b/app/Models/Member.php @@ -66,5 +66,11 @@ public function getPromoCode() { return $this->hasOne(Promocode::class, 'used_count', 'id'); } - + protected function casts(): array + { + return [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; + } } diff --git a/app/Models/User.php b/app/Models/User.php index 07fb3d9..a87cf86 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -23,6 +23,7 @@ class User extends Authenticatable 'phone', 'password', 'line_id', + 'can_login', ]; /** @@ -34,6 +35,13 @@ class User extends Authenticatable 'remember_token', ]; + public static $canlogin = + [ + 0 => '未允許', + 1 => '允許', + ]; + + /** * Get the attributes that should be cast. * @@ -46,4 +54,11 @@ protected function casts(): array 'password' => 'hashed', ]; } + + public function getCanLoginStatusAttribute() + { + return self::$canlogin[$this->attributes['can_login']] ?? '未知狀態'; + } + + } diff --git a/resources/menu/verticalMenu.json b/resources/menu/verticalMenu.json index ea4b091..34d8ec3 100644 --- a/resources/menu/verticalMenu.json +++ b/resources/menu/verticalMenu.json @@ -21,6 +21,11 @@ "url": "admin/setting/promocode", "name": "優惠代碼", "slug": "setting-promocode" + }, + { + "url": "admin/setting/adminlist", + "name": "後台登入人員", + "slug": "setting-adminlist" } ] }, diff --git a/resources/views/admin/login.blade.php b/resources/views/admin/login.blade.php index 6fe89bd..6de2a96 100644 --- a/resources/views/admin/login.blade.php +++ b/resources/views/admin/login.blade.php @@ -72,7 +72,7 @@ // Core stylesheets 'core.scss': 'https://demos.pixinvent.com/materialize-html-laravel-admin-template/demo/build/assets/core-kL5gEEKA.css', 'core-dark.scss': 'https://demos.pixinvent.com/materialize-html-laravel-admin-template/demo/build/assets/core-dark-DFvmi5J3.css', - + // Themes 'theme-default.scss': 'https://demos.pixinvent.com/materialize-html-laravel-admin-template/demo/build/assets/theme-default-Bt2z4DrM.css', 'theme-default-dark.scss': 'https://demos.pixinvent.com/materialize-html-laravel-admin-template/demo/build/assets/theme-default-dark-CHvAJUy2.css', @@ -93,7 +93,7 @@ - +
@@ -105,13 +105,13 @@ @@ -166,13 +166,13 @@
- + - - + + {{-- @@ -188,11 +188,11 @@ - + {{-- --}} - + @@ -231,7 +231,24 @@ +@if (session('error')) + +@endif + + + diff --git a/resources/views/admin/setting/adminlist.blade.php b/resources/views/admin/setting/adminlist.blade.php new file mode 100644 index 0000000..259f1af --- /dev/null +++ b/resources/views/admin/setting/adminlist.blade.php @@ -0,0 +1,235 @@ +@extends('layouts.admin_app') +@section('header') +@endsection +@section('content') + + +
+
+
+
+ + +
+
+ + +
+ + + +
+
+
+
+
+
+
+

會員共計

+
+

21,459

+

(+29%)

+
+ Total Users +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

普通會員

+
+

4,567

+

(+18%)

+
+ Last week analytics +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

白銀會員

+
+

19,860

+

(-14%)

+
+ Last week analytics +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

白金會員

+
+

237

+

(+42%)

+
+ Last week analytics +
+
+
+
+
+
+
+
+
+
+ +
+ +
+
+
Filters
+
+
+
+
+
+
+
+ + + + + + + + + + + + @foreach ($data as $item) + + + + + + + + @endforeach + + + +
會員id會員名稱手機號碼登入狀態操 作
{{ $item->id }}{{ $item->name }}{{ $item->phone }} + + + +
+
+
+
+ {{ $data->links() }} +
+ +
+ +
+
+@endsection +@section('scripts') + +@endsection diff --git a/resources/views/front/member/page-profile.blade.php b/resources/views/front/member/page-profile.blade.php index 92029cf..ccc4c61 100644 --- a/resources/views/front/member/page-profile.blade.php +++ b/resources/views/front/member/page-profile.blade.php @@ -415,6 +415,88 @@ function sendVerificationEmail(email) { window.location.href = "{{ route('member.index') }}"; }); + $(document).ready(function() { + // 監聽表單提交事件 + $('#editUserForm').on('submit', function(e) { + e.preventDefault(); // 阻止默認的表單提交行為 + + // 獲取表單數據 + let email = $('#formValidationEmail').val(); + let password = $('#basic-default-password').val(); + let confirmPassword = $('#formValidationConfirmPass').val(); + let phone = $('#modalEditUserPhone').val(); + + // 表單驗證 + let valid = true; + + // 驗證 Email + const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + if (!emailRegex.test(email)) { + valid = false; + $('#formValidationEmail').addClass('is-invalid'); + } else { + $('#formValidationEmail').removeClass('is-invalid'); + } + + // 驗證密碼與確認密碼是否相符 + if (password !== confirmPassword) { + valid = false; + $('#formValidationConfirmPass').addClass('is-invalid'); + } else { + $('#formValidationConfirmPass').removeClass('is-invalid'); + } + + // 驗證手機號碼格式 + const phoneRegex = /^09\d{8}$/; + if (!phoneRegex.test(phone)) { + valid = false; + $('#modalEditUserPhone').addClass('is-invalid'); + } else { + $('#modalEditUserPhone').removeClass('is-invalid'); + } + + // 若驗證通過,發送 AJAX 請求 + if (valid) { + // 打包數據 + let formData = { + email: email, + password: password, + phone: phone + }; + + $.ajax({ + url: "{{ route('member.profile.update') }}", // 替換為後端處理路由 + type: 'PUT', // 使用 HTTP PUT 方法 + data: formData, + headers: { + 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') // CSRF 驗證 + }, + success: function(response) { + // 成功處理邏輯 + Swal.fire({ + title: '更新成功', + text: response.message || '您的個人資訊已成功更新!', + icon: 'success', + confirmButtonText: '確定' + }).then(() => { + // 跳轉至其他頁面 + window.location.href = "{{ route('member.index') }}"; + }); + }, + error: function(xhr, status, error) { + // 錯誤處理邏輯 + Swal.fire({ + title: '更新失敗', + text: xhr.responseJSON.message || '請稍後重試!', + icon: 'error', + confirmButtonText: '確定' + }); + } + }); + } + }); +}); + @endsection @endsection diff --git a/resources/views/layouts/admin_aside.blade.php b/resources/views/layouts/admin_aside.blade.php index 603b0ae..b40f149 100644 --- a/resources/views/layouts/admin_aside.blade.php +++ b/resources/views/layouts/admin_aside.blade.php @@ -1,6 +1,6 @@