feat/webhookapi #13
@ -57,3 +57,6 @@ VITE_PUSHER_HOST="${PUSHER_HOST}"
|
||||
VITE_PUSHER_PORT="${PUSHER_PORT}"
|
||||
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
|
||||
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
||||
|
||||
BOT_SLACK_WEBHOOK_URL=
|
||||
BOT_X_BOTAUTH=
|
||||
|
||||
40
app/Http/Controllers/Api/WebHookController.php
Normal file
40
app/Http/Controllers/Api/WebHookController.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use App\Models\Quote;
|
||||
|
||||
|
||||
class WebhookController extends Controller
|
||||
{
|
||||
|
||||
public function webHookSend(String $payload) {
|
||||
$data = ["text" => $payload];
|
||||
$response = Http::post(env('BOT_SLACK_WEBHOOK_URL'), $data);
|
||||
}
|
||||
|
||||
public function sendQuote(Request $request)
|
||||
{
|
||||
$quote = $request->input('quote');
|
||||
if (is_null($quote)) {
|
||||
die();
|
||||
}
|
||||
|
||||
$this->webHookSend($quote);
|
||||
|
||||
}
|
||||
|
||||
public function sendRandomQuote()
|
||||
{
|
||||
$quote = Quote::inRandomOrder()->first()->quote;
|
||||
$this->webHookSend($quote);
|
||||
}
|
||||
|
||||
public function test()
|
||||
{
|
||||
var_dump("secrets");
|
||||
}
|
||||
|
||||
}
|
||||
@ -64,5 +64,6 @@ class Kernel extends HttpKernel
|
||||
'signed' => \App\Http\Middleware\ValidateSignature::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
'headerauth' => \App\Http\Middleware\HeaderAuth::class
|
||||
];
|
||||
}
|
||||
|
||||
24
app/Http/Middleware/HeaderAuth.php
Normal file
24
app/Http/Middleware/HeaderAuth.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class HeaderAuth
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
||||
*/
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
if ($request->header('X-BOTAUTH') !== env('BOT_X_BOTAUTH'))
|
||||
{
|
||||
return response('Unauthorized', 401);
|
||||
}
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
@ -3,6 +3,7 @@
|
||||
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
|
||||
<div class="p-6 text-nexi-black dark:text-gray-100">
|
||||
{{ __("You're logged in!") }}
|
||||
<livewire:pages.admin.send/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
36
resources/views/livewire/pages/admin/send.blade.php
Normal file
36
resources/views/livewire/pages/admin/send.blade.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Attributes\Rule;
|
||||
use Livewire\Volt\Component;
|
||||
|
||||
new #[Layout('layouts.app')] class extends Component
|
||||
{
|
||||
#[Rule(['required', 'string'])]
|
||||
public string $quote = '';
|
||||
|
||||
public function sendQuote(): void
|
||||
{
|
||||
$validated = $this->validate();
|
||||
|
||||
$data = ["text" => $validated['quote']];
|
||||
$response = Http::post(env('SLACK_WEBHOOK_URL'), $data);
|
||||
|
||||
$this->quote = '';
|
||||
}
|
||||
}; ?>
|
||||
|
||||
|
||||
<div class="px-4 sm:px-6 lg:px-8">
|
||||
<form wire:submit="sendQuote">
|
||||
<x-text-input
|
||||
wire:model="quote"
|
||||
placeholder="{{ __('What did he say this time?') }}"
|
||||
class="block w-full border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 rounded-md shadow-sm"
|
||||
></x-text-input>
|
||||
|
||||
<x-input-error :messages="$errors->get('quote')" class="mt-2"/>
|
||||
<x-primary-button wire:loading.attr="disabled" wire:loading.class="opacity-50" class="mt-4">{{ __('Request') }}</x-primary-button>
|
||||
</form>
|
||||
</div>
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\Http\Controllers\Api\WebHookController;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@ -14,6 +15,11 @@ use Illuminate\Support\Facades\Route;
|
||||
|
|
||||
*/
|
||||
|
||||
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
|
||||
return $request->user();
|
||||
Route::middleware('headerauth')->group(function () {
|
||||
Route::get('/test', [WebHookController::class, 'test']);
|
||||
Route::post('/sendQuote', [WebHookController::class, 'sendQuote']);
|
||||
Route::post('/randomQuote', [WebHookController::class, 'sendRandomQuote']);
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ export default defineConfig({
|
||||
],
|
||||
server: {
|
||||
hmr: {
|
||||
host: '192.168.1.71',
|
||||
host: '10.6.9.126',
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user