Feature flags (#543)
* Re-organize a bit controllers * Added the featureflagcontroller * Implement feature flags in the front-end * Clean env files * Clean console.log messages * Fix feature flag test
This commit is contained in:
41
api/app/Http/Controllers/Content/FeatureFlagsController.php
Normal file
41
api/app/Http/Controllers/Content/FeatureFlagsController.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Content;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class FeatureFlagsController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$featureFlags = \Cache::remember('feature_flags', 3600, function () {
|
||||
return [
|
||||
'self_hosted' => config('app.self_hosted', true),
|
||||
'custom_domains' => config('custom_domains.enabled', false),
|
||||
'ai_features' => !empty(config('services.openai.api_key')),
|
||||
|
||||
'billing' => [
|
||||
'enabled' => !empty(config('cashier.key')) && !empty(config('cashier.secret')),
|
||||
'appsumo' => !empty(config('services.appsumo.api_key')) && !empty(config('services.appsumo.api_secret')),
|
||||
],
|
||||
'storage' => [
|
||||
'local' => config('filesystems.default') === 'local',
|
||||
's3' => config('filesystems.default') !== 'local',
|
||||
],
|
||||
'services' => [
|
||||
'unsplash' => !empty(config('services.unsplash.access_key')),
|
||||
'google' => [
|
||||
'fonts' => !empty(config('services.google.fonts_api_key')),
|
||||
'auth' => !empty(config('services.google.client_id')) && !empty(config('services.google.client_secret')),
|
||||
],
|
||||
],
|
||||
'integrations' => [
|
||||
'zapier' => config('services.zapier.enabled'),
|
||||
'google_sheets' => !empty(config('services.google.client_id')) && !empty(config('services.google.client_secret')),
|
||||
],
|
||||
];
|
||||
});
|
||||
|
||||
return response()->json($featureFlags);
|
||||
}
|
||||
}
|
||||
32
api/app/Http/Controllers/Content/FontsController.php
Normal file
32
api/app/Http/Controllers/Content/FontsController.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Content;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class FontsController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
if (!config('services.google.fonts_api_key')) {
|
||||
return response()->json([]);
|
||||
}
|
||||
|
||||
return \Cache::remember('google_fonts', 60 * 60, function () {
|
||||
$url = "https://www.googleapis.com/webfonts/v1/webfonts?sort=popularity&key=" . config('services.google.fonts_api_key');
|
||||
$response = Http::get($url);
|
||||
if ($response->successful()) {
|
||||
$fonts = collect($response->json()['items'])->filter(function ($font) {
|
||||
return !in_array($font['category'], ['monospace']);
|
||||
})->map(function ($font) {
|
||||
return $font['family'];
|
||||
})->toArray();
|
||||
return response()->json($fonts);
|
||||
}
|
||||
|
||||
return [];
|
||||
});
|
||||
}
|
||||
}
|
||||
31
api/app/Http/Controllers/Content/SitemapController.php
Normal file
31
api/app/Http/Controllers/Content/SitemapController.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Content;
|
||||
|
||||
use App\Models\Template;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class SitemapController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
return [
|
||||
...$this->getTemplatesUrls(),
|
||||
];
|
||||
}
|
||||
|
||||
private function getTemplatesUrls()
|
||||
{
|
||||
$urls = [];
|
||||
Template::where('publicly_listed', true)->chunk(100, function ($templates) use (&$urls) {
|
||||
foreach ($templates as $template) {
|
||||
$urls[] = [
|
||||
'loc' => '/templates/' . $template->slug,
|
||||
];
|
||||
}
|
||||
});
|
||||
|
||||
return $urls;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user