Skip to content

Commit 482150c

Browse files
committedMar 13, 2022
fix
1 parent d940afa commit 482150c

File tree

1 file changed

+32
-30
lines changed

1 file changed

+32
-30
lines changed
 

‎magic-api/src/main/java/org/ssssssss/magicapi/core/handler/MagicWorkbenchHandler.java

+32-30
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,16 @@
33
import org.apache.commons.lang3.StringUtils;
44
import org.springframework.http.HttpHeaders;
55
import org.ssssssss.magicapi.core.annotation.Message;
6+
import org.ssssssss.magicapi.core.config.Constants;
67
import org.ssssssss.magicapi.core.config.MessageType;
78
import org.ssssssss.magicapi.core.config.WebSocketSessionManager;
8-
import org.ssssssss.magicapi.core.exception.MagicLoginException;
9-
import org.ssssssss.magicapi.core.interceptor.AuthorizationInterceptor;
10-
import org.ssssssss.magicapi.core.context.MagicUser;
11-
import org.ssssssss.magicapi.core.config.Constants;
129
import org.ssssssss.magicapi.core.context.MagicConsoleSession;
13-
import org.ssssssss.magicapi.modules.servlet.RequestModule;
10+
import org.ssssssss.magicapi.core.context.MagicUser;
11+
import org.ssssssss.magicapi.core.interceptor.AuthorizationInterceptor;
1412
import org.ssssssss.magicapi.utils.IpUtils;
1513

1614
import java.util.List;
1715
import java.util.Map;
18-
import java.util.Objects;
1916
import java.util.Optional;
2017
import java.util.stream.Collectors;
2118

@@ -36,33 +33,38 @@ public MagicWorkbenchHandler(AuthorizationInterceptor authorizationInterceptor)
3633

3734
@Message(MessageType.LOGIN)
3835
public void onLogin(MagicConsoleSession session, String token, String clientId) {
36+
session.setClientId(clientId);
37+
MagicUser user = null;
3938
try {
40-
MagicUser user = guest;
41-
session.setClientId(clientId);
42-
if (!authorizationInterceptor.requireLogin() || (user = authorizationInterceptor.getUserByToken(token)) != null) {
43-
String ip = Optional.ofNullable(session.getWebSocketSession().getRemoteAddress()).map(it -> it.getAddress().getHostAddress()).orElse("unknown");
44-
HttpHeaders headers = session.getWebSocketSession().getHandshakeHeaders();
45-
ip = IpUtils.getRealIP(ip, headers::getFirst, null);
46-
session.setAttribute(Constants.WEBSOCKET_ATTRIBUTE_USER_ID, user.getId());
47-
session.setAttribute(Constants.WEBSOCKET_ATTRIBUTE_USER_IP, StringUtils.defaultIfBlank(ip, "unknown"));
48-
session.setAttribute(Constants.WEBSOCKET_ATTRIBUTE_USER_NAME, user.getUsername());
49-
session.setActivateTime(System.currentTimeMillis());
50-
synchronized (MagicWorkbenchHandler.class){
51-
if(WebSocketSessionManager.getConsoleSession(clientId) != null){
52-
WebSocketSessionManager.sendBySession(session, WebSocketSessionManager.buildMessage(MessageType.LOGIN_RESPONSE, "-1"));
53-
return;
54-
}
55-
WebSocketSessionManager.add(session);
56-
}
57-
WebSocketSessionManager.sendBySession(session, WebSocketSessionManager.buildMessage(MessageType.LOGIN_RESPONSE, "1", session.getAttributes()));
58-
List<Map<String, Object>> messages = getOnlineUsers();
59-
if(!messages.isEmpty()){
60-
WebSocketSessionManager.sendByClientId(session.getClientId(), WebSocketSessionManager.buildMessage(MessageType.ONLINE_USERS, messages));
39+
user = authorizationInterceptor.getUserByToken(token);
40+
} catch (Exception e) {
41+
if(!authorizationInterceptor.requireLogin()){
42+
user = guest;
43+
}
44+
}
45+
if (user != null) {
46+
String ip = Optional.ofNullable(session.getWebSocketSession().getRemoteAddress()).map(it -> it.getAddress().getHostAddress()).orElse("unknown");
47+
HttpHeaders headers = session.getWebSocketSession().getHandshakeHeaders();
48+
ip = IpUtils.getRealIP(ip, headers::getFirst, null);
49+
session.setAttribute(Constants.WEBSOCKET_ATTRIBUTE_USER_ID, user.getId());
50+
session.setAttribute(Constants.WEBSOCKET_ATTRIBUTE_USER_IP, StringUtils.defaultIfBlank(ip, "unknown"));
51+
session.setAttribute(Constants.WEBSOCKET_ATTRIBUTE_USER_NAME, user.getUsername());
52+
session.setActivateTime(System.currentTimeMillis());
53+
synchronized (MagicWorkbenchHandler.class){
54+
if(WebSocketSessionManager.getConsoleSession(clientId) != null){
55+
WebSocketSessionManager.sendBySession(session, WebSocketSessionManager.buildMessage(MessageType.LOGIN_RESPONSE, "-1"));
56+
return;
6157
}
62-
WebSocketSessionManager.sendToMachine(MessageType.SEND_ONLINE, session.getClientId());
63-
WebSocketSessionManager.sendToOther(session.getClientId(), MessageType.USER_LOGIN, session.getAttributes());
58+
WebSocketSessionManager.add(session);
59+
}
60+
WebSocketSessionManager.sendBySession(session, WebSocketSessionManager.buildMessage(MessageType.LOGIN_RESPONSE, "1", session.getAttributes()));
61+
List<Map<String, Object>> messages = getOnlineUsers();
62+
if(!messages.isEmpty()){
63+
WebSocketSessionManager.sendByClientId(session.getClientId(), WebSocketSessionManager.buildMessage(MessageType.ONLINE_USERS, messages));
6464
}
65-
} catch (MagicLoginException ignored) {
65+
WebSocketSessionManager.sendToMachine(MessageType.SEND_ONLINE, session.getClientId());
66+
WebSocketSessionManager.sendToOther(session.getClientId(), MessageType.USER_LOGIN, session.getAttributes());
67+
} else {
6668
WebSocketSessionManager.sendBySession(session, WebSocketSessionManager.buildMessage(MessageType.LOGIN_RESPONSE, "0"));
6769
}
6870
}

0 commit comments

Comments
 (0)
Please sign in to comment.