Skip to content

Commit

Permalink
Introduce headerProvider and paramProvider to auth options
Browse files Browse the repository at this point in the history
  • Loading branch information
sonologico committed Oct 27, 2022
1 parent 6d8c139 commit b29f136
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 2 deletions.
11 changes: 11 additions & 0 deletions src/core/auth/channel_authorizer.ts
Expand Up @@ -24,6 +24,17 @@ const composeChannelQuery = (
encodeURIComponent(authOptions.params[i]);
}

if (authOptions.paramProvider != null) {
let dynamicParams = authOptions.paramProvider();
for (var i in dynamicParams) {
query +=
'&' +
encodeURIComponent(i) +
'=' +
encodeURIComponent(dynamicParams[i]);
}
}

return query;
};

Expand Down
4 changes: 4 additions & 0 deletions src/core/auth/options.ts
Expand Up @@ -56,6 +56,8 @@ export interface AuthOptionsT<AuthHandler> {
endpoint: string;
params?: any;
headers?: any;
paramProvider?: () => any;
headerProvider?: () => any;
customHandler?: AuthHandler;
}

Expand All @@ -71,4 +73,6 @@ export interface InternalAuthOptions {
endpoint: string;
params?: any;
headers?: any;
paramProvider?: () => any;
headerProvider?: () => any;
}
11 changes: 11 additions & 0 deletions src/core/auth/user_authenticator.ts
Expand Up @@ -22,6 +22,17 @@ const composeChannelQuery = (
encodeURIComponent(authOptions.params[i]);
}

if (authOptions.paramProvider != null) {
let dynamicParams = authOptions.paramProvider();
for (var i in dynamicParams) {
query +=
'&' +
encodeURIComponent(i) +
'=' +
encodeURIComponent(dynamicParams[i]);
}
}

return query;
};

Expand Down
8 changes: 7 additions & 1 deletion src/runtimes/isomorphic/auth/xhr_auth.ts
Expand Up @@ -27,6 +27,12 @@ const ajax: AuthTransport = function(
for (var headerName in authOptions.headers) {
xhr.setRequestHeader(headerName, authOptions.headers[headerName]);
}
if (authOptions.headerProvider != null) {
let dynamicHeaders = authOptions.headerProvider();
for (var headerName in dynamicHeaders) {
xhr.setRequestHeader(headerName, dynamicHeaders[headerName]);
}
}

xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
Expand Down Expand Up @@ -60,7 +66,7 @@ const ajax: AuthTransport = function(
suffix = UrlStore.buildLogSuffix('authenticationEndpoint');
break;
case AuthRequestType.ChannelAuthorization:
suffix = `Clients must be authenticated to join private or presence channels. ${UrlStore.buildLogSuffix(
suffix = `Clients must be authorized to join private or presence channels. ${UrlStore.buildLogSuffix(
'authorizationEndpoint'
)}`;
break;
Expand Down
2 changes: 1 addition & 1 deletion src/runtimes/web/dom/sockjs
Submodule sockjs updated 153 files
4 changes: 4 additions & 0 deletions types/src/core/auth/options.d.ts
Expand Up @@ -32,6 +32,8 @@ export interface AuthOptionsT<AuthHandler> {
endpoint: string;
params?: any;
headers?: any;
paramProvider?: () => any;
headerProvider?: () => any;
customHandler?: AuthHandler;
}
export declare type UserAuthenticationOptions = AuthOptionsT<UserAuthenticationHandler>;
Expand All @@ -41,4 +43,6 @@ export interface InternalAuthOptions {
endpoint: string;
params?: any;
headers?: any;
paramProvider?: () => any;
headerProvider?: () => any;
}

0 comments on commit b29f136

Please sign in to comment.