feat/webhookapi #13

Merged
benjamyn merged 3 commits from feat/webhookapi into master 2023-10-08 04:06:57 -04:00
8 changed files with 114 additions and 3 deletions

View File

@ -57,3 +57,6 @@ VITE_PUSHER_HOST="${PUSHER_HOST}"
VITE_PUSHER_PORT="${PUSHER_PORT}" VITE_PUSHER_PORT="${PUSHER_PORT}"
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
BOT_SLACK_WEBHOOK_URL=
BOT_X_BOTAUTH=

View 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");
}
}

View File

@ -64,5 +64,6 @@ class Kernel extends HttpKernel
'signed' => \App\Http\Middleware\ValidateSignature::class, 'signed' => \App\Http\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'headerauth' => \App\Http\Middleware\HeaderAuth::class
]; ];
} }

View 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);
}
}

View File

@ -3,6 +3,7 @@
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8"> <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="p-6 text-nexi-black dark:text-gray-100"> <div class="p-6 text-nexi-black dark:text-gray-100">
{{ __("You're logged in!") }} {{ __("You're logged in!") }}
<livewire:pages.admin.send/>
</div> </div>
</div> </div>
</div> </div>

View 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>

View File

@ -2,6 +2,7 @@
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route; 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) { Route::middleware('headerauth')->group(function () {
return $request->user(); Route::get('/test', [WebHookController::class, 'test']);
Route::post('/sendQuote', [WebHookController::class, 'sendQuote']);
Route::post('/randomQuote', [WebHookController::class, 'sendRandomQuote']);
}); });

View File

@ -13,7 +13,7 @@ export default defineConfig({
], ],
server: { server: {
hmr: { hmr: {
host: '192.168.1.71', host: '10.6.9.126',
}, },
} }
}); });