cafeg/app/Http/Controllers/front/MemberController.php
2025-01-20 16:42:05 +08:00

95 lines
2.9 KiB
PHP

<?php
namespace App\Http\Controllers\front;
use App\Http\Controllers\Controller;
use App\Models\EmailVerifications;
use App\Models\Member;
use App\Models\Promocode;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use Mail;
use Illuminate\Support\Facades\Hash;
class MemberController extends Controller
{
//
public function index()
{
$code = null;
if (isset(Auth::guard('member')->user()->id)) {
$user_id = Auth::guard('member')->user()->id;
$code = Promocode::where('used_count', $user_id)->first();
return view('front.member.index', ['code' => $code]);
} else {
Auth::guard('member')->logout();
return redirect()->route('front.login.view');
}
}
public function profile()
{
return view('front.member.profile');
}
/**
* Summary of profileUpdate
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
* @todo 目前沒有錢包與購買方案與report 以後要 一起下壓
* @method put
*/
public function profileUpdate(Request $request)
{
// 驗證輸入的數據
$validatedData = $request->validate([
'email' => 'required|email',
'password' => 'nullable|min:6', // password 與 password_confirmation 必須匹配
'phone' => 'nullable|string|max:15',
]);
$auth = Member::find(Auth::guard('member')->id());
// 檢查是否已有其他會員使用相同的 email
$user = Member::where('email', $validatedData['email'])->first();
if ($user && $user->id != $auth->id) {
// 如果該 Email 已被其他用戶使用,返回錯誤信息
return response()->json(['status' => 'error', 'msg' => '該 Email 已被其他帳戶使用'], 422);
}
// 更新當前用戶的資料
$auth->email = $validatedData['email'];
if ($request->has('password')) {
$auth->password = Hash::make($validatedData['password']);
}
$auth->phone = $validatedData['phone'] ?? $auth->phone;
// 保存更改
$auth->save();
return response()->json(['status' => 'success', 'msg' => '更新成功']);
}
public function pageProfile(Request $request)
{
return view('front.member.page-profile');
}
public function checkPhone(Request $request)
{
$validatedData = $request->validate([
'phone' => 'required|string|max:15',
]);
\Log::info('checkPhone', []);
$user = Member::where('phone', $validatedData['phone'])->first();
if ($user) {
return response()->json(['status' => 'error', 'msg' => '該電話號碼已被其他帳戶使用']);
}
return response()->json(['status' => 'success', 'msg' => '該電話號碼可用']);
}
}