Skip to content

Commit f431520

Browse files
authored
Merge pull request #59789 from nextcloud/backport/59764/stable33
[stable33] fix: Add missing PasswordConfirmationRequired attributes
2 parents da54648 + 4e7b7c8 commit f431520

295 files changed

Lines changed: 446 additions & 364 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/oauth2/lib/Controller/SettingsController.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use OCA\OAuth2\Db\ClientMapper;
1414
use OCP\AppFramework\Controller;
1515
use OCP\AppFramework\Http;
16+
use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired;
1617
use OCP\AppFramework\Http\JSONResponse;
1718
use OCP\Authentication\Token\IProvider as IAuthTokenProvider;
1819
use OCP\IL10N;
@@ -40,6 +41,7 @@ public function __construct(
4041
parent::__construct($appName, $request);
4142
}
4243

44+
#[PasswordConfirmationRequired(strict: true)]
4345
public function addClient(string $name,
4446
string $redirectUri): JSONResponse {
4547
if (filter_var($redirectUri, FILTER_VALIDATE_URL) === false) {
@@ -66,6 +68,7 @@ public function addClient(string $name,
6668
return new JSONResponse($result);
6769
}
6870

71+
#[PasswordConfirmationRequired]
6972
public function deleteClient(int $id): JSONResponse {
7073
$client = $this->clientMapper->getByUid($id);
7174

apps/oauth2/src/settings-admin.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@
33
* SPDX-License-Identifier: AGPL-3.0-or-later
44
*/
55

6+
import axios from '@nextcloud/axios'
67
import { loadState } from '@nextcloud/initial-state'
8+
import { addPasswordConfirmationInterceptors } from '@nextcloud/password-confirmation'
79
import { createApp } from 'vue'
810
import AdminSettings from './views/AdminSettings.vue'
911

1012
import 'vite/modulepreload-polyfill'
1113

14+
addPasswordConfirmationInterceptors(axios)
15+
1216
const clients = loadState('oauth2', 'clients')
1317

1418
const app = createApp(AdminSettings, {

apps/oauth2/src/views/AdminSettings.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import axios, { isAxiosError } from '@nextcloud/axios'
88
import { getCapabilities } from '@nextcloud/capabilities'
99
import { loadState } from '@nextcloud/initial-state'
1010
import { t } from '@nextcloud/l10n'
11+
import { PwdConfirmationMode } from '@nextcloud/password-confirmation'
1112
import { generateUrl } from '@nextcloud/router'
1213
import { ref } from 'vue'
1314
import NcButton from '@nextcloud/vue/components/NcButton'
@@ -56,7 +57,7 @@ async function addClient() {
5657
const { data } = await axios.post(generateUrl('apps/oauth2/clients'), {
5758
name: newClient.value.name,
5859
redirectUri: newClient.value.redirectUri,
59-
})
60+
}, { confirmPassword: PwdConfirmationMode.Strict })
6061
clients.value.push(data)
6162
showSecretWarning.value = true
6263

apps/provisioning_api/lib/Controller/AppsController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public function getAppInfo(string $app): DataResponse {
109109
*
110110
* 200: App enabled successfully
111111
*/
112-
#[PasswordConfirmationRequired]
112+
#[PasswordConfirmationRequired(strict: true)]
113113
public function enable(string $app): DataResponse {
114114
try {
115115
$app = $this->verifyAppId($app);

apps/settings/lib/Controller/AppSettingsController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ public function enableApp(string $appId, array $groups = []): JSONResponse {
566566
* @param array $groups
567567
* @return JSONResponse
568568
*/
569-
#[PasswordConfirmationRequired]
569+
#[PasswordConfirmationRequired(strict: true)]
570570
public function enableApps(array $appIds, array $groups = []): JSONResponse {
571571
try {
572572
$updateRequired = false;

apps/settings/lib/Controller/AuthorizedGroupController.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use OCA\Settings\Service\AuthorizedGroupService;
1111
use OCA\Settings\Service\NotFoundException;
1212
use OCP\AppFramework\Controller;
13+
use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired;
1314
use OCP\AppFramework\Http\DataResponse;
1415
use OCP\DB\Exception;
1516
use OCP\IRequest;
@@ -27,6 +28,7 @@ public function __construct(
2728
* @throws NotFoundException
2829
* @throws Exception
2930
*/
31+
#[PasswordConfirmationRequired(strict: true)]
3032
public function saveSettings(array $newGroups, string $class): DataResponse {
3133
$currentGroups = $this->authorizedGroupService->findExistingGroupsForClass($class);
3234

apps/settings/lib/Controller/TwoFactorSettingsController.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use OC\Authentication\TwoFactorAuth\EnforcementState;
1212
use OC\Authentication\TwoFactorAuth\MandatoryTwoFactor;
1313
use OCP\AppFramework\Controller;
14+
use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired;
1415
use OCP\AppFramework\Http\JSONResponse;
1516
use OCP\IRequest;
1617

@@ -31,6 +32,7 @@ public function index(): JSONResponse {
3132
return new JSONResponse($this->mandatoryTwoFactor->getState());
3233
}
3334

35+
#[PasswordConfirmationRequired(strict: true)]
3436
public function update(bool $enforced, array $enforcedGroups = [], array $excludedGroups = []): JSONResponse {
3537
$this->mandatoryTwoFactor->setState(
3638
new EnforcementState($enforced, $enforcedGroups, $excludedGroups)

apps/settings/src/components/AdminDelegation/GroupSelect.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<script>
1818
import axios from '@nextcloud/axios'
1919
import { showError } from '@nextcloud/dialogs'
20+
import { PwdConfirmationMode } from '@nextcloud/password-confirmation'
2021
import { generateUrl } from '@nextcloud/router'
2122
import NcSelect from '@nextcloud/vue/components/NcSelect'
2223
import logger from '../../logger.ts'
@@ -66,7 +67,7 @@ export default {
6667
class: this.setting.class,
6768
}
6869
try {
69-
await axios.post(generateUrl('/apps/settings/') + '/settings/authorizedgroups/saveSettings', data)
70+
await axios.post(generateUrl('/apps/settings/') + '/settings/authorizedgroups/saveSettings', data, { confirmPassword: PwdConfirmationMode.Strict })
7071
} catch (e) {
7172
showError(t('settings', 'Unable to modify setting'))
7273
logger.error('Unable to modify setting', e)

apps/settings/src/components/AdminTwoFactor.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
<script>
7878
import axios from '@nextcloud/axios'
7979
import { loadState } from '@nextcloud/initial-state'
80+
import { PwdConfirmationMode } from '@nextcloud/password-confirmation'
8081
import { generateOcsUrl, generateUrl } from '@nextcloud/router'
8182
import debounce from 'lodash/debounce.js'
8283
import sortedUniq from 'lodash/sortedUniq.js'
@@ -170,7 +171,7 @@ export default {
170171
enforcedGroups: this.enforcedGroups,
171172
excludedGroups: this.excludedGroups,
172173
}
173-
axios.put(generateUrl('/settings/api/admin/twofactorauth'), data)
174+
axios.put(generateUrl('/settings/api/admin/twofactorauth'), data, { confirmPassword: PwdConfirmationMode.Strict })
174175
.then((resp) => resp.data)
175176
.then((state) => {
176177
this.state = state

apps/settings/src/main-admin-delegation.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@
33
* SPDX-License-Identifier: AGPL-3.0-or-later
44
*/
55

6+
import axios from '@nextcloud/axios'
7+
import { addPasswordConfirmationInterceptors } from '@nextcloud/password-confirmation'
68
import Vue from 'vue'
79
import App from './components/AdminDelegating.vue'
810

11+
addPasswordConfirmationInterceptors(axios)
12+
913
// bind to window
1014
Vue.prototype.OC = OC
1115
Vue.prototype.t = t

0 commit comments

Comments
 (0)