social
This commit is contained in:
parent
5095a7b7dd
commit
389212312d
@ -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
|
||||
|
50
app/Http/Controllers/SocialLoginController.php
Normal file
50
app/Http/Controllers/SocialLoginController.php
Normal 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.");
|
||||
}
|
||||
}
|
||||
}
|
@ -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",
|
||||
|
@ -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']);
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user