3
3
import org .apache .commons .lang3 .StringUtils ;
4
4
import org .springframework .http .HttpHeaders ;
5
5
import org .ssssssss .magicapi .core .annotation .Message ;
6
+ import org .ssssssss .magicapi .core .config .Constants ;
6
7
import org .ssssssss .magicapi .core .config .MessageType ;
7
8
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 ;
12
9
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 ;
14
12
import org .ssssssss .magicapi .utils .IpUtils ;
15
13
16
14
import java .util .List ;
17
15
import java .util .Map ;
18
- import java .util .Objects ;
19
16
import java .util .Optional ;
20
17
import java .util .stream .Collectors ;
21
18
@@ -36,33 +33,38 @@ public MagicWorkbenchHandler(AuthorizationInterceptor authorizationInterceptor)
36
33
37
34
@ Message (MessageType .LOGIN )
38
35
public void onLogin (MagicConsoleSession session , String token , String clientId ) {
36
+ session .setClientId (clientId );
37
+ MagicUser user = null ;
39
38
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 ;
61
57
}
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 ));
64
64
}
65
- } catch (MagicLoginException ignored ) {
65
+ WebSocketSessionManager .sendToMachine (MessageType .SEND_ONLINE , session .getClientId ());
66
+ WebSocketSessionManager .sendToOther (session .getClientId (), MessageType .USER_LOGIN , session .getAttributes ());
67
+ } else {
66
68
WebSocketSessionManager .sendBySession (session , WebSocketSessionManager .buildMessage (MessageType .LOGIN_RESPONSE , "0" ));
67
69
}
68
70
}
0 commit comments