added chats with another users
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package com.krylov.refound.util;
|
||||
|
||||
import com.krylov.refound.security.JwtService;
|
||||
import com.krylov.refound.service.UserService;
|
||||
import java.util.Map;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.http.server.ServerHttpRequest;
|
||||
import org.springframework.http.server.ServerHttpResponse;
|
||||
import org.springframework.http.server.ServletServerHttpRequest;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.socket.WebSocketHandler;
|
||||
import org.springframework.web.socket.server.HandshakeInterceptor;
|
||||
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class WsHandshakeInterceptor implements HandshakeInterceptor {
|
||||
|
||||
private final JwtService jwtService;
|
||||
private final UserService userService;
|
||||
|
||||
@Override
|
||||
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) {
|
||||
if (request instanceof ServletServerHttpRequest servletRequest) {
|
||||
String token = servletRequest.getServletRequest().getParameter("token");
|
||||
if (token != null && jwtService.isTokenValid(token)) {
|
||||
String login = jwtService.extractLogin(token);
|
||||
Long userId = userService.getUserIdByLogin(login);
|
||||
attributes.put("userId", userId);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false; // отклонить подключение без валидного токена
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {}
|
||||
}
|
||||
Reference in New Issue
Block a user