/** * Performs an authentication * @param array * @return Nette\Security\Identity * @throws Nette\Security\AuthenticationException */ public function authenticate(array $credentials, $facebookLogin = false, $mobileLogin = false) { if ($mobileLogin == true) { list($secretKey) = $credentials; $row = $this->userEntity->getTable()->where('app_secret_key', $secretKey)->fetch(); if (!$row) { throw new NS\AuthenticationException("User with app secret key '{$secretKey}' not found (Mobile app Login).", self::IDENTITY_NOT_FOUND); } return new NS\Identity($row->id, $row->user_role->name, $row->toArray()); } else { if ($facebookLogin == true) { list($fbUid) = $credentials; $row = $this->userEntity->where('fb_uid', $fbUid)->fetch(); if (!$row) { throw new NS\AuthenticationException("User with ID '{$fbUid}' not found (Facebook Login).", self::IDENTITY_NOT_FOUND); } return new NS\Identity($row->id, $row->user_role->name, $row->toArray()); } else { list($username, $password) = $credentials; $row = $this->userEntity->where('email', $username)->select('user.*, user_role.name AS user_role_name')->fetch(); if (!$row) { throw new NS\AuthenticationException("User '{$username}' not found.", self::IDENTITY_NOT_FOUND); } unset($row->pass); return new NS\Identity($row->id, $row->user_role->name, $row->toArray()); } } }
/** * Performs an authentication * @param array * @return Nette\Security\Identity * @throws Nette\Security\AuthenticationException */ public function authenticate(array $credentials) { list($username, $password) = $credentials; $row = $this->userEntity->findOneBy(array('email' => $username)); if (!$row) { throw new NS\AuthenticationException("User '{$username}' not found.", self::IDENTITY_NOT_FOUND); } if ($row->password != $this->passwordService->hash($password)) { throw new NS\AuthenticationException("Wrong password or email.", self::INVALID_CREDENTIAL); } return new NS\Identity($row->id, null, $row->toArray()); }