Skip to content

Commit e0cae7a

Browse files
committed
fix: Refactor socket server code to re check permissions using platformId when organization.dbUrl is false.
This commit refactors the SocketServer class code to extract permission check logic. The changes simplify and clarify access control by granting access only if permissions are satisfied and handling related errors.
1 parent 8ace44c commit e0cae7a

File tree

1 file changed

+6
-20
lines changed

1 file changed

+6
-20
lines changed

src/index.js

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -153,30 +153,16 @@ class SocketServer extends EventEmitter {
153153
// if (action == 'syncServer')
154154
// this.emit('createDocument', socket, data);
155155
// else
156-
if (user_id && permission.dbUrl === false && action.includes('Document') && (data.collection == 'organizations' || data.collection == 'users')) {
156+
if (permission.dbUrl === false) {
157157
data.database = process.env.organization_id
158158
data.organization_id = process.env.organization_id
159-
if (data.document) {
160-
if (Array.isArray(data.document) && data.document[0])
161-
data.document = data.document[0]
162-
163-
if (data.collection == 'organizations' && data.document._id !== socket.config.organization_id)
164-
return this.send(socket, 'Access Denied', { action, permission, ...data })
165-
else if (data.collection == 'users' && data.document._id !== user_id)
166-
return this.send(socket, 'Access Denied', { action, permission, ...data })
159+
160+
const permission2 = await this.permissionInstance.check(action, data, req, user_id)
161+
if (!permission2 || permission2.error) {
162+
return this.send(socket, 'Access Denied', { action, permission2, ...data })
167163
}
168-
delete data.filter
169-
delete data.document.organization_id
170-
if (action == 'updateDocument')
171-
data.upsert = false
172-
} else if (action === 'createOrganization' || action === 'signIn') {
173-
data.database = process.env.organization_id
174-
data.organization_id = process.env.organization_id
175-
// TODO: Does user have permission on current host
176-
// or add a filter
177-
} else {
164+
} else
178165
return this.send(socket, 'Access Denied', { action, permission, ...data })
179-
}
180166
}
181167
}
182168

0 commit comments

Comments
 (0)