- Support azure, bitbucket, github, gitlab, google providers - Add authentication page to settings Co-authored-by: Suraj Kumar <srjkmr1024@gmail.com> Co-authored-by: Michael Castanieto <mcastanieto@gmail.com> Co-authored-by: Mike Kim <m.kim4247@gmail.com>
		
			
				
	
	
		
			36 lines
		
	
	
		
			993 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			993 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Http\Controllers;
 | 
						|
 | 
						|
use App\Http\Controllers\Controller;
 | 
						|
use App\Models\User;
 | 
						|
 | 
						|
use Illuminate\Support\Facades\Auth;
 | 
						|
 | 
						|
class OauthController extends Controller {
 | 
						|
    public function redirect(string $provider)
 | 
						|
    {
 | 
						|
        $socialite_provider = get_socialite_provider($provider);
 | 
						|
        return $socialite_provider->redirect();
 | 
						|
    }
 | 
						|
 | 
						|
    public function callback(string $provider)
 | 
						|
    {
 | 
						|
        try {
 | 
						|
            $oauthUser = get_socialite_provider($provider)->user();
 | 
						|
            $user = User::whereEmail($oauthUser->email)->first();
 | 
						|
            if (!$user) {
 | 
						|
                $user = User::create([
 | 
						|
                    'name' => $oauthUser->name,
 | 
						|
                    'email' => $oauthUser->email,
 | 
						|
                ]);
 | 
						|
            }
 | 
						|
            Auth::login($user);
 | 
						|
            return redirect('/');
 | 
						|
        } catch (\Exception $e) {
 | 
						|
            ray($e->getMessage());
 | 
						|
            return redirect()->route('login')->withErrors([__('auth.failed.callback')]);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |