SecurityProperties.java

package no.nav.data.common.security;

import lombok.Data;
import org.apache.commons.lang3.Strings;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.List;

import static no.nav.data.common.utils.StreamUtils.safeStream;
import static no.nav.data.common.utils.StreamUtils.tryFind;

@Data
@Configuration
@ConfigurationProperties(prefix = "team-catalog.security")
public class SecurityProperties {

    private boolean enabled = true;
    private String encKey = "";

    private List<String> adminGroups;
    private List<String> redirectUris;
    private String env;
    private List<String> devEmailAllowList;

    public boolean isValidRedirectUri(String uri) {
        return uri == null || safeStream(redirectUris).anyMatch(origin -> Strings.CI.startsWith(uri, origin));
    }

    public boolean isDev() {
        return env.startsWith("dev");
    }

    public String findBaseUrl() {
        return tryFind(getRedirectUris(), uri -> uri.contains("teamkatalog.nav.no")).orElse(getRedirectUris().getFirst());
    }

    public boolean isDevEmailAllowed(String email) {
        return devEmailAllowList.stream().anyMatch(email::equalsIgnoreCase);
    }
}