3232use OCP \AppFramework \Http \DataResponse ;
3333use OCP \AppFramework \Http \Response ;
3434use OCP \IRequest ;
35+ use OCP \IUserManager ;
36+ use OCP \IUserSession ;
3537
3638class SessionController extends Controller {
3739 private ApiService $ apiService ;
3840 private SessionService $ sessionService ;
3941 private NotificationService $ notificationService ;
42+ private IUserManager $ userManager ;
43+ private IUserSession $ userSession ;
4044
41- public function __construct (string $ appName , IRequest $ request , ApiService $ apiService , SessionService $ sessionService , NotificationService $ notificationService ) {
45+ public function __construct (string $ appName , IRequest $ request , ApiService $ apiService , SessionService $ sessionService , NotificationService $ notificationService, IUserManager $ userManager , IUserSession $ userSession ) {
4246 parent ::__construct ($ appName , $ request );
4347 $ this ->apiService = $ apiService ;
4448 $ this ->sessionService = $ sessionService ;
4549 $ this ->notificationService = $ notificationService ;
50+ $ this ->userManager = $ userManager ;
51+ $ this ->userSession = $ userSession ;
4652 }
4753
4854 /**
@@ -73,6 +79,7 @@ public function close(int $documentId, int $sessionId, string $sessionToken): Da
7379 * @PublicPage
7480 */
7581 public function push (int $ documentId , int $ sessionId , string $ sessionToken , int $ version , array $ steps ): DataResponse {
82+ $ this ->loginSessionUser ($ documentId , $ sessionId , $ sessionToken );
7683 return $ this ->apiService ->push ($ documentId , $ sessionId , $ sessionToken , $ version , $ steps );
7784 }
7885
@@ -81,6 +88,7 @@ public function push(int $documentId, int $sessionId, string $sessionToken, int
8188 * @PublicPage
8289 */
8390 public function sync (int $ documentId , int $ sessionId , string $ sessionToken , int $ version = 0 , string $ autosaveContent = null , bool $ force = false , bool $ manualSave = false ): DataResponse {
91+ $ this ->loginSessionUser ($ documentId , $ sessionId , $ sessionToken );
8492 return $ this ->apiService ->sync ($ documentId , $ sessionId , $ sessionToken , $ version , $ autosaveContent , $ force , $ manualSave );
8593 }
8694
@@ -102,4 +110,12 @@ public function mention(int $documentId, int $sessionId, string $sessionToken, s
102110
103111 return new DataResponse ($ this ->notificationService ->mention ($ documentId , $ mention ));
104112 }
113+
114+ private function loginSessionUser (int $ documentId , int $ sessionId , string $ sessionToken ) {
115+ $ currentSession = $ this ->sessionService ->getSession ($ documentId , $ sessionId , $ sessionToken );
116+ $ user = $ this ->userManager ->get ($ currentSession ->getUserId ());
117+ if ($ user !== null ) {
118+ $ this ->userSession ->setUser ($ user );
119+ }
120+ }
105121}
0 commit comments