. */ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers; use FireflyIII\Api\V1\Requests\ConfigurationRequest; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Models\Configuration; use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\User; use Illuminate\Http\JsonResponse; /** * Class ConfigurationController. * * @codeCoverageIgnore */ class ConfigurationController extends Controller { /** @var UserRepositoryInterface The user repository */ private $repository; /** * ConfigurationController constructor. */ public function __construct() { parent::__construct(); $this->middleware( function ($request, $next) { $this->repository = app(UserRepositoryInterface::class); /** @var User $admin */ $admin = auth()->user(); if (!$this->repository->hasRole($admin, 'owner')) { throw new FireflyException('200005: You need the "owner" role to do this.'); // @codeCoverageIgnore } return $next($request); } ); } /** * Show all configuration. * * @return JsonResponse */ public function index(): JsonResponse { $configData = $this->getConfigData(); return response()->json(['data' => $configData])->header('Content-Type', self::CONTENT_TYPE); } /** * Get all config values. * * @return array */ private function getConfigData(): array { /** @var Configuration $isDemoSite */ $isDemoSite = app('fireflyconfig')->get('is_demo_site'); /** @var Configuration $updateCheck */ $updateCheck = app('fireflyconfig')->get('permission_update_check'); /** @var Configuration $lastCheck */ $lastCheck = app('fireflyconfig')->get('last_update_check'); /** @var Configuration $singleUser */ $singleUser = app('fireflyconfig')->get('single_user_mode'); return [ 'is_demo_site' => null === $isDemoSite ? null : $isDemoSite->data, 'permission_update_check' => null === $updateCheck ? null : (int) $updateCheck->data, 'last_update_check' => null === $lastCheck ? null : (int) $lastCheck->data, 'single_user_mode' => null === $singleUser ? null : $singleUser->data, ]; } /** * Update the configuration. * * @param ConfigurationRequest $request * @param string $name * * @return JsonResponse */ public function update(ConfigurationRequest $request, string $name): JsonResponse { $data = $request->getAll(); app('fireflyconfig')->set($name, $data['value']); $configData = $this->getConfigData(); return response()->json(['data' => $configData])->header('Content-Type', self::CONTENT_TYPE); } }