Skip to content

Commit 6408ed0

Browse files
committed
feat(AppFramework): Add missing NoSameSiteCookieRequired attribute
Allow to replace the old annotation. Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
1 parent b040fb1 commit 6408ed0

15 files changed

Lines changed: 114 additions & 51 deletions

File tree

apps/files_sharing/lib/Controller/PublicPreviewController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
use OCP\AppFramework\Http;
1010
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
11+
use OCP\AppFramework\Http\Attribute\NoSameSiteCookieRequired;
1112
use OCP\AppFramework\Http\Attribute\OpenAPI;
1213
use OCP\AppFramework\Http\Attribute\PublicPage;
1314
use OCP\AppFramework\Http\DataResponse;
@@ -144,8 +145,6 @@ public function getPreview(
144145
}
145146

146147
/**
147-
* @NoSameSiteCookieRequired
148-
*
149148
* Get a direct link preview for a shared file
150149
*
151150
* @param string $token Token of the share
@@ -159,6 +158,7 @@ public function getPreview(
159158
#[PublicPage]
160159
#[NoCSRFRequired]
161160
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
161+
#[NoSameSiteCookieRequired]
162162
public function directLink(string $token) {
163163
// No token no image
164164
if ($token === '') {

apps/files_sharing/lib/Controller/ShareController.php

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
use OCP\Accounts\IAccountManager;
1616
use OCP\AppFramework\AuthPublicShareController;
1717
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
18+
use OCP\AppFramework\Http\Attribute\NoSameSiteCookieRequired;
1819
use OCP\AppFramework\Http\Attribute\OpenAPI;
1920
use OCP\AppFramework\Http\Attribute\PublicPage;
2021
use OCP\AppFramework\Http\DataResponse;
2122
use OCP\AppFramework\Http\NotFoundResponse;
2223
use OCP\AppFramework\Http\RedirectResponse;
23-
use OCP\AppFramework\Http\Response;
2424
use OCP\AppFramework\Http\TemplateResponse;
2525
use OCP\Constants;
2626
use OCP\Defaults;
@@ -343,18 +343,13 @@ public function showShare($path = ''): TemplateResponse {
343343
}
344344

345345
/**
346-
* @NoSameSiteCookieRequired
347-
*
348-
* @param string $token
349-
* @param string|null $files
350-
* @param string $path
351-
* @return void|Response
352346
* @throws NotFoundException
353347
* @deprecated 31.0.0 Users are encouraged to use the DAV endpoint
354348
*/
355349
#[PublicPage]
356350
#[NoCSRFRequired]
357-
public function downloadShare($token, $files = null, $path = '') {
351+
#[NoSameSiteCookieRequired]
352+
public function downloadShare(string $token, ?string $files = null, string $path = ''): NotFoundResponse|RedirectResponse|DataResponse {
358353
\OC_User::setIncognitoMode(true);
359354

360355
$share = $this->shareManager->getShareByToken($token);

apps/theming/lib/Controller/ThemingController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use OCP\AppFramework\Http\Attribute\AuthorizedAdminSetting;
1818
use OCP\AppFramework\Http\Attribute\BruteForceProtection;
1919
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
20+
use OCP\AppFramework\Http\Attribute\NoSameSiteCookieRequired;
2021
use OCP\AppFramework\Http\Attribute\NoTwoFactorRequired;
2122
use OCP\AppFramework\Http\Attribute\OpenAPI;
2223
use OCP\AppFramework\Http\Attribute\PublicPage;
@@ -377,8 +378,6 @@ public function getImage(string $key, bool $useSvg = true) {
377378
}
378379

379380
/**
380-
* @NoSameSiteCookieRequired
381-
*
382381
* Get the CSS stylesheet for a theme
383382
*
384383
* @param string $themeId ID of the theme
@@ -393,6 +392,7 @@ public function getImage(string $key, bool $useSvg = true) {
393392
#[NoCSRFRequired]
394393
#[NoTwoFactorRequired]
395394
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
395+
#[NoSameSiteCookieRequired]
396396
public function getThemeStylesheet(string $themeId, bool $plain = false, bool $withCustomCss = false) {
397397
$themes = $this->themesService->getThemes();
398398
if (!in_array($themeId, array_keys($themes))) {

core/Controller/AvatarController.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
1414
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
1515
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
16+
use OCP\AppFramework\Http\Attribute\NoSameSiteCookieRequired;
1617
use OCP\AppFramework\Http\Attribute\OpenAPI;
1718
use OCP\AppFramework\Http\Attribute\PublicPage;
1819
use OCP\AppFramework\Http\FileDisplayResponse;
@@ -50,8 +51,6 @@ public function __construct(
5051
}
5152

5253
/**
53-
* @NoSameSiteCookieRequired
54-
*
5554
* Get the dark avatar
5655
*
5756
* @param string $userId ID of the user
@@ -67,6 +66,7 @@ public function __construct(
6766
#[PublicPage]
6867
#[FrontpageRoute(verb: 'GET', url: '/avatar/{userId}/{size}/dark')]
6968
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
69+
#[NoSameSiteCookieRequired]
7070
public function getAvatarDark(string $userId, int $size, bool $guestFallback = false) {
7171
if ($size <= 64) {
7272
if ($size !== 64) {
@@ -102,8 +102,6 @@ public function getAvatarDark(string $userId, int $size, bool $guestFallback = f
102102

103103

104104
/**
105-
* @NoSameSiteCookieRequired
106-
*
107105
* Get the avatar
108106
*
109107
* @param string $userId ID of the user
@@ -119,6 +117,7 @@ public function getAvatarDark(string $userId, int $size, bool $guestFallback = f
119117
#[PublicPage]
120118
#[FrontpageRoute(verb: 'GET', url: '/avatar/{userId}/{size}')]
121119
#[OpenAPI(scope: OpenAPI::SCOPE_DEFAULT)]
120+
#[NoSameSiteCookieRequired]
122121
public function getAvatar(string $userId, int $size, bool $guestFallback = false) {
123122
if ($size <= 64) {
124123
if ($size !== 64) {

core/Controller/ClientFlowLoginController.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
1818
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
1919
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
20+
use OCP\AppFramework\Http\Attribute\NoSameSiteCookieRequired;
2021
use OCP\AppFramework\Http\Attribute\OpenAPI;
2122
use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired;
2223
use OCP\AppFramework\Http\Attribute\PublicPage;
@@ -171,13 +172,11 @@ public function showAuthPickerPage(string $clientIdentifier = '', string $user =
171172
return $response;
172173
}
173174

174-
/**
175-
* @NoSameSiteCookieRequired
176-
*/
177175
#[NoAdminRequired]
178176
#[NoCSRFRequired]
179177
#[UseSession]
180178
#[FrontpageRoute(verb: 'GET', url: '/login/flow/grant')]
179+
#[NoSameSiteCookieRequired]
181180
public function grantPage(
182181
string $stateToken = '',
183182
string $clientIdentifier = '',

core/Controller/ClientFlowLoginV2Controller.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
1919
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
2020
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
21+
use OCP\AppFramework\Http\Attribute\NoSameSiteCookieRequired;
2122
use OCP\AppFramework\Http\Attribute\OpenAPI;
2223
use OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired;
2324
use OCP\AppFramework\Http\Attribute\PublicPage;
@@ -142,14 +143,12 @@ public function showAuthPickerPage(string $user = '', int $direct = 0): Standalo
142143
);
143144
}
144145

145-
/**
146-
* @NoSameSiteCookieRequired
147-
*/
148146
#[NoAdminRequired]
149147
#[NoCSRFRequired]
150148
#[OpenAPI(scope: OpenAPI::SCOPE_IGNORE)]
151149
#[UseSession]
152150
#[FrontpageRoute(verb: 'GET', url: '/login/v2/grant')]
151+
#[NoSameSiteCookieRequired]
153152
public function grantPage(?string $stateToken, int $direct = 0): StandaloneTemplateResponse {
154153
if ($stateToken === null) {
155154
return $this->stateTokenMissingResponse();

core/Controller/CssController.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
use OCP\AppFramework\Http;
1414
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
1515
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
16+
use OCP\AppFramework\Http\Attribute\NoSameSiteCookieRequired;
1617
use OCP\AppFramework\Http\Attribute\OpenAPI;
1718
use OCP\AppFramework\Http\Attribute\PublicPage;
1819
use OCP\AppFramework\Http\FileDisplayResponse;
1920
use OCP\AppFramework\Http\NotFoundResponse;
20-
use OCP\AppFramework\Http\Response;
2121
use OCP\AppFramework\Utility\ITimeFactory;
2222
use OCP\Files\IAppData;
2323
use OCP\Files\NotFoundException;
@@ -41,21 +41,19 @@ public function __construct(
4141
}
4242

4343
/**
44-
* @NoSameSiteCookieRequired
45-
*
4644
* @param string $fileName css filename with extension
4745
* @param string $appName css folder name
48-
* @return FileDisplayResponse|NotFoundResponse
4946
*/
5047
#[PublicPage]
5148
#[NoCSRFRequired]
5249
#[FrontpageRoute(verb: 'GET', url: '/css/{appName}/{fileName}')]
53-
public function getCss(string $fileName, string $appName): Response {
50+
#[NoSameSiteCookieRequired]
51+
public function getCss(string $fileName, string $appName): FileDisplayResponse|NotFoundResponse {
5452
try {
5553
$folder = $this->appData->getFolder($appName);
5654
$gzip = false;
5755
$file = $this->getFile($folder, $fileName, $gzip);
58-
} catch (NotFoundException $e) {
56+
} catch (NotFoundException) {
5957
return new NotFoundResponse();
6058
}
6159

core/Controller/JsController.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
use OCP\AppFramework\Http;
1414
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
1515
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
16+
use OCP\AppFramework\Http\Attribute\NoSameSiteCookieRequired;
1617
use OCP\AppFramework\Http\Attribute\NoTwoFactorRequired;
1718
use OCP\AppFramework\Http\Attribute\OpenAPI;
1819
use OCP\AppFramework\Http\Attribute\PublicPage;
1920
use OCP\AppFramework\Http\FileDisplayResponse;
2021
use OCP\AppFramework\Http\NotFoundResponse;
21-
use OCP\AppFramework\Http\Response;
2222
use OCP\AppFramework\Utility\ITimeFactory;
2323
use OCP\Files\IAppData;
2424
use OCP\Files\NotFoundException;
@@ -42,15 +42,14 @@ public function __construct(
4242
}
4343

4444
/**
45-
* @NoSameSiteCookieRequired
46-
*
4745
* @param string $fileName js filename with extension
4846
* @param string $appName js folder name
4947
*/
5048
#[PublicPage]
5149
#[NoCSRFRequired]
5250
#[FrontpageRoute(verb: 'GET', url: '/js/{appName}/{fileName}')]
5351
#[NoTwoFactorRequired]
52+
#[NoSameSiteCookieRequired]
5453
public function getJs(string $fileName, string $appName): FileDisplayResponse|NotFoundResponse {
5554
try {
5655
$folder = $this->appData->getFolder($appName);

lib/composer/composer/autoload_classmap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
'OCP\\AppFramework\\Http\\Attribute\\IgnoreOpenAPI' => $baseDir . '/lib/public/AppFramework/Http/Attribute/IgnoreOpenAPI.php',
9494
'OCP\\AppFramework\\Http\\Attribute\\NoAdminRequired' => $baseDir . '/lib/public/AppFramework/Http/Attribute/NoAdminRequired.php',
9595
'OCP\\AppFramework\\Http\\Attribute\\NoCSRFRequired' => $baseDir . '/lib/public/AppFramework/Http/Attribute/NoCSRFRequired.php',
96+
'OCP\\AppFramework\\Http\\Attribute\\NoSameSiteCookieRequired' => $baseDir . '/lib/public/AppFramework/Http/Attribute/NoSameSiteCookieRequired.php',
9697
'OCP\\AppFramework\\Http\\Attribute\\NoTwoFactorRequired' => $baseDir . '/lib/public/AppFramework/Http/Attribute/NoTwoFactorRequired.php',
9798
'OCP\\AppFramework\\Http\\Attribute\\OpenAPI' => $baseDir . '/lib/public/AppFramework/Http/Attribute/OpenAPI.php',
9899
'OCP\\AppFramework\\Http\\Attribute\\PasswordConfirmationRequired' => $baseDir . '/lib/public/AppFramework/Http/Attribute/PasswordConfirmationRequired.php',

lib/composer/composer/autoload_static.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
134134
'OCP\\AppFramework\\Http\\Attribute\\IgnoreOpenAPI' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/IgnoreOpenAPI.php',
135135
'OCP\\AppFramework\\Http\\Attribute\\NoAdminRequired' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/NoAdminRequired.php',
136136
'OCP\\AppFramework\\Http\\Attribute\\NoCSRFRequired' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/NoCSRFRequired.php',
137+
'OCP\\AppFramework\\Http\\Attribute\\NoSameSiteCookieRequired' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/NoSameSiteCookieRequired.php',
137138
'OCP\\AppFramework\\Http\\Attribute\\NoTwoFactorRequired' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/NoTwoFactorRequired.php',
138139
'OCP\\AppFramework\\Http\\Attribute\\OpenAPI' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/OpenAPI.php',
139140
'OCP\\AppFramework\\Http\\Attribute\\PasswordConfirmationRequired' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Attribute/PasswordConfirmationRequired.php',

0 commit comments

Comments
 (0)