package org.apereo.cas.oidc.claims.mapping;

import java.util.HashMap;
import java.util.Map;

/**
 * This is {@link DefaultOidcAttributeToScopeClaimMapper}.
 * In order for attributes to be released when using a scope in OIDC, attributes need to mapped
 * in to the correct OIDC name (i.e. <code>given_name</code>) for those attributes.
 * The side effect is that the attribute will always be released as the mapped name
 * even for non-OIDC requests.
 * This component allows for an arbitrary mapping between the predefined OIDC claims and attributes.
 * If a mapping is found for a claim, then the attribute mapped to the claim will be used.
 *
 * @author Misagh Moayyed
 * @since 5.1.0
 */
public class DefaultOidcAttributeToScopeClaimMapper implements OidcAttributeToScopeClaimMapper {

    /**
     * Map OIDC claim to an attribute.
     */
    private Map<String, String> claimsToAttribute = new HashMap<>();

    public DefaultOidcAttributeToScopeClaimMapper(final Map<String, String> claimsToAttribute) {
        this.claimsToAttribute = claimsToAttribute;
    }

    @Override
    public String getMappedAttribute(final String claim) {
        return claimsToAttribute.get(claim);
    }

    @Override
    public boolean containsMappedAttribute(final String claim) {
        return claimsToAttribute.containsKey(claim);
    }
}
