Adds messages when stuff goes wrong

This commit is contained in:
2026-03-19 12:21:58 +01:00
parent a373b60750
commit dbafa6c99c
4 changed files with 156 additions and 29 deletions

View File

@@ -8,6 +8,7 @@
use App\Models\Role;
use App\Models\User;
use App\Services\ActivityLogger;
use Illuminate\Database\QueryException;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
@@ -100,41 +101,47 @@ private function processCallback(): RedirectResponse
Log::info('[Azure SSO] Full Azure user dump', json_decode(json_encode($azureUser), true));
$user = User::query()->updateOrCreate(
['username' => $azureUser->getEmail()],
[
'name' => $azureUser->getName(),
'email' => $azureUser->user['mail'] ?? $azureUser->getEmail(),
'azure_id' => $azureUser->getId(),
'photo' => $azureUser->getAvatar(),
'job_title' => Arr::get($azureUser->user, 'jobTitle'),
'department' => Arr::get($azureUser->user, 'department'),
'company_name' => Arr::get($azureUser->user, 'companyName'),
'phone' => Arr::get($azureUser->user, 'mobilePhone', Arr::get($azureUser->user, 'businessPhones.0')),
'email_verified_at' => now(),
]
);
try {
$user = User::query()->updateOrCreate(
['username' => $azureUser->getEmail()],
[
'name' => $azureUser->getName(),
'email' => $azureUser->user['mail'] ?? $azureUser->getEmail(),
'azure_id' => $azureUser->getId(),
'photo' => $azureUser->getAvatar(),
'job_title' => Arr::get($azureUser->user, 'jobTitle'),
'department' => Arr::get($azureUser->user, 'department'),
'company_name' => Arr::get($azureUser->user, 'companyName'),
'phone' => Arr::get($azureUser->user, 'mobilePhone', Arr::get($azureUser->user, 'businessPhones.0')),
'email_verified_at' => now(),
]
);
Log::info('[Azure SSO] Local user upserted', [
'user_id' => $user->id,
'email' => $user->email,
'was_recent' => $user->wasRecentlyCreated,
'role_id' => $user->role_id,
]);
if ($user->role_id === null) {
$user->update(['role_id' => Role::where('name', 'user')->first()->id]);
Log::info('[Azure SSO] Default role assigned', [
Log::info('[Azure SSO] Local user upserted', [
'user_id' => $user->id,
'email' => $user->email,
'was_recent' => $user->wasRecentlyCreated,
'role_id' => $user->role_id,
]);
if ($user->role_id === null) {
$user->update(['role_id' => Role::where('name', 'user')->first()->id]);
Log::info('[Azure SSO] Default role assigned', [
'user_id' => $user->id,
'role_id' => $user->role_id,
]);
}
auth()->login($user);
ActivityLogger::log('login', $user->id, metadata: ['email' => $user->email, 'firm_name' => Arr::get($azureUser->user, 'companyName')]);
} catch (QueryException $e) {
Log::error('[Azure SSO] Database error during user upsert', ['message' => $e->getMessage(), 'email' => $azureUser->getEmail()]);
return redirect('/')->with('error', 'Something went wrong during sign-in. Please try again or contact support.');
}
auth()->login($user);
ActivityLogger::log('login', $user->id, metadata: ['email' => $user->email, 'firm_name' => Arr::get($azureUser->user, 'companyName')]);
return redirect('/');
}
}