|
2 | 2 | import redis |
3 | 3 | import msgpack |
4 | 4 | from .models.socket_client import SocketClient |
| 5 | +from masonite.auth.Sign import Sign |
5 | 6 |
|
6 | 7 |
|
7 | 8 | class Communicator: |
@@ -117,18 +118,32 @@ def clients(self): |
117 | 118 | return [self.client(key) for key in client_keys] |
118 | 119 |
|
119 | 120 | def client(self, id): |
120 | | - client_data = self._client.hmget(id, "userID", "address", "sessionId", "connected") |
| 121 | + client_data = self._client.hmget( |
| 122 | + id, "userID", "address", "sessionID", "socketID", "connected" |
| 123 | + ) |
121 | 124 | if client_data is None: |
122 | 125 | return None |
123 | 126 |
|
124 | | - userID, address, sessionID, connected = client_data |
| 127 | + userID, address, sessionID, socketID, connected = client_data |
125 | 128 |
|
126 | 129 | userID = userID.decode("utf-8") if userID is not None else None |
127 | 130 | address = address.decode("utf-8") if address is not None else None |
128 | 131 | sessionID = sessionID.decode("utf-8") if sessionID is not None else None |
| 132 | + socketID = socketID.decode("utf-8") if socketID is not None else None |
129 | 133 | connected = connected.decode("utf-8") if connected is not None else False |
130 | | - |
131 | | - return SocketClient(userID, address, sessionID, connected == "true") |
132 | | - |
133 | | - def authenticate(self): |
134 | | - return True |
| 134 | + return SocketClient(userID, address, sessionID, socketID, connected == "true") |
| 135 | + |
| 136 | + def delete_all_clients(self): |
| 137 | + keys = self._client.keys(pattern="mbroadcast:users:*") |
| 138 | + for key in keys: |
| 139 | + self._client.delete(key) |
| 140 | + |
| 141 | + def delete(self, client: SocketClient): |
| 142 | + if client is None: |
| 143 | + return False |
| 144 | + self._client.delete(f"mbroadcast:users:{client.sessionID}") |
| 145 | + |
| 146 | + def authenticate(self, channel, socket_id, user_id): |
| 147 | + string_to_sign = "%s:%s:%s" % (socket_id, channel, user_id) |
| 148 | + auth = Sign().sign(string_to_sign) |
| 149 | + return {"auth": auth} |
0 commit comments