Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
WIKIPEDIA
/
imaliapi
/
app
/
Http
/
Middleware
:
TerminalsV2.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace App\Http\Middleware; use App\Classes\SendResponse; use App\Terminal; use Closure; use Illuminate\Http\Request; class TerminalsV2 { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse */ public function handle(Request $request, Closure $next) { // Obtém o valor do cabeçalho Authorization $authHeader = $request->header('Authorization'); $terminalID = $request->header('X-Terminal-ID'); // return $request->hasHeader('X-Terminal-ID'); if (!$request->hasHeader('X-Terminal-ID')) return SendResponse::errorResp400('X-Terminal-ID nao existe', 'X-Terminal-ID does not exists'); // Verifica se o cabeçalho Authorization está presente if ($authHeader && preg_match('/Bearer\s(\S+)/', $authHeader, $matches)) { $token = $matches[1]; $terminal = Terminal::query()->whereNotNull('terminal_id')->where('terminal_id', $terminalID)->select('terminal_key', 'private_key', 'terminal_id')->first(); if (!$terminal) return SendResponse::errorResp401unauthenticated('ID do Terminal invalido', 'Invalid Terminal ID'); $terminal_key = $this->isValidToken($terminal, $token); if (!$terminal_key) return SendResponse::errorResp401unauthenticated('Chave de encriptação invalida', 'Invalid Encryption Key'); if ($terminal->terminal_key !== $terminal_key) return SendResponse::errorResp401unauthenticated(); $request->request->add(['store_id' => $terminal->store_id]); } else { return SendResponse::errorResp401unauthorized(); } return $next($request); } private function isValidToken($terminal, $token) { try { return $this->decryptString($token, $terminal->private_key); } catch (\Throwable $th) { return false; } } public function decryptString($encryptedData, $privateKey) { openssl_private_decrypt(base64_decode($encryptedData), $decryptedData, $privateKey); return $decryptedData; } }