Skip to content

Commit

Permalink
feat: seperate onMessage from Message in order to to support internal…
Browse files Browse the repository at this point in the history
… message
  • Loading branch information
frankpagan committed Jan 25, 2024
1 parent ae34440 commit 231f2cc
Showing 1 changed file with 89 additions and 78 deletions.
167 changes: 89 additions & 78 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -319,105 +319,116 @@ class SocketServer extends EventEmitter {

async onMessage(socket, message) {
try {
const organization_id = socket.organization_id

this.emit("setBandwidth", {
type: 'in',
data: message,
organization_id
organization_id: socket.organization_id
});


let data = JSON.parse(message)
if (data.method) {
const organization = this.organizations.get(organization_id)
if (organization && organization.organizationBalance == false) {
data.organizationBalance = false
data.error = organization.error
return socket.send(JSON.stringify(data))
}
if (data.method)
this.Message(socket, data)
else {
data.error = 'method is required'
return socket.send(JSON.stringify(data))
}
} catch (e) {
console.log(e);
}
}

if (data.method === 'region.added' || data.method === 'region.removed')
console.log('data.method: ', data.method)

if (socket.user_id && socket.expires && new Date(new Date().toISOString()).getTime() >= socket.expires) {
// data.error = 'Token expired'
// socket.send(JSON.stringify(data))
await this.send({
socket, method: 'updateUserStatus', user_id: socket.user_id, clientId: data.clientId, userStatus: 'off', socketId: data.socketId, organization_id
})
socket.user_id = socket.expires = null
return
}
async Message(socket, data) {
try {
const organization_id = socket.organization_id

if (this.authorize) {
if (!this.sockets.has(socket.id)) {
if (organization && organization.organizationBalance == false) {
data.organizationBalance = false
data.error = organization.error
return socket.send(JSON.stringify(data))
}
}
const organization = this.organizations.get(organization_id)
if (organization && organization.organizationBalance == false) {
data.organizationBalance = false
data.error = organization.error
return socket.send(JSON.stringify(data))
}

data.socket = socket
data.host = socket.host
if (data.method === 'region.added' || data.method === 'region.removed')
console.log('data.method: ', data.method)

const authorized = await this.authorize.check(data, socket.user_id)
let errors = {}
if (authorized === false) {
delete data.socket
data.error = 'authorization failed'
if (socket.user_id && socket.expires && new Date(new Date().toISOString()).getTime() >= socket.expires) {
// data.error = 'Token expired'
// socket.send(JSON.stringify(data))
await this.send({
socket, method: 'updateUserStatus', user_id: socket.user_id, clientId: data.clientId, userStatus: 'off', socketId: data.socketId, organization_id
})
socket.user_id = socket.expires = null
return
}

if (this.authorize) {
if (!this.sockets.has(socket.id)) {
if (organization && organization.organizationBalance == false) {
data.organizationBalance = false
data.error = organization.error
return socket.send(JSON.stringify(data))
} else if (authorized.serverOrganization === false) {
}
}

data.socket = socket
data.host = socket.host

const authorized = await this.authorize.check(data, socket.user_id)
let errors = {}
if (authorized === false) {
delete data.socket
data.error = 'authorization failed'
return socket.send(JSON.stringify(data))
} else if (authorized.serverOrganization === false) {
organization.status = errors.status = false;
organization.serverOrganization = false;
organization.error = authorized.error
} else if (authorized.serverStorage === false) {
data.database = process.env.organization_id
data.organization_id = process.env.organization_id

const authorized2 = await this.authorize.check(data, req, socket.user_id)
if (!authorized2 || authorized2.error) {
organization.status = errors.status = false;
organization.serverOrganization = false;
organization.error = authorized.error
} else if (authorized.serverStorage === false) {
data.database = process.env.organization_id
data.organization_id = process.env.organization_id

const authorized2 = await this.authorize.check(data, req, socket.user_id)
if (!authorized2 || authorized2.error) {
organization.status = errors.status = false;
organization.error = errors.error = authorized.error
if (authorized2.serverOrganization === false) {
organization.serverOrganization = false;
}
if (authorized2.serverStorage === false) {
organization.serverStorage = false;
}
organization.error = errors.error = authorized.error
if (authorized2.serverOrganization === false) {
organization.serverOrganization = false;
}
if (authorized2.serverStorage === false) {
organization.serverStorage = false;
}
} else if (authorized.error) {
organization.status = false;
organization.error = authorized.error
}
} else if (authorized.error) {
organization.status = false;
organization.error = authorized.error
}

if (organization && organization.status === false) {
let errors = {}
data.serverOrganization = organization.serverOrganization
data.serverStorage = organization.serverStorage
data.organizationBalance = organization.organizationBalance
data.error = organization.error
delete data.socket
return socket.send(JSON.stringify(data))
}
if (organization && organization.status === false) {
let errors = {}
data.serverOrganization = organization.serverOrganization
data.serverStorage = organization.serverStorage
data.organizationBalance = organization.organizationBalance
data.error = organization.error
delete data.socket
return socket.send(JSON.stringify(data))
}

// dburl is true and db does not have 'keys' array
// action: syncCollection data{array: 'keys', object[]}
// actions: add keys as once keys are added admin user can do anything
// dburl is true and db does not have 'keys' array
// action: syncCollection data{array: 'keys', object[]}
// actions: add keys as once keys are added admin user can do anything


// }
// }

if (authorized.authorized)
data = authorized.authorized
if (authorized.authorized)
data = authorized.authorized

let mod = data.method.split('.')[0]
if (['storage', 'database', 'array', 'index', 'object'].includes(mod))
this.emit(data.method, data);
else
this.emit(mod, data);
}
let moduleName = data.method.split('.')[0]
if (['storage', 'database', 'array', 'index', 'object'].includes(moduleName))
this.emit(data.method, data);
else
this.emit(moduleName, data);
}
} catch (e) {
console.log(e);
Expand Down

0 comments on commit 231f2cc

Please sign in to comment.