diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php index ee5b5958..a3b6aef9 100644 --- a/app/Http/Middleware/TrustProxies.php +++ b/app/Http/Middleware/TrustProxies.php @@ -10,7 +10,7 @@ class TrustProxies extends Middleware /** * The trusted proxies for this application. * - * @var array|string + * @var array|string|null */ protected $proxies; @@ -19,5 +19,5 @@ class TrustProxies extends Middleware * * @var int */ - protected $headers = Request::HEADER_X_FORWARDED_ALL; + protected $headers = Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_AWS_ELB; } diff --git a/composer.json b/composer.json index 4a1389c1..49b2847d 100644 --- a/composer.json +++ b/composer.json @@ -11,22 +11,21 @@ "php": "^7.4|^8.0", "akaunting/laravel-apexcharts": "^2.0", "alexisgeneau/mailvalidate": "dev-master", - "arcanedev/log-viewer": "^8.1", "arrilot/laravel-widgets": "^3.13", "awobaz/compoships": "^2.1", "balping/laravel-hashslug": "^2.2", - "barryvdh/laravel-dompdf": "^0.9", - "barryvdh/laravel-snappy": "^0.4.7", + "barryvdh/laravel-dompdf": "^2.0", + "barryvdh/laravel-snappy": "^1.0", + "bnbwebexpertise/laravel-paybox-gateway": "^1.1", "browner12/helpers": "^3.0", - "cesargb/laravel-cascade-delete": "^1.2", + "cesargb/laravel-cascade-delete": "^1.5", "coduo/php-humanizer": "^4.0", "composer/composer": "^2.0.13", "cornford/googlmapper": "^3.3", "darryldecode/cart": "^4.1", "datatables/datatables": "^1.10", "ddzobov/laravel-pivot-softdeletes": "^2.1", - "dmcbrn/laravel-email-database-log": "^5.2", - "dompdf/dompdf": "^1.0.2", + "dompdf/dompdf": "^2.0.3", "dyrynda/laravel-cascade-soft-deletes": "^4.1", "eduardokum/laravel-mail-auto-embed": "^2.0", "erjanmx/laravel-migrate-check": "^2.1", @@ -34,7 +33,7 @@ "fideloper/proxy": "^4.0", "geo6/geocoder-php-addok-provider": "^1.1", "gzero/eloquent-tree": "^3.1", - "hassankhan/config": "^2.1", + "hassankhan/config": "^3.1", "htmlmin/htmlmin": "^9.0", "intervention/image": "^2.5", "intervention/imagecache": "^2.4", @@ -45,24 +44,23 @@ "kmlaravel/laravel-geographical-calculator": "^2.1", "knplabs/knp-snappy": "^1.2", "laracasts/utilities": "^3.0", - "laravel/framework": "^8.42", + "laravel/framework": "^9.0", "laravel/helpers": "^1.1", "laravel/scout": "^9.1", "laravel/tinker": "^2.5", - "laravel/ui": "^3.2", + "laravel/ui": "^3.0", "laravelcollective/html": "^6.0", "laravolt/avatar": "^4.1", - "lavary/laravel-menu": "1.8.1", + "lavary/laravel-menu": "1.8.3", "league/climate": "^3.5", - "league/period": "^4.9", + "league/period": "^5.1", "livewire/livewire": "^2.4", "maatwebsite/excel": "^3.1", "mad-web/laravel-initializer": "^3.3", - "maximeb/laravel-8-paybox-gateway": "^1.1", - "moneyphp/money": "^3.3", + "moneyphp/money": "^4.1", "mpdf/mpdf": "^8.0", - "mpociot/teamwork": "^6.1", - "nicmart/tree": "^0.3", + "mpociot/teamwork": "^7.0", + "nicmart/tree": "^0.7", "nicolaslopezj/searchable": "^1.13", "orangehill/iseed": "^3.0", "php-console/php-console": "^3.1", @@ -75,20 +73,20 @@ "respect/validation": "^2.2", "rinvex/laravel-categories": "^6.0", "rinvex/laravel-tags": "^6.0", - "rutorika/sortable": "^8.0", - "santigarcor/laratrust": "^6.0", + "rutorika/sortable": "^9.0", + "santigarcor/laratrust": "^7.1", "sebastienheyd/boilerplate": "^7.5", "smajohusic/laravel-mail-logger": "^1.0", "softcreatr/php-mime-detector": "^3.2", "spatie/eloquent-sortable": "^4.0", "spatie/image-optimizer": "^1.4", - "spatie/laravel-activitylog": "^3.6", - "spatie/laravel-backup": "^7.0", + "spatie/laravel-activitylog": "^4.7", + "spatie/laravel-backup": "^8.1", "spatie/laravel-collection-macros": "^7.12", "spatie/laravel-cookie-consent": "^3.2", "spatie/laravel-database-mail-templates": "^3.5", - "spatie/laravel-mail-preview": "^4.0", - "spatie/laravel-medialibrary": "^9.6", + "spatie/laravel-mail-preview": "^6.0", + "spatie/laravel-medialibrary": "^10.7", "spatie/laravel-stats": "^2.0", "staudenmeir/belongs-to-through": "^2.11", "staudenmeir/eloquent-has-many-deep": "^1.13", @@ -99,34 +97,32 @@ "unicodeveloper/laravel-password": "^1.0", "unisharp/laravel-filemanager": "^2.5", "venturecraft/revisionable": "^1.39", - "watson/rememberable": "^5.0", + "watson/rememberable": "^6.0", "wildside/userstamps": "^2.1", "yadahan/laravel-authentication-log": "^1.2", "yajra/laravel-datatables": "^1.5" }, "require-dev": { - "barryvdh/laravel-debugbar": "^3.5", + "barryvdh/laravel-debugbar": "^3.8", "bestmomo/laravel5-artisan-language": "^0.3", - "beyondcode/laravel-dump-server": "^1.0", - "enlightn/enlightn": "^1.16", - "facade/ignition": "^2.9", + "beyondcode/laravel-dump-server": "^1.7", "fakerphp/faker": "^1.13", "fossbarrow/laravel-phpcs": "dev-main", "kevincobain2000/laravel-erd": "^1.3", + "kitloong/laravel-migrations-generator": "^6.0", "mockery/mockery": "^1.4.2", - "nunomaduro/collision": "^5.4", - "nunomaduro/larastan": "^0.7", + "nunomaduro/collision": "^7.0", + "nunomaduro/larastan": "^2.1", "nunomaduro/laravel-mojito": "^0.2.6", - "nunomaduro/phpinsights": "^2.2", + "nunomaduro/phpinsights": "^2.6", "orangehill/iseed": "^3.0", - "oscarafdev/migrations-generator": "^2.0", "phpmetrics/phpmetrics": "^2.7", - "phpunit/phpunit": "^9.3.3", - "spatie/laravel-web-tinker": "^1.4", + "phpunit/phpunit": "^9.5", + "spatie/laravel-ignition": "^1.0", + "spatie/laravel-web-tinker": "^1.7", "squizlabs/php_codesniffer": "3.*", "staudenmeir/dusk-updater": "^1.2", - "wnx/laravel-stats": "^2.4", - "wulfheart/pretty_routes": "^0.3.0" + "wnx/laravel-stats": "^2.11" }, "config": { "optimize-autoloader": true, diff --git a/config/app.php b/config/app.php index 5cb0062d..db6ef34e 100644 --- a/config/app.php +++ b/config/app.php @@ -166,7 +166,7 @@ return [ * Package Service Providers... */ Darryldecode\Cart\CartServiceProvider::class, - Devpark\PayboxGateway\Providers\PayboxServiceProvider::class, + // Devpark\PayboxGateway\Providers\PayboxServiceProvider::class, /* * Application Service Providers... diff --git a/config/lfm.php b/config/lfm.php new file mode 100644 index 00000000..5c418126 --- /dev/null +++ b/config/lfm.php @@ -0,0 +1,179 @@ + http://unisharp.github.io/laravel-filemanager/config +| offline => vendor/unisharp/laravel-filemanager/docs/config.md + */ + +return [ + /* + |-------------------------------------------------------------------------- + | Routing + |-------------------------------------------------------------------------- + */ + + 'use_package_routes' => true, + + /* + |-------------------------------------------------------------------------- + | Shared folder / Private folder + |-------------------------------------------------------------------------- + | + | If both options are set to false, then shared folder will be activated. + | + */ + + 'allow_private_folder' => true, + + // Flexible way to customize client folders accessibility + // If you want to customize client folders, publish tag="lfm_handler" + // Then you can rewrite userField function in App\Handler\ConfigHandler class + // And set 'user_field' to App\Handler\ConfigHandler::class + // Ex: The private folder of user will be named as the user id. + 'private_folder_name' => UniSharp\LaravelFilemanager\Handlers\ConfigHandler::class, + + 'allow_shared_folder' => true, + + 'shared_folder_name' => 'shares', + + /* + |-------------------------------------------------------------------------- + | Folder Names + |-------------------------------------------------------------------------- + */ + + 'folder_categories' => [ + 'file' => [ + 'folder_name' => 'files', + 'startup_view' => 'list', + 'max_size' => 50000, // size in KB + 'thumb' => true, + 'thumb_width' => 80, + 'thumb_height' => 80, + 'valid_mime' => [ + 'image/jpeg', + 'image/pjpeg', + 'image/png', + 'image/gif', + 'application/pdf', + 'text/plain', + ], + ], + 'image' => [ + 'folder_name' => 'photos', + 'startup_view' => 'grid', + 'max_size' => 50000, // size in KB + 'thumb' => true, + 'thumb_width' => 80, + 'thumb_height' => 80, + 'valid_mime' => [ + 'image/jpeg', + 'image/pjpeg', + 'image/png', + 'image/gif', + ], + ], + ], + + /* + |-------------------------------------------------------------------------- + | Pagination + |-------------------------------------------------------------------------- + */ + + 'paginator' => [ + 'perPage' => 30, + ], + + /* + |-------------------------------------------------------------------------- + | Upload / Validation + |-------------------------------------------------------------------------- + */ + + 'disk' => 'public', + + 'rename_file' => false, + + 'rename_duplicates' => false, + + 'alphanumeric_filename' => false, + + 'alphanumeric_directory' => false, + + 'should_validate_size' => false, + + 'should_validate_mime' => true, + + // behavior on files with identical name + // setting it to true cause old file replace with new one + // setting it to false show `error-file-exist` error and stop upload + 'over_write_on_duplicate' => false, + + // mimetypes of executables to prevent from uploading + 'disallowed_mimetypes' => ['text/x-php', 'text/html', 'text/plain'], + + // Item Columns + 'item_columns' => ['name', 'url', 'time', 'icon', 'is_file', 'is_image', 'thumb_url'], + + /* + |-------------------------------------------------------------------------- + | Thumbnail + |-------------------------------------------------------------------------- + */ + + // If true, image thumbnails would be created during upload + 'should_create_thumbnails' => true, + + 'thumb_folder_name' => 'thumbs', + + // Create thumbnails automatically only for listed types. + 'raster_mimetypes' => [ + 'image/jpeg', + 'image/pjpeg', + 'image/png', + ], + + 'thumb_img_width' => 200, // px + + 'thumb_img_height' => 200, // px + + /* + |-------------------------------------------------------------------------- + | File Extension Information + |-------------------------------------------------------------------------- + */ + + 'file_type_array' => [ + 'pdf' => 'Adobe Acrobat', + 'doc' => 'Microsoft Word', + 'docx' => 'Microsoft Word', + 'xls' => 'Microsoft Excel', + 'xlsx' => 'Microsoft Excel', + 'zip' => 'Archive', + 'gif' => 'GIF Image', + 'jpg' => 'JPEG Image', + 'jpeg' => 'JPEG Image', + 'png' => 'PNG Image', + 'ppt' => 'Microsoft PowerPoint', + 'pptx' => 'Microsoft PowerPoint', + ], + + /* + |-------------------------------------------------------------------------- + | php.ini override + |-------------------------------------------------------------------------- + | + | These values override your php.ini settings before uploading files + | Set these to false to ingnore and apply your php.ini settings + | + | Please note that the 'upload_max_filesize' & 'post_max_size' + | directives are not supported. + */ + 'php_ini_overrides' => [ + 'memory_limit' => '256M', + ], +]; diff --git a/config/paybox.php b/config/paybox.php index ab3e1d16..7b2a66f3 100644 --- a/config/paybox.php +++ b/config/paybox.php @@ -5,6 +5,12 @@ return [ * Whether test environment is enabled */ 'test' => env('PAYBOX_TEST', false), + + /* + * 00103: Paybox Direct + * 00104: Paybox Direct Plus + */ + 'direct_version' => env('PAYBOX_DIRECT_VERSION', '00104'), /* * Site number (provided by Paybox) @@ -22,8 +28,7 @@ return [ 'id' => env('PAYBOX_ID', ''), /* - * Password for Paybox back-office (It's required for Paybox direct - when you use - * capturing, otherwise it won't be used) + * HMAC authentication key - it should be generated in Paybox merchant panel */ 'back_office_password' => env('PAYBOX_BACK_OFFICE_PASSWORD', ''), @@ -38,20 +43,44 @@ return [ */ 'public_key' => storage_path('paybox/pubkey.pem'), + /* + * Application Prefix for REFABONNE field. + * Prepended to wallet_id + */ + 'wallet_prefix' => env('PAYBOX_WALLET_PREFIX', 'WALLET_'), + /* * Default return fields when going back from Paybox. You can change here keys as you want, * you can add also more values from ResponseField class */ 'return_fields' => [ - 'amount' => \Devpark\PayboxGateway\ResponseField::AMOUNT, - 'authorization_number' => \Devpark\PayboxGateway\ResponseField::AUTHORIZATION_NUMBER, - 'order_number' => \Devpark\PayboxGateway\ResponseField::ORDER_NUMBER, - 'response_code' => \Devpark\PayboxGateway\ResponseField::RESPONSE_CODE, - 'payment_type' => \Devpark\PayboxGateway\ResponseField::PAYMENT_TYPE, - 'call_number' => \Devpark\PayboxGateway\ResponseField::PAYBOX_CALL_NUMBER, - 'transaction_number' => \Devpark\PayboxGateway\ResponseField::TRANSACTION_NUMBER, + 'amount' => \Bnb\PayboxGateway\ResponseField::AMOUNT, + 'authorization_number' => \Bnb\PayboxGateway\ResponseField::AUTHORIZATION_NUMBER, + 'order_number' => \Bnb\PayboxGateway\ResponseField::ORDER_NUMBER, + 'response_code' => \Bnb\PayboxGateway\ResponseField::RESPONSE_CODE, + 'payment_type' => \Bnb\PayboxGateway\ResponseField::PAYMENT_TYPE, + 'call_number' => \Bnb\PayboxGateway\ResponseField::PAYBOX_CALL_NUMBER, + 'transaction_number' => \Bnb\PayboxGateway\ResponseField::TRANSACTION_NUMBER, // signature should be always last return field - 'signature' => \Devpark\PayboxGateway\ResponseField::SIGNATURE, + 'signature' => \Bnb\PayboxGateway\ResponseField::SIGNATURE, + ], + + /* + * Notifications settings for server-to-server communication about Paybox Direct payments status + */ + 'notifications' => [ + 'enabled' => filter_var(env('PAYBOX_NOTIFICATIONS_ENABLED', true), FILTER_VALIDATE_BOOLEAN), + 'queue' => [ + 'connection' => env('PAYBOX_NOTIFICATIONS_QUEUE_CONNECTION'), + 'queue' => env('PAYBOX_NOTIFICATIONS_QUEUE_NAME'), + ], + 'retry_after' => (int)env('PAYBOX_NOTIFICATIONS_RETRY_AFTER', 60), + 'url' => env('PAYBOX_NOTIFICATIONS_URL'), + 'notify_to' => env('PAYBOX_NOTIFICATIONS_NOTIFY_TO'), + 'notify_from' => [ + 'address' => env('PAYBOX_NOTIFICATIONS_NOTIFY_FROM_ADDRESS'), + 'name' => env('PAYBOX_NOTIFICATIONS_NOTIFY_FROM_NAME'), + ], ], /* diff --git a/config/trustedproxy.php b/config/trustedproxy.php deleted file mode 100644 index e618ae24..00000000 --- a/config/trustedproxy.php +++ /dev/null @@ -1,50 +0,0 @@ - null, // [,], '*', ',' - - /* - * To trust one or more specific proxies that connect - * directly to your server, use an array or a string separated by comma of IP addresses: - */ - // 'proxies' => ['192.168.1.1'], - // 'proxies' => '192.168.1.1, 192.168.1.2', - - /* - * Or, to trust all proxies that connect - * directly to your server, use a "*" - */ - // 'proxies' => '*', - - /* - * Which headers to use to detect proxy related data (For, Host, Proto, Port) - * - * Options include: - * - * - Illuminate\Http\Request::HEADER_X_FORWARDED_ALL (use all x-forwarded-* headers to establish trust) - * - Illuminate\Http\Request::HEADER_FORWARDED (use the FORWARDED header to establish trust) - * - Illuminate\Http\Request::HEADER_X_FORWARDED_AWS_ELB (If you are using AWS Elastic Load Balancer) - * - * - 'HEADER_X_FORWARDED_ALL' (use all x-forwarded-* headers to establish trust) - * - 'HEADER_FORWARDED' (use the FORWARDED header to establish trust) - * - 'HEADER_X_FORWARDED_AWS_ELB' (If you are using AWS Elastic Load Balancer) - * - * @link https://symfony.com/doc/current/deployment/proxies.html - */ - 'headers' => Illuminate\Http\Request::HEADER_X_FORWARDED_ALL, - -];