/** * Performs an authentication. * * @param array $credentials * * @return Nette\Security\Identity * @throws Nette\Security\AuthenticationException */ public function authenticate(array $credentials) { list($username, $password) = $credentials; $user = $this->userRepository->findOneBy(["userName" => $username]); $authExt = false; foreach ($this->authDrivers as $authDriver) { $authDriver->setUp($this->userRepository, $this->roleRepository, $this->userActivityRepository); if ($authExt = $authDriver->authenticate($username, $password, $user)) { if ($user) { $user->authMethod = $authDriver->getName(); break; } else { $authExt = false; } } } if (!$authExt) { if (!$user) { throw new Security\AuthenticationException('Wrong username.', self::IDENTITY_NOT_FOUND); } elseif (!Security\Passwords::verify($password, $this->userRepository->getPassword($user))) { throw new Security\AuthenticationException('Wrong password.', self::INVALID_CREDENTIAL); } } // update lastLogged $user->lastLogged = new DateTime(); $this->userRepository->save($user); $userActivity = new UserActivity(); $userActivity->userId = $user->id; $userActivity->type = "login"; $this->userActivityRepository->save($userActivity); return new Security\Identity($user->id, $user->roles, $user); }
/** * Create User Entity from adUser * * @param Models\User $adUser * * @return null|user */ protected function createUserFromAd(Models\User $adUser) { $user = new User(); $user->fullName = $adUser->getDisplayName(); $user->userName = $adUser->getAccountName(); $user->email = $adUser->getEmail(); $user->phone = $adUser->getTelephoneNumber(); $user->title = $adUser->getTitle(); $user->thumbnail = $adUser->getThumbnailEncoded(); // save user if ($this->userRepository->save($user)) { $userActivity = new UserActivity(); $userActivity->userId = $user->id; $userActivity->type = "createFromAuthDriver"; $userActivity->description = "Auto create from " . $this->getName(); $this->userActivityRepository->save($userActivity); } else { $user = null; } return $user; }