fixes login page in tenant admin pwa
This commit is contained in:
@@ -8,6 +8,7 @@ use App\Http\Requests\Tenant\SettingsStoreRequest;
|
||||
use App\Models\Tenant;
|
||||
use App\Services\Packages\TenantNotificationPreferences;
|
||||
use App\Support\ApiError;
|
||||
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
@@ -19,7 +20,7 @@ class SettingsController extends Controller
|
||||
*/
|
||||
public function index(Request $request): JsonResponse
|
||||
{
|
||||
$tenant = $request->tenant;
|
||||
$tenant = $this->resolveTenant($request);
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Settings erfolgreich abgerufen.',
|
||||
@@ -35,7 +36,7 @@ class SettingsController extends Controller
|
||||
Request $request,
|
||||
TenantNotificationPreferences $preferencesService
|
||||
): JsonResponse {
|
||||
$tenant = $request->tenant;
|
||||
$tenant = $this->resolveTenant($request);
|
||||
$defaults = TenantNotificationPreferences::defaults();
|
||||
$resolved = [];
|
||||
|
||||
@@ -60,7 +61,7 @@ class SettingsController extends Controller
|
||||
NotificationPreferencesRequest $request,
|
||||
TenantNotificationPreferences $preferencesService
|
||||
): JsonResponse {
|
||||
$tenant = $request->tenant;
|
||||
$tenant = $this->resolveTenant($request);
|
||||
$payload = $request->validated()['preferences'];
|
||||
|
||||
$tenant->update([
|
||||
@@ -92,7 +93,7 @@ class SettingsController extends Controller
|
||||
*/
|
||||
public function update(SettingsStoreRequest $request): JsonResponse
|
||||
{
|
||||
$tenant = $request->tenant;
|
||||
$tenant = $this->resolveTenant($request);
|
||||
$settings = $request->validated()['settings'];
|
||||
|
||||
$tenant->update([
|
||||
@@ -115,7 +116,7 @@ class SettingsController extends Controller
|
||||
*/
|
||||
public function reset(Request $request): JsonResponse
|
||||
{
|
||||
$tenant = $request->tenant;
|
||||
$tenant = $this->resolveTenant($request);
|
||||
|
||||
$defaultSettings = [
|
||||
'branding' => [
|
||||
@@ -150,6 +151,35 @@ class SettingsController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
private function resolveTenant(Request $request): Tenant
|
||||
{
|
||||
$tenant = $request->attributes->get('tenant');
|
||||
|
||||
if ($tenant instanceof Tenant) {
|
||||
return $tenant;
|
||||
}
|
||||
|
||||
$tenantId = $request->attributes->get('tenant_id')
|
||||
?? $request->attributes->get('current_tenant_id')
|
||||
?? $request->user()?->tenant_id;
|
||||
|
||||
if ($tenantId) {
|
||||
$tenant = Tenant::query()->find($tenantId);
|
||||
if ($tenant) {
|
||||
$request->attributes->set('tenant', $tenant);
|
||||
|
||||
return $tenant;
|
||||
}
|
||||
}
|
||||
|
||||
throw new HttpResponseException(ApiError::response(
|
||||
'tenant_context_missing',
|
||||
'Tenant context missing',
|
||||
'Unable to determine tenant for the current request.',
|
||||
Response::HTTP_UNAUTHORIZED
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate custom domain availability.
|
||||
*/
|
||||
|
||||
@@ -8,6 +8,7 @@ use App\Models\Tenant;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
@@ -152,16 +153,13 @@ class TenantAdminTokenController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
public function exchange(Request $request): JsonResponse
|
||||
public function exchange(Request $request): JsonResponse|Response
|
||||
{
|
||||
/** @var User|null $user */
|
||||
$user = Auth::guard('web')->user();
|
||||
|
||||
if (! $user) {
|
||||
return response()->json([
|
||||
'error' => 'unauthenticated',
|
||||
'message' => trans('auth.failed'),
|
||||
], 401);
|
||||
return response()->noContent();
|
||||
}
|
||||
|
||||
if (! in_array($user->role, ['tenant_admin', 'super_admin'], true)) {
|
||||
|
||||
Reference in New Issue
Block a user