67 lines
2.0 KiB
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);
|
|
}
|
|
}
|