Files
freeu-project/app/Http/Controllers/Frontend/UpdatePasswordController.php
2024-04-24 15:20:53 +05:30

94 lines
3.6 KiB
PHP

<?php
namespace App\Http\Controllers\Frontend;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Session;
class UpdatePasswordController extends Controller
{
public function index()
{
return view('Frontend.Pages.profile.security');
}
public function changePassword(Request $request)
{
$validator = Validator::make($request->all(), [
'password' => 'required',
'newPassword' => [
'required', 'min:8', 'regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\x])(?=.*[!$#%@]).*$/', 'confirmed'
],
], [
'required' => 'The :attribute field is required',
'same' => 'The :attribute must contain the same password',
'min' => 'The :attribute field must be 8 characters minimum',
'regex' => 'The :attribute field must contain at least 1 uppercase letter and symbol and also a number',
'confirmed' => 'Password does not match'
]);
$validationMessage = $this->validationError($validator);
if ($validationMessage) {
return response()->json(['status' => 400, 'message' => $validationMessage]);
}
if($request->password == $request->newPassword)
{
return response()->json(['status' => 400, 'message' => "Your current password and new password could not be same"]);
}
$user = User::find(auth()->guard('users')->user()->id);
if (Hash::check($request->password, $user->password)) {
$updatePassword = User::where('id', auth()->guard('users')->user()->id)->update([
'password' => bcrypt($request->newPassword)
]);
Session::flush();
\Auth::guard('users')->logout();
return response()->json(['status' => 200, 'message' => 'Password Updated Successfully']);
}
return response()->json(['status' => 400, 'message' => 'Current Password is incorrect']);
}
public function changePinAPI(Request $request)
{
$validator = Validator::make($request->all(), [
'current_pin' => 'required|min:4|max:4',
'new_pin' => [
'required', 'min:4','max:4','confirmed'
],
], [
'required' => 'The :attribute field is required',
'min' => 'The :attribute must contain only 4 digits',
'max' => 'The :attribute must contain only 4 digits',
'confirmed' => 'The confirmed pin does not match'
]);
$validationMessage = $this->validationError($validator);
if ($validationMessage) {
return response()->json(['status' => 400, 'message' => $validationMessage]);
}
$user = User::find($request->user()->id);
if($user->pin == $request->current_pin){
$updatePassword = User::where('id', $request->user()->id)->update([
'pin' => $request->new_pin
]);
if ($updatePassword) {
return response()->json(['status' => 200, 'message' => 'Pin Updated Successfully']);
}
}
return response()->json(['status' => 400, 'message' => 'Could not update pin'],400);
}
public function validationError($validator)
{
if ($validator->fails()) {
$errors = $validator->errors();
$messages = '';
foreach ($errors->all() as $message) {
$messages .= $message . '</br>';
}
return $messages;
}
}
}