This commit is contained in:
Adrian Hopek
2022-01-13 09:08:36 +01:00
parent 197e7da9cc
commit 38af769f7b
17 changed files with 1434 additions and 144 deletions

View File

@@ -6,9 +6,9 @@ namespace Toby\Http\Controllers;
use Illuminate\Contracts\Auth\Factory as AuthFactory;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Toby\Models\User;
use Laravel\Socialite\SocialiteManager;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Toby\Models\User;
class GoogleController extends Controller
{
@@ -29,8 +29,6 @@ class GoogleController extends Controller
$auth->guard()->login($user, true);
$user->syncGoogleData($socialUser);
return redirect()->route("dashboard");
} catch (ModelNotFoundException) {
return redirect()

View File

@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
namespace Toby\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\RedirectResponse;
class LogoutController extends Controller
{
public function __invoke(Request $request): RedirectResponse
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect()->route("login");
}
}

View File

@@ -6,6 +6,7 @@ namespace Toby\Http\Middleware;
use Illuminate\Http\Request;
use Inertia\Middleware;
use Toby\Http\Resources\UserResource;
class HandleInertiaRequests extends Middleware
{
@@ -15,12 +16,7 @@ class HandleInertiaRequests extends Middleware
return array_merge(parent::share($request), [
"auth" => fn() => [
"user" => $user ? [
"name" => $user->name,
"email" => $user->email,
"role" => "Human Resources Manager",
"imageUrl" => $user->avatar,
] : null,
"user" => $user ? new UserResource($user) : null,
],
"flash" => fn() => [
"success" => $request->session()->get("success"),

View File

@@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
namespace Toby\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class UserResource extends JsonResource
{
public function toArray($request): array
{
return [
"id" => $this->id,
"name" => $this->name,
"email" => $this->email,
"role" => "Human Resources Manager",
"avatar" => "https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
];
}
}

View File

@@ -7,14 +7,11 @@ namespace Toby\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Socialite\Two\User as SocialUser;
/**
* @property int $id
* @property string $name
* @property string $email
* @property string $avatar
* @property string $google_id
*/
class User extends Authenticatable
{
@@ -29,17 +26,4 @@ class User extends Authenticatable
protected $hidden = [
"remember_token",
];
protected $casts = [
"email_verified_at" => "datetime",
];
public function syncGoogleData(SocialUser $user): void
{
$this->name = $user->getName();
$this->avatar = $user->getAvatar();
$this->google_id = $user->getId();
$this->save();
}
}