diff --git a/Procfile b/Procfile index 568d1a24..d5204fa2 100644 --- a/Procfile +++ b/Procfile @@ -1 +1,2 @@ -web: vendor/bin/heroku-php-nginx public/ \ No newline at end of file +web: vendor/bin/heroku-php-nginx -C nginx.conf public/ +release: php artisan migrate --force && php artisan cache:clear && php artisan config:cache \ No newline at end of file diff --git a/app.json b/app.json index 805872d7..2344b100 100644 --- a/app.json +++ b/app.json @@ -15,21 +15,28 @@ "repository": "https://github.com/Bubka/2FAuth", "success_url": "/register", "scripts": { - "postdeploy": "php -r \"file_exists('.env') || copy('.env.heroku', '.env')\";php artisan migrate:refresh;php artisan passport:install;php artisan storage:link" + "postdeploy": [ + "php artisan passport:install", + "php artisan storage:link" + ] }, "env": { - "APP_KEY": { - "description": "The encryption key for your database and sessions.", - "value": "base64:OfTFROuxY2NHE321rcwz0N4UW/SSXWEjzxOGiQD7nCY=" - } + "APP_KEY": { + "generator": "secret" + }, + "APP_NAME": "2FAuth", + "APP_ENV": "review", + "APP_DEBUG": "false", + "LOG_CHANNEL": "errorlog", + "DB_CONNECTION": "pgsql", + "CACHE_DRIVER": "redis", + "QUEUE_CONNECTION": "redis", + "SESSION_DRIVER": "redis", + "TRUSTED_PROXIES": "*" }, "addons": [ - { - "plan": "heroku-postgresql", - "options": { - "version": "13" - } - } + "heroku-postgresql", + "heroku-redis" ], "buildpacks": [ { diff --git a/config/app.php b/config/app.php index 3baa2b96..56cb7750 100644 --- a/config/app.php +++ b/config/app.php @@ -52,7 +52,7 @@ | */ - 'url' => env('APP_URL', 'http://localhost'), + 'url' => env('APP_URL', env('HEROKU_APP_NAME') ? 'https://' . env('HEROKU_APP_NAME') . '.herokuapp.com' : 'http://localhost'), 'asset_url' => env('ASSET_URL', null), @@ -119,7 +119,7 @@ | */ - 'key' => env('APP_KEY'), + 'key' => strpos(env('APP_KEY'), 'base64:') !== false ? env('APP_KEY') : substr(env('APP_KEY'), 0, 32), 'cipher' => 'AES-256-CBC', diff --git a/config/database.php b/config/database.php index 0863563a..72eecb04 100644 --- a/config/database.php +++ b/config/database.php @@ -2,6 +2,23 @@ use Illuminate\Support\Str; +$databaseUrl = getenv('DATABASE_URL'); +$host = ''; +$username = ''; +$password = ''; +$database = ''; +$port = ''; + +if (false !== $databaseUrl) { + $options = parse_url($databaseUrl); + + $host = $options['host'] ?? '127.0.0.1'; + $username = $options['user'] ?? 'forge'; + $password = $options['pass'] ?? ''; + $database = substr($options['path'] ?? '/forge', 1); + $port = $options['port']; +} + return [ /* @@ -53,11 +70,11 @@ 'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), + 'host' => env('DB_HOST', $host), + 'port' => env('DB_PORT', $port ?? '3306'), + 'database' => env('DB_DATABASE', $database), + 'username' => env('DB_USERNAME', $username), + 'password' => env('DB_PASSWORD', $password), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', @@ -73,11 +90,11 @@ 'pgsql' => [ 'driver' => 'pgsql', 'url' => env('DATABASE_URL'), - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), + 'host' => env('DB_HOST', $host), + 'port' => env('DB_PORT', $port ?? '5432'), + 'database' => env('DB_DATABASE', $database), + 'username' => env('DB_USERNAME', $username), + 'password' => env('DB_PASSWORD', $password), 'charset' => 'utf8', 'prefix' => '', 'prefix_indexes' => true, diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 00000000..b03455d8 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,10 @@ +if ($http_x_forwarded_proto != 'https') { + rewrite ^ https://$host$request_uri? permanent; +} + +location / { + try_files $uri @rewriteapp; +} +location @rewriteapp { + rewrite ^(.*)$ /index.php$1 last; +} \ No newline at end of file