diff --git a/app/Helpers/SettingsHelper.php b/app/Helpers/SettingsHelper.php index 7e1ff0e1..8acffb36 100644 --- a/app/Helpers/SettingsHelper.php +++ b/app/Helpers/SettingsHelper.php @@ -91,6 +91,11 @@ class SettingsHelper */ public static function settingIsEditable(string $key) { + // Manual override for app_name + if ($key === 'app_name') { + return true; + } + $results = []; // Try exact key @@ -139,6 +144,7 @@ class SettingsHelper { return [ 'base' => SettingsHelper::getBase(), + 'name' => SettingsHelper::get('app_name')->value, 'widgets' => [ 'show_average' => (bool)SettingsHelper::get('show_average')->value, 'show_max' => (bool)SettingsHelper::get('show_max')->value, diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index aec8c39b..4d7202d6 100644 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -15,9 +15,9 @@ class SettingsController extends Controller { public function __construct() { - if((bool)SettingsHelper::get('auth')->value === true) { + if ((bool)SettingsHelper::get('auth')->value === true) { $this->middleware('auth:api') - ->except([ 'config' ]); + ->except(['config']); } } @@ -51,21 +51,21 @@ class SettingsController extends Controller public function store(Request $request) { $rule = [ - 'name' => [ 'required', 'string', 'min:1' ], + 'name' => ['required', 'string', 'min:1'], ]; - if($request->name == 'schedule') { - $rule['value'] = [ 'required', new Cron ]; + if ($request->name == 'schedule') { + $rule['value'] = ['required', new Cron]; } $validator = Validator::make($request->all(), $rule); - if($validator->fails()) { + if ($validator->fails()) { return response()->json([ 'method' => 'Store a setting', 'error' => $validator->errors() ], 422); } - if(!isset($request->value)) { + if (!isset($request->value)) { $request->value = ''; } @@ -86,12 +86,12 @@ class SettingsController extends Controller public function bulkStore(Request $request) { $rule = [ - 'data' => [ 'array', 'required' ], - 'data.*.name' => [ 'string', 'required' ], + 'data' => ['array', 'required'], + 'data.*.name' => ['string', 'required'], ]; $validator = Validator::make($request->all(), $rule); - if($validator->fails()) { + if ($validator->fails()) { return response()->json([ 'method' => 'Bulk store a setting', 'error' => $validator->errors() @@ -99,14 +99,14 @@ class SettingsController extends Controller } $settings = []; - foreach($request->data as $d) { - if(!isset($d['value']) || $d['value'] == null) { - $d['value'] = ''; + foreach ($request->data as $d) { + if (!isset($d['value']) || $d['value'] == null) { + $d['value'] = ''; } - if($d['name'] == 'speedtest_overview_time') { - $ok = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23' ]; - if(!in_array($d['value'], $ok)) { + if ($d['name'] == 'speedtest_overview_time') { + $ok = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23']; + if (!in_array($d['value'], $ok)) { return response()->json([ 'method' => 'Bulk store a setting', 'error' => 'Invalid speedtest_overview_time value' @@ -116,9 +116,9 @@ class SettingsController extends Controller $setting = SettingsHelper::get($d['name']); - if($setting == false) { + if ($setting == false) { $setting = SettingsHelper::set($d['name'], $d['value']); - } else if(SettingsHelper::settingIsEditable($setting->name)) { + } else if (SettingsHelper::settingIsEditable($setting->name)) { $setting = SettingsHelper::set($d['name'], $d['value']); } else { continue; diff --git a/database/migrations/2020_12_19_234248_add_app_name_setting.php b/database/migrations/2020_12_19_234248_add_app_name_setting.php new file mode 100644 index 00000000..e640c617 --- /dev/null +++ b/database/migrations/2020_12_19_234248_add_app_name_setting.php @@ -0,0 +1,38 @@ + 'app_name', + 'value' => 'Speedtest Tracker', + 'description' => 'Set a custom app name' + ]); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Setting::whereIn('name', [ + 'app_name', + ])->delete(); + } +} diff --git a/routes/web.php b/routes/web.php index d41f71d1..a25f2e5a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -16,20 +16,20 @@ use Illuminate\Support\Facades\Route; | */ -Route::get(SettingsHelper::getBase() . 'files/{path?}', function($file) { +Route::get(SettingsHelper::getBase() . 'files/{path?}', function ($file) { $fileP = explode('?', $file)[0]; $fileP = public_path() . '/' . $fileP; - if(file_exists($fileP)) { + if (file_exists($fileP)) { $contents = File::get($fileP); $mime = \GuzzleHttp\Psr7\mimetype_from_filename($fileP); - return Response::make(File::get($fileP), 200, [ 'Content-type' => $mime ]); + return Response::make(File::get($fileP), 200, ['Content-type' => $mime]); } else { abort(404); } })->where('path', '.*') - ->name('files'); + ->name('files'); -Route::get('/{path?}', function() { - return view('app', [ 'title' => 'Speedtest Tracker' ]); +Route::get('/{path?}', function () { + return view('app', ['title' => SettingsHelper::get('app_name')->value]); })->where('path', '^((?!\/api\/).)*$') - ->name('react'); + ->name('react');