1. Go to this page and download the library: Download adt/doctrine-authenticator library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
adt / doctrine-authenticator example snippets
namespace App\Model\Entities;
use ADT\DoctrineAuthenticator\DoctrineAuthenticatorIdentity;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\GeneratedValue;
use Doctrine\ORM\Mapping\Id;
/** @Entity */
#[Entity]
class Identity implements DoctrineAuthenticatorIdentity
{
/**
* @Id
* @Column
* @GeneratedValue
*/
#[Id]
#[Column]
#[GeneratedValue]
protected ?int $id;
public function getId(): int
{
return $this->id;
}
public function __clone()
{
$this->id = null;
}
/** @Column(unique=true) */
#[Column(unique: true)]
protected string $email;
/** @Column */
#[Column]
protected string $password;
public function getEmail(): string
{
return $this->email;
}
public function setEmail(string $email): self
{
$this->email = $email;
return $this;
}
public function getPassword(): string
{
return $this->password;
}
public function setPassword(string $password): self
{
$this->password = $password;
return $this;
}
public function getRoles(): array
{
return [];
}
public function getAuthObjectId(): string
{
return (string) $this->getId();
}
}
namespace App\Model\Security;
use App\Model\Entities\Identity;
/**
* @method Identity getIdentity()
*/
class SecurityUser extends \ADT\DoctrineAuthenticator\SecurityUser
{
}
namespace App\Model\Security;
use ADT\DoctrineAuthenticator\DoctrineAuthenticator;
use App\Model\Entities\Identity;
use Doctrine\DBAL\Connection;
use Doctrine\ORM\Configuration;
use Doctrine\ORM\EntityManagerInterface;
use Nette\Bridges\SecurityHttp\CookieStorage;
use Nette\Http\Request;
use Nette\Security\AuthenticationException;
use Nette\Security\IIdentity;
use Nette\Security\Passwords;
class Authenticator extends DoctrineAuthenticator
{
public function __construct(
string $expiration,
CookieStorage $cookieStorage,
Connection $connection,
Configuration $configuration,
Request $httpRequest,
protected readonly EntityManagerInterface $em,
) {
parent::__construct($expiration, $cookieStorage, $connection, $configuration, $httpRequest);
$this->onInvalidToken = function(string $token) {
// log probable fraud
};
}
public function authenticate(string $user, string $password): IIdentity
{
/** @var Identity $identity */
if (! $identity = $this->em->getRepository(Identity::class)->findOneBy(['email' => $user])) {
throw new AuthenticationException('Identity not found!');
}
if (!(new Passwords())->verify($password, $identity->getPassword())) {
throw new AuthenticationException('Incorrect password!');
}
return $identity;
}
public function getIdentity($id): IIdentity
{
return $this->em->getRepository(Identity::class)->find($id);
}
}
$this->securityUser->login($email, $password);
bash
php bin/console migrations:diff
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.