5353use OCP \DirectEditing \IManager ;
5454use OCP \AppFramework \Http \DataResponse ;
5555use OCP \IRequest ;
56- use OCP \Share \IShare ;
56+ use OCP \IUserManager ;
57+ use OCP \IUserSession ;
5758
5859class DirectSessionController extends Controller {
59- private IShare $ share ;
6060 private ApiService $ apiService ;
6161 private IManager $ directManager ;
62+ private IUserSession $ userSession ;
63+ private IUserManager $ userManager ;
6264
63- public function __construct (string $ appName , IRequest $ request , ApiService $ apiService , IManager $ directManager ) {
65+ public function __construct (string $ appName , IRequest $ request , ApiService $ apiService , IManager $ directManager, IUserSession $ userSession , IUserManager $ userManager ) {
6466 parent ::__construct ($ appName , $ request );
6567 $ this ->apiService = $ apiService ;
6668 $ this ->directManager = $ directManager ;
69+ $ this ->userSession = $ userSession ;
70+ $ this ->userManager = $ userManager ;
6771 }
6872
6973 /**
@@ -106,6 +110,7 @@ public function close(int $documentId, int $sessionId, string $sessionToken): Da
106110 * @PublicPage
107111 */
108112 public function push (int $ documentId , int $ sessionId , string $ sessionToken , int $ version , array $ steps , string $ token ): DataResponse {
113+ $ this ->loginTokenUser ($ token );
109114 return $ this ->apiService ->push ($ documentId , $ sessionId , $ sessionToken , $ version , $ steps , $ token );
110115 }
111116
@@ -114,6 +119,7 @@ public function push(int $documentId, int $sessionId, string $sessionToken, int
114119 * @PublicPage
115120 */
116121 public function sync (string $ token , int $ documentId , int $ sessionId , string $ sessionToken , int $ version = 0 , string $ autosaveContent = null , bool $ force = false , bool $ manualSave = false ): DataResponse {
122+ $ this ->loginTokenUser ($ token );
117123 return $ this ->apiService ->sync ($ documentId , $ sessionId , $ sessionToken , $ version , $ autosaveContent , $ force , $ manualSave , $ token );
118124 }
119125
@@ -124,4 +130,12 @@ public function sync(string $token, int $documentId, int $sessionId, string $ses
124130 public function updateSession (int $ documentId , int $ sessionId , string $ sessionToken , string $ guestName ) {
125131 return $ this ->apiService ->updateSession ($ documentId , $ sessionId , $ sessionToken , $ guestName );
126132 }
133+
134+ private function loginTokenUser (string $ token ) {
135+ $ tokenObject = $ this ->directManager ->getToken ($ token );
136+ $ user = $ this ->userManager ->get ($ tokenObject ->getUser ());
137+ if ($ user !== null ) {
138+ $ this ->userSession ->setUser ($ user );
139+ }
140+ }
127141}
0 commit comments