1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-07-28 17:02:04 +03:00

Completed webhook management interface

Got webhook CRUD actions in place within the interface.
Quick manual test pass done, Needs automated tests.
This commit is contained in:
Dan Brown
2021-12-08 17:35:58 +00:00
parent 4621d8bcc5
commit 8716b1922b
12 changed files with 166 additions and 22 deletions

View File

@ -20,8 +20,11 @@ class WebhookController extends Controller
*/
public function index()
{
// TODO - Get and pass webhooks
return view('settings.webhooks.index');
$webhooks = Webhook::query()
->orderBy('name', 'desc')
->with('trackedEvents')
->get();
return view('settings.webhooks.index', ['webhooks' => $webhooks]);
}
/**
@ -37,7 +40,16 @@ class WebhookController extends Controller
*/
public function store(Request $request)
{
// TODO - Create webhook
$validated = $this->validate($request, [
'name' => ['required', 'max:150'],
'endpoint' => ['required', 'url', 'max:500'],
'events' => ['required', 'array']
]);
$webhook = new Webhook($validated);
$webhook->save();
$webhook->updateTrackedEvents(array_values($validated['events']));
$this->logActivity(ActivityType::WEBHOOK_CREATE, $webhook);
return redirect('/settings/webhooks');
}
@ -48,7 +60,9 @@ class WebhookController extends Controller
public function edit(string $id)
{
/** @var Webhook $webhook */
$webhook = Webhook::query()->findOrFail($id);
$webhook = Webhook::query()
->with('trackedEvents')
->findOrFail($id);
return view('settings.webhooks.edit', ['webhook' => $webhook]);
}
@ -58,10 +72,17 @@ class WebhookController extends Controller
*/
public function update(Request $request, string $id)
{
$validated = $this->validate($request, [
'name' => ['required', 'max:150'],
'endpoint' => ['required', 'url', 'max:500'],
'events' => ['required', 'array']
]);
/** @var Webhook $webhook */
$webhook = Webhook::query()->findOrFail($id);
// TODO - Update
$webhook->fill($validated)->save();
$webhook->updateTrackedEvents($validated['events']);
$this->logActivity(ActivityType::WEBHOOK_UPDATE, $webhook);
return redirect('/settings/webhooks');
@ -85,7 +106,7 @@ class WebhookController extends Controller
/** @var Webhook $webhook */
$webhook = Webhook::query()->findOrFail($id);
// TODO - Delete event type relations
$webhook->trackedEvents()->delete();
$webhook->delete();
$this->logActivity(ActivityType::WEBHOOK_DELETE, $webhook);