94 lines
3.6 KiB
PHP
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;
|
|
}
|
|
}
|
|
}
|