Skip to content

Commit 05e3238

Browse files
committed
fix teams federation
1 parent 22c11c4 commit 05e3238

1 file changed

Lines changed: 28 additions & 12 deletions

File tree

Modules/CIPPCore/Public/Standards/Invoke-CIPPStandardTeamsFederationConfiguration.ps1

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,18 @@ function Invoke-CIPPStandardTeamsFederationConfiguration {
3636

3737
$CurrentState = New-TeamsRequest -TenantFilter $Tenant -Cmdlet 'Get-CsTenantFederationConfiguration' -CmdParams @{Identity = 'Global' } | Select-Object *
3838

39+
$AllowAllKnownDomains = New-CsEdgeAllowAllKnownDomains
3940
$DomainControl = $Settings.DomainControl.value ?? $Settings.DomainControl
41+
$AllowedDomainsAsAList = $null
4042
switch ($DomainControl) {
4143
'AllowAllExternal' {
4244
$AllowFederatedUsers = $true
43-
$AllowedDomainsAsAList = 'AllowAllKnownDomains'
45+
$AllowedDomains = $AllowAllKnownDomains
4446
$BlockedDomains = @()
4547
}
4648
'BlockAllExternal' {
4749
$AllowFederatedUsers = $false
48-
$AllowedDomainsAsAList = 'AllowAllKnownDomains'
50+
$AllowedDomains = $AllowAllKnownDomains
4951
$BlockedDomains = @()
5052
}
5153
'AllowSpecificExternal' {
@@ -72,26 +74,40 @@ function Invoke-CIPPStandardTeamsFederationConfiguration {
7274
}
7375
}
7476

75-
# TODO : Add proper validation for the domain list
76-
# $CurrentState.AllowedDomains returns a PSObject System.Object and adds a Domain= for each allowed domain, ex {Domain=example.com, Domain=example2.com}
77+
$CurrentAllowedDomains = $CurrentState.AllowedDomains
78+
if ($CurrentAllowedDomains.GetType().Name -eq 'PSObject') {
79+
$CurrentAllowedDomains = $CurrentAllowedDomains.Domain | Sort-Object
80+
$DomainList = $CurrentAllowedDomains | Sort-Object
81+
$AllowedDomainsMatches = -not (Compare-Object -ReferenceObject $AllowedDomainsAsAList -DifferenceObject $DomainList)
82+
} elseif ($CurrentAllowedDomains.GetType().Name -eq 'Deserialized.Microsoft.Rtc.Management.WritableConfig.Settings.Edge.AllowAllKnownDomains') {
83+
$CurrentAllowedDomains = $CurrentAllowedDomains.ToString()
84+
$AllowedDomainsMatches = $CurrentAllowedDomains -eq $AllowedDomains.ToString()
85+
}
86+
87+
$BlockedDomainsMatches = -not (Compare-Object -ReferenceObject $BlockedDomains -DifferenceObject $CurrentState.BlockedDomains)
7788

7889
$StateIsCorrect = ($CurrentState.AllowTeamsConsumer -eq $Settings.AllowTeamsConsumer) -and
7990
($CurrentState.AllowPublicUsers -eq $Settings.AllowPublicUsers) -and
8091
($CurrentState.AllowFederatedUsers -eq $AllowFederatedUsers) -and
81-
($CurrentState.AllowedDomains -eq $AllowedDomainsAsAList) -and
82-
($CurrentState.BlockedDomains -eq $BlockedDomains)
92+
$AllowedDomainsMatches -and
93+
$BlockedDomainsMatches
8394

8495
if ($Settings.remediate -eq $true) {
8596
if ($StateIsCorrect -eq $true) {
8697
Write-LogMessage -API 'Standards' -tenant $Tenant -message 'Federation Configuration already set.' -sev Info
8798
} else {
8899
$cmdparams = @{
89-
Identity = 'Global'
90-
AllowTeamsConsumer = $Settings.AllowTeamsConsumer
91-
AllowPublicUsers = $Settings.AllowPublicUsers
92-
AllowFederatedUsers = $AllowFederatedUsers
93-
AllowedDomainsAsAList = $AllowedDomainsAsAList
94-
BlockedDomains = $BlockedDomains
100+
Identity = 'Global'
101+
AllowTeamsConsumer = $Settings.AllowTeamsConsumer
102+
AllowPublicUsers = $Settings.AllowPublicUsers
103+
AllowFederatedUsers = $AllowFederatedUsers
104+
BlockedDomains = $BlockedDomains
105+
}
106+
107+
if (!$AllowedDomainsAsAList) {
108+
$cmdparams.AllowedDomains = $AllowedDomains
109+
} else {
110+
$cmdparams.AllowedDomainsAsAList = $AllowedDomainsAsAList
95111
}
96112

97113
try {

0 commit comments

Comments
 (0)