417 lines
11 KiB
PHP
417 lines
11 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\User;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Session;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use DataTables;
|
|
use Mail;
|
|
use App\Mail\sendEmailOTP;
|
|
use App\Mail\UpdatePasswordMail;
|
|
|
|
class AdminProfileController extends Controller
|
|
{
|
|
public function viewProfile()
|
|
{
|
|
$data = User::find(auth()->user()->id);
|
|
return view('Admin.Pages.manage_sub_admin.edit_admin_profile', compact('data'));
|
|
}
|
|
|
|
public function sendOtpOnMail(Request $request)
|
|
{
|
|
// dd($request->all());
|
|
$validator = validator::make($request->all(),['new_email'=>'required|unique:users,email'],['requreid'=>'Email field is required.','unique'=>'Email should be unique.']);
|
|
$validateMessage = validationErrorMessage($validator);
|
|
if($validateMessage)
|
|
{
|
|
return response()->json(['status'=>400,'message'=>$validateMessage]);
|
|
}
|
|
$OTP = rand(1000,9999);
|
|
Mail::to($request->new_email)->send(new sendEmailOTP($OTP));
|
|
session()->forget(['email_update_otp','old_email','new_email']);
|
|
session()->put('email_update_otp',$OTP);
|
|
session()->put('old_email',$request->old_email);
|
|
session()->put('new_email',$request->new_email);
|
|
if(session()->has('email_update_otp') || session()->has('old_email') || session()->has('new_email'))
|
|
{
|
|
return response()->json(['status'=>200,'message'=>"OTP has been send to your mail."]);
|
|
}
|
|
return response()->json(['status'=>400,'message'=>"Error in sending OTP."]);
|
|
}
|
|
|
|
public function verifyEmailOtp(Request $request)
|
|
{
|
|
$otp = session()->get('email_update_otp');
|
|
$old_email = session()->get('old_email');
|
|
$new_email = session()->get('new_email');
|
|
// dd($new_email,$old_email);
|
|
if(!$otp && !$old_email && !$new_email)
|
|
{
|
|
return response()->json(['status'=>400,'message'=>'Enter your email again.']);
|
|
}
|
|
|
|
if((int)$otp != (int)$request->email_otp)
|
|
{
|
|
return response()->json(['status'=>400,'message'=>'OTP not matched.']);
|
|
}
|
|
|
|
$updated = User::where('email',$old_email)->update(['email'=>$new_email]);
|
|
if($updated)
|
|
{
|
|
return response()->json(['status'=>200,'message'=>'Email updated successfully']);
|
|
}
|
|
|
|
}
|
|
public function getUsers(Request $request)
|
|
{
|
|
if ($request->ajax()) {
|
|
$data = User::where(['role' => 0, 'status' => 1])->get();
|
|
|
|
// dd($data);
|
|
|
|
return Datatables::of($data)
|
|
|
|
->addIndexColumn()
|
|
|
|
->addColumn('action', function ($row) {
|
|
|
|
$actionBtn = '<a href="javascript:void(0)" class="edit btn btn-success btn-sm">Edit</a> <a href="javascript:void(0)" class="delete btn btn-danger btn-sm">Delete</a>';
|
|
|
|
return $actionBtn;
|
|
})
|
|
|
|
->rawColumns(['action'])
|
|
|
|
// ->editColumn('name',function($row){
|
|
|
|
// return '<div class="text-center">' . $row->name . '</div>';
|
|
|
|
// })
|
|
|
|
// ->editColumn('email',function($row){
|
|
|
|
// return '<div class="text-center">' . $row->email . '</div>';
|
|
|
|
// })
|
|
|
|
// ->editColumn('password',function($row){
|
|
|
|
// return '<div class="text-center">' . $row->password . '</div>';
|
|
|
|
// })
|
|
|
|
// ->addColumn('edit',function ($row){
|
|
|
|
// $email = $row->email;
|
|
|
|
// $password = $row->password;
|
|
|
|
// $editBtn = '<a class="action_icon edit_button" href="#" data-toggle="modal" data-target="#exampleModal" data-email="'.$email.'" data-password="'.$password.'">
|
|
|
|
// <svg class="svg-inline--fa fa-pen-to-square" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="pen-to-square" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.8 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z"></path></svg><!-- <i class="fa-solid fa-pen-to-square"></i> Font Awesome fontawesome.com -->
|
|
|
|
// </a>';
|
|
|
|
// return $editBtn;
|
|
|
|
// })
|
|
|
|
// ->rawColumns(['name','email','password','edit'])
|
|
|
|
->make(true);
|
|
}
|
|
|
|
// return view('Admin.edit_admin_profile');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function editProfile(Request $request)
|
|
|
|
{
|
|
|
|
$validator = Validator::make($request->all(), [
|
|
|
|
'update_id' => 'required',
|
|
|
|
'name' => [
|
|
|
|
'required',
|
|
|
|
// 'regex:/^[a-zA-Z\s]+$/',
|
|
|
|
],
|
|
|
|
'email' => [
|
|
|
|
'required',
|
|
|
|
// 'regex/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/',
|
|
|
|
],
|
|
|
|
'mobile_number' => [
|
|
|
|
'required',
|
|
|
|
'min:10',
|
|
|
|
'max:12',
|
|
|
|
// 'regex:regex:/^(\+\d{1,3}[- ]?)?\d{10,12}$/',
|
|
|
|
],
|
|
|
|
'profile_image' => [
|
|
|
|
'mimes:jpeg,png,jpg,gif,svg',
|
|
|
|
'max:2048',
|
|
|
|
],
|
|
|
|
], [
|
|
|
|
'required' => 'This :attribute field is required',
|
|
|
|
'mobile_number.min' => 'Mobile number should be minimum 10 digits',
|
|
|
|
'mobile_number.max' => 'Mobile number should be maxmium 12 digits',
|
|
|
|
'profile_image.mimes' => "Image accepts only jpeg,png,jpg,gif,svg",
|
|
|
|
'profile_image.max' => "Image size not more than 2mb",
|
|
|
|
'name.regex' => 'This :attribute contain only alphabets',
|
|
|
|
'email.regex' => 'Enter valid email address',
|
|
|
|
'mobile_number.regex' => 'Mobile number contain only digits',
|
|
|
|
]);
|
|
|
|
|
|
|
|
$validationMessage = validationErrorMessage($validator);
|
|
|
|
|
|
|
|
if ($validationMessage) {
|
|
|
|
return response()->json(
|
|
|
|
[
|
|
|
|
'status' => 400,
|
|
|
|
'message' => $validationMessage
|
|
|
|
]
|
|
|
|
);
|
|
}
|
|
|
|
|
|
|
|
$uploadImage = $request->has('profile_image') ? $this->uploadProfileImage(Auth::user()->id, $request->profile_image) : Auth::user()->getRawOriginal('profile_image');
|
|
|
|
|
|
|
|
$data = User::where('id', Auth::user()->id)->update([
|
|
|
|
'name' => $request->name,
|
|
|
|
'email' => $request->email,
|
|
|
|
'contact_number' => $request->mobile_number,
|
|
|
|
'profile_image' => $uploadImage,
|
|
|
|
]);
|
|
|
|
if ($data) {
|
|
|
|
return response()->json(
|
|
|
|
[
|
|
|
|
'status' => 200,
|
|
|
|
'message' => "Profile update successfull"
|
|
|
|
]
|
|
|
|
);
|
|
}
|
|
|
|
return response()->json(
|
|
|
|
[
|
|
|
|
'status' => 204,
|
|
|
|
'message' => 'Profile not updated, Something error!'
|
|
|
|
]
|
|
|
|
);
|
|
}
|
|
|
|
|
|
|
|
public function uploadProfileImage($id, $image)
|
|
|
|
{
|
|
|
|
$user = User::where('id', $id)->first();
|
|
|
|
if (\Storage::exists($user->profile_image)) {
|
|
|
|
\Storage::delete($user->profile_image);
|
|
}
|
|
|
|
$fileName = time() . Auth::user()->id . '.' . $image->extension();
|
|
|
|
$image->move(public_path('/uploads/profile/img'), $fileName);
|
|
|
|
return $fileName;
|
|
}
|
|
|
|
|
|
|
|
public function UpdatePassword(Request $request)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'current_password' => 'required',
|
|
'password' => ['required', 'min:8', 'regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\x])(?=.*[!$#%@]).*$/', 'confirmed']
|
|
// 'confirm_password' => 'required_with:new_password|same:new_password|required',
|
|
], [
|
|
'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 = validationErrorMessage($validator);
|
|
if ($validationMessage) {
|
|
return response()->json(['status' => 400, 'message' => $validationMessage]);
|
|
}
|
|
$user = User::find(Auth::user()->id);
|
|
if (Hash::check($request->current_password, $user->password)) {
|
|
$updatePassword = User::where('id', $request->updateId)->update([
|
|
'password' => bcrypt($request->password),
|
|
]);
|
|
if ($updatePassword) {
|
|
Session::flush();
|
|
\Auth::logout();
|
|
return response()->json(['status' => 200, 'message' => "Password update successfull"]);
|
|
} else {
|
|
return response()->json(['status' => 204, 'message' => 'Password not updated, Something error!']);
|
|
}
|
|
}
|
|
return response()->json(['status' => 204, 'message' => 'Password not matched!']);
|
|
}
|
|
|
|
|
|
|
|
public function viewUsersProfile()
|
|
|
|
{
|
|
$check = checkSidebarAccess('update-user-password');
|
|
if (!$check) {
|
|
abort(404);
|
|
}
|
|
|
|
$users = User::where(['role' => false, 'status' => true])->get();
|
|
|
|
return view('Admin.Pages.manage_sub_admin.update_user_password', compact('users'));
|
|
}
|
|
|
|
|
|
|
|
public function updateUsersProfile(Request $request)
|
|
|
|
{
|
|
// dd($request->all());
|
|
$validate = Validator::make($request->all(), [
|
|
|
|
'password' => 'required|min:8',
|
|
'confirm_password' => 'required_with:password|same:password|min:8',
|
|
|
|
], [
|
|
|
|
'required' => "This field is required",
|
|
|
|
'password.confirmed' => "Password not matched",
|
|
|
|
]);
|
|
|
|
if ($validate->fails()) {
|
|
|
|
return response()->json(
|
|
|
|
[
|
|
|
|
"status" => 400,
|
|
|
|
"message" => $validate->errors(),
|
|
|
|
]
|
|
);
|
|
}
|
|
|
|
$email = $request->email;
|
|
|
|
$newPassword = $request->password;
|
|
|
|
|
|
|
|
$userData = User::where('email', $email)->first();
|
|
|
|
if ($userData->password == $newPassword) {
|
|
|
|
return response()->json([
|
|
|
|
'status' => 201,
|
|
|
|
'message' => "Password matched same",
|
|
|
|
]);
|
|
} else {
|
|
|
|
$updatePassword = User::where('email', $email)->update([
|
|
|
|
'password' => bcrypt($newPassword),
|
|
|
|
]);
|
|
|
|
|
|
|
|
if ($updatePassword) {
|
|
Mail::to($email)->send(new UpdatePasswordMail($newPassword));
|
|
return response()->json([
|
|
|
|
'status' => 200,
|
|
|
|
'message' => "Password update successfully",
|
|
|
|
]);
|
|
}
|
|
|
|
return response()->json([
|
|
|
|
'status' => 201,
|
|
|
|
'message' => "Password not updated",
|
|
|
|
]);
|
|
}
|
|
}
|
|
}
|