* @param $token * @param string $password * @return TemplateResponse|RedirectResponse */
($token, string $password = '')
| 170 | * @return TemplateResponse|RedirectResponse |
| 171 | */ |
| 172 | #[PublicPage] |
| 173 | #[UseSession] |
| 174 | #[NoCSRFRequired] |
| 175 | public function indexPublic($token, string $password = '') |
| 176 | { |
| 177 | $share = $this->ShareService->getReportByToken($token); |
| 178 | |
| 179 | if (empty($share)) { |
| 180 | // Dataset not shared or wrong token |
| 181 | return new RedirectResponse($this->urlGenerator->linkToRoute('core.login.showLoginForm', [ |
| 182 | 'redirect_url' => $this->urlGenerator->linkToRoute($this->appName . '.page.report', ['token' => $token]), |
| 183 | ])); |
| 184 | } else { |
| 185 | if ($share['password'] !== null) { |
| 186 | $password = $password !== '' ? $password : (string)$this->DataSession->getPasswordForShare($token); |
| 187 | $passwordVerification = $this->ShareService->verifyPassword($password, $share['password']); |
| 188 | if ($passwordVerification === true) { |
| 189 | $this->DataSession->setPasswordForShare($token, $password); |
| 190 | } else { |
| 191 | $this->DataSession->removePasswordForShare($token); |
| 192 | return new TemplateResponse($this->appName, 'authenticate', ['wrongpw' => $password !== '',], 'guest'); |
| 193 | } |
| 194 | } |
| 195 | $params = array(); |
| 196 | $params['token'] = $token; |
| 197 | $response = new PublicTemplateResponse($this->appName, 'public', $params); |
| 198 | $response->setHeaderTitle('Nextcloud Analytics'); |
| 199 | $response->setFooterVisible(false); |
| 200 | return $response; |
| 201 | } |
| 202 | } |
| 203 | |
| 204 | /** |
| 205 | * @param $token |
no test coverage detected