Server : nginx/1.18.0 System : Linux localhost 6.14.3-x86_64-linode168 #1 SMP PREEMPT_DYNAMIC Mon Apr 21 19:47:55 EDT 2025 x86_64 User : www-data ( 33) PHP Version : 8.0.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/ecommerce/node_modules/pusher-js/src/core/auth/ |
import Logger from '../logger';
import Channel from '../channels/channel';
import Factory from '../utils/factory';
import Runtime from 'runtime';
import { AuthTransports } from './auth_transports';
import {
AuthOptions,
AuthorizerOptions,
Authorizer,
AuthorizerCallback
} from './options';
export default class PusherAuthorizer implements Authorizer {
static authorizers: AuthTransports;
channel: Channel;
type: string;
options: AuthorizerOptions;
authOptions: AuthOptions;
constructor(channel: Channel, options: AuthorizerOptions) {
this.channel = channel;
let { authTransport } = options;
if (typeof Runtime.getAuthorizers()[authTransport] === 'undefined') {
throw `'${authTransport}' is not a recognized auth transport`;
}
this.type = authTransport;
this.options = options;
this.authOptions = options.auth || {};
}
composeQuery(socketId: string): string {
var query =
'socket_id=' +
encodeURIComponent(socketId) +
'&channel_name=' +
encodeURIComponent(this.channel.name);
for (var i in this.authOptions.params) {
query +=
'&' +
encodeURIComponent(i) +
'=' +
encodeURIComponent(this.authOptions.params[i]);
}
return query;
}
authorize(socketId: string, callback: AuthorizerCallback): void {
PusherAuthorizer.authorizers =
PusherAuthorizer.authorizers || Runtime.getAuthorizers();
PusherAuthorizer.authorizers[this.type].call(
this,
Runtime,
socketId,
callback
);
}
}