This commit is contained in:
Masroor Ehsan 2024-12-31 17:57:46 +06:00
parent 5095a7b7dd
commit 389212312d
4 changed files with 58 additions and 1 deletions

View File

@ -17,7 +17,7 @@ protected static function defaultSortQuery(Builder $query): Builder
{
return $query
->orderBy('study_priority', 'desc')
->orderBy('received_at', 'asc');
->orderBy('received_at');
}
protected static function reportPendingQuery(Builder $query): Builder

View File

@ -0,0 +1,50 @@
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Auth;
use Laravel\Socialite\Facades\Socialite;
class SocialLoginController extends Controller
{
public function redirect(string $driver)
{
return Socialite::driver($driver)
->scopes(['name', 'email'])
->redirect();
}
public function handleProviderCallback(string $driver)
{
$social = Socialite::driver($driver)->user();
$user = User::where(['email' => strtolower($social->getEmail())])->first();
if ($user == null) {
$user = User::where(['username' => strtolower($social->getNickname())])->first();
}
if ($user) {
Auth::login($user);
$updates = [];
if ($user->profile_photo_path == null) {
$updates['profile_photo_path'] = $social->getAvatar();
}
if ($user->email == null) {
$updates['email'] = $social->getEmail();
}
$updates = array_purge($updates);
if (! empty($updates)) {
$user->update($updates);
}
return redirect()->route('dashboard');
} else {
$provider = ucfirst($driver);
return redirect()
->route('login')
->withErrors("Email {$social->getEmail()} not found for {$provider} login.");
}
}
}

View File

@ -13,6 +13,7 @@
"laravel/framework": "^11.31",
"laravel/jetstream": "^5.3",
"laravel/sanctum": "^4.0",
"laravel/socialite": "^5.16",
"laravel/tinker": "^2.9",
"livewire/livewire": "^3.0",
"phpoffice/phpword": "^1.3",

View File

@ -2,6 +2,7 @@
use App\Http\Controllers\Guest\ViewSharedStudyController;
use App\Http\Controllers\Radiologist\ReportWriteController;
use App\Http\Controllers\SocialLoginController;
use App\Http\Controllers\Staff\StudiesController;
use App\Http\Controllers\System\SyncOrthancController;
use Illuminate\Support\Facades\Route;
@ -40,3 +41,8 @@
});
Route::view('/ck', 'ck');
Route::group(['prefix' => 'social', 'as' => 'social.'], function () {
Route::get('{driver}', [SocialLoginController::class, 'redirect'])->name('login');
Route::get('{driver}/callback', [SocialLoginController::class, 'callback']);
});