2626namespace OCA \Text \Controller ;
2727
2828use OCA \Text \Service \ApiService ;
29+ use OCA \Text \Service \SessionService ;
2930use OCP \AppFramework \Controller ;
3031use OCP \AppFramework \Http \DataResponse ;
3132use OCP \AppFramework \Http \Response ;
3233use OCP \IRequest ;
34+ use OCP \IUserManager ;
35+ use OCP \IUserSession ;
3336
3437class SessionController extends Controller {
3538
@@ -38,9 +41,28 @@ class SessionController extends Controller {
3841 */
3942 private $ apiService ;
4043
41- public function __construct (string $ appName , IRequest $ request , ApiService $ apiService ) {
44+ /**
45+ * @var SessionService
46+ */
47+ private $ sessionService ;
48+
49+ /**
50+ * @var IUserManager
51+ */
52+ private $ userManager ;
53+
54+ /**
55+ * @var IUserSession
56+ */
57+ private $ userSession ;
58+
59+
60+ public function __construct (string $ appName , IRequest $ request , ApiService $ apiService , SessionService $ sessionService , IUserManager $ userManager , IUserSession $ userSession ) {
4261 parent ::__construct ($ appName , $ request );
4362 $ this ->apiService = $ apiService ;
63+ $ this ->sessionService = $ sessionService ;
64+ $ this ->userManager = $ userManager ;
65+ $ this ->userSession = $ userSession ;
4466 }
4567
4668 /**
@@ -71,6 +93,7 @@ public function close(int $documentId, int $sessionId, string $sessionToken): Da
7193 * @PublicPage
7294 */
7395 public function push (int $ documentId , int $ sessionId , string $ sessionToken , int $ version , array $ steps ): DataResponse {
96+ $ this ->loginSessionUser ($ documentId , $ sessionId , $ sessionToken );
7497 return $ this ->apiService ->push ($ documentId , $ sessionId , $ sessionToken , $ version , $ steps );
7598 }
7699
@@ -79,6 +102,15 @@ public function push(int $documentId, int $sessionId, string $sessionToken, int
79102 * @PublicPage
80103 */
81104 public function sync (int $ documentId , int $ sessionId , string $ sessionToken , int $ version = 0 , string $ autosaveContent = null , bool $ force = false , bool $ manualSave = false ): DataResponse {
105+ $ this ->loginSessionUser ($ documentId , $ sessionId , $ sessionToken );
82106 return $ this ->apiService ->sync ($ documentId , $ sessionId , $ sessionToken , $ version , $ autosaveContent , $ force , $ manualSave );
83107 }
108+
109+ private function loginSessionUser (int $ documentId , int $ sessionId , string $ sessionToken ) {
110+ $ currentSession = $ this ->sessionService ->getSession ($ documentId , $ sessionId , $ sessionToken );
111+ $ user = $ this ->userManager ->get ($ currentSession ->getUserId ());
112+ if ($ user !== null ) {
113+ $ this ->userSession ->setUser ($ user );
114+ }
115+ }
84116}
0 commit comments