Add encrypted Etsy app credential settings
Deploy HickLab3D Dashboard / Deploy to production (push) Successful in 23s

This commit is contained in:
Hickmeister
2026-10-10 19:08:46 +01:00
parent 89e392e5f8
commit 88dcf5101b
12 changed files with 350 additions and 8 deletions
@@ -0,0 +1,51 @@
<?php
namespace App\Http\Controllers;
use App\Models\EtsyAppCredential;
use App\Models\EtsyConnection;
use App\Services\Etsy;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
class EtsySettingsController extends Controller
{
public function index(Request $request, Etsy $etsy): View
{
abort_unless($request->user()->role === 'admin', 403);
return view('settings.index', [
'storedCredentials' => EtsyAppCredential::find(1) !== null,
'configured' => $etsy->configured(),
'redirectUri' => $etsy->redirectUri(),
]);
}
public function update(Request $request): RedirectResponse
{
abort_unless($request->user()->role === 'admin', 403);
$credentials = EtsyAppCredential::find(1);
$requireCredentials = $credentials === null ? 'required' : 'nullable';
$validated = $request->validate([
'keystring' => [$requireCredentials, 'string', 'max:255'],
'shared_secret' => [$requireCredentials, 'string', 'max:255'],
]);
$previousKeystring = $credentials?->keystring ?: config('services.etsy.keystring');
$credentials ??= new EtsyAppCredential;
$credentials->id = 1;
$credentials->fill(array_filter($validated, fn (?string $value): bool => filled($value)));
$credentials->save();
$keystringChanged = $previousKeystring !== $credentials->keystring;
if ($keystringChanged) {
EtsyConnection::query()->delete();
}
return redirect()->route('settings.index')->with('status', $keystringChanged
? 'Etsy credentials saved. Reconnect your shop with the new app key.'
: 'Etsy credentials saved.');
}
}