⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.101
Server IP:
157.245.101.34
Server:
Linux skvinfotech-website 5.4.0-131-generic #147-Ubuntu SMP Fri Oct 14 17:07:22 UTC 2022 x86_64
Server Software:
Apache/2.4.41 (Ubuntu)
PHP Version:
7.4.33
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
var
/
www
/
html
/
app
/
Http
/
Controllers
/
api
/
View File Name :
UserController.php
<?php namespace App\Http\Controllers\api; use App\Models\User; use App\Models\UserDevice; use App\Models\UserAddress; use App\Models\Order; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Http; use OAuth; use App\Helpers\GoogleTokenGenerate; use App\Helpers\SmsGateway; use Illuminate\Support\Facades\DB; use Log; use Mail; class UserController extends Controller { public function signUp(Request $request) { $name = $request->name; $email = $request->email; $mobile = $request->mobile; $fcm_id = $request->fcm_id; $address = $request->address; $validator = Validator::make($request->all(), [ // return $request->validate([ 'name' => 'bail|required', 'email' => 'required|unique:users,email', 'mobile' => 'bail|required', 'fcm_id' => 'bail|required', 'address.door_no' => 'bail|required', // 'address.building_name' => 'bail|required', 'address.street' => 'bail|required', 'address.area' => 'bail|required', // 'address.city' => 'bail|required', // 'address.landmark' => 'bail|required', 'address.district' => 'bail|required', 'address.state' => 'bail|required', 'address.pincode' => 'bail|required', ]); if ($validator->fails()) { return response()->json(['success' => false, 'message' => $validator->errors()->first()]); } // $door_no = $address['door_no']; // $building_name = $address['building_name']; // $street = $address['street']; // $area = $address['area']; // $landmark = $address['landmark']; // $district = $address['district']; // $state = $address['state']; // $pincode = $address['pincode']; // if (empty($name)) { // return response()->json(['success' => false, 'message' => 'name required']); // } // if (empty($email)) { // return response()->json(['success' => false, 'message' => 'email required']); // } // if (empty($mobile)) { // return response()->json(['success' => false, 'message' => 'mobile required']); // } // if (empty($door_no)) { // return response()->json(['success' => false, 'message' => 'door no required']); // } // if (empty($building_name)) { // return response()->json(['success' => false, 'message' => 'building name required']); // } // if (empty($street)) { // return response()->json(['success' => false, 'message' => 'street required']); // } // if (empty($area)) { // return response()->json(['success' => false, 'message' => 'area required']); // } // if (empty($district)) { // return response()->json(['success' => false, 'message' => 'district required']); // } // if (empty($state)) { // return response()->json(['success' => false, 'message' => 'state required']); // } // if (empty($pincode)) { // return response()->json(['success' => false, 'message' => 'pincode required']); // } // $door_no = $address['door_no']; // $building_name = $address['building_name']; // $street = $address['street']; // $area = $address['area']; // $landmark = $address['landmark']; // $district = $address['district']; // $state = $address['state']; // $pincode = $address['pincode']; // if (empty($name)) { // return response()->json(['success' => false, 'message' => 'name required']); // } // if (empty($email)) { // return response()->json(['success' => false, 'message' => 'email required']); // } // if (empty($mobile)) { // return response()->json(['success' => false, 'message' => 'mobile required']); // } // if (empty($door_no)) { // return response()->json(['success' => false, 'message' => 'door no required']); // } // if (empty($building_name)) { // return response()->json(['success' => false, 'message' => 'building name required']); // } // if (empty($street)) { // return response()->json(['success' => false, 'message' => 'street required']); // } // if (empty($area)) { // return response()->json(['success' => false, 'message' => 'area required']); // } // if (empty($district)) { // return response()->json(['success' => false, 'message' => 'district required']); // } // if (empty($state)) { // return response()->json(['success' => false, 'message' => 'state required']); // } // if (empty($pincode)) { // return response()->json(['success' => false, 'message' => 'pincode required']); // } // if (empty($fcm_id)) { // return response()->json(['success' => false, 'message' => 'fcm id required']); // } $exit_user = User::where('mobile', $mobile)->first(); if ($exit_user->registration_status == 1) { return response()->json(['success' => false, 'message' => 'user already exist']); } if ($exit_user->registration_status == 0) { $exit_user->name = $name; $exit_user->email = $email; $exit_user->mobile = $mobile; $exit_user->otp = mt_rand(1000, 9999); //$exit_user->otp = 5678; $exit_user->otp_expiry_status = 1; $exit_user->registration_status = 1; $exit_user->save(); $user_address = new UserAddress(); $user_address->user_id = $exit_user->id; $user_address->door_no = $request->address['door_no']; $user_address->building_name = $request->address['building_name']; $user_address->street = $request->address['street']; $user_address->area = $request->address['area']; $user_address->landmark = $request->address['landmark']; $user_address->district = $request->address['district']; // $user_address->city = $request->address['city']; $user_address->state = $request->address['state']; $user_address->pincode = $request->address['pincode']; $user_address->default_status = 1; $user_address->save(); $exist_user_device = UserDevice::where('user_id', $exit_user->id)->delete(); $user_device = new UserDevice(); $user_device->user_id = $exit_user->id; $user_device->fcm_id = $fcm_id; $user_device->device_id = $request->device_id; $user_device->save(); $accessToken = $exit_user->createToken($exit_user->mobile); return response()->json(['success' => true, 'message' => 'Signed up successfully', 'user' =>$exit_user,'address' => $exit_user->address, 'token' =>$accessToken->plainTextToken ]); } // else { // $user = new User(); // $user->name = $name; // $user->email = $email; // $user->mobile = $mobile; // $user->otp = mt_rand(1000, 9999); // $user->otp_expiry_status = 1; // $user->registration_status = 1; // $user->save(); // $user_address = new UserAddress(); // $user_address->door_no = $door_no; // $user_address->building_name = $building_name; // $user_address->street = $street; // $user_address->area = $area; // $user_address->landmark = $landmark; // $user_address->district = $district; // $user_address->state = $state; // $user_address->pincode = $pincode; // $user_address->save(); // $user_device = new UserDevice(); // $user_device->user_id = $user->id; // $user_device->fcm_id = $fcm_id; // $user_device->device_id = $request->device_id; // $user_device->save(); // return response()->json(['success' => true, 'message' => 'otp sent successfully', 'otp' => $user->otp]); // } } public function signIn(Request $request) { $mobile = $request->mobile; if (empty($mobile)) { return response()->json(['success' => false, 'message' => 'mobile required']); } $fcm_id = $request->fcm_id; if (empty($fcm_id)) { return response()->json(['success' => false, 'message' => 'fcm id required']); } $hash_key = $request->hash_key; $user = User::where('mobile', $mobile)->first(); if (!$user) { $new_user = new User(); $new_user->mobile = $request->mobile; $new_user->otp = mt_rand(1000, 9999); //$new_user->otp = 5678; $new_user->otp_expiry_status = 1; $new_user->registration_status = 0; $new_user->save(); $user_device = new UserDevice(); $user_device->user_id = $new_user->id; $user_device->fcm_id = $fcm_id; $user_device->device_id = $request->device_id; $user_device->save(); $message ="$new_user->otp is your skv verification code for sign in $request->hash_key."; SmsGateway::smsSend($new_user->mobile,$message); return response()->json(['success' => true, 'message' => 'otp sent successfully', 'otp' => $new_user->otp, 'registration_status' => $new_user->registration_status]); } if ($user->registration_status == 1) { $user->otp = mt_rand(1000, 9999); //$user->otp = 5678; $user->otp_expiry_status = 1; $user->save(); $user_device = new UserDevice(); $user_device->user_id = $user->id; $user_device->fcm_id = $fcm_id; $user_device->device_id = $request->device_id; $user_device->save(); $message ="$user->otp is your skv verification code for sign in $request->hash_key."; SmsGateway::smsSend($user->mobile,$message); return response()->json(['success' => true, 'message' => 'otp sent successfully', 'otp' => $user->otp, 'registration_status' => $user->registration_status]); } elseif ($user->registration_status == 0) { $user->otp = mt_rand(1000, 9999); //$user->otp = 5678; $user->otp_expiry_status = 1; $user->save(); $exist_user_device = UserDevice::where('user_id', $user->id)->delete(); $user_device = new UserDevice(); $user_device->user_id = $user->id; $user_device->fcm_id = $fcm_id; $user_device->device_id = $request->device_id; $user_device->save(); $message ="$user->otp is your skv verification code for sign in $request->hash_key."; SmsGateway::smsSend($user->mobile,$message); return response()->json(['success' => true, 'message' => 'otp sent successfully', 'otp' => $user->otp, 'registration_status' => $user->registration_status]); } // $user = User::where('mobile', $mobile)->where('otp_verification_status',1)->orderByDesc('created_at')->first(); // if (!$user) { // return response()->json(['success' => false, 'message' => 'mobile doesnt exist']); // } else { // $user = new User(); // $user->mobile = $request->mobile; // $user->otp = mt_rand(1000, 9999); // $user->otp_expiry_status = 1; // $user->save(); // $user_device = new UserDevice(); // $user_device->user_id = $user->id; // $user_device->fcm_id = $fcm_id; // $user_device->device_id = $request->device_id; // $user_device->save(); return response()->json(['success' => true, 'message' => 'something is miising']); return response()->json(['success' => true, 'message' => 'otp sent successfully', 'otp' => $user->otp,]); } } public function otpVerification(Request $request) { $otp = $request->otp; $mobile = $request->mobile; if (empty($mobile)) { return response()->json(['success' => false, 'message' => 'mobile required']); } if (empty($otp)) { return response()->json(['success' => false, 'message' => 'otp required']); } $user = User::where('mobile', $mobile)->first(); if (!$user) { return response()->json(['success' => false, 'message' => 'mobile doesnt exist']); } if ($otp !== $user->otp) { return response()->json(['success' => false, 'message' => 'otp doesnt match']); } $user->otp = 0; $user->otp_verification_status = 1; $user->save(); $user->tokens()->delete(); $token = null; if($user->registration_status == 1){ $accessToken = $user->createToken($user->mobile); $token = $accessToken->plainTextToken; } $meta_data = [ '1' => 'registered_user', '0' => 'new_user', ]; return response()->json([ 'success' => true, 'message' => 'otp verified successfully', 'registration_status' => $user->registration_status, 'meta_data' => $meta_data, 'token' => $token, 'user' => $user, 'address' => $user->address, ]); } public function resendOtp(Request $request) { $mobile = $request->mobile; $user = User::where('mobile', $mobile)->first(); if (!$user) { return response()->json(['success' => false, 'message' => 'mobile doesnt exist']); } $user->otp = mt_rand(1000, 9999); //$user->otp = 5678; $user->otp_expiry_status = 1; $user->save(); $message ="$user->otp is your skv verification code for sign in $request->hash_key."; SmsGateway::smsSend($user->mobile,$message); return response()->json(['success' => true, 'message' => 'otp sent successfully', 'otp' => $user->otp]); } public function addAddress(Request $request) { $user_data = $request->user(); $user_id = $user_data['id']; $user_address = UserAddress::where('user_id', $user_id)->get(); $address_count = $user_address->count(); if ($address_count >= 2) { return response()->json(['success' => true, 'message' => 'you exceeds your add limit']); } $door_no = $request->door_no; $building_name = $request->building_name; $street = $request->street; $area = $request->area; // $city = $request->city; $landmark = $request->landmark; $district = $request->district; $state = $request->state; $pincode = $request->pincode; if (empty($door_no)) { return response()->json(['success' => false, 'message' => 'door no required']); } // if (empty($building_name)) { // return response()->json(['success' => false, 'message' => 'building name required']); // } if (empty($street)) { return response()->json(['success' => false, 'message' => 'street required']); } if (empty($area)) { return response()->json(['success' => false, 'message' => 'area required']); } /* if (empty($city)) { return response()->json(['success' => false, 'message' => 'city required']); }*/ if (empty($district)) { return response()->json(['success' => false, 'message' => 'district required']); } if (empty($state)) { return response()->json(['success' => false, 'message' => 'state required']); } if (empty($pincode)) { return response()->json(['success' => false, 'message' => 'pincode required']); } if (empty($default)) { return response()->json(['success' => false, 'message' => 'Default required']); } $address = new UserAddress(); $address->user_id = $user_id; $address->door_no = $door_no; $address->building_name = $building_name; $address->street = $street; $address->area = $area; // $address->city = $city; $address->landmark = $landmark; $address->district = $district; $address->state = $state; $address->pincode = $pincode; $address->default_status = 1; $address->save(); if($default){ $addresses = UserAddress::whereNotIn('id',[$address->id])->get(); foreach($addresses as $address){ $address->default = 0; $address->save(); } } return response()->json(['success' => true, 'message' => 'address added successfully', 'address' => $address]); } public function editAddress(Request $request) { $user_data = $request->user(); $user_id = $user_data['id']; $address_id = $request->id; if (empty($address_id)) { return response()->json(['success' => false, 'message' => 'address id required']); } $door_no = $request->door_no; $building_name = $request->building_name; $street = $request->street; $area = $request->area; // $city = $request->city; $landmark = $request->landmark; $district = $request->district; $state = $request->state; $pincode = $request->pincode; $default = $request->default; if (empty($door_no)) { return response()->json(['success' => false, 'message' => 'door no required']); } // if (empty($building_name)) { // return response()->json(['success' => false, 'message' => 'building name required']); // } if (empty($street)) { return response()->json(['success' => false, 'message' => 'street required']); } if (empty($area)) { return response()->json(['success' => false, 'message' => 'area required']); } /* if (empty($city)) { return response()->json(['success' => false, 'message' => 'city required']); }*/ if (empty($district)) { return response()->json(['success' => false, 'message' => 'district required']); } if (empty($state)) { return response()->json(['success' => false, 'message' => 'state required']); } if (empty($pincode)) { return response()->json(['success' => false, 'message' => 'pincode required']); } $address = UserAddress::find($address_id); $address->user_id = $user_id; $address->door_no = $door_no; $address->building_name = $building_name; $address->street = $street; $address->area = $area; // $address->city = city; $address->landmark = $landmark; $address->district = $district; $address->state = $state; $address->pincode = $pincode; $address->default_status = 1; $address->save(); return response()->json(['success' => true, 'message' => 'address updated successfully','user' => $user_data,'address' => $user_data->address]); } public function addressList(Request $request) { $user_data = $request->user(); $user_id = $user_data['id']; $user_addresses = UserAddress::where('user_id', $user_id)->get(); $data = []; foreach ($user_addresses as $address) { $data[] = array( 'id' => $address->id, 'type' => $address->type, 'default_status' => $address->default_status, 'door_no' => $address->door_no, 'building_name' => $address->building_name, 'street' => $address->street, 'area' => $address->area, 'pincode' => $address->pincode, 'landmark' => $address->landmark, 'district' => $address->district, 'state' => $address->state, ); } return response()->json(['success' => true, 'message' => 'address list', 'data' => $data]); } public function orderAddressList(Request $request) { $user_data = $request->user(); $user_id = $user_data['id']; $order_address = Order::where('user_id', $user_id)->orderBy('created_at','desc')->distinct()->pluck('user_address_detail'); return response()->json(['success' => 'success', 'message' => 'address list', 'data' => $order_address]); } public function changeDefaultAddress(Request $request) { $user_data = $request->user(); $user_id = $user_data['id']; $address_id = $request->address_id; if (empty($address_id)) { return response()->json(['success' => true, 'message' => 'address id required']); } $user_address = UserAddress::find($address_id); $user_address->default_status = 1; $user_address->save(); // $all_address = UserAddress::where('user_id', $user_id)->whereNotIn('id', [$user_address->id])->select('id')->get(); // //return $all_address; // foreach ($all_address as $address) { // $other_address = UserAddress::find($address->id); // $other_address->default_status = 0; // $other_address->save(); // } return response()->json(['success' => true, 'message' => 'default address changed successfully']); } public function editProfile(Request $request) { $user_data = $request->user(); $user_id = $user_data['id']; if (empty($request->name)) { return response()->json(['success' => false, 'message' => 'name required']); } if (empty($request->email)) { return response()->json(['success' => false, 'message' => 'email required']); } $existing_user = User::where('email', $request->email)->first(); if($existing_user != null){ if($existing_user->id != $user_id) return response()->json(['success' => false, 'message' => 'email already exists']); } $user = User::find($user_id); $user->name = $request->name; $user->email = $request->email; $user->save(); return response()->json(['success' => true, 'message' => 'profile updated successfully', 'user' => $user,'address' => $user->address]); } public function editPhoto(Request $request){ $validate = Validator::make($request->all(),[ 'image' => 'required|image', ]); if($validate->fails()){ return response()->json(['status' => 'error','message' => $validate->errors()->first()],400); } $user = $request->user(); $user_now = User::find($user->id); if ($request->hasFile('image')) { $image = $request->file('image'); //return $photo; $image_name = uniqid() . '.' . $image->getClientOriginalExtension(); $destination_path = public_path('user_images'); $image->move($destination_path, $image_name); $user_now->image = $image_name; } $user_now->save(); return response()->json(['success' => true,'message' => 'Image Updated Successfully','user' => $user_now,'address' => $user_now->address],200); } public function logout(Request $request) { $user = $request->user(); $user_id = $user['id']; $user = User::find($user_id); if (!$user) { return response()->json(['success' => false, 'message' => 'invalid user id']); } // $device_id = $request->device_id; // if (empty($device_id)) { // return response()->json(['success' => false, 'message' => 'device id required']); // } // $user->logout_status = 1; // $user->save(); $user_device = UserDevice::where('user_id', $user->id)->delete(); return response()->json(['success' => true, 'message' => 'logged out successfully']); } public function GoogleMap(){ $keyId = env('HERE_API_KEY_ID'); $keySecret = env('HERE_API_KEY_SECRET'); $httpBody = [ "grant_type" => "client_credentials" ]; $httpMethod = "POST"; $httpUrl = 'https://account.api.here.com/oauth2/token'; $oauthNonce = mt_rand(); $oauthTimestamp = time(); $oauthSignatureMethod= "HMAC-SHA256"; $oauthVersion = "1.0"; $baseString = $httpMethod."&". urlencode($httpUrl); $oauth1Param = [ 'oauth_consumer_key' => $keyId, 'oauth_signature_method' => $oauthSignatureMethod, 'oauth_timestamp' => $oauthTimestamp, 'oauth_nonce' => $oauthNonce, 'oauth_version' => $oauthVersion ]; $bodypass = "grant_type=client_credentials"; $paramString = "grant_type=client_credentials". "&oauth_consumer_key=". urlencode($oauth1Param['oauth_consumer_key']). "&oauth_nonce=". urlencode($oauth1Param['oauth_nonce']). "&oauth_signature_method=". urlencode($oauth1Param['oauth_signature_method']). "&oauth_timestamp=". urlencode($oauth1Param['oauth_timestamp']). "&oauth_version=". urlencode($oauth1Param['oauth_version']) ; echo $paramString.PHP_EOL; $baseString = $baseString . "&" . $bodypass . urlencode($paramString); echo $baseString . PHP_EOL; $signingKey= urlencode($keySecret) . "&"; $signature = urlencode( base64_encode( hash_hmac( 'sha256', $baseString, $signingKey, true ) ) ); // $signature = base64_encode(hash_hmac('sha256',$baseString,$signingKey,true)); // echo $signature; $oauth1Param['oauth_signature'] = $signature; echo "RUNTIME SIGNATURE : " . $signature .PHP_EOL; var_dump($oauth1Param); $headerOauth = "OAuth "; $sep=""; foreach ($oauth1Param as $key => $value) { $headerOauth = $headerOauth.$sep.$key."=\"".$value."\""; $sep=","; } echo $headerOauth.PHP_EOL; $response = Http::withHeaders([ 'Authorization' => $headerOauth, ])->withoutVerifying()->post($httpUrl, [ 'grant_type' => 'client_credentials', ]); dd($response); /* $client = new \GuzzleHttp\Client(); // $client = new Client(); try { $res = $client->request($httpMethod, $httpUrl, [ 'form_params'=> $httpBody, 'headers' => [ "Authorization"=> $headerOauth ] ]); echo $res->getStatusCode(); echo $res->getBody(); } catch (ClientException $e) { //echo Psr7\str($e->getRequest()); echo Psr7\str($e->getResponse()); }*/ } public function googleToken(){ $gen_token = GoogleTokenGenerate::generate(); $token = DB::table('map_tokens') ->where('id', 1) ->update(['token' => $gen_token, 'updated_at' => \Carbon\Carbon::now(), ]); return response()->json(['status' => 'success','gen_token' => $gen_token],200); } public function support(Request $request) { $validate = Validator::make($request->all(),[ 'title' => 'required', 'priority' => 'required', 'description' => 'required', ]); if($validate->fails()) { return response()->json(['status' => 'error','message' => $validate->errors()->first()],400); } $user = $request->user(); $enquiry['title'] = $request->title; $enquiry['priority'] = $request->priority; $enquiry['description'] = $request->description; if($user->email) { \Mail::send('demoMailAdmin', ['enquiry' => $enquiry,'user' => $user], function ($m) use ($user){ $m->from($user->email); $m->to('skvewaste@gmail.com')->subject('Enquiry!'); }); return response()->json(['status' => 'success','message' => 'Report submitted successfully'],200); }else{ return response()->json(['status' => 'error','message' => 'Please update your email address! '],400); } } }