shell bypass 403

UnknownSec Shell


name : EloquentCustomerRepository.php
<?php

namespace App\Repositories\Eloquent;

use App\Helpers\Helper;
use App\Models\Customer;

use App\Models\User;
use App\Notifications\WelcomeEmailNotification;
use App\Repositories\Contracts\CustomerRepository;
use Exception;
use Illuminate\Config\Repository;
use Illuminate\Support\Arr;
use App\Exceptions\GeneralException;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Session;
use Throwable;


/**
 * Class EloquentCustomerRepository.
 */
class EloquentCustomerRepository extends EloquentBaseRepository implements CustomerRepository
{


    /**
     * @var Repository
     */
    protected Repository $config;

    /**
     * EloquentCustomerRepository constructor.
     *
     * @param  User  $user
     * @param  Repository  $config
     */
    public function __construct(User $user, Repository $config)
    {
        parent::__construct($user);
        $this->config = $config;
    }

    /**
     * @param  array  $input
     * @param  bool  $confirmed
     *
     * @return User
     * @throws GeneralException
     *
     */
    public function store(array $input, $confirmed = false): User
    {

        /** @var User $user */
        $user = $this->make(Arr::only($input, ['first_name', 'last_name', 'email', 'status', 'timezone', 'locale']));

        if (empty($user->locale)) {
            $user->locale = $this->config->get('app.locale');
        }

        if (empty($user->timezone)) {
            $user->timezone = $this->config->get('app.timezone');
        }

        $user->email_verified_at = now();
        $user->is_admin          = false;
        $user->is_customer       = true;

        if ( ! $this->save($user, $input)) {
            throw new GeneralException(__('locale.exceptions.something_went_wrong'));
        }

        Customer::create([
                'user_id'       => $user->id,
                'phone'         => $input['phone'],
                'notifications' => json_encode([
                        'login'        => 'no',
                        'sender_id'    => 'yes',
                        'keyword'      => 'yes',
                        'subscription' => 'yes',
                        'promotion'    => 'yes',
                        'profile'      => 'yes',
                ]),
        ]);

        if (isset($input['welcome_message'])) {
            $user->notify(new WelcomeEmailNotification($user->first_name, $user->last_name, $user->email, route('login'), $input['password']));
        }

        return $user;
    }


    /**
     * @param  User  $customer
     * @param  array  $input
     *
     * @return User
     * @throws GeneralException
     */
    public function update(User $customer, array $input): User
    {

        $customer->fill(Arr::except($input, 'password'));

        if ( ! $this->save($customer, $input)) {
            throw new GeneralException(__('locale.exceptions.something_went_wrong'));
        }

        return $customer;
    }

    /**
     * @param  User  $user
     * @param  array  $input
     *
     * @return bool
     */
    private function save(User $user, array $input): bool
    {
        if (isset($input['password']) && ! empty($input['password'])) {
            $user->password = Hash::make($input['password']);
        }

        if ( ! $user->save()) {
            return false;
        }

        return true;
    }

    /**
     * update user information
     *
     * @param  User  $customer
     * @param  array  $input
     *
     * @return User
     * @throws GeneralException
     */
    public function updateInformation(User $customer, array $input): User
    {
        $get_customer = Customer::where('user_id', $customer->id)->first();

        if ( ! $get_customer) {
            throw new GeneralException(__('locale.exceptions.something_went_wrong'));
        }

        if (isset($input['notifications']) && count($input['notifications']) > 0) {

            $defaultNotifications = [
                    'login'        => 'no',
                    'sender_id'    => 'no',
                    'keyword'      => 'no',
                    'subscription' => 'no',
                    'promotion'    => 'no',
                    'profile'      => 'no',
            ];

            $notifications          = array_merge($defaultNotifications, $input['notifications']);
            $input['notifications'] = json_encode($notifications);
        }

        $data = $get_customer->update($input);

        if ( ! $data) {
            throw new GeneralException(__('locale.exceptions.something_went_wrong'));
        }

        return $customer;
    }


    /**
     * update permissions
     *
     * @param  User  $customer
     * @param  array  $input
     *
     * @return User
     * @throws GeneralException
     */
    public function permissions(User $customer, array $input): User
    {
        $data = array_values($input['permissions']);

        $status = $customer->customer()->update([
                'permissions' => json_encode($data),
        ]);

        if ( ! $status) {
            throw new GeneralException(__('locale.exceptions.something_went_wrong'));
        }

        return $customer;
    }


    /**
     * @param  User  $customer
     *
     * @return bool
     * @throws GeneralException
     */
    public function destroy(User $customer): bool
    {
        if ( ! $customer->can_delete) {
            throw new GeneralException(__('exceptions.backend.users.first_user_cannot_be_destroyed'));
        }

        if ( ! $customer->delete()) {
            throw new GeneralException(__('exceptions.backend.users.delete'));
        }

        return true;
    }

    /**
     * @param  array  $ids
     *
     * @return mixed
     * @throws Exception|Throwable
     *
     */
    public function batchEnable(array $ids): bool
    {
        DB::transaction(function () use ($ids) {
            if ($this->query()->whereIn('uid', $ids)
                    ->update(['status' => true])
            ) {
                return true;
            }

            throw new GeneralException(__('exceptions.backend.users.update'));
        });

        return true;
    }

    /**
     * @param  array  $ids
     *
     * @return mixed
     * @throws Exception|Throwable
     *
     */
    public function batchDisable(array $ids): bool
    {
        DB::transaction(function () use ($ids) {
            if ($this->query()->whereIn('uid', $ids)
                    ->update(['status' => false])
            ) {
                return true;
            }

            throw new GeneralException(__('exceptions.backend.users.update'));
        });

        return true;
    }


    /*
    |--------------------------------------------------------------------------
    | Version 3.3
    |--------------------------------------------------------------------------
    |
    | Logged in as customer
    |
    */


    /**
     * @throws GeneralException
     */
    public function impersonate(User $customer)
    {
        if ($customer->is_admin) {
            throw new GeneralException(__('locale.customer.admin_cannot_be_impersonated'));
        }

        $authenticatedUser = auth()->user();

        if ($authenticatedUser->id === $customer->id || Session::get('admin_user_id') === $customer->id) {
            return redirect()->route('admin.home');
        }

        if ( ! Session::get('admin_user_id')) {
            session(['admin_user_id' => $authenticatedUser->id]);
            session(['admin_user_name' => $authenticatedUser->displayName()]);
            session(['temp_user_id' => $customer->id]);

            $permissions = collect(json_decode($customer->customer->permissions, true));
            session(['permissions' => $permissions]);
        }

        //Login user
        auth()->loginUsingId($customer->id);

        return redirect(Helper::home_route());
    }
}

© 2025 UnknownSec
afwwrfwafr45458465
Password