Skip to content

Power app permissions #5030

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 134 additions & 0 deletions documentation/Get-PnPPowerAppPermissionList.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
---
Module Name: PnP.PowerShell
schema: 2.0.0
applicable: SharePoint Online
online version: https://pnp.github.io/powershell/cmdlets/Get-PnPPowerAppPermissions.html
external help file: PnP.PowerShell.dll-Help.xml
title: Get-PnPPowerAppPermissions
---

# Get-PnPPowerAppPermissions

## SYNOPSIS

**Required Permissions**

* Azure: management.azure.com
* PowerApps: service.powerapps.com

Returns the list of permissions assigned to a specified Power App.

## SYNTAX

```powershell
Get-PnPPowerAppPermissions [-Environment <PowerPlatformEnvironmentPipeBind>] [-AsAdmin] -Identity <PowerAppPipeBind>
[-Connection <PnPConnection>] [-Verbose]
```

## DESCRIPTION

This cmdlet returns the list of user or group permissions granted to a specific Power App.

## EXAMPLES

### Example 1

```powershell
Get-PnPPowerAppPermissions -Identity "bde2239e-fabc-42ad-9c9e-72323413b1b0"
```

Returns the list of permissions for the specified Power App in the default environment.

### Example 2

```powershell
Get-PnPPowerAppPermissions -Environment (Get-PnPPowerPlatformEnvironment -Identity "myenvironment") -Identity "bde2239e-fabc-42ad-9c9e-72323413b1b0" -AsAdmin
```

Returns the list of permissions for the specified Power App in the given environment using admin context.

## PARAMETERS

### -Environment

The name of the Power Platform environment or an Environment instance. If omitted, the default environment will be used.

```yaml
Type: PowerPlatformEnvironmentPipeBind
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: The default environment
Accept pipeline input: True
Accept wildcard characters: False
```

### -AsAdmin

If specified, returns permissions using admin privileges. If not specified, only permissions for the current user will be returned.

```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

### -Identity

The ID of the Power App to retrieve permissions for.

```yaml
Type: PowerAppPipeBind
Parameter Sets: (All)
Aliases:

Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

### -Connection

Optional connection to be used by the cmdlet.
Retrieve the value for this parameter by either specifying `-ReturnConnection` on `Connect-PnPOnline` or by executing `Get-PnPConnection`.

```yaml
Type: PnPConnection
Parameter Sets: (All)
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

### -Verbose

When provided, additional debug statements will be shown while executing the cmdlet.

```yaml
Type: SwitchParameter
Parameter Sets: (All)

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

## RELATED LINKS

[Microsoft 365 Patterns and Practices](https://aka.ms/m365pnp)
1 change: 1 addition & 0 deletions src/ALC/PnP.PowerShell.ALC.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights" Version="2.21.0" />
<PackageReference Include="Microsoft.Identity.Client.Extensions.Msal" Version="4.73.0" />
</ItemGroup>

</Project>
13 changes: 13 additions & 0 deletions src/Commands/Model/PowerPlatform/PowerApp/PowerAppPermissions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PnP.PowerShell.Commands.Model.PowerPlatform.PowerApp
{
public class PowerAppPermissions
{
public List<PowerAppPermissionsValue> value { get; set; }
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

namespace PnP.PowerShell.Commands.Model.PowerPlatform.PowerApp
{
public class PowerAppPermissionsPrincipal
{
public string id { get; set; }
public string displayName { get; set; }
public string email { get; set; }
public string type { get; set; }
public string tenantId { get; set; }
public string preferredLanguage { get; set; }
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using System;

namespace PnP.PowerShell.Commands.Model.PowerPlatform.PowerApp
{
public class PowerAppPermissionsProperties
{
public string roleName { get; set; }
public PowerAppPermissionsPrincipal principal { get; set; }
public string scope { get; set; }
public string notifyShareTargetOption { get; set; }
public bool inviteGuestToTenant { get; set; }
public DateTime createdOn { get; set; }
public string createdBy { get; set; }
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

namespace PnP.PowerShell.Commands.Model.PowerPlatform.PowerApp
{
public class PowerAppPermissionsValue
{
public string name { get; set; }
public string id { get; set; }
public string type { get; set; }
public PowerAppPermissionsProperties properties { get; set; }
}

}
59 changes: 59 additions & 0 deletions src/Commands/PowerPlatform/PowerApps/GetPowerAppPermissions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
using PnP.PowerShell.Commands.Base;
using PnP.PowerShell.Commands.Base.PipeBinds;
using PnP.PowerShell.Commands.Utilities;
using System;
using System.Linq;
using System.Management.Automation;
using System.Text.Json;

namespace PnP.PowerShell.Commands.PowerPlatform.PowerApps
{
[Cmdlet(VerbsCommon.Get, "PnPPowerAppPermissions")]
[OutputType(typeof(Model.PowerPlatform.PowerApp.PowerApp))]
public class GetPowerAppPermissions : PnPAzureManagementApiCmdlet
{
[Parameter(Mandatory = false, ValueFromPipeline = true)]
public PowerPlatformEnvironmentPipeBind Environment;

[Parameter(Mandatory = false)]
public SwitchParameter AsAdmin;

[Parameter(Mandatory = true)]
public PowerAppPipeBind Identity;

protected override void ExecuteCmdlet()
{
string environmentName = null;
string powerAppsUrl = PowerPlatformUtility.GetPowerAppsEndpoint(Connection.AzureEnvironment);
if (ParameterSpecified(nameof(Environment)))
{
environmentName = Environment.GetName();

WriteVerbose($"Using environment as provided '{environmentName}'");
}
else
{
environmentName = ParameterSpecified(nameof(Environment)) ? Environment.GetName() : PowerPlatformUtility.GetDefaultEnvironment(ArmRequestHelper, Connection.AzureEnvironment)?.Name;

if (string.IsNullOrEmpty(environmentName))
{
throw new Exception($"No default environment found, please pass in a specific environment name using the {nameof(Environment)} parameter");
}

WriteVerbose($"Using default environment as retrieved '{environmentName}'");
}

if (ParameterSpecified(nameof(Identity)))
{
var appName = Identity.GetName();

WriteVerbose($"Retrieving specific PowerApp permissions with the provided name '{appName}' within the environment '{environmentName}'");

var result = PowerAppsRequestHelper.GetResultCollection<Model.PowerPlatform.PowerApp.PowerAppPermissionsValue>($"{powerAppsUrl}/providers/Microsoft.PowerApps{(AsAdmin ? "/scopes/admin/environments/" + environmentName : "")}/apps/{appName}/permissions?api-version=2022-11-01");

WriteObject(result, true);
}

}
}
}
Loading