@@ -84,33 +84,54 @@ internal MicrosoftGraphRscConfiguration ConvertToChatRscConfiguration(
8484
8585 if ( teamsAppSettings . IsChatResourceSpecificConsentEnabled == true )
8686 {
87- if ( assignedPermissionGrantPoliciesApplicableToChatScope . Any ( ) )
88- {
89- this . LogVerbose (
90- "Chat RSC is enabled in Teams App Settings and chat scoped permission grant policies are enabled. Not a supported scenario." ,
91- eventListener ) ;
92- microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . Custom ;
93- }
94- else
95- {
96- this . LogVerbose ( "Chat RSC is enabled in Teams App Settings." , eventListener ) ;
97- microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . EnabledForAllApps ;
98- }
87+ this . LogVerbose ( "Chat RSC is enabled in Teams App Settings." , eventListener ) ;
88+ microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . EnabledForAllApps ;
9989 }
10090 else if ( assignedPermissionGrantPoliciesApplicableToChatScope . Any ( ) )
10191 {
102- if ( assignedPermissionGrantPoliciesApplicableToChatScope . Any ( pgp => ! string . Equals (
103- pgp . ManagePermissionGrantsForOwnedResourcePrefixedId ,
104- RscConfigurationSynthesizer . MicrosoftCreatedPermissionGrantPolicyEnabledForPreapprovedAppsForChats ,
105- StringComparison . OrdinalIgnoreCase ) ) )
92+ int interestingPermissionGrantPolicyCount = assignedPermissionGrantPoliciesApplicableToChatScope . Count ( ) ;
93+
94+ if ( interestingPermissionGrantPolicyCount > 1 )
10695 {
107- this . LogVerbose ( "Unknown chat scoped permission grant policies are enabled. Not a supported scenario." , eventListener ) ;
96+ this . LogVerbose ( "Multiple chat scoped permission grant policies are enabled. Not a supported scenario." , eventListener ) ;
10897 microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . Custom ;
10998 }
99+ else if ( interestingPermissionGrantPolicyCount == 0 )
100+ {
101+ microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . DisabledForAllApps ;
102+ }
110103 else
111104 {
112- this . LogVerbose ( "Authorization policy contains permission grant policy for chat RSC preapprovals." , eventListener ) ;
113- microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . EnabledForPreApprovedAppsOnly ;
105+ MGTeamsInternalPermissionGrantPolicy interestingPermissionGrantPolicy =
106+ assignedPermissionGrantPoliciesApplicableToChatScope . Single ( ) ;
107+
108+ if ( string . Equals (
109+ interestingPermissionGrantPolicy . ManagePermissionGrantsForOwnedResourcePrefixedId ,
110+ RscConfigurationSynthesizer . MicrosoftCreatedPermissionGrantPolicyEnabledForAllAppsForChats ,
111+ StringComparison . OrdinalIgnoreCase ) )
112+ {
113+ this . LogVerbose ( "Authorization policy contains permission grant policy for all chat RSC applications." , eventListener ) ;
114+ microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . EnabledForAllApps ;
115+ }
116+ else if ( string . Equals (
117+ interestingPermissionGrantPolicy . ManagePermissionGrantsForOwnedResourcePrefixedId ,
118+ RscConfigurationSynthesizer . MicrosoftCreatedPermissionGrantPolicyEnabledForPreapprovedAppsForChats ,
119+ StringComparison . OrdinalIgnoreCase ) )
120+ {
121+ microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . EnabledForPreApprovedAppsOnly ;
122+ }
123+ else if ( string . Equals (
124+ interestingPermissionGrantPolicy . ManagePermissionGrantsForOwnedResourcePrefixedId ,
125+ RscConfigurationSynthesizer . MicrosoftCreatedPermissionGrantPolicyManagedByMicrosoftForChats ,
126+ StringComparison . OrdinalIgnoreCase ) )
127+ {
128+ microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . ManagedByMicrosoft ;
129+ }
130+ else
131+ {
132+ this . LogVerbose ( "Unknown chat scoped permission grant policies are enabled. Not a supported scenario." , eventListener ) ;
133+ microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . Custom ;
134+ }
114135 }
115136 }
116137 else
@@ -169,7 +190,6 @@ internal IMicrosoftGraphRscConfiguration ConvertToTeamRscConfiguration(
169190 }
170191 else if ( interestingPermissionGrantPolicyCount == 0 )
171192 {
172- this . LogVerbose ( "Team scope RSC is disabled." , eventListener ) ;
173193 microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . DisabledForAllApps ;
174194 }
175195 else
@@ -180,17 +200,22 @@ internal IMicrosoftGraphRscConfiguration ConvertToTeamRscConfiguration(
180200 RscConfigurationSynthesizer . MicrosoftCreatedPermissionGrantPolicyEnabledForAllAppsForTeams ,
181201 StringComparison . OrdinalIgnoreCase ) )
182202 {
183- this . LogVerbose ( "Authorization policy contains permission grant policy for all application permissions for teams." , eventListener ) ;
184203 microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . EnabledForAllApps ;
185204 }
186205 else if ( string . Equals (
187206 interestingPermissionGrantPolicy . ManagePermissionGrantsForOwnedResourcePrefixedId ,
188207 RscConfigurationSynthesizer . MicrosoftCreatedPermissionGrantPolicyEnabledForPreapprovedAppsForTeams ,
189208 StringComparison . OrdinalIgnoreCase ) )
190209 {
191- this . LogVerbose ( "Authorization policy contains permission grant policy for team RSC preapprovals." , eventListener ) ;
192210 microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . EnabledForPreApprovedAppsOnly ;
193211 }
212+ else if ( string . Equals (
213+ interestingPermissionGrantPolicy . ManagePermissionGrantsForOwnedResourcePrefixedId ,
214+ RscConfigurationSynthesizer . MicrosoftCreatedPermissionGrantPolicyManagedByMicrosoftForTeams ,
215+ StringComparison . OrdinalIgnoreCase ) )
216+ {
217+ microsoftGraphRscConfiguration . State = MicrosoftGraphRscConfigurationState . ManagedByMicrosoft ;
218+ }
194219 else
195220 {
196221 this . LogVerbose ( "Unknown group scoped permission grant policies are enabled. Not a supported scenario." , eventListener ) ;
0 commit comments