%PDF- %PDF-
Direktori : /www/varak.net/losik.varak.net/vendor/nette/security/src/Security/ |
Current File : /www/varak.net/losik.varak.net/vendor/nette/security/src/Security/SimpleAuthenticator.php |
<?php /** * This file is part of the Nette Framework (https://nette.org) * Copyright (c) 2004 David Grudl (https://davidgrudl.com) */ declare(strict_types=1); namespace Nette\Security; use Nette; /** * Trivial implementation of Authenticator. */ class SimpleAuthenticator implements Authenticator { use Nette\SmartObject; /** @var array */ private $passwords; /** @var array */ private $roles; /** @var array */ private $data; /** * @param array $passwords list of pairs username => password * @param array $roles list of pairs username => role[] * @param array $data list of pairs username => mixed[] */ public function __construct(array $passwords, array $roles = [], array $data = []) { $this->passwords = $passwords; $this->roles = $roles; $this->data = $data; } /** * Performs an authentication against e.g. database. * and returns IIdentity on success or throws AuthenticationException * @throws AuthenticationException */ public function authenticate(string $username, string $password): IIdentity { foreach ($this->passwords as $name => $pass) { if (strcasecmp($name, $username) === 0) { if ($this->verifyPassword($password, $pass)) { return new SimpleIdentity($name, $this->roles[$name] ?? null, $this->data[$name] ?? []); } else { throw new AuthenticationException('Invalid password.', self::INVALID_CREDENTIAL); } } } throw new AuthenticationException("User '$username' not found.", self::IDENTITY_NOT_FOUND); } protected function verifyPassword(string $password, string $passOrHash): bool { return $password === $passOrHash; } }