MIF_E31231714/app/Auth/DualUserProvider.php

71 lines
2.3 KiB
PHP

<?php
namespace App\Auth;
use App\Models\UserDosen;
use App\Models\UserStaff;
use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Contracts\Auth\UserProvider;
use Illuminate\Contracts\Hashing\Hasher as HasherContract;
class DualUserProvider implements UserProvider
{
private EloquentUserProvider $dosenProvider;
private EloquentUserProvider $staffProvider;
public function __construct(HasherContract $hasher)
{
$this->dosenProvider = new EloquentUserProvider($hasher, UserDosen::class);
$this->staffProvider = new EloquentUserProvider($hasher, UserStaff::class);
}
public function retrieveById($identifier): ?Authenticatable
{
return $this->dosenProvider->retrieveById($identifier)
?? $this->staffProvider->retrieveById($identifier);
}
public function retrieveByToken($identifier, $token): ?Authenticatable
{
return $this->dosenProvider->retrieveByToken($identifier, $token)
?? $this->staffProvider->retrieveByToken($identifier, $token);
}
public function updateRememberToken(Authenticatable $user, $token): void
{
if ($user instanceof UserDosen) {
$this->dosenProvider->updateRememberToken($user, $token);
return;
}
$this->staffProvider->updateRememberToken($user, $token);
}
public function retrieveByCredentials(array $credentials): ?Authenticatable
{
return $this->dosenProvider->retrieveByCredentials($credentials)
?? $this->staffProvider->retrieveByCredentials($credentials);
}
public function validateCredentials(Authenticatable $user, array $credentials): bool
{
if ($user instanceof UserDosen) {
return $this->dosenProvider->validateCredentials($user, $credentials);
}
return $this->staffProvider->validateCredentials($user, $credentials);
}
public function rehashPasswordIfRequired(Authenticatable $user, array $credentials, bool $force = false): void
{
if ($user instanceof UserDosen) {
$this->dosenProvider->rehashPasswordIfRequired($user, $credentials, $force);
return;
}
$this->staffProvider->rehashPasswordIfRequired($user, $credentials, $force);
}
}