Private/Import-ADFSTkIssuanceTransformRuleCategories.ps1

function Import-ADFSTkIssuanceTransformRuleCategories {
param (
    
[Parameter(Mandatory=$false,
                   ValueFromPipelineByPropertyName=$true,
                   Position=0)]
    $RequestedAttributes,
    [Parameter(Mandatory=$false,
                   ValueFromPipelineByPropertyName=$true,
                   Position=1)]
    $NameIDFormat

)
    ### Create AttributeStore variables
    $IssuanceTransformRuleCategories = @{}

    ### Released to SP:s without Entity Category

    $TransformRules = [Ordered]@{}

    if ([string]::IsNullOrEmpty($NameIDFormat))
    {
        $TransformRules.'transient-id' = $Global:AllTransformRules.'transient-id'
    }
    elseif ($NameIDFormat.Contains('urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'))
    {
        $TransformRules.'persistent-id' = $Global:AllTransformRules.'persistent-id'
    }
    elseif ($NameIDFormat.Contains('urn:oasis:names:tc:SAML:2.0:nameid-format:transient'))
    {
        $TransformRules.'transient-id' = $Global:AllTransformRules.'transient-id'
    }
    else
    {
        $TransformRules.'transient-id' = $Global:AllTransformRules.'transient-id'
    }

    $IssuanceTransformRuleCategories.Add("NoEntityCategory",$TransformRules)
    
    ### research-and-scholarship ###

    $TransformRules = [Ordered]@{}

    #$TransformRules.'transient-id' = $Global:AllTransformRules.'transient-id'
    
    $TransformRules.displayName = $Global:AllTransformRules.displayName
    $TransformRules.eduPersonAssurance = $Global:AllTransformRules.eduPersonAssurance
    $TransformRules.eduPersonPrincipalName = $Global:AllTransformRules.eduPersonPrincipalName
    $TransformRules.eduPersonScopedAffiliation = $Global:AllTransformRules.eduPersonScopedAffiliation
    
    #eduPersonTargetedID should only be released if eduPersonPrincipalName i ressignable
    if (![string]::IsNullOrEmpty($Settings.configuration.eduPersonPrincipalNameRessignable) -and $Settings.configuration.eduPersonPrincipalNameRessignable.ToLower() -eq "true")
    {
        $TransformRules.eduPersonTargetedID = $Global:AllTransformRules.eduPersonTargetedID
    }

    $TransformRules.eduPersonUniqueID = $Global:AllTransformRules.eduPersonUniqueID
    $TransformRules.givenName = $Global:AllTransformRules.givenName
    $TransformRules.mail = $Global:AllTransformRules.mail
    $TransformRules.sn = $Global:AllTransformRules.sn

    $IssuanceTransformRuleCategories.Add("http://refeds.org/category/research-and-scholarship",$TransformRules)

    ### GEANT Dataprotection Code of Conduct
    
    $TransformRules = [Ordered]@{}

    if ($RequestedAttributes.Count -gt 0)
    {
        #if ($RequestedAttributes.ContainsKey("urn:oid:2.5.4.6")) {
        # $TransformRules.c = $Global:AllTransformRules.c
        #}
        if ($RequestedAttributes.ContainsKey("urn:oid:2.5.4.3")) {
            $TransformRules.cn = $Global:AllTransformRules.cn
        }
        #if ($RequestedAttributes.ContainsKey("urn:oid:0.9.2342.19200300.100.1.43")) {
        # $TransformRules.co = $Global:AllTransformRules.co
        #}
        if ($RequestedAttributes.ContainsKey("urn:oid:2.16.840.1.113730.3.1.241")) { 
            $TransformRules.displayName = $Global:AllTransformRules.displayName 
        }
        #if ($RequestedAttributes.ContainsKey("urn:oid:2.5.4.6")) {
        # $TransformRules.countryName = $Global:AllTransformRules.countryName
        #}
        if ($RequestedAttributes.ContainsKey("urn:oid:1.3.6.1.4.1.5923.1.1.1.1")) {
            $TransformRules.eduPersonAffiliation = $Global:AllTransformRules.eduPersonAffiliation
        }
        if ($RequestedAttributes.ContainsKey("urn:oid:1.3.6.1.4.1.5923.1.1.1.11")) {
            $TransformRules.eduPersonAssurance = $Global:AllTransformRules.eduPersonAssurance
        }
        if ($RequestedAttributes.ContainsKey("urn:oid:1.3.6.1.4.1.5923.1.1.1.16")) {
            $TransformRules.eduPersonOrcid = $Global:AllTransformRules.eduPersonOrcid
        }
        if ($RequestedAttributes.ContainsKey("urn:oid:1.3.6.1.4.1.5923.1.1.1.6")) { 
            $TransformRules.eduPersonPrincipalName = $Global:AllTransformRules.eduPersonPrincipalName
        }
        if ($RequestedAttributes.ContainsKey("urn:oid:1.3.6.1.4.1.5923.1.1.1.9")) {
            $TransformRules.eduPersonScopedAffiliation = $Global:AllTransformRules.eduPersonScopedAffiliation
        }
        if ($RequestedAttributes.ContainsKey("urn:oid:1.3.6.1.4.1.5923.1.1.1.10")) { 
            $TransformRules.eduPersonTargetedID = $Global:AllTransformRules.eduPersonTargetedID
        }
        if ($RequestedAttributes.ContainsKey("urn:oid:1.3.6.1.4.1.5923.1.1.1.13")) { 
            $TransformRules.eduPersonUniqueID = $Global:AllTransformRules.eduPersonUniqueID
        }
        #if ($RequestedAttributes.ContainsKey("urn:oid:0.9.2342.19200300.100.1.43")) {
        # $TransformRules.friendlyCountryName = $Global:AllTransformRules.friendlyCountryName
        #}
        if ($RequestedAttributes.ContainsKey("urn:oid:2.5.4.42")) { 
            $TransformRules.givenName = $Global:AllTransformRules.givenName 
        }
        if ($RequestedAttributes.ContainsKey("urn:oid:0.9.2342.19200300.100.1.3")) { 
            $TransformRules.mail = $Global:AllTransformRules.mail
        }
        #if ($RequestedAttributes.ContainsKey("urn:oid:1.3.6.1.4.1.2428.90.1.6")) {
        # $TransformRules.norEduOrgAcronym = $Global:AllTransformRules.norEduOrgAcronym
        #}
        #if ($RequestedAttributes.ContainsKey("urn:oid:1.3.6.1.4.1.2428.90.1.5")) {
        # $TransformRules.norEduPersonNIN = $Global:AllTransformRules.norEduPersonNIN
        #}
        #if ($RequestedAttributes.ContainsKey("urn:oid:2.5.4.10")) {
        # $TransformRules.o = $Global:AllTransformRules.o
        #}
        #if ($RequestedAttributes.ContainsKey("urn:oid:2.5.4.10")) {
        # $TransformRules.organizationName = $Global:AllTransformRules.organizationName
        #}
        if ($RequestedAttributes.ContainsKey("urn:oid:1.2.752.29.4.13")) {
            $TransformRules.personalIdentityNumber = $Global:AllTransformRules.personalIdentityNumber
        }
        if ($RequestedAttributes.ContainsKey("urn:oid:1.3.6.1.4.1.25178.1.2.3")) {
            $TransformRules.schacDateOfBirth = $Global:AllTransformRules.schacDateOfBirth
        }
        if ($RequestedAttributes.ContainsKey("urn:oid:1.3.6.1.4.1.25178.1.2.9")) { 
            $TransformRules.schacHomeOrganization = $Global:AllTransformRules.schacHomeOrganization
        }
        if ($RequestedAttributes.ContainsKey("urn:oid:1.3.6.1.4.1.25178.1.2.10")) {
            $TransformRules.schacHomeOrganizationType = $Global:AllTransformRules.schacHomeOrganizationType
        }
        if ($RequestedAttributes.ContainsKey("urn:oid:2.5.4.4")) { 
            $TransformRules.sn = $Global:AllTransformRules.sn
        }
    }

    $IssuanceTransformRuleCategories.Add("http://www.geant.net/uri/dataprotection-code-of-conduct/v1",$TransformRules)
    
    return $IssuanceTransformRuleCategories
}