All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.committed.invest.plugin.server.auth.utils.AuthUtils Maven / Gradle / Ivy

The newest version!
package io.committed.invest.plugin.server.auth.utils;

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import io.committed.invest.core.auth.InvestRoles;
import io.committed.invest.plugin.server.auth.dao.UserAccount;
import io.committed.invest.plugin.server.auth.dto.User;

/** Utilities for authentication */
public final class AuthUtils {

  private AuthUtils() {
    // Singleton
  }

  /**
   * Convert from a Spring Authentication to a User dto.
   *
   * @param auth the auth
   * @return the user
   */
  public static User fromAuthentication(final Authentication auth) {
    final UserDetails ud = (UserDetails) auth.getPrincipal();
    return new User(
        ud.getUsername(), ud.getUsername(), getRolesFromAuthorities(ud.getAuthorities()));
  }

  /**
   * Convert from a User Account dao to a User dto.
   *
   * @param userAccount the user
   * @return the user
   */
  public static User fromAccount(final UserAccount userAccount) {
    return new User(
        userAccount.getUsername(),
        userAccount.getUsername(),
        getRolesFromAuthorities(userAccount.getAuthorities().stream()));
  }

  /**
   * Convert roles to authoritories.
   *
   * @param authorities the authorities
   * @return the roles from authorities
   */
  public static Set getRolesFromAuthorities(
      final Collection authorities) {
    return authorities == null
        ? Collections.emptySet()
        : getRolesFromAuthorities(authorities.stream().map(GrantedAuthority::getAuthority));
  }

  private static Set getRolesFromAuthorities(final Stream authorities) {
    return authorities
        .filter(InvestRoles::isAuthorityARole)
        .map(InvestRoles::fromAuthorityToRole)
        .filter(Optional::isPresent)
        .map(Optional::get)
        .collect(Collectors.toSet());
  }

  /**
   * Convert from string authorities to Spring GrantedAuthorities.
   *
   * @param authorities the authorities
   * @return the collection
   */
  public static Collection toGrantAuthorities(final Set authorities) {
    return authorities.stream().map(SimpleGrantedAuthority::new).collect(Collectors.toList());
  }

  public static boolean hasAuthority(
      final Authentication authentication, final String... authority) {
    final Collection authorities = authentication.getAuthorities();
    if (authorities == null || authorities.isEmpty()) {
      return false;
    }

    return Arrays.stream(authority)
        .anyMatch(auth -> authorities.stream().anyMatch(a -> a.getAuthority().equals(auth)));
  }

  public static Set toSet(final String... roles) {
    return new HashSet<>(Arrays.asList(roles));
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy