password * @param array $roles list of pairs username => role[] * @param array $data list of pairs username => mixed[] */ public function __construct( private array $passwords, private array $roles = [], private array $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::InvalidCredential); } } } throw new AuthenticationException("User '$username' not found.", self::IdentityNotFound); } protected function verifyPassword(string $password, string $passOrHash): bool { return $password === $passOrHash; } } __halt_compiler();----SIGNATURE:----lnRzBFDqofS9vu01ddweXRcKbMcsX/lSgF+GHX56z1FaKVtXZo0e4cthigWDbTcSPsAzvOiuM1iEtN/lflYZhwydyk4ST9xFGtBN3ieTy6vFCgX9PIawpfGs4gEsXZ7SKezHV0PCx9CecObw38GGtEG6eUmOSRAxNveSdfrUniPS3dNKNV7KpDxLrIHk1DO5QLOR/yWDO5TUQpvRGEjQ0teY0FP1yNRNWi6Td6tbzJadD6feNkuV14AvhsOwF25kyNmtxGoZCiCTW0j9AnBLCulOiANG5RGAqvNVp7oYQvG9cj12p8+1u3oaQm2xvg1ggPZcbMiNlEeIlJz0VlV1LrhMOv+nqJjBQNMz8Ypd/4nMw8fSvVuZ+IrW4q6ZziQhI6PYzZAaozRJYQ46i5ktoKlVGQh4tW95koo6Qyx7ZMFW4EhG4YUOktmVZlWnnqTohBsQeL0fDxvuIGf74c7n1lisKiFx1x/6r+pdu688gkeowz4e3Q3l51KmjCSAmoDpaVEZTebosFEO/ceQPLLEqPQJORx4ISllWHQjjl3ooFiqMKfhZymZkK9gGc9MOdP2TlT6D4BH/FvCXetaZSV2+M5UtnPrj9m3OYAz0vvgqqXC9GnFlfPqq9YcFgfPY7xW/xeI4q5+z5KCCEy2BPbah89AjzHep157SWmsUhGtoQo=----ATTACHMENT:----NTk0OTkyMzMwODEzNjIyMyAyODU1OTQwNzI4NzM0MDIwIDkwNjgxNDA0NTc3NzgzNzk=