diff --git a/app/Http/Controllers/StatusCheckerController.php b/app/Http/Controllers/StatusCheckerController.php index 7bec7fb..4d5ead8 100644 --- a/app/Http/Controllers/StatusCheckerController.php +++ b/app/Http/Controllers/StatusCheckerController.php @@ -3,28 +3,30 @@ namespace App\Http\Controllers; use App\Models\Project; -use Illuminate\Http\Request; +use Illuminate\Support\Facades\Http; class StatusCheckerController extends Controller { - public function index(Request $request) + /** + * Fetch Status + * + * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory + */ + public function index() { - $wp_endpoint = 'https://api.wordpress.org/core/version-check/1.7/'; - $client = new \GuzzleHttp\Client(); - $response = $client->request('GET', $wp_endpoint); - $content = $response->getBody(); - $oContent = json_decode($content); + $wpReleases = Http::get(config('status-checker.wp_endpoint'))->json(); + $laravelReleases = Http::withOptions([ + 'allow_redirects' => false, + ])->asJson()->get(config('status-checker.laravel_endpoint'))->json(); - $laravel_endpoint = 'https://github.com/laravel/laravel/releases/latest'; - $client = new \GuzzleHttp\Client(); - $response = $client->request('GET', $laravel_endpoint, [ - 'allow_redirects' => false - ]); - $content = $response->getBody()->getContents(); - $laravel_latest = substr($content, 84); - $laravel_latest = substr($laravel_latest, 0, -31); + $wp_latest = collect(collect(\collect($wpReleases)->get('offers'))->first())->get('version'); + $laravel_latest = ltrim(collect(collect($laravelReleases)->first())->get('tag_name'), 'v'); $projects = Project::orderBy('name')->get(); - return view('status-checker.index', ['projects' => $projects, 'wp_latest' => $oContent->offers[0]->version, 'laravel_latest' => $laravel_latest]); + return view('status-checker.index', compact( + 'projects', + 'wp_latest', + 'laravel_latest' + )); } } diff --git a/app/Http/Middleware/SecureHeaders.php b/app/Http/Middleware/SecureHeaders.php index ad3a71f..16555e8 100644 --- a/app/Http/Middleware/SecureHeaders.php +++ b/app/Http/Middleware/SecureHeaders.php @@ -32,6 +32,7 @@ class SecureHeaders { View::share('nonce', $nonce = \uniqid()); // * For VueJS dev tool to execute + $cssDev = config('app.debug') ? "'unsafe-inline'" : "'nonce-$nonce'"; $jsDev = config('app.debug') ? "'unsafe-eval' 'unsafe-inline'" : "'nonce-$nonce'"; $reportUri = Route::has('cspReportUri') ? \sprintf('report-uri %s', \parse_url(route('cspReportUri'), \PHP_URL_PATH)) : ''; @@ -48,12 +49,12 @@ class SecureHeaders "connect-src 'self' blob:;", "img-src * data: blob:;", "frame-src https://www.youtube.com;", - "font-src 'self' data:;", + "font-src 'self' data: https://fonts.gstatic.com;", // ! Using CKEditor wiill must have unsafe-inline style // phpcs:ignore Generic.Files.LineLength.TooLong // "style-src 'self' 'unsafe-inline';", // ! If you dont use ckeditor use this - "style-src 'self' 'nonce-$nonce';", + "style-src 'self' $cssDev https://fonts.googleapis.com;", // phpcs:ignore Generic.Files.LineLength.TooLong "script-src 'self' $jsDev;" ]; diff --git a/app/Models/Project.php b/app/Models/Project.php index a3bbd13..524355c 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -164,9 +164,9 @@ class Project extends Model /** * get logs_hr attribute * - * @return float + * @return string */ - public function getLogsHrAttribute(): float + public function getLogsHrAttribute(): string { $value = ProjectsStatusChecker::select('logs')->where('project_uuid', '=', $this->uuid)->first(); return $this->humanFilesize($value->logs); @@ -176,11 +176,11 @@ class Project extends Model * Human readable file size * * @param float $size - * @return float + * @return string */ - private function humanFilesize(float $size): float + private function humanFilesize(float $size): string { - $i = floor(log($size, 1024)); + $i = \floatval(floor(log($size, 1024))); return round($size / pow(1024, $i), [0,0,2,2,3][$i]) . [' O',' Ko',' Mo',' Go',' To'][$i]; } } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 7fd0a52..2724be5 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -17,7 +17,7 @@ class RouteServiceProvider extends ServiceProvider * * @var string */ - public const HOME = '/home'; + public const HOME = '/'; /** * Define your route model bindings, pattern filters, etc. diff --git a/config/status-checker.php b/config/status-checker.php new file mode 100644 index 0000000..13734cb --- /dev/null +++ b/config/status-checker.php @@ -0,0 +1,6 @@ + 'https://api.wordpress.org/core/version-check/1.7/', + 'laravel_endpoint' => 'https://api.github.com/repos/laravel/laravel/releases' +]; diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 3058f36..7152e3e 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -15,7 +15,7 @@ - +
@@ -82,7 +82,7 @@ @stack('scriptsConstants') @include('modules.scriptConstants') - + @stack('scripts')
diff --git a/webpack.mix.js b/webpack.mix.js index f4f17be..d3ae524 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -84,4 +84,4 @@ mix.copyDirectory('resources/assets', 'public/assets') // * FontAwesome compile mix.copy('node_modules/@fortawesome/fontawesome-free/js/all.min.js', 'public/js/fontawesome.min.js') - .copy('node_modules/@fortawesome/fontawesome-free/css/fontawesome.min.css', 'public/css/fontawesome.min.css') + .copy('node_modules/@fortawesome/fontawesome-free/css/svg-with-js.min.css', 'public/css/fontawesome.min.css')