2121use OCP \AppFramework \Controller ;
2222use OCP \AppFramework \Http \Attribute \NoAdminRequired ;
2323use OCP \AppFramework \Http \Attribute \NoCSRFRequired ;
24+ use OCP \AppFramework \Http \Attribute \UserRateLimit ;
2425use OCP \AppFramework \Http \ContentSecurityPolicy ;
2526use OCP \AppFramework \Http \RedirectResponse ;
2627use OCP \AppFramework \Http \TemplateResponse ;
3031use OCP \IRequest ;
3132use OCP \IURLGenerator ;
3233use OCP \IUserSession ;
34+ use Psr \Log \LoggerInterface ;
3335
3436class PageController extends Controller {
3537 private NotesService $ notesService ;
@@ -38,6 +40,7 @@ class PageController extends Controller {
3840 private IURLGenerator $ urlGenerator ;
3941 private IEventDispatcher $ eventDispatcher ;
4042 private IInitialState $ initialState ;
43+ private LoggerInterface $ logger ;
4144
4245 public function __construct (
4346 string $ AppName ,
@@ -48,6 +51,7 @@ public function __construct(
4851 IURLGenerator $ urlGenerator ,
4952 IEventDispatcher $ eventDispatcher ,
5053 IInitialState $ initialState ,
54+ LoggerInterface $ logger ,
5155 ) {
5256 parent ::__construct ($ AppName , $ request );
5357 $ this ->notesService = $ notesService ;
@@ -56,6 +60,7 @@ public function __construct(
5660 $ this ->urlGenerator = $ urlGenerator ;
5761 $ this ->eventDispatcher = $ eventDispatcher ;
5862 $ this ->initialState = $ initialState ;
63+ $ this ->logger = $ logger ;
5964 }
6065
6166
@@ -102,12 +107,25 @@ public function index() : TemplateResponse {
102107 }
103108
104109 /**
105- *
110+ * @deprecated Use createPost() instead. This endpoint will be removed in a future version.
106111 */
107112 #[NoAdminRequired]
108113 #[NoCSRFRequired]
109- public function create () : RedirectResponse {
110- $ note = $ this ->notesService ->create ($ this ->userSession ->getUser ()->getUID (), '' , '' );
114+ #[UserRateLimit(limit: 20 , period: 60 )]
115+ public function createGet () : RedirectResponse {
116+ $ this ->logger ->debug ('Deprecated GET /new endpoint used ' , [
117+ 'user ' => $ this ->userSession ->getUser ()?->getUID(),
118+ 'remote_addr ' => $ this ->request ->getRemoteAddress (),
119+ 'user_agent ' => $ this ->request ->getHeader ('User-Agent ' )
120+ ]);
121+ return $ this ->createPost ();
122+ }
123+
124+ #[NoAdminRequired]
125+ #[NoCSRFRequired]
126+ #[UserRateLimit(limit: 20 , period: 60 )]
127+ public function createPost () : RedirectResponse {
128+ $ note = $ this ->notesService ->create ($ this ->userSession ->getUser ()?->getUID() ?? '' , '' , '' );
111129 $ note ->setContent ('' );
112130 $ url = $ this ->urlGenerator ->linkToRoute ('notes.page.indexnote ' , [ 'id ' => $ note ->getId () ]);
113131 return new RedirectResponse ($ url . '?new ' );
0 commit comments