package cc.blynk.server.api.http.logic.business; import cc.blynk.server.core.dao.SessionDao; import cc.blynk.server.core.model.auth.User; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.handler.codec.http.FullHttpRequest; /** * The Blynk Project. * Created by Dmitriy Dumanskiy. * Created on 13.05.16. */ @ChannelHandler.Sharable public class AuthCookieHandler extends ChannelInboundHandlerAdapter { private final SessionDao sessionDao; public AuthCookieHandler(SessionDao sessionDao) { this.sessionDao = sessionDao; } @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof FullHttpRequest) { FullHttpRequest request = (FullHttpRequest) msg; User user = sessionDao.getUserFromCookie(request); if (request.uri().equals("/admin/logout")) { ctx.channel().attr(SessionDao.userAttributeKey).set(null); } else { if (user != null) { ctx.channel().attr(SessionDao.userAttributeKey).set(user); } } } super.channelRead(ctx, msg); } }