Просмотр исходного кода

Merge pull request #202 from andrewdwallo/upgrade/laravel-12

Upgrade/laravel 12
3.x
Andrew Wallo 1 месяц назад
Родитель
Сommit
597d943ca4
Аккаунт пользователя с таким Email не найден

+ 4
- 2
.env.example Просмотреть файл

@@ -12,6 +12,8 @@ APP_FAKER_LOCALE=en_US
12 12
 APP_MAINTENANCE_DRIVER=file
13 13
 APP_MAINTENANCE_STORE=database
14 14
 
15
+PHP_CLI_SERVER_WORKERS=4
16
+
15 17
 BCRYPT_ROUNDS=12
16 18
 
17 19
 LOG_CHANNEL=stack
@@ -37,7 +39,7 @@ FILESYSTEM_DISK=local
37 39
 QUEUE_CONNECTION=database
38 40
 
39 41
 CACHE_STORE=database
40
-CACHE_PREFIX=
42
+# CACHE_PREFIX=
41 43
 
42 44
 MEMCACHED_HOST=127.0.0.1
43 45
 
@@ -47,11 +49,11 @@ REDIS_PASSWORD=null
47 49
 REDIS_PORT=6379
48 50
 
49 51
 MAIL_MAILER=log
52
+MAIL_SCHEME=null
50 53
 MAIL_HOST=127.0.0.1
51 54
 MAIL_PORT=2525
52 55
 MAIL_USERNAME=null
53 56
 MAIL_PASSWORD=null
54
-MAIL_ENCRYPTION=null
55 57
 MAIL_FROM_ADDRESS="hello@example.com"
56 58
 MAIL_FROM_NAME="${APP_NAME}"
57 59
 

+ 15
- 10
.gitignore Просмотреть файл

@@ -1,21 +1,26 @@
1
+*.log
2
+.DS_Store
3
+.env
4
+.env.backup
5
+.env.production
6
+.phpactor.json
7
+.phpunit.result.cache
8
+/.fleet
9
+/.idea
10
+/.nova
1 11
 /.phpunit.cache
12
+/.vscode
13
+/.zed
14
+/auth.json
2 15
 /node_modules
3 16
 /public/build
4 17
 /public/hot
5 18
 /public/storage
6 19
 /storage/*.key
20
+/storage/pail
7 21
 /vendor
8
-.env
9
-.env.backup
10
-.env.production
11
-.phpunit.result.cache
12 22
 Homestead.json
13 23
 Homestead.yaml
14
-auth.json
15
-npm-debug.log
16
-yarn-error.log
17
-/.fleet
18
-/.idea
19
-/.vscode
24
+Thumbs.db
20 25
 /public/css/
21 26
 /public/js/

+ 5
- 2
app/Models/Accounting/Account.php Просмотреть файл

@@ -13,6 +13,7 @@ use App\Observers\AccountObserver;
13 13
 use App\Utilities\Currency\CurrencyAccessor;
14 14
 use Database\Factories\Accounting\AccountFactory;
15 15
 use Illuminate\Database\Eloquent\Attributes\ObservedBy;
16
+use Illuminate\Database\Eloquent\Attributes\Scope;
16 17
 use Illuminate\Database\Eloquent\Builder;
17 18
 use Illuminate\Database\Eloquent\Casts\Attribute;
18 19
 use Illuminate\Database\Eloquent\Factories\Factory;
@@ -86,7 +87,8 @@ class Account extends Model
86 87
         return $this->hasOne(Adjustment::class, 'account_id');
87 88
     }
88 89
 
89
-    public function scopeBudgetable(Builder $query): Builder
90
+    #[Scope]
91
+    protected function budgetable(Builder $query): Builder
90 92
     {
91 93
         return $query->whereIn('category', [
92 94
             AccountCategory::Revenue,
@@ -111,7 +113,8 @@ class Account extends Model
111 113
             ->where('currency_code', CurrencyAccessor::getDefaultCurrency());
112 114
     }
113 115
 
114
-    public function scopeWithLastTransactionDate(Builder $query): Builder
116
+    #[Scope]
117
+    protected function withLastTransactionDate(Builder $query): Builder
115 118
     {
116 119
         return $query->addSelect([
117 120
             'last_transaction_date' => JournalEntry::select(DB::raw('MAX(transactions.posted_at)'))

+ 3
- 1
app/Models/Accounting/Bill.php Просмотреть файл

@@ -22,6 +22,7 @@ use Filament\Actions\MountableAction;
22 22
 use Filament\Actions\ReplicateAction;
23 23
 use Illuminate\Database\Eloquent\Attributes\CollectedBy;
24 24
 use Illuminate\Database\Eloquent\Attributes\ObservedBy;
25
+use Illuminate\Database\Eloquent\Attributes\Scope;
25 26
 use Illuminate\Database\Eloquent\Builder;
26 27
 use Illuminate\Database\Eloquent\Model;
27 28
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
@@ -196,7 +197,8 @@ class Bill extends Document
196 197
         return $this->initialTransaction()->exists();
197 198
     }
198 199
 
199
-    public function scopeUnpaid(Builder $query): Builder
200
+    #[Scope]
201
+    protected function unpaid(Builder $query): Builder
200 202
     {
201 203
         return $query->whereIn('status', [
202 204
             BillStatus::Open,

+ 9
- 4
app/Models/Accounting/Budget.php Просмотреть файл

@@ -12,6 +12,7 @@ use App\Models\User;
12 12
 use Filament\Actions\Action;
13 13
 use Filament\Actions\MountableAction;
14 14
 use Filament\Actions\ReplicateAction;
15
+use Illuminate\Database\Eloquent\Attributes\Scope;
15 16
 use Illuminate\Database\Eloquent\Builder;
16 17
 use Illuminate\Database\Eloquent\Casts\Attribute;
17 18
 use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -136,22 +137,26 @@ class Budget extends Model
136 137
         return $this->allocations()->exists();
137 138
     }
138 139
 
139
-    public function scopeDraft(Builder $query): Builder
140
+    #[Scope]
141
+    protected function draft(Builder $query): Builder
140 142
     {
141 143
         return $query->where('status', BudgetStatus::Draft);
142 144
     }
143 145
 
144
-    public function scopeActive(Builder $query): Builder
146
+    #[Scope]
147
+    protected function active(Builder $query): Builder
145 148
     {
146 149
         return $query->where('status', BudgetStatus::Active);
147 150
     }
148 151
 
149
-    public function scopeClosed(Builder $query): Builder
152
+    #[Scope]
153
+    protected function closed(Builder $query): Builder
150 154
     {
151 155
         return $query->where('status', BudgetStatus::Closed);
152 156
     }
153 157
 
154
-    public function scopeCurrentlyActive(Builder $query): Builder
158
+    #[Scope]
159
+    protected function currentlyActive(Builder $query): Builder
155 160
     {
156 161
         return $query->active()
157 162
             ->where('start_date', '<=', company_now())

+ 3
- 1
app/Models/Accounting/Estimate.php Просмотреть файл

@@ -21,6 +21,7 @@ use Filament\Actions\ReplicateAction;
21 21
 use Filament\Notifications\Notification;
22 22
 use Illuminate\Database\Eloquent\Attributes\CollectedBy;
23 23
 use Illuminate\Database\Eloquent\Attributes\ObservedBy;
24
+use Illuminate\Database\Eloquent\Attributes\Scope;
24 25
 use Illuminate\Database\Eloquent\Builder;
25 26
 use Illuminate\Database\Eloquent\Casts\Attribute;
26 27
 use Illuminate\Database\Eloquent\Model;
@@ -212,7 +213,8 @@ class Estimate extends Document
212 213
             && ! $this->wasConverted();
213 214
     }
214 215
 
215
-    public function scopeActive(Builder $query): Builder
216
+    #[Scope]
217
+    protected function active(Builder $query): Builder
216 218
     {
217 219
         return $query->whereIn('status', [
218 220
             EstimateStatus::Unsent,

+ 7
- 3
app/Models/Accounting/Invoice.php Просмотреть файл

@@ -26,6 +26,7 @@ use Filament\Notifications\Notification;
26 26
 use Filament\Support\Enums\Alignment;
27 27
 use Illuminate\Database\Eloquent\Attributes\CollectedBy;
28 28
 use Illuminate\Database\Eloquent\Attributes\ObservedBy;
29
+use Illuminate\Database\Eloquent\Attributes\Scope;
29 30
 use Illuminate\Database\Eloquent\Builder;
30 31
 use Illuminate\Database\Eloquent\Casts\Attribute;
31 32
 use Illuminate\Database\Eloquent\Model;
@@ -181,13 +182,15 @@ class Invoice extends Document
181 182
         return $this->amount_due;
182 183
     }
183 184
 
184
-    public function scopeUnpaid(Builder $query): Builder
185
+    #[Scope]
186
+    protected function unpaid(Builder $query): Builder
185 187
     {
186 188
         return $query->whereIn('status', InvoiceStatus::unpaidStatuses());
187 189
     }
188 190
 
189 191
     // TODO: Consider storing the numeric part of the invoice number separately
190
-    public function scopeByNumber(Builder $query, string $number): Builder
192
+    #[Scope]
193
+    protected function byNumber(Builder $query, string $number): Builder
191 194
     {
192 195
         $invoicePrefix = DocumentDefault::invoice()->first()->number_prefix ?? '';
193 196
 
@@ -197,7 +200,8 @@ class Invoice extends Document
197 200
         });
198 201
     }
199 202
 
200
-    public function scopeOverdue(Builder $query): Builder
203
+    #[Scope]
204
+    protected function overdue(Builder $query): Builder
201 205
     {
202 206
         return $query
203 207
             ->unpaid()

+ 11
- 5
app/Models/Setting/DocumentDefault.php Просмотреть файл

@@ -10,6 +10,7 @@ use App\Enums\Setting\Font;
10 10
 use App\Enums\Setting\PaymentTerms;
11 11
 use App\Enums\Setting\Template;
12 12
 use Database\Factories\Setting\DocumentDefaultFactory;
13
+use Illuminate\Database\Eloquent\Attributes\Scope;
13 14
 use Illuminate\Database\Eloquent\Builder;
14 15
 use Illuminate\Database\Eloquent\Casts\AsArrayObject;
15 16
 use Illuminate\Database\Eloquent\Casts\Attribute;
@@ -73,27 +74,32 @@ class DocumentDefault extends Model
73 74
         });
74 75
     }
75 76
 
76
-    public function scopeType(Builder $query, string | DocumentType $type): Builder
77
+    #[Scope]
78
+    protected function type(Builder $query, string | DocumentType $type): Builder
77 79
     {
78 80
         return $query->where('type', $type);
79 81
     }
80 82
 
81
-    public function scopeInvoice(Builder $query): Builder
83
+    #[Scope]
84
+    protected function invoice(Builder $query): Builder
82 85
     {
83 86
         return $query->type(DocumentType::Invoice);
84 87
     }
85 88
 
86
-    public function scopeRecurringInvoice(Builder $query): Builder
89
+    #[Scope]
90
+    protected function recurringInvoice(Builder $query): Builder
87 91
     {
88 92
         return $query->type(DocumentType::RecurringInvoice);
89 93
     }
90 94
 
91
-    public function scopeBill(Builder $query): Builder
95
+    #[Scope]
96
+    protected function bill(Builder $query): Builder
92 97
     {
93 98
         return $query->type(DocumentType::Bill);
94 99
     }
95 100
 
96
-    public function scopeEstimate(Builder $query): Builder
101
+    #[Scope]
102
+    protected function estimate(Builder $query): Builder
97 103
     {
98 104
         return $query->type(DocumentType::Estimate);
99 105
     }

+ 2
- 2
bootstrap/app.php Просмотреть файл

@@ -10,9 +10,9 @@ return Application::configure(basePath: dirname(__DIR__))
10 10
         api: __DIR__ . '/../routes/api.php',
11 11
         commands: __DIR__ . '/../routes/console.php',
12 12
     )
13
-    ->withMiddleware(function (Middleware $middleware) {
13
+    ->withMiddleware(function (Middleware $middleware): void {
14 14
         //
15 15
     })
16
-    ->withExceptions(function (Exceptions $exceptions) {
16
+    ->withExceptions(function (Exceptions $exceptions): void {
17 17
         //
18 18
     })->create();

+ 19
- 8
composer.json Просмотреть файл

@@ -1,4 +1,5 @@
1 1
 {
2
+    "$schema": "https://getcomposer.org/schema.json",
2 3
     "name": "andrewdwallo/erpsaas",
3 4
     "type": "project",
4 5
     "description": "The skeleton application for the Laravel framework.",
@@ -11,7 +12,7 @@
11 12
         "php": "^8.2",
12 13
         "ext-bcmath": "*",
13 14
         "ext-intl": "*",
14
-        "akaunting/laravel-money": "^5.2",
15
+        "akaunting/laravel-money": "^6.0.2",
15 16
         "andrewdwallo/filament-companies": "^4.0",
16 17
         "andrewdwallo/filament-selectify": "^2.0",
17 18
         "andrewdwallo/transmatic": "^1.1",
@@ -21,21 +22,21 @@
21 22
         "fakerphp/faker": "^1.24",
22 23
         "filament/filament": "^3.2",
23 24
         "guava/filament-clusters": "^1.1",
24
-        "guzzlehttp/guzzle": "^7.8",
25 25
         "jaocero/radio-deck": "^1.2",
26
-        "laravel/framework": "^11.0",
26
+        "laravel/framework": "^12.0",
27 27
         "laravel/sanctum": "^4.0",
28
-        "laravel/tinker": "^2.9",
28
+        "laravel/tinker": "^2.10.1",
29 29
         "squirephp/model": "^3.4",
30 30
         "squirephp/repository": "^3.4",
31 31
         "symfony/intl": "^6.3"
32 32
     },
33 33
     "require-dev": {
34 34
         "barryvdh/laravel-debugbar": "^3.15",
35
-        "laravel/pint": "^1.13",
36
-        "laravel/sail": "^1.26",
35
+        "laravel/pail": "^1.2.2",
36
+        "laravel/pint": "^1.24",
37
+        "laravel/sail": "^1.41",
37 38
         "mockery/mockery": "^1.6",
38
-        "nunomaduro/collision": "^8.0",
39
+        "nunomaduro/collision": "^8.6",
39 40
         "pestphp/pest": "^3.0",
40 41
         "pestphp/pest-plugin-livewire": "^3.0",
41 42
         "spatie/laravel-ignition": "^2.4",
@@ -69,7 +70,17 @@
69 70
             "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
70 71
         ],
71 72
         "post-create-project-cmd": [
72
-            "@php artisan key:generate --ansi"
73
+            "@php artisan key:generate --ansi",
74
+            "@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",
75
+            "@php artisan migrate --graceful --ansi"
76
+        ],
77
+        "dev": [
78
+            "Composer\\Config::disableProcessTimeout",
79
+            "npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1\" \"php artisan pail --timeout=0\" \"npm run dev\" --names=server,queue,logs,vite --kill-others"
80
+        ],
81
+        "test": [
82
+            "@php artisan config:clear --ansi",
83
+            "@php artisan test"
73 84
         ]
74 85
     },
75 86
     "extra": {

+ 786
- 410
composer.lock
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 1
- 1
config/app.php Просмотреть файл

@@ -101,7 +101,7 @@ return [
101 101
 
102 102
     'previous_keys' => [
103 103
         ...array_filter(
104
-            explode(',', env('APP_PREVIOUS_KEYS', ''))
104
+            explode(',', (string) env('APP_PREVIOUS_KEYS', ''))
105 105
         ),
106 106
     ],
107 107
 

+ 1
- 1
config/auth.php Просмотреть файл

@@ -104,7 +104,7 @@ return [
104 104
     | Password Confirmation Timeout
105 105
     |--------------------------------------------------------------------------
106 106
     |
107
-    | Here you may define the amount of seconds before a password confirmation
107
+    | Here you may define the number of seconds before a password confirmation
108 108
     | window expires and users are asked to re-enter their password via the
109 109
     | confirmation screen. By default, the timeout lasts for three hours.
110 110
     |

+ 5
- 4
config/cache.php Просмотреть файл

@@ -26,7 +26,7 @@ return [
26 26
     | well as their drivers. You may even define multiple stores for the
27 27
     | same cache driver to group types of items stored in your caches.
28 28
     |
29
-    | Supported drivers: "apc", "array", "database", "file", "memcached",
29
+    | Supported drivers: "array", "database", "file", "memcached",
30 30
     |                    "redis", "dynamodb", "octane", "null"
31 31
     |
32 32
     */
@@ -40,9 +40,10 @@ return [
40 40
 
41 41
         'database' => [
42 42
             'driver' => 'database',
43
+            'connection' => env('DB_CACHE_CONNECTION'),
43 44
             'table' => env('DB_CACHE_TABLE', 'cache'),
44
-            'connection' => env('DB_CACHE_CONNECTION', null),
45
-            'lock_connection' => env('DB_CACHE_LOCK_CONNECTION', null),
45
+            'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'),
46
+            'lock_table' => env('DB_CACHE_LOCK_TABLE'),
46 47
         ],
47 48
 
48 49
         'file' => [
@@ -102,6 +103,6 @@ return [
102 103
     |
103 104
     */
104 105
 
105
-    'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_cache_'),
106
+    'prefix' => env('CACHE_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')) . '-cache-'),
106 107
 
107 108
 ];

+ 5
- 1
config/database.php Просмотреть файл

@@ -37,6 +37,9 @@ return [
37 37
             'database' => env('DB_DATABASE', database_path('database.sqlite')),
38 38
             'prefix' => '',
39 39
             'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
40
+            'busy_timeout' => null,
41
+            'journal_mode' => null,
42
+            'synchronous' => null,
40 43
         ],
41 44
 
42 45
         'mysql' => [
@@ -144,7 +147,8 @@ return [
144 147
 
145 148
         'options' => [
146 149
             'cluster' => env('REDIS_CLUSTER', 'redis'),
147
-            'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'),
150
+            'prefix' => env('REDIS_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')) . '-database-'),
151
+            'persistent' => env('REDIS_PERSISTENT', false),
148 152
         ],
149 153
 
150 154
         'default' => [

+ 6
- 2
config/filesystems.php Просмотреть файл

@@ -24,7 +24,7 @@ return [
24 24
     | may even configure multiple disks for the same driver. Examples for
25 25
     | most supported storage drivers are configured here for reference.
26 26
     |
27
-    | Supported Drivers: "local", "ftp", "sftp", "s3"
27
+    | Supported drivers: "local", "ftp", "sftp", "s3"
28 28
     |
29 29
     */
30 30
 
@@ -32,8 +32,10 @@ return [
32 32
 
33 33
         'local' => [
34 34
             'driver' => 'local',
35
-            'root' => storage_path('app'),
35
+            'root' => storage_path('app/private'),
36
+            'serve' => true,
36 37
             'throw' => false,
38
+            'report' => false,
37 39
         ],
38 40
 
39 41
         'public' => [
@@ -42,6 +44,7 @@ return [
42 44
             'url' => env('APP_URL') . '/storage',
43 45
             'visibility' => 'public',
44 46
             'throw' => false,
47
+            'report' => false,
45 48
         ],
46 49
 
47 50
         's3' => [
@@ -54,6 +57,7 @@ return [
54 57
             'endpoint' => env('AWS_ENDPOINT'),
55 58
             'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
56 59
             'throw' => false,
60
+            'report' => false,
57 61
         ],
58 62
 
59 63
     ],

+ 4
- 4
config/logging.php Просмотреть файл

@@ -45,7 +45,7 @@ return [
45 45
     | utilizes the Monolog PHP logging library, which includes a variety
46 46
     | of powerful log handlers and formatters that you're free to use.
47 47
     |
48
-    | Available Drivers: "single", "daily", "slack", "syslog",
48
+    | Available drivers: "single", "daily", "slack", "syslog",
49 49
     |                    "errorlog", "monolog", "custom", "stack"
50 50
     |
51 51
     */
@@ -54,7 +54,7 @@ return [
54 54
 
55 55
         'stack' => [
56 56
             'driver' => 'stack',
57
-            'channels' => explode(',', env('LOG_STACK', 'single')),
57
+            'channels' => explode(',', (string) env('LOG_STACK', 'single')),
58 58
             'ignore_exceptions' => false,
59 59
         ],
60 60
 
@@ -98,10 +98,10 @@ return [
98 98
             'driver' => 'monolog',
99 99
             'level' => env('LOG_LEVEL', 'debug'),
100 100
             'handler' => StreamHandler::class,
101
-            'formatter' => env('LOG_STDERR_FORMATTER'),
102
-            'with' => [
101
+            'handler_with' => [
103 102
                 'stream' => 'php://stderr',
104 103
             ],
104
+            'formatter' => env('LOG_STDERR_FORMATTER'),
105 105
             'processors' => [PsrLogMessageProcessor::class],
106 106
         ],
107 107
 

+ 18
- 3
config/mail.php Просмотреть файл

@@ -30,7 +30,8 @@ return [
30 30
     | your mailers below. You may also add additional mailers if needed.
31 31
     |
32 32
     | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2",
33
-    |            "postmark", "log", "array", "failover", "roundrobin"
33
+    |            "postmark", "resend", "log", "array",
34
+    |            "failover", "roundrobin"
34 35
     |
35 36
     */
36 37
 
@@ -38,14 +39,14 @@ return [
38 39
 
39 40
         'smtp' => [
40 41
             'transport' => 'smtp',
42
+            'scheme' => env('MAIL_SCHEME'),
41 43
             'url' => env('MAIL_URL'),
42 44
             'host' => env('MAIL_HOST', '127.0.0.1'),
43 45
             'port' => env('MAIL_PORT', 2525),
44
-            'encryption' => env('MAIL_ENCRYPTION', 'tls'),
45 46
             'username' => env('MAIL_USERNAME'),
46 47
             'password' => env('MAIL_PASSWORD'),
47 48
             'timeout' => null,
48
-            'local_domain' => env('MAIL_EHLO_DOMAIN'),
49
+            'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url((string) env('APP_URL', 'http://localhost'), PHP_URL_HOST)),
49 50
         ],
50 51
 
51 52
         'ses' => [
@@ -60,6 +61,10 @@ return [
60 61
             // ],
61 62
         ],
62 63
 
64
+        'resend' => [
65
+            'transport' => 'resend',
66
+        ],
67
+
63 68
         'sendmail' => [
64 69
             'transport' => 'sendmail',
65 70
             'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'),
@@ -80,6 +85,16 @@ return [
80 85
                 'smtp',
81 86
                 'log',
82 87
             ],
88
+            'retry_after' => 60,
89
+        ],
90
+
91
+        'roundrobin' => [
92
+            'transport' => 'roundrobin',
93
+            'mailers' => [
94
+                'ses',
95
+                'postmark',
96
+            ],
97
+            'retry_after' => 60,
83 98
         ],
84 99
 
85 100
     ],

+ 4
- 4
config/queue.php Просмотреть файл

@@ -36,10 +36,10 @@ return [
36 36
 
37 37
         'database' => [
38 38
             'driver' => 'database',
39
-            'connection' => env('DB_QUEUE_CONNECTION', null),
39
+            'connection' => env('DB_QUEUE_CONNECTION'),
40 40
             'table' => env('DB_QUEUE_TABLE', 'jobs'),
41 41
             'queue' => env('DB_QUEUE', 'default'),
42
-            'retry_after' => env('DB_QUEUE_RETRY_AFTER', 90),
42
+            'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90),
43 43
             'after_commit' => true,
44 44
         ],
45 45
 
@@ -47,7 +47,7 @@ return [
47 47
             'driver' => 'beanstalkd',
48 48
             'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'),
49 49
             'queue' => env('BEANSTALKD_QUEUE', 'default'),
50
-            'retry_after' => env('BEANSTALKD_QUEUE_RETRY_AFTER', 90),
50
+            'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90),
51 51
             'block_for' => 0,
52 52
             'after_commit' => true,
53 53
         ],
@@ -67,7 +67,7 @@ return [
67 67
             'driver' => 'redis',
68 68
             'connection' => env('REDIS_QUEUE_CONNECTION', 'default'),
69 69
             'queue' => env('REDIS_QUEUE', 'default'),
70
-            'retry_after' => env('REDIS_QUEUE_RETRY_AFTER', 90),
70
+            'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 90),
71 71
             'block_for' => null,
72 72
             'after_commit' => true,
73 73
         ],

+ 4
- 0
config/services.php Просмотреть файл

@@ -18,6 +18,10 @@ return [
18 18
         'token' => env('POSTMARK_TOKEN'),
19 19
     ],
20 20
 
21
+    'resend' => [
22
+        'key' => env('RESEND_KEY'),
23
+    ],
24
+
21 25
     'ses' => [
22 26
         'key' => env('AWS_ACCESS_KEY_ID'),
23 27
         'secret' => env('AWS_SECRET_ACCESS_KEY'),

+ 5
- 6
config/session.php Просмотреть файл

@@ -13,8 +13,8 @@ return [
13 13
     | incoming requests. Laravel supports a variety of storage options to
14 14
     | persist session data. Database storage is a great default choice.
15 15
     |
16
-    | Supported: "file", "cookie", "database", "apc",
17
-    |            "memcached", "redis", "dynamodb", "array"
16
+    | Supported: "file", "cookie", "database", "memcached",
17
+    |            "redis", "dynamodb", "array"
18 18
     |
19 19
     */
20 20
 
@@ -32,7 +32,7 @@ return [
32 32
     |
33 33
     */
34 34
 
35
-    'lifetime' => env('SESSION_LIFETIME', 120),
35
+    'lifetime' => (int) env('SESSION_LIFETIME', 120),
36 36
 
37 37
     'expire_on_close' => env('SESSION_EXPIRE_ON_CLOSE', false),
38 38
 
@@ -97,7 +97,7 @@ return [
97 97
     | define the cache store which should be used to store the session data
98 98
     | between requests. This must match one of your defined cache stores.
99 99
     |
100
-    | Affects: "apc", "dynamodb", "memcached", "redis"
100
+    | Affects: "dynamodb", "memcached", "redis"
101 101
     |
102 102
     */
103 103
 
@@ -125,12 +125,11 @@ return [
125 125
     | the framework. Typically, you should not need to change this value
126 126
     | since doing so does not grant a meaningful security improvement.
127 127
     |
128
-    |
129 128
     */
130 129
 
131 130
     'cookie' => env(
132 131
         'SESSION_COOKIE',
133
-        Str::slug(env('APP_NAME', 'laravel'), '_') . '_session'
132
+        Str::slug(env('APP_NAME', 'laravel')) . '-session'
134 133
     ),
135 134
 
136 135
     /*

+ 0
- 1
package-lock.json Просмотреть файл

@@ -4,7 +4,6 @@
4 4
     "requires": true,
5 5
     "packages": {
6 6
         "": {
7
-            "name": "erpsaas",
8 7
             "devDependencies": {
9 8
                 "@tailwindcss/forms": "^0.5.9",
10 9
                 "@tailwindcss/typography": "^0.5.15",

+ 1
- 0
package.json Просмотреть файл

@@ -1,4 +1,5 @@
1 1
 {
2
+    "$schema": "https://json.schemastore.org/package.json",
2 3
     "private": true,
3 4
     "type": "module",
4 5
     "scripts": {

Загрузка…
Отмена
Сохранить