package codeine.permissions; import java.security.Principal; import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import codeine.jsons.auth.CodeineUser; import codeine.model.Constants; import codeine.servlet.UsersManager; import codeine.utils.StringUtils; import codeine.utils.network.RequestUtils; public class UsernameResolverFromRequest { private static final Logger log = Logger.getLogger(UsernameResolverFromRequest.class); private UsersManager usersManager; @Inject public UsernameResolverFromRequest(UsersManager usersManager) { super(); this.usersManager = usersManager; } public CodeineUser getUser(HttpServletRequest request) { String api_token = RequestUtils.getHeader(request, Constants.API_TOKEN); if (!StringUtils.isEmpty(api_token)) { return usersManager.userByApiToken(api_token); } Principal userPrincipal = request.getUserPrincipal(); if (null == userPrincipal){ return CodeineUser.createGuestUser(); } String username = userPrincipal.getName(); log.debug("handling request from user " + username); if (username.contains("@")){ username = username.substring(0, username.indexOf("@")); } return usersManager.userOrGuest(username); } public CodeineUser getViewAsUser(HttpServletRequest request) { return CodeineUser.createNewUser(RequestUtils.getHeader(request, Constants.UrlParameters.VIEW_AS), "blabla"); } }