From 0fed12900e56bd6e31b1f80c2b68db1760c10569 Mon Sep 17 00:00:00 2001 From: Amir Date: Tue, 6 Jun 2023 08:54:39 +0800 Subject: [PATCH] Add change password for pembida --- .../Controllers/Mobile/UserController.php | 89 +++++++++++++++++++ routes/api.php | 2 + 2 files changed, 91 insertions(+) diff --git a/app/Http/Controllers/Mobile/UserController.php b/app/Http/Controllers/Mobile/UserController.php index 6c7587a2..e5766a7c 100644 --- a/app/Http/Controllers/Mobile/UserController.php +++ b/app/Http/Controllers/Mobile/UserController.php @@ -7,6 +7,8 @@ use Illuminate\Support\Facades\Validator; use Illuminate\Http\Request; use App\Models\User; use DB; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Auth; use Carbon\Carbon; class UserController extends Controller @@ -53,4 +55,91 @@ class UserController extends Controller return response()->json($user_update); } + + public function changePassword(Request $request) + { + $validator = Validator::make($request->all(), [ + 'current_password' => 'required', + 'new_password' => 'required|string|min:8', + 'confirm_new_password' => 'required|string|min:8', + ], [ + 'current_password.required' => ['status' => '1', 'message' => 'Sila isi kata laluan asal.'], + 'new_password.required' => ['status' => '2', 'message' => 'Sila isi kata laluan baharu.'], + 'new_password.min' => [ + 'string' => [ + 'status' => 3, + 'message' => 'Kata laluan baharu mestilah melebihi 8 karakter.', + ] + ], + 'confirm_new_password.required' => ['status' => '4', 'message' => 'Sila isi pengesahan kata laluan baharu.'], + 'confirm_new_password.min' => [ + 'string' => [ + 'status' => 5, + 'message' => 'Pengesahan kata laluan baharu mestilah melebihi 8 karakter.', + ] + ], + ]); + + if ($validator->fails()) { + $all_errors = [ + 'success' => false, + 'message' => $validator->errors() + ]; + return response($all_errors, 201); + } + + if (!(Hash::check($request->get('current_password'), Auth::user()->password))) { + return response()->json([ + 'success' => false, + 'message' => [ + 'current_password' => [ + 0 => [ + 'status' => 9, + 'message' => 'Kata laluan asal salah.' + ] + ] + ] + ]); + } + + if (strcmp($request->get('current_password'), $request->get('new_password')) == 0) { + return response()->json([ + 'success' => false, + 'message' => [ + 'current_password' => [ + 0 => [ + 'status' => 8, + 'message' => 'Kata laluan baharu tidak boleh sama dengan kata laluan asal.' + ] + ] + ] + ]); + } + + if (strcmp($request->get('new_password'), $request->get('confirm_new_password')) != 0) { + return response()->json([ + 'success' => false, + 'message' => [ + 'current_password' => [ + 0 => [ + 'status' => 12, + 'message' => 'Kata laluan baharu tidak sama dengan pengesahan kata laluan baharu.' + ] + ] + ] + ]); + } + + $validated_password = $validator->validated(); + + $user = Auth::user(); + $user->password = bcrypt($validated_password['new_password']); + $user->save(); + + return response()->json([ + 'success' => true, + 'status' => 55, + 'message' => 'Kata laluan berjaya diubah' + ]); + } } diff --git a/routes/api.php b/routes/api.php index 15cef496..70fe5193 100644 --- a/routes/api.php +++ b/routes/api.php @@ -43,6 +43,8 @@ Route::group(['middleware' => ['auth:sanctum']], function () { Route::post('/user/logout', [AuthController::class, 'logoutUser']); Route::get('/user/profile/{nokp}', [UserController::class, 'getProfileUser']); Route::post('/password/reset', [ResetPasswordController::class, 'reset']); + //change password user + Route::post('/changePassword', [UserController::class, 'changePassword']); // User Profile Route::get('/user/profile', [UserController::class, 'getProfileUser']);