Move integration credentials into encrypted dashboard settings
Deploy HickLab3D Dashboard / Deploy to production (push) Successful in 1m42s
Deploy HickLab3D Dashboard / Deploy to production (push) Successful in 1m42s
This commit is contained in:
@@ -4,21 +4,49 @@ namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\EtsyAppCredential;
|
||||
use App\Models\EtsyConnection;
|
||||
use App\Models\IntegrationSetting;
|
||||
use App\Services\Etsy;
|
||||
use App\Services\IntegrationSettings;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\View\View;
|
||||
|
||||
class EtsySettingsController extends Controller
|
||||
{
|
||||
public function index(Request $request, Etsy $etsy): View
|
||||
public function index(Request $request, Etsy $etsy, IntegrationSettings $settings): View
|
||||
{
|
||||
abort_unless($request->user()->role === 'admin', 403);
|
||||
|
||||
$credentials = EtsyAppCredential::find(1);
|
||||
$storedIntegrations = IntegrationSetting::query()->whereIn('provider', ['parcel2go', 'bambuddy', 'dryer'])
|
||||
->pluck('provider')->all();
|
||||
$parcel2go = $settings->for('parcel2go');
|
||||
$bambuddy = $settings->for('bambuddy');
|
||||
$dryer = $settings->for('dryer');
|
||||
|
||||
return view('settings.index', [
|
||||
'storedCredentials' => EtsyAppCredential::find(1) !== null,
|
||||
'storedCredentials' => $credentials !== null,
|
||||
'configured' => $etsy->configured(),
|
||||
'redirectUri' => $etsy->redirectUri(),
|
||||
'shopName' => $credentials?->shop_name ?: config('services.etsy.shop_name', 'HickLab3D'),
|
||||
'integrations' => [
|
||||
'parcel2go' => [
|
||||
'stored' => in_array('parcel2go', $storedIntegrations, true),
|
||||
'configured' => filled($parcel2go['client_id'] ?? null) && filled($parcel2go['client_secret'] ?? null) && filled($parcel2go['auth_url'] ?? null),
|
||||
'auth_url' => $parcel2go['auth_url'] ?? '',
|
||||
'base_url' => $parcel2go['base_url'] ?? '',
|
||||
],
|
||||
'bambuddy' => [
|
||||
'stored' => in_array('bambuddy', $storedIntegrations, true),
|
||||
'configured' => filled($bambuddy['url'] ?? null) && filled($bambuddy['api_key'] ?? null),
|
||||
'url' => $bambuddy['url'] ?? '',
|
||||
],
|
||||
'dryer' => [
|
||||
'stored' => in_array('dryer', $storedIntegrations, true),
|
||||
'configured' => filled($dryer['url'] ?? null) && filled($dryer['api_key'] ?? null),
|
||||
'url' => $dryer['url'] ?? '',
|
||||
],
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -27,15 +55,26 @@ class EtsySettingsController extends Controller
|
||||
abort_unless($request->user()->role === 'admin', 403);
|
||||
|
||||
$credentials = EtsyAppCredential::find(1);
|
||||
$requireCredentials = $credentials === null ? 'required' : 'nullable';
|
||||
$requireKeystring = $credentials === null && blank(config('services.etsy.keystring')) ? 'required' : 'nullable';
|
||||
$requireSecret = $credentials === null && blank(config('services.etsy.shared_secret')) ? 'required' : 'nullable';
|
||||
$validated = $request->validate([
|
||||
'keystring' => [$requireCredentials, 'string', 'max:255'],
|
||||
'shared_secret' => [$requireCredentials, 'string', 'max:255'],
|
||||
'keystring' => [$requireKeystring, 'string', 'max:255'],
|
||||
'shared_secret' => [$requireSecret, 'string', 'max:255'],
|
||||
'shop_name' => ['nullable', 'string', 'max:255'],
|
||||
'redirect_uri' => ['nullable', 'url:https', 'max:2048'],
|
||||
]);
|
||||
|
||||
$previousKeystring = $credentials?->keystring ?: config('services.etsy.keystring');
|
||||
$credentials ??= new EtsyAppCredential;
|
||||
$credentials->id = 1;
|
||||
if (! $credentials->exists) {
|
||||
$credentials->fill([
|
||||
'keystring' => config('services.etsy.keystring'),
|
||||
'shared_secret' => config('services.etsy.shared_secret'),
|
||||
'shop_name' => config('services.etsy.shop_name', 'HickLab3D'),
|
||||
'redirect_uri' => config('services.etsy.redirect_uri'),
|
||||
]);
|
||||
}
|
||||
$credentials->fill(array_filter($validated, fn (?string $value): bool => filled($value)));
|
||||
$credentials->save();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user