/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * See LICENSE.txt included in this distribution for the specific * language governing permissions and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at LICENSE.txt. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. */ package opengrok.auth.plugin.util; import jakarta.servlet.AsyncContext; import jakarta.servlet.DispatcherType; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletInputStream; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import jakarta.servlet.http.HttpUpgradeHandler; import jakarta.servlet.http.Part; import java.io.BufferedReader; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.Principal; import java.util.Base64; import java.util.Collection; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; import java.util.Locale; import java.util.Map; public class DummyHttpServletRequestUser implements HttpServletRequest { private final Map headers = new HashMap<>(); private final Map attrs = new HashMap<>(); private final HttpSession sessions = new HttpSession() { private final Map attrs = new HashMap<>(); @Override public long getCreationTime() { return 0; } @Override public String getId() { return "abcd"; } @Override public long getLastAccessedTime() { return 0; } @Override public ServletContext getServletContext() { return (ServletContext) DummyHttpServletRequestUser.this; } @Override public void setMaxInactiveInterval(int i) { } @Override public int getMaxInactiveInterval() { return 3600; } @Override @SuppressWarnings("deprecation") public jakarta.servlet.http.HttpSessionContext getSessionContext() { throw new UnsupportedOperationException("Not supported yet."); } @Override public Object getAttribute(String string) { return attrs.get(string); } @Override @SuppressWarnings("deprecation") public Object getValue(String string) { throw new UnsupportedOperationException("Not supported yet."); } @Override public Enumeration getAttributeNames() { throw new UnsupportedOperationException("Not supported yet."); } @Override @SuppressWarnings("deprecation") public String[] getValueNames() { throw new UnsupportedOperationException("Not supported yet."); } @Override public void setAttribute(String string, Object o) { attrs.put(string, o); } @Override @SuppressWarnings("deprecation") public void putValue(String string, Object o) { } @Override public void removeAttribute(String string) { attrs.remove(string); } @Override @SuppressWarnings("deprecation") public void removeValue(String string) { } @Override public void invalidate() { } @Override public boolean isNew() { return true; } }; @Override public String getAuthType() { throw new UnsupportedOperationException("Not supported yet."); } @Override public Cookie[] getCookies() { throw new UnsupportedOperationException("Not supported yet."); } @Override public long getDateHeader(String string) { throw new UnsupportedOperationException("Not supported yet."); } public void setHeader(String string, String value) { headers.put(string, value); } @Override public String getHeader(String string) { return headers.get(string); } @Override public Enumeration getHeaders(String string) { throw new UnsupportedOperationException("Not supported yet."); } @Override public Enumeration getHeaderNames() { return Collections.enumeration(headers.keySet()); } @Override public int getIntHeader(String string) { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getMethod() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getPathInfo() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getPathTranslated() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getContextPath() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getQueryString() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getRemoteUser() { throw new UnsupportedOperationException("Not supported yet."); } @Override public boolean isUserInRole(String string) { throw new UnsupportedOperationException("Not supported yet."); } @Override public Principal getUserPrincipal() { String authHeader = getHeader("authorization"); if (authHeader == null) { return null; } if (!authHeader.startsWith("Basic")) { return null; } String encodedValue = authHeader.split(" ")[1]; Base64.Decoder decoder = Base64.getDecoder(); String username = new String(decoder.decode(encodedValue)).split(":")[0]; return () -> username; } @Override public String getRequestedSessionId() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getRequestURI() { throw new UnsupportedOperationException("Not supported yet."); } @Override public StringBuffer getRequestURL() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getServletPath() { throw new UnsupportedOperationException("Not supported yet."); } @Override public HttpSession getSession(boolean bln) { return sessions; } @Override public HttpSession getSession() { return sessions; } @Override public String changeSessionId() { return null; } @Override public boolean isRequestedSessionIdValid() { throw new UnsupportedOperationException("Not supported yet."); } @Override public boolean isRequestedSessionIdFromCookie() { throw new UnsupportedOperationException("Not supported yet."); } @Override public boolean isRequestedSessionIdFromURL() { throw new UnsupportedOperationException("Not supported yet."); } @Override @Deprecated public boolean isRequestedSessionIdFromUrl() { throw new UnsupportedOperationException("Not supported yet."); } @Override public boolean authenticate(HttpServletResponse httpServletResponse) { return false; } @Override public void login(String s, String s1) { } @Override public void logout() { } @Override public Collection getParts() { return null; } @Override public Part getPart(String s) { return null; } @Override public T upgrade(Class aClass) { return null; } @Override public Object getAttribute(String string) { return attrs.get(string); } @Override public Enumeration getAttributeNames() { return Collections.enumeration(attrs.keySet()); } @Override public String getCharacterEncoding() { throw new UnsupportedOperationException("Not supported yet."); } @Override public void setCharacterEncoding(String string) throws UnsupportedEncodingException { throw new UnsupportedOperationException("Not supported yet."); } @Override public int getContentLength() { throw new UnsupportedOperationException("Not supported yet."); } @Override public long getContentLengthLong() { return 0; } @Override public String getContentType() { throw new UnsupportedOperationException("Not supported yet."); } @Override public ServletInputStream getInputStream() throws IOException { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getParameter(String string) { throw new UnsupportedOperationException("Not supported yet."); } @Override public Enumeration getParameterNames() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String[] getParameterValues(String string) { throw new UnsupportedOperationException("Not supported yet."); } @Override public Map getParameterMap() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getProtocol() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getScheme() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getServerName() { throw new UnsupportedOperationException("Not supported yet."); } @Override public int getServerPort() { throw new UnsupportedOperationException("Not supported yet."); } @Override public BufferedReader getReader() throws IOException { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getRemoteAddr() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getRemoteHost() { throw new UnsupportedOperationException("Not supported yet."); } @Override public void setAttribute(String name, Object o) { attrs.put(name, o); } @Override public void removeAttribute(String name) { attrs.remove(name); } @Override public Locale getLocale() { throw new UnsupportedOperationException("Not supported yet."); } @Override public Enumeration getLocales() { throw new UnsupportedOperationException("Not supported yet."); } @Override public boolean isSecure() { throw new UnsupportedOperationException("Not supported yet."); } @Override public RequestDispatcher getRequestDispatcher(String string) { throw new UnsupportedOperationException("Not supported yet."); } @Override @Deprecated public String getRealPath(String string) { throw new UnsupportedOperationException("Not supported yet."); } @Override public int getRemotePort() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getLocalName() { throw new UnsupportedOperationException("Not supported yet."); } @Override public String getLocalAddr() { throw new UnsupportedOperationException("Not supported yet."); } @Override public int getLocalPort() { throw new UnsupportedOperationException("Not supported yet."); } @Override public ServletContext getServletContext() { return null; } @Override public AsyncContext startAsync() throws IllegalStateException { return null; } @Override public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException { return null; } @Override public boolean isAsyncStarted() { return false; } @Override public boolean isAsyncSupported() { return false; } @Override public AsyncContext getAsyncContext() { return null; } @Override public DispatcherType getDispatcherType() { return null; } }