52 lines
1.7 KiB
PHP
52 lines
1.7 KiB
PHP
<?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.');
|
|
}
|
|
}
|