File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11import * as encoding from "lib0/encoding" ;
22import * as decoding from "lib0/decoding" ;
33
4- enum AuthMessageType {
4+ export enum AuthMessageType {
55 Token = 0 ,
66 PermissionDenied = 1 ,
77 Authenticated = 2 ,
@@ -31,12 +31,23 @@ export const writeAuthenticated = (
3131 encoding . writeVarString ( encoder , scope ) ;
3232} ;
3333
34+ export const writeTokenSyncRequest = (
35+ encoder : encoding . Encoder ,
36+ ) => {
37+ encoding . writeVarUint ( encoder , AuthMessageType . Token ) ;
38+ } ;
39+
3440export const readAuthMessage = (
3541 decoder : decoding . Decoder ,
42+ sendToken : ( ) => void ,
3643 permissionDeniedHandler : ( reason : string ) => void ,
3744 authenticatedHandler : ( scope : string ) => void ,
3845) => {
3946 switch ( decoding . readVarUint ( decoder ) ) {
47+ case AuthMessageType . Token : {
48+ sendToken ( ) ;
49+ break ;
50+ }
4051 case AuthMessageType . PermissionDenied : {
4152 permissionDeniedHandler ( decoding . readVarString ( decoder ) ) ;
4253 break ;
Original file line number Diff line number Diff line change @@ -10,7 +10,6 @@ import { MessageReceiver } from "./MessageReceiver.ts";
1010import { MessageSender } from "./MessageSender.ts" ;
1111import { AuthenticationMessage } from "./OutgoingMessages/AuthenticationMessage.ts" ;
1212import { AwarenessMessage } from "./OutgoingMessages/AwarenessMessage.ts" ;
13- import { TokenSyncMessage } from "./OutgoingMessages/TokenSyncMessage.ts" ;
1413import { StatelessMessage } from "./OutgoingMessages/StatelessMessage.ts" ;
1514import { SyncStepOneMessage } from "./OutgoingMessages/SyncStepOneMessage.ts" ;
1615import { UpdateMessage } from "./OutgoingMessages/UpdateMessage.ts" ;
@@ -306,16 +305,18 @@ export class HocuspocusProvider extends EventEmitter {
306305 }
307306
308307 async sendToken ( ) {
308+ let token : string | null ;
309309 try {
310- const token = await this . getToken ( ) ;
311-
312- this . send ( TokenSyncMessage , {
313- token : token ?? "" ,
314- documentName : this . configuration . name ,
315- } ) ;
310+ token = await this . getToken ( ) ;
316311 } catch ( error ) {
317- console . error ( "Failed to getToken() during sendToken():" , error ) ;
312+ this . permissionDeniedHandler ( `Failed to get token during sendToken(): ${ error } ` ) ;
313+ return ;
318314 }
315+
316+ this . send ( AuthenticationMessage , {
317+ token : token ?? "" ,
318+ documentName : this . configuration . name ,
319+ } ) ;
319320 }
320321
321322 documentUpdateHandler ( update : Uint8Array , origin : any ) {
Original file line number Diff line number Diff line change @@ -38,10 +38,6 @@ export class MessageReceiver {
3838 this . applyQueryAwarenessMessage ( provider ) ;
3939 break ;
4040
41- case MessageType . TokenSync :
42- this . applyTokenSyncMessage ( provider ) ;
43- break ;
44-
4541 case MessageType . Stateless :
4642 provider . receiveStateless ( readVarString ( message . decoder ) ) ;
4743 break ;
@@ -121,6 +117,7 @@ export class MessageReceiver {
121117
122118 readAuthMessage (
123119 message . decoder ,
120+ provider . sendToken . bind ( provider ) ,
124121 provider . permissionDeniedHandler . bind ( provider ) ,
125122 provider . authenticatedHandler . bind ( provider ) ,
126123 ) ;
@@ -139,9 +136,4 @@ export class MessageReceiver {
139136 ) ,
140137 ) ;
141138 }
142-
143- private applyTokenSyncMessage ( provider : HocuspocusProvider ) {
144- // Server is requesting the current token, send it back
145- provider . sendToken ( ) ;
146- }
147139}
Load Diff This file was deleted.
Original file line number Diff line number Diff line change @@ -8,7 +8,6 @@ import type { OutgoingMessage } from "./OutgoingMessage.ts";
88import type { AuthenticationMessage } from "./OutgoingMessages/AuthenticationMessage.ts" ;
99import type { AwarenessMessage } from "./OutgoingMessages/AwarenessMessage.ts" ;
1010import type { QueryAwarenessMessage } from "./OutgoingMessages/QueryAwarenessMessage.ts" ;
11- import type { TokenSyncMessage } from "./OutgoingMessages/TokenSyncMessage.ts" ;
1211import type { SyncStepOneMessage } from "./OutgoingMessages/SyncStepOneMessage.ts" ;
1312import type { SyncStepTwoMessage } from "./OutgoingMessages/SyncStepTwoMessage.ts" ;
1413import type { UpdateMessage } from "./OutgoingMessages/UpdateMessage.ts" ;
@@ -21,7 +20,6 @@ export enum MessageType {
2120 Stateless = 5 ,
2221 CLOSE = 7 ,
2322 SyncStatus = 8 ,
24- TokenSync = 9 ,
2523}
2624
2725export enum WebSocketStatus {
@@ -55,7 +53,6 @@ export type ConstructableOutgoingMessage =
5553 | Constructable < AuthenticationMessage >
5654 | Constructable < AwarenessMessage >
5755 | Constructable < QueryAwarenessMessage >
58- | Constructable < TokenSyncMessage >
5956 | Constructable < SyncStepOneMessage >
6057 | Constructable < SyncStepTwoMessage >
6158 | Constructable < UpdateMessage > ;
Original file line number Diff line number Diff line change @@ -252,16 +252,16 @@ export class ClientConnection {
252252 connection . onTokenSyncCallback ( async ( payload ) => {
253253 try {
254254 return await this . hooks ( "onTokenSync" , {
255- ...hookPayload ,
256- ...payload ,
257- connection,
258- documentName,
259- } , ( contextAdditions : any ) => {
260- hookPayload . context = {
261- ...hookPayload . context ,
262- ...contextAdditions ,
263- } ;
264- } ) ;
255+ ...hookPayload ,
256+ ...payload ,
257+ connection,
258+ documentName,
259+ } , ( contextAdditions : any ) => {
260+ hookPayload . context = {
261+ ...hookPayload . context ,
262+ ...contextAdditions ,
263+ } ;
264+ } ) ;
265265 } catch ( err : any ) {
266266 const error = err || Forbidden ;
267267 const message = new OutgoingMessage ( documentName ) . writePermissionDenied (
Original file line number Diff line number Diff line change @@ -154,7 +154,7 @@ export class Connection {
154154 * Request current token from the client
155155 */
156156 public requestToken ( ) : void {
157- const message = new OutgoingMessage ( this . document . name ) . writeTokenSync ( ) ;
157+ const message = new OutgoingMessage ( this . document . name ) . writeTokenSyncRequest ( ) ;
158158
159159 this . send ( message . toUint8Array ( ) ) ;
160160 }
Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ import type Document from "./Document.ts";
1515import type { IncomingMessage } from "./IncomingMessage.ts" ;
1616import { OutgoingMessage } from "./OutgoingMessage.ts" ;
1717import { MessageType } from "./types.ts" ;
18+ import { AuthMessageType } from "@hocuspocus/common" ;
1819
1920export class MessageReceiver {
2021 message : IncomingMessage ;
@@ -77,12 +78,6 @@ export class MessageReceiver {
7778
7879 break ;
7980 }
80- case MessageType . TokenSync : {
81- connection ?. callbacks . onTokenSyncCallback ( {
82- token : message . readVarString ( ) ,
83- } ) ;
84- break ;
85- }
8681 case MessageType . Stateless : {
8782 connection ?. callbacks . statelessCallback ( {
8883 connection,
@@ -109,11 +104,19 @@ export class MessageReceiver {
109104 break ;
110105 }
111106
112- case MessageType . Auth :
107+ case MessageType . Auth : {
108+ const authType = message . readVarUint ( ) ;
109+ if ( authType === AuthMessageType . Token ) {
110+ connection ?. callbacks . onTokenSyncCallback ( {
111+ token : message . readVarString ( ) ,
112+ } ) ;
113+ break ;
114+ }
113115 console . error (
114116 "Received an authentication message on a connection that is already fully authenticated. Probably your provider has been destroyed + recreated really fast." ,
115117 ) ;
116118 break ;
119+ }
117120
118121 default :
119122 console . error (
Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ import type { Awareness } from "y-protocols/awareness";
1010import { encodeAwarenessUpdate } from "y-protocols/awareness" ;
1111import { writeSyncStep1 , writeUpdate } from "y-protocols/sync" ;
1212
13- import { writeAuthenticated , writePermissionDenied } from "@hocuspocus/common" ;
13+ import { writeAuthenticated , writePermissionDenied , writeTokenSyncRequest } from "@hocuspocus/common" ;
1414import type Document from "./Document.ts" ;
1515import { MessageType } from "./types.ts" ;
1616
@@ -70,11 +70,12 @@ export class OutgoingMessage {
7070 return this ;
7171 }
7272
73- writeTokenSync ( ) : OutgoingMessage {
74- this . type = MessageType . TokenSync ;
73+ writeTokenSyncRequest ( ) : OutgoingMessage {
74+ this . type = MessageType . Auth ;
7575 this . category = "TokenSync" ;
7676
77- writeVarUint ( this . encoder , MessageType . TokenSync ) ;
77+ writeVarUint ( this . encoder , MessageType . Auth ) ;
78+ writeTokenSyncRequest ( this . encoder ) ;
7879
7980 return this ;
8081 }
Original file line number Diff line number Diff line change @@ -20,7 +20,6 @@ export enum MessageType {
2020 BroadcastStateless = 6 ,
2121 CLOSE = 7 ,
2222 SyncStatus = 8 ,
23- TokenSync = 9 ,
2423}
2524
2625export interface AwarenessUpdate {
@@ -180,15 +179,15 @@ export interface onAuthenticatePayload {
180179
181180export interface onTokenSyncPayload {
182181 context : any ;
183- document : Document ;
182+ document : Document ;
184183 documentName : string ;
185184 instance : Hocuspocus ;
186185 requestHeaders : IncomingHttpHeaders ;
187186 requestParameters : URLSearchParams ;
188187 socketId : string ;
189188 token : string ;
190189 connectionConfig : ConnectionConfiguration ;
191- connection : Connection ;
190+ connection : Connection ;
192191}
193192
194193export interface onCreateDocumentPayload {
You can’t perform that action at this time.
0 commit comments