Skip to content

Commit c7d837c

Browse files
Merge pull request KelvinTegelaar#1591 from kris6673/issue4538
Feat: Add SendNotificationToUser parameter to calendar permission functions
2 parents 298a0d0 + 622ba18 commit c7d837c

File tree

2 files changed

+29
-23
lines changed

2 files changed

+29
-23
lines changed

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Email-Exchange/Administration/Invoke-ExecModifyCalPerms.ps1

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using namespace System.Net
22

3-
Function Invoke-ExecModifyCalPerms {
3+
function Invoke-ExecModifyCalPerms {
44
<#
55
.FUNCTIONALITY
66
Entrypoint
@@ -64,6 +64,7 @@ Function Invoke-ExecModifyCalPerms {
6464
$Modification = $Permission.Modification
6565
$CanViewPrivateItems = $Permission.CanViewPrivateItems ?? $false
6666
$FolderName = $Permission.FolderName ?? 'Calendar'
67+
$SendNotificationToUser = $Permission.SendNotificationToUser ?? $false
6768

6869
Write-LogMessage -headers $Headers -API $APIName -message "Permission Level: $PermissionLevel, Modification: $Modification, CanViewPrivateItems: $CanViewPrivateItems, FolderName: $FolderName" -Sev 'Debug'
6970

@@ -76,16 +77,17 @@ Function Invoke-ExecModifyCalPerms {
7677
try {
7778
Write-LogMessage -headers $Headers -API $APIName -message "Processing target user: $TargetUser" -Sev 'Debug'
7879
$Params = @{
79-
APIName = $APIName
80-
Headers = $Headers
81-
RemoveAccess = if ($Modification -eq 'Remove') { $TargetUser } else { $null }
82-
TenantFilter = $TenantFilter
83-
UserID = $UserId
84-
folderName = $FolderName
85-
UserToGetPermissions = $TargetUser
86-
LoggingName = $TargetUser
87-
Permissions = $PermissionLevel
88-
CanViewPrivateItems = $CanViewPrivateItems
80+
APIName = $APIName
81+
Headers = $Headers
82+
RemoveAccess = if ($Modification -eq 'Remove') { $TargetUser } else { $null }
83+
TenantFilter = $TenantFilter
84+
UserID = $UserId
85+
folderName = $FolderName
86+
UserToGetPermissions = $TargetUser
87+
LoggingName = $TargetUser
88+
Permissions = $PermissionLevel
89+
CanViewPrivateItems = $CanViewPrivateItems
90+
SendNotificationToUser = $SendNotificationToUser
8991
}
9092

9193
# Write-Host "Request params: $($Params | ConvertTo-Json)"

Modules/CIPPCore/Public/Set-CIPPCalendarPermission.ps1

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ function Set-CIPPCalendarPermission {
66
$RemoveAccess,
77
$TenantFilter,
88
$UserID,
9-
$folderName,
9+
$FolderName,
1010
$UserToGetPermissions,
1111
$LoggingName,
1212
$Permissions,
13-
[bool]$CanViewPrivateItems
13+
[bool]$CanViewPrivateItems,
14+
[bool]$SendNotificationToUser = $false
1415
)
1516

1617
try {
17-
1818
# If a pretty logging name is not provided, use the ID instead
1919
if ([string]::IsNullOrWhiteSpace($LoggingName) -and $RemoveAccess) {
2020
$LoggingName = $RemoveAccess
@@ -23,33 +23,37 @@ function Set-CIPPCalendarPermission {
2323
}
2424

2525
$CalParam = [PSCustomObject]@{
26-
Identity = "$($UserID):\$folderName"
27-
AccessRights = @($Permissions)
28-
User = $UserToGetPermissions
26+
Identity = "$($UserID):\$FolderName"
27+
AccessRights = @($Permissions)
28+
User = $UserToGetPermissions
29+
SendNotificationToUser = $SendNotificationToUser
2930
}
3031

3132
if ($CanViewPrivateItems) {
3233
$CalParam | Add-Member -NotePropertyName 'SharingPermissionFlags' -NotePropertyValue 'Delegate,CanViewPrivateItems'
3334
}
34-
35+
3536
if ($RemoveAccess) {
36-
if ($PSCmdlet.ShouldProcess("$UserID\$folderName", "Remove permissions for $LoggingName")) {
37-
$null = New-ExoRequest -tenantid $TenantFilter -cmdlet 'Remove-MailboxFolderPermission' -cmdParams @{Identity = "$($UserID):\$folderName"; User = $RemoveAccess }
37+
if ($PSCmdlet.ShouldProcess("$UserID\$FolderName", "Remove permissions for $LoggingName")) {
38+
$null = New-ExoRequest -tenantid $TenantFilter -cmdlet 'Remove-MailboxFolderPermission' -cmdParams @{Identity = "$($UserID):\$FolderName"; User = $RemoveAccess }
3839
$Result = "Successfully removed access for $LoggingName from calendar $($CalParam.Identity)"
3940
Write-LogMessage -headers $Headers -API $APIName -tenant $TenantFilter -message $Result -sev Info
4041
}
4142
} else {
42-
if ($PSCmdlet.ShouldProcess("$UserID\$folderName", "Set permissions for $LoggingName to $Permissions")) {
43+
if ($PSCmdlet.ShouldProcess("$UserID\$FolderName", "Set permissions for $LoggingName to $Permissions")) {
4344
try {
4445
$null = New-ExoRequest -tenantid $TenantFilter -cmdlet 'Set-MailboxFolderPermission' -cmdParams $CalParam -Anchor $UserID
4546
} catch {
4647
$null = New-ExoRequest -tenantid $TenantFilter -cmdlet 'Add-MailboxFolderPermission' -cmdParams $CalParam -Anchor $UserID
4748
}
48-
Write-LogMessage -headers $Headers -API $APIName -tenant $TenantFilter -message "Successfully set Calendar permissions $Permissions for $LoggingName on $UserID." -sev Info
4949
$Result = "Successfully set permissions on folder $($CalParam.Identity). The user $LoggingName now has $Permissions permissions on this folder."
5050
if ($CanViewPrivateItems) {
51-
$Result += " The user can also view private items."
51+
$Result += ' The user can also view private items.'
5252
}
53+
if ($SendNotificationToUser) {
54+
$Result += ' A notification has been sent to the user.'
55+
}
56+
Write-LogMessage -headers $Headers -API $APIName -tenant $TenantFilter -message $Result -sev Info
5357
}
5458
}
5559
} catch {

0 commit comments

Comments
 (0)