@@ -12,14 +12,14 @@ Function Invoke-ExecModifyCalPerms {
1212
1313 $APIName = $Request.Params.CIPPEndpoint
1414 Write-LogMessage - headers $Request.Headers - API $APINAME - message ' Accessed this API' - Sev ' Debug'
15-
15+
1616 $Username = $request.body.userID
1717 $Tenantfilter = $request.body.tenantfilter
1818 $Permissions = $request.body.permissions
1919
2020 Write-LogMessage - headers $Request.Headers - API $APINAME - message " Processing request for user: $Username , tenant: $Tenantfilter " - Sev ' Debug'
2121
22- if ($username -eq $null ) {
22+ if ($username -eq $null ) {
2323 Write-LogMessage - headers $Request.Headers - API $APINAME - message ' Username is null' - Sev ' Error'
2424 $body = [pscustomobject ]@ {' Results' = @ (' Username is required' ) }
2525 Push-OutputBinding - Name Response - Value ([HttpResponseContext ]@ {
@@ -28,12 +28,11 @@ Function Invoke-ExecModifyCalPerms {
2828 })
2929 return
3030 }
31-
31+
3232 try {
3333 $userid = (New-GraphGetRequest - uri " https://graph.microsoft.com/beta/users/$ ( $username ) " - tenantid $Tenantfilter ).id
3434 Write-LogMessage - headers $Request.Headers - API $APINAME - message " Retrieved user ID: $userid " - Sev ' Debug'
35- }
36- catch {
35+ } catch {
3736 Write-LogMessage - headers $Request.Headers - API $APINAME - message " Failed to get user ID: $ ( $_.Exception.Message ) " - Sev ' Error'
3837 $body = [pscustomobject ]@ {' Results' = @ (" Failed to get user ID: $ ( $_.Exception.Message ) " ) }
3938 Push-OutputBinding - Name Response - Value ([HttpResponseContext ]@ {
@@ -50,8 +49,7 @@ Function Invoke-ExecModifyCalPerms {
5049 if ($Permissions -is [PSCustomObject ]) {
5150 if ($Permissions.PSObject.Properties.Name -match ' ^\d+$' ) {
5251 $Permissions = $Permissions.PSObject.Properties.Value
53- }
54- else {
52+ } else {
5553 $Permissions = @ ($Permissions )
5654 }
5755 }
@@ -60,13 +58,14 @@ Function Invoke-ExecModifyCalPerms {
6058
6159 foreach ($Permission in $Permissions ) {
6260 Write-LogMessage - headers $Request.Headers - API $APINAME - message " Processing permission: $ ( $Permission | ConvertTo-Json ) " - Sev ' Debug'
63-
61+
6462 $PermissionLevel = $Permission.PermissionLevel.value ?? $Permission.PermissionLevel
6563 $Modification = $Permission.Modification
6664 $CanViewPrivateItems = $Permission.CanViewPrivateItems ?? $false
67-
68- Write-LogMessage - headers $Request.Headers - API $APINAME - message " Permission Level: $PermissionLevel , Modification: $Modification , CanViewPrivateItems: $CanViewPrivateItems " - Sev ' Debug'
69-
65+ $FolderName = $Permission.FolderName ?? ' Calendar'
66+
67+ Write-LogMessage - headers $Request.Headers - API $APINAME - message " Permission Level: $PermissionLevel , Modification: $Modification , CanViewPrivateItems: $CanViewPrivateItems , FolderName: $FolderName " - Sev ' Debug'
68+
7069 # Handle UserID as array or single value
7170 $TargetUsers = @ ($Permission.UserID | ForEach-Object { $_.value ?? $_ })
7271
@@ -75,48 +74,24 @@ Function Invoke-ExecModifyCalPerms {
7574 foreach ($TargetUser in $TargetUsers ) {
7675 try {
7776 Write-LogMessage - headers $Request.Headers - API $APINAME - message " Processing target user: $TargetUser " - Sev ' Debug'
78-
79- if ($Modification -eq ' Remove' ) {
80- try {
81- $CalPerms = New-ExoRequest - Anchor $username - tenantid $Tenantfilter - cmdlet ' Remove-MailboxFolderPermission' - cmdParams @ {
82- Identity = " $ ( $userid ) :\Calendar"
83- User = $TargetUser
84- Confirm = $false
85- }
86- $null = $results.Add (" Removed $ ( $TargetUser ) from $ ( $username ) Calendar permissions" )
87- }
88- catch {
89- $null = $results.Add (" No existing permissions to remove for $ ( $TargetUser ) " )
90- }
91- }
92- else {
93- Write-LogMessage - headers $Request.Headers - API $APINAME - message " Setting permissions with AccessRights: $PermissionLevel " - Sev ' Debug'
94-
95- $cmdParams = @ {
96- Identity = " $ ( $userid ) :\Calendar"
97- User = $TargetUser
98- AccessRights = $PermissionLevel
99- Confirm = $false
100- }
101-
102- if ($CanViewPrivateItems ) {
103- $cmdParams [' SharingPermissionFlags' ] = ' Delegate,CanViewPrivateItems'
104- }
105-
106- try {
107- # Try Add first
108- $CalPerms = New-ExoRequest - Anchor $username - tenantid $Tenantfilter - cmdlet ' Add-MailboxFolderPermission' - cmdParams $cmdParams
109- $null = $results.Add (" Granted $ ( $TargetUser ) $ ( $PermissionLevel ) access to $ ( $username ) Calendar$ ( $CanViewPrivateItems ? ' with access to private items' : ' ' ) " )
110- }
111- catch {
112- # If Add fails, try Set
113- $CalPerms = New-ExoRequest - Anchor $username - tenantid $Tenantfilter - cmdlet ' Set-MailboxFolderPermission' - cmdParams $cmdParams
114- $null = $results.Add (" Updated $ ( $TargetUser ) $ ( $PermissionLevel ) access to $ ( $username ) Calendar$ ( $CanViewPrivateItems ? ' with access to private items' : ' ' ) " )
115- }
77+ $Params = @ {
78+ APIName = $APIName
79+ Headers = $Request.Headers
80+ RemoveAccess = if ($Modification -eq ' Remove' ) { $TargetUser } else { $null }
81+ TenantFilter = $Tenantfilter
82+ UserID = $userid
83+ folderName = $FolderName
84+ UserToGetPermissions = $TargetUser
85+ LoggingName = $TargetUser
86+ Permissions = $PermissionLevel
87+ CanViewPrivateItems = $CanViewPrivateItems
11688 }
89+
90+ $Result = Set-CIPPCalendarPermission @Params
91+
92+ $null = $results.Add ($Result )
11793 Write-LogMessage - headers $Request.Headers - API $APINAME - message " Successfully executed $ ( $PermissionLevel ) permission modification for $ ( $TargetUser ) on $ ( $username ) " - Sev ' Info' - tenant $TenantFilter
118- }
119- catch {
94+ } catch {
12095 $HasErrors = $true
12196 Write-LogMessage - headers $Request.Headers - API $APINAME - message " Could not execute $ ( $PermissionLevel ) permission modification for $ ( $TargetUser ) on $ ( $username ) . Error: $ ( $_.Exception.Message ) " - Sev ' Error' - tenant $TenantFilter
12297 $null = $results.Add (" Could not execute $ ( $PermissionLevel ) permission modification for $ ( $TargetUser ) on $ ( $username ) . Error: $ ( $_.Exception.Message ) " )
@@ -137,4 +112,4 @@ Function Invoke-ExecModifyCalPerms {
137112 StatusCode = if ($HasErrors ) { [HttpStatusCode ]::InternalServerError } else { [HttpStatusCode ]::OK }
138113 Body = $Body
139114 })
140- }
115+ }
0 commit comments