scan.fyi/app/Auth/HashEmailUserProvider.php
2026-02-22 17:49:23 +00:00

75 lines
1.9 KiB
PHP
Executable file

<?php
namespace App\Auth;
use App\Models\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Contracts\Auth\UserProvider;
class HashEmailUserProvider implements UserProvider
{
/**
* Retrieve a user by their unique identifier.
*/
public function retrieveById($identifier): ?Authenticatable
{
return User::find($identifier);
}
/**
* Retrieve a user by their unique identifier and "remember me" token.
*/
public function retrieveByToken($identifier, $token): ?Authenticatable
{
$user = $this->retrieveById($identifier);
if (!$user) {
return null;
}
$rememberToken = $user->getRememberToken();
return $rememberToken && hash_equals($rememberToken, $token) ? $user : null;
}
/**
* Update the "remember me" token for the given user in storage.
*/
public function updateRememberToken(Authenticatable $user, $token): void
{
$user->setRememberToken($token);
$user->save();
}
/**
* Retrieve a user by the given credentials.
*/
public function retrieveByCredentials(array $credentials): ?Authenticatable
{
if (empty($credentials['email'])) {
return null;
}
return User::findByEmail($credentials['email']);
}
/**
* Validate a user against the given credentials.
*
* For passwordless authentication, this always returns true.
*/
public function validateCredentials(Authenticatable $user, array $credentials): bool
{
return true;
}
/**
* Rehash the user's password if required and update the model.
*
* This is a no-op for passwordless authentication.
*/
public function rehashPasswordIfRequired(Authenticatable $user, array $credentials, bool $force = false): void
{
// No-op: passwordless authentication doesn't use passwords
}
}