ultimatepos/app/Http/Middleware/SetApiBusinessContext.php

67 lines
2.0 KiB
PHP

<?php
namespace App\Http\Middleware;
use App\Business;
use App\Utils\BusinessUtil;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class SetApiBusinessContext
{
public function handle(Request $request, Closure $next)
{
$user = Auth::user();
if (empty($user) || empty($user->business_id)) {
return response()->json([
'success' => false,
'message' => 'Unauthorized',
], 401);
}
if ($user->user_type !== 'user' || ! $user->allow_login) {
return response()->json([
'success' => false,
'message' => 'Login not allowed for this user.',
], 403);
}
$business = Business::with('currency')->findOrFail($user->business_id);
if (! $business->is_active) {
return response()->json([
'success' => false,
'message' => 'Business is not active.',
], 403);
}
$business_util = new BusinessUtil;
$currency = $business->currency;
$request->attributes->set('api_user', [
'id' => $user->id,
'surname' => $user->surname,
'first_name' => $user->first_name,
'last_name' => $user->last_name,
'email' => $user->email,
'username' => $user->username,
'business_id' => $user->business_id,
'language' => $user->language,
]);
$request->attributes->set('api_business', $business);
$request->attributes->set('api_currency', [
'id' => $currency->id,
'code' => $currency->code,
'symbol' => $currency->symbol,
'thousand_separator' => $currency->thousand_separator,
'decimal_separator' => $currency->decimal_separator,
]);
$request->attributes->set('api_financial_year', $business_util->getCurrentFinancialYear($business->id));
return $next($request);
}
}