Added setting for app name

This commit is contained in:
Henry Whitaker
2020-12-19 23:55:49 +00:00
parent 46d13fd08a
commit 95325db128
4 changed files with 69 additions and 25 deletions

View File

@@ -91,6 +91,11 @@ class SettingsHelper
*/ */
public static function settingIsEditable(string $key) public static function settingIsEditable(string $key)
{ {
// Manual override for app_name
if ($key === 'app_name') {
return true;
}
$results = []; $results = [];
// Try exact key // Try exact key
@@ -139,6 +144,7 @@ class SettingsHelper
{ {
return [ return [
'base' => SettingsHelper::getBase(), 'base' => SettingsHelper::getBase(),
'name' => SettingsHelper::get('app_name')->value,
'widgets' => [ 'widgets' => [
'show_average' => (bool)SettingsHelper::get('show_average')->value, 'show_average' => (bool)SettingsHelper::get('show_average')->value,
'show_max' => (bool)SettingsHelper::get('show_max')->value, 'show_max' => (bool)SettingsHelper::get('show_max')->value,

View File

@@ -15,9 +15,9 @@ class SettingsController extends Controller
{ {
public function __construct() public function __construct()
{ {
if((bool)SettingsHelper::get('auth')->value === true) { if ((bool)SettingsHelper::get('auth')->value === true) {
$this->middleware('auth:api') $this->middleware('auth:api')
->except([ 'config' ]); ->except(['config']);
} }
} }
@@ -51,21 +51,21 @@ class SettingsController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
$rule = [ $rule = [
'name' => [ 'required', 'string', 'min:1' ], 'name' => ['required', 'string', 'min:1'],
]; ];
if($request->name == 'schedule') { if ($request->name == 'schedule') {
$rule['value'] = [ 'required', new Cron ]; $rule['value'] = ['required', new Cron];
} }
$validator = Validator::make($request->all(), $rule); $validator = Validator::make($request->all(), $rule);
if($validator->fails()) { if ($validator->fails()) {
return response()->json([ return response()->json([
'method' => 'Store a setting', 'method' => 'Store a setting',
'error' => $validator->errors() 'error' => $validator->errors()
], 422); ], 422);
} }
if(!isset($request->value)) { if (!isset($request->value)) {
$request->value = ''; $request->value = '';
} }
@@ -86,12 +86,12 @@ class SettingsController extends Controller
public function bulkStore(Request $request) public function bulkStore(Request $request)
{ {
$rule = [ $rule = [
'data' => [ 'array', 'required' ], 'data' => ['array', 'required'],
'data.*.name' => [ 'string', 'required' ], 'data.*.name' => ['string', 'required'],
]; ];
$validator = Validator::make($request->all(), $rule); $validator = Validator::make($request->all(), $rule);
if($validator->fails()) { if ($validator->fails()) {
return response()->json([ return response()->json([
'method' => 'Bulk store a setting', 'method' => 'Bulk store a setting',
'error' => $validator->errors() 'error' => $validator->errors()
@@ -99,14 +99,14 @@ class SettingsController extends Controller
} }
$settings = []; $settings = [];
foreach($request->data as $d) { foreach ($request->data as $d) {
if(!isset($d['value']) || $d['value'] == null) { if (!isset($d['value']) || $d['value'] == null) {
$d['value'] = ''; $d['value'] = '';
} }
if($d['name'] == 'speedtest_overview_time') { 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' ]; $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 (!in_array($d['value'], $ok)) {
return response()->json([ return response()->json([
'method' => 'Bulk store a setting', 'method' => 'Bulk store a setting',
'error' => 'Invalid speedtest_overview_time value' 'error' => 'Invalid speedtest_overview_time value'
@@ -116,9 +116,9 @@ class SettingsController extends Controller
$setting = SettingsHelper::get($d['name']); $setting = SettingsHelper::get($d['name']);
if($setting == false) { if ($setting == false) {
$setting = SettingsHelper::set($d['name'], $d['value']); $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']); $setting = SettingsHelper::set($d['name'], $d['value']);
} else { } else {
continue; continue;

View File

@@ -0,0 +1,38 @@
<?php
use App\Helpers\SettingsHelper;
use App\Setting;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddAppNameSetting extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
if (!SettingsHelper::get('app_name')) {
Setting::create([
'name' => '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();
}
}

View File

@@ -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 = explode('?', $file)[0];
$fileP = public_path() . '/' . $fileP; $fileP = public_path() . '/' . $fileP;
if(file_exists($fileP)) { if (file_exists($fileP)) {
$contents = File::get($fileP); $contents = File::get($fileP);
$mime = \GuzzleHttp\Psr7\mimetype_from_filename($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 { } else {
abort(404); abort(404);
} }
})->where('path', '.*') })->where('path', '.*')
->name('files'); ->name('files');
Route::get('/{path?}', function() { Route::get('/{path?}', function () {
return view('app', [ 'title' => 'Speedtest Tracker' ]); return view('app', ['title' => SettingsHelper::get('app_name')->value]);
})->where('path', '^((?!\/api\/).)*$') })->where('path', '^((?!\/api\/).)*$')
->name('react'); ->name('react');