1   package com.atlassian.seraph.auth;
2   
3   import com.atlassian.seraph.config.SecurityConfig;
4   
5   import java.io.Serializable;
6   import java.security.Principal;
7   import java.util.Map;
8   
9   import javax.servlet.http.HttpServletRequest;
10  import javax.servlet.http.HttpServletResponse;
11  
12  /**
13   * An abstract implementation of Authenticator that implements a lot of base methods
14   */
15  public abstract class AbstractAuthenticator implements Authenticator, Serializable
16  {
17      private SecurityConfig config;
18  
19      public void init(final Map<String, String> params, final SecurityConfig config)
20      {
21          this.config = config;
22      }
23  
24      public void destroy()
25      {}
26  
27      /** @deprecated Use {@link RoleMapper} directly */
28      @Deprecated
29      public abstract boolean isUserInRole(HttpServletRequest request, String role);
30  
31      public String getRemoteUser(final HttpServletRequest request)
32      {
33          final Principal user = getUser(request);
34  
35          if (user == null)
36          {
37              return null;
38          }
39  
40          return user.getName();
41      }
42  
43      public Principal getUser(final HttpServletRequest request)
44      {
45          return getUser(request, null);
46      }
47  
48      public abstract Principal getUser(HttpServletRequest request, HttpServletResponse response);
49  
50      public boolean login(final HttpServletRequest request, final HttpServletResponse response, final String username, final String password) throws AuthenticatorException
51      {
52          return login(request, response, username, password, false);
53  
54      }
55  
56      public abstract boolean login(HttpServletRequest request, HttpServletResponse response, String username, String password, boolean cookie) throws AuthenticatorException;
57  
58      public abstract boolean logout(HttpServletRequest request, HttpServletResponse response) throws AuthenticatorException;
59  
60      protected SecurityConfig getConfig()
61      {
62          return config;
63      }
64  }