//package com.patzn.lims.stomp;
//
//import com.baomidou.kisso.security.token.SSOToken;
//import com.patzn.lims.core.web.Account;
//import com.patzn.lims.core.web.LoginHelper;
//import com.patzn.cloud.commons.spring.SpringHelper;
//import org.springframework.http.server.ServerHttpRequest;
//import org.springframework.web.socket.WebSocketHandler;
//import org.springframework.web.socket.server.standard.UndertowRequestUpgradeStrategy;
//import org.springframework.web.socket.server.support.DefaultHandshakeHandler;
//
//import javax.servlet.http.HttpServletRequest;
//import java.security.Principal;
//import java.util.Map;
//
///**
// * <p>
// * WebSocket 握手处理器
// * </p>
// *
// * @author hubin
// * @since 2017-01-02
// */
//public class WsHandshakeHandler extends DefaultHandshakeHandler {
//
//    public WsHandshakeHandler() {
//
//    }
//
//    public WsHandshakeHandler(UndertowRequestUpgradeStrategy undertowRequestUpgradeStrategy) {
//        super(undertowRequestUpgradeStrategy);
//    }
//
//    @Override
//    protected Principal determineUser(ServerHttpRequest request, WebSocketHandler wsHandler, Map<String, Object> attributes) {
//        Account account = null;
//        HttpServletRequest hsr = SpringHelper.getCurrentRequest();
//        if (null != hsr) {
//            // URL 传输方式
//            Object accessToken = hsr.getParameter("accessToken");
//            if (null != accessToken) {
//                account = LoginHelper.getAccount(SSOToken.parser(String.valueOf(accessToken),
//                        false), false);
//            } else {
//                account = LoginHelper.getAccount(hsr, false);
//            }
//        }
//        if (null == account) {
//            return null;
//        }
//        // 保存当前用户 ID 作为凭证
//        return new WsPrincipal(account.getUserIdStr());
//    }
//}
