View Javadoc

1   package com.atlassian.plugins.rest.module.security;
2   
3   import com.atlassian.plugins.rest.common.security.AuthenticationContext;
4   import com.atlassian.plugins.rest.module.servlet.ServletUtils;
5   import com.atlassian.sal.api.user.UserManager;
6   import com.google.common.base.Preconditions;
7   
8   import java.security.Principal;
9   
10  /**
11   * SAL implementation of the {@link AuthenticationContext}
12   *
13   * @since 1.0
14   */
15  public class SalAuthenticationContext implements AuthenticationContext {
16      private final UserManager userManager;
17  
18      public SalAuthenticationContext(final UserManager userManager) {
19          this.userManager = Preconditions.checkNotNull(userManager);
20      }
21  
22      public Principal getPrincipal() {
23          final String userName = getUserName();
24          return userName != null ? new SalPrincipal(userName) : null;
25      }
26  
27      public boolean isAuthenticated() {
28          return getUserName() != null;
29      }
30  
31      private String getUserName() {
32          return userManager.getRemoteUsername(ServletUtils.getHttpServletRequest());
33      }
34  
35      private static class SalPrincipal implements Principal {
36          private final String userName;
37  
38          SalPrincipal(String userName) {
39              this.userName = Preconditions.checkNotNull(userName);
40          }
41  
42          public String getName() {
43              return userName;
44          }
45  
46          @Override
47          public int hashCode() {
48              return userName.hashCode();
49          }
50  
51          @Override
52          public boolean equals(Object obj) {
53              return obj != null && (obj instanceof SalPrincipal) && ((SalPrincipal) obj).userName.equals(userName);
54          }
55  
56          @Override
57          public String toString() {
58              return userName;
59          }
60      }
61  }