예제 #1
0
 /**
  * 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);
 }
예제 #2
0
 /**
  * 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;
 }