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:----xhCHPSQYNxlGrfmCZZDuTgjA91gh7gqeZqhyBpQ+F7okUcjvdwUS3jRXDmpyFKnQ8RBVE88SdDFUAbDSwdEBQ5mj053LHIOnC8VWAzMVhWxg6YYv4axFbjjuOH++0MJufrJ8+Kf3P1mq8sGpQf9wV9nHISxZt3S3iARQ/xJkjL4Oo7YKhZAggyHxXUAW6aYqp3V5VCuAb3u78KOTMSt5ISusZzXuedsfOUuRT8BIkki7ZnQVW/bec0hh8l2zQ4ryqUr6HHQ8H2lXj5HRH6PLcOh0a2Mt4Ib/eZWZop+8W2oanWOEDGBciZDBmmrciT0S9KGQQsoQICv3zqEou2wl54UQTiG7nzR8F1cBXGLI4alagzX+EN0cXPqHAAI3ytFo12Xsr2pdJamDOmEizWGP2wzzfepn5Rs6dP1h6wqhY4Jz+1dPXePoGHfTlKOYX+rK3jYuFyFFj1KA9cASltM0ryrZS2Qt2skF1T70ZeXhbnmuAyC+0czP40bh753jecgFudYD8s7+thiPH3OXLzfc3TIJTmQcoWGWy+bxPTeJfPYuLsBoJMFZ20bBXUBNSFY1NVt4ptzLAjwy5TFxmhUTcohmu+7vS7BdIna/W7bf9hir2OrpQDXE5ureaulnBOGB6G2LSWNPu+7vRUVt6B5AIck2I23AhH4XYVZJ+fQNUSA=----ATTACHMENT:----NDc1NTU5MjUyOTAwMDMwMSA0Mjk2NzE5ODM2NzIyOTMxIDI1ODg2MTk5MTcyNDA2NDA=