Merge pull request #23095 from nextcloud/backport/23043/stable20

[stable20] Avoid crash when unauthenticated users make weather-related requests
This commit is contained in:
Roeland Jago Douma 2020-09-29 21:35:17 +02:00 committed by GitHub
commit 6b8356ce35
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 30 additions and 11 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -46,7 +46,7 @@ class WeatherStatusController extends OCSController {
IRequest $request,
ILogger $logger,
WeatherStatusService $service,
string $userId) {
?string $userId) {
parent::__construct($appName, $request);
$this->userId = $userId;
$this->logger = $logger;

View File

@ -105,7 +105,7 @@ class WeatherStatusService {
IUserManager $userManager,
IAppManager $appManager,
ICacheFactory $cacheFactory,
string $userId) {
?string $userId) {
$this->config = $config;
$this->userId = $userId;
$this->l10n = $l10n;

View File

@ -240,7 +240,11 @@ export default {
console.info('The weather status request was cancelled because the user navigates.')
return
}
showError(t('weather_status', 'There was an error getting the weather status information.'))
if (err.response && err.response.status === 401) {
showError(t('weather_status', 'You are not logged in.'))
} else {
showError(t('weather_status', 'There was an error getting the weather status information.'))
}
console.error(err)
}
},
@ -309,8 +313,11 @@ export default {
this.loading = false
}
} catch (err) {
showError(t('weather_status', 'There was an error setting the location address.'))
console.debug(err)
if (err.response && err.response.status === 401) {
showError(t('weather_status', 'You are not logged in.'))
} else {
showError(t('weather_status', 'There was an error setting the location address.'))
}
this.loading = false
}
},
@ -320,7 +327,11 @@ export default {
this.address = loc.address
this.startLoop()
} catch (err) {
showError(t('weather_status', 'There was an error setting the location.'))
if (err.response && err.response.status === 401) {
showError(t('weather_status', 'You are not logged in.'))
} else {
showError(t('weather_status', 'There was an error setting the location.'))
}
console.debug(err)
}
},
@ -328,7 +339,11 @@ export default {
try {
await network.setMode(mode)
} catch (err) {
showError(t('weather_status', 'There was an error saving the mode.'))
if (err.response && err.response.status === 401) {
showError(t('weather_status', 'You are not logged in.'))
} else {
showError(t('weather_status', 'There was an error saving the mode.'))
}
console.debug(err)
}
},
@ -345,7 +360,11 @@ export default {
this.mode = MODE_MANUAL_LOCATION
this.startLoop()
} catch (err) {
showError(t('weather_status', 'There was an error using personal address.'))
if (err.response && err.response.status === 401) {
showError(t('weather_status', 'You are not logged in.'))
} else {
showError(t('weather_status', 'There was an error using personal address.'))
}
console.debug(err)
this.loading = false
}