ITrackerUserDetails.java

  1. package org.itracker.services.authentication;

  2. import org.apache.commons.lang.StringUtils;
  3. import org.itracker.model.Permission;
  4. import org.itracker.model.PermissionType;
  5. import org.itracker.model.User;
  6. import org.itracker.model.util.UserUtilities;
  7. import org.springframework.security.core.GrantedAuthority;
  8. import org.springframework.security.core.authority.SimpleGrantedAuthority;
  9. import org.springframework.security.core.userdetails.UserDetails;

  10. import java.util.Collection;
  11. import java.util.Collections;
  12. import java.util.HashSet;
  13. import java.util.Set;


  14. final public class ITrackerUserDetails implements UserDetails {
  15.     private final Set<GrantedAuthority> authorities = new HashSet<>();
  16.     private final boolean enabled;
  17.     private final String password;
  18.     private final String username;
  19.     private final boolean credentialsNonExpired;
  20.     private final boolean accountNonLocked;
  21.     private final boolean accountNonExpired;
  22.    private final String displayName;

  23.    public ITrackerUserDetails(User model, Collection<Permission> permissions) {
  24.         authorities.add(new SimpleGrantedAuthority("ROLE_USER"));

  25.         for (Permission p : permissions) {
  26.             if (null == p.getProject()) {
  27.                 authorities.add(new SimpleGrantedAuthority(p.getPermissionType().name()));
  28.             } else {
  29.                 if (p.getPermissionType() == PermissionType.PRODUCT_ADMIN) {
  30.                     authorities.add(new SimpleGrantedAuthority(p.getPermissionType().name()));
  31.                 }
  32.                 else if (p.getPermissionType() == PermissionType.ISSUE_VIEW_ALL) {
  33.                     authorities.add(new SimpleGrantedAuthority(p.getPermissionType().name()));
  34.                 }
  35.                 authorities.add(new SimpleGrantedAuthority(p.getPermissionType().name(p.getProject())));
  36.             }
  37.         }

  38.         username = model.getLogin();
  39.         password = model.getPassword();
  40.         displayName = model.getFullName();
  41.         credentialsNonExpired = StringUtils.isNotEmpty(model.getPassword());
  42.         accountNonLocked = model.getStatus() != UserUtilities.STATUS_LOCKED;
  43.         accountNonExpired = model.getStatus() == UserUtilities.STATUS_ACTIVE;
  44.         enabled = isAccountNonExpired() && !model.isNew();

  45.     }

  46.     @Override
  47.     public Collection<? extends GrantedAuthority> getAuthorities() {
  48.         return Collections.unmodifiableCollection(authorities);
  49.     }

  50.     @Override
  51.     public String getPassword() {
  52.         return password;
  53.     }

  54.     @Override
  55.     public String getUsername() {
  56.         return username;
  57.     }

  58.     public String getDisplayName() {
  59.       return displayName;
  60.     }

  61.    @Override
  62.     public boolean isAccountNonExpired() {
  63.         return accountNonExpired;
  64.     }

  65.     @Override
  66.     public boolean isAccountNonLocked() {
  67.         return accountNonLocked;
  68.     }

  69.     @Override
  70.     public boolean isCredentialsNonExpired() {
  71.         return credentialsNonExpired;
  72.     }

  73.     @Override
  74.     public boolean isEnabled() {
  75.         return enabled;
  76.     }
  77. }