Skip to content

Commit a50b104

Browse files
authored
Merge pull request #11 from StuartBaxter-MVP/main
Initial build
2 parents 17d8170 + 1fe2e87 commit a50b104

File tree

99 files changed

+49010
-80
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+49010
-80
lines changed
Lines changed: 80 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,81 @@
11
[
2-
{
3-
"$schema": "https://developer.microsoft.com/en-us/json-schemas/pnp/samples/v1.0/metadata-schema.json",
4-
"name": "pnp-powerplatform-samples-chucknorrisio",
5-
"version": "1.0.0.0",
6-
"source": "pnp",
7-
"creationDateTime": "2023-03-16",
8-
"updateDateTime": "2023-03-16",
9-
"title": "Chuck Norris IO",
10-
"shortDescription": "Power App that demonstrates the use of the Chuck Norris IO connector",
11-
"longDescription": [
12-
"Power App that demonstrates the use of the Chuck Norris IO Independent Publisher connector."
13-
],
14-
"url": "https://github.com/pnp/powerplatform-samples/tree/main/samples/chucknorrisio",
15-
"products": [
16-
"Power Apps",
17-
"Power Platform"
18-
],
19-
"tags": [
20-
"Chuck Norris",
21-
"Independent Publisher Connector"
22-
],
23-
"categories": [
24-
"POWERAPPS"
25-
],
26-
"metadata": [
27-
{
28-
"key": "POWERAPPS-MANIFEST-VERSION",
29-
"value": "0.20"
30-
},
31-
{
32-
"key": "POWERAPPS-TYPE",
33-
"value": "Canvas"
34-
},
35-
{
36-
"key": "POWERAPPS-EXPERIMENTAL",
37-
"value": "No"
38-
},
39-
{
40-
"key": "POWERAPPS-PREMIUM",
41-
"value": "Yes"
42-
},
43-
{
44-
"key": "POWERAPPS-ONPREM",
45-
"value": "No"
46-
},
47-
{
48-
"key": "POWERAPPS-CUSTOMCONNECTOR",
49-
"value": "No"
50-
}
51-
],
52-
"thumbnails": [
53-
{
54-
"type": "image",
55-
"order": 100,
56-
"url": "https://github.com/pnp/powerplatform-samples/blob/main/samples/chucknorrisio/assets/ChuckNorris.png?raw=true",
57-
"alt": "Preview"
58-
}
59-
],
60-
"authors": [
61-
{
62-
"gitHubAccount": "Laskewitz",
63-
"name": "Daniel Laskewitz",
64-
"pictureUrl": "https://github.com/Laskewitz.png",
65-
"twitter": "https://www.twitter.com/Laskewitz"
66-
}
67-
],
68-
"references": [
69-
{
70-
"name": "ChuckNorris.IO",
71-
"description": "ChuckNorris.IO API",
72-
"url": "https://chucknorris.io/"
73-
},
74-
{
75-
"name": "ChuckNorris.IO connector documentation",
76-
"description": "ChuckNorris.IO connector documentation",
77-
"url": "https://learn.microsoft.com/connectors/chucknorrisioip/"
78-
}
79-
]
80-
}
81-
]
2+
{
3+
"$schema": "https://developer.microsoft.com/en-us/json-schemas/pnp/samples/v1.0/metadata-schema.json",
4+
"name": "pnp-powerplatform-samples-chucknorrisio",
5+
"version": "1.0.0.0",
6+
"source": "pnp",
7+
"creationDateTime": "2023-03-16T00:00:00.000Z",
8+
"updateDateTime": "2023-03-16T00:00:00.000Z",
9+
"title": "Chuck Norris IO",
10+
"shortDescription": "Power App that demonstrates the use of the Chuck Norris IO connector",
11+
"longDescription": [
12+
"Power App that demonstrates the use of the Chuck Norris IO Independent Publisher connector."
13+
],
14+
"url": "https://github.com/pnp/powerplatform-samples/tree/main/samples/chucknorrisio",
15+
"products": [
16+
"Power Apps",
17+
"Power Platform"
18+
],
19+
"tags": [
20+
"Chuck Norris",
21+
"Independent Publisher Connector"
22+
],
23+
"categories": [
24+
"POWERAPPS"
25+
],
26+
"metadata": [
27+
{
28+
"key": "POWERAPPS-MANIFEST-VERSION",
29+
"value": "0.20"
30+
},
31+
{
32+
"key": "POWERAPPS-TYPE",
33+
"value": "Canvas"
34+
},
35+
{
36+
"key": "POWERAPPS-EXPERIMENTAL",
37+
"value": "No"
38+
},
39+
{
40+
"key": "POWERAPPS-PREMIUM",
41+
"value": "Yes"
42+
},
43+
{
44+
"key": "POWERAPPS-ONPREM",
45+
"value": "No"
46+
},
47+
{
48+
"key": "POWERAPPS-CUSTOMCONNECTOR",
49+
"value": "No"
50+
}
51+
],
52+
"thumbnails": [
53+
{
54+
"type": "image",
55+
"order": 100,
56+
"url": "https://github.com/pnp/powerplatform-samples/blob/main/samples/chucknorrisio/assets/ChuckNorris.png?raw=true",
57+
"alt": "Preview"
58+
}
59+
],
60+
"authors": [
61+
{
62+
"gitHubAccount": "Laskewitz",
63+
"name": "Daniel Laskewitz",
64+
"pictureUrl": "https://github.com/Laskewitz.png",
65+
"twitter": "https://www.twitter.com/Laskewitz"
66+
}
67+
],
68+
"references": [
69+
{
70+
"name": "ChuckNorris.IO",
71+
"description": "ChuckNorris.IO API",
72+
"url": "https://chucknorris.io/"
73+
},
74+
{
75+
"name": "ChuckNorris.IO connector documentation",
76+
"description": "ChuckNorris.IO connector documentation",
77+
"url": "https://learn.microsoft.com/connectors/chucknorrisioip/"
78+
}
79+
]
80+
}
81+
]
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
Creative Commons Legal Code
2+
3+
CC0 1.0 Universal
4+
5+
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
6+
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
7+
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
8+
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
9+
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
10+
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
11+
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
12+
HEREUNDER.
13+
14+
Statement of Purpose
15+
16+
The laws of most jurisdictions throughout the world automatically confer
17+
exclusive Copyright and Related Rights (defined below) upon the creator
18+
and subsequent owner(s) (each and all, an "owner") of an original work of
19+
authorship and/or a database (each, a "Work").
20+
21+
Certain owners wish to permanently relinquish those rights to a Work for
22+
the purpose of contributing to a commons of creative, cultural and
23+
scientific works ("Commons") that the public can reliably and without fear
24+
of later claims of infringement build upon, modify, incorporate in other
25+
works, reuse and redistribute as freely as possible in any form whatsoever
26+
and for any purposes, including without limitation commercial purposes.
27+
These owners may contribute to the Commons to promote the ideal of a free
28+
culture and the further production of creative, cultural and scientific
29+
works, or to gain reputation or greater distribution for their Work in
30+
part through the use and efforts of others.
31+
32+
For these and/or other purposes and motivations, and without any
33+
expectation of additional consideration or compensation, the person
34+
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
35+
is an owner of Copyright and Related Rights in the Work, voluntarily
36+
elects to apply CC0 to the Work and publicly distribute the Work under its
37+
terms, with knowledge of his or her Copyright and Related Rights in the
38+
Work and the meaning and intended legal effect of CC0 on those rights.
39+
40+
1. Copyright and Related Rights. A Work made available under CC0 may be
41+
protected by copyright and related or neighboring rights ("Copyright and
42+
Related Rights"). Copyright and Related Rights include, but are not
43+
limited to, the following:
44+
45+
i. the right to reproduce, adapt, distribute, perform, display,
46+
communicate, and translate a Work;
47+
ii. moral rights retained by the original author(s) and/or performer(s);
48+
iii. publicity and privacy rights pertaining to a person's image or
49+
likeness depicted in a Work;
50+
iv. rights protecting against unfair competition in regards to a Work,
51+
subject to the limitations in paragraph 4(a), below;
52+
v. rights protecting the extraction, dissemination, use and reuse of data
53+
in a Work;
54+
vi. database rights (such as those arising under Directive 96/9/EC of the
55+
European Parliament and of the Council of 11 March 1996 on the legal
56+
protection of databases, and under any national implementation
57+
thereof, including any amended or successor version of such
58+
directive); and
59+
vii. other similar, equivalent or corresponding rights throughout the
60+
world based on applicable law or treaty, and any national
61+
implementations thereof.
62+
63+
2. Waiver. To the greatest extent permitted by, but not in contravention
64+
of, applicable law, Affirmer hereby overtly, fully, permanently,
65+
irrevocably and unconditionally waives, abandons, and surrenders all of
66+
Affirmer's Copyright and Related Rights and associated claims and causes
67+
of action, whether now known or unknown (including existing as well as
68+
future claims and causes of action), in the Work (i) in all territories
69+
worldwide, (ii) for the maximum duration provided by applicable law or
70+
treaty (including future time extensions), (iii) in any current or future
71+
medium and for any number of copies, and (iv) for any purpose whatsoever,
72+
including without limitation commercial, advertising or promotional
73+
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
74+
member of the public at large and to the detriment of Affirmer's heirs and
75+
successors, fully intending that such Waiver shall not be subject to
76+
revocation, rescission, cancellation, termination, or any other legal or
77+
equitable action to disrupt the quiet enjoyment of the Work by the public
78+
as contemplated by Affirmer's express Statement of Purpose.
79+
80+
3. Public License Fallback. Should any part of the Waiver for any reason
81+
be judged legally invalid or ineffective under applicable law, then the
82+
Waiver shall be preserved to the maximum extent permitted taking into
83+
account Affirmer's express Statement of Purpose. In addition, to the
84+
extent the Waiver is so judged Affirmer hereby grants to each affected
85+
person a royalty-free, non transferable, non sublicensable, non exclusive,
86+
irrevocable and unconditional license to exercise Affirmer's Copyright and
87+
Related Rights in the Work (i) in all territories worldwide, (ii) for the
88+
maximum duration provided by applicable law or treaty (including future
89+
time extensions), (iii) in any current or future medium and for any number
90+
of copies, and (iv) for any purpose whatsoever, including without
91+
limitation commercial, advertising or promotional purposes (the
92+
"License"). The License shall be deemed effective as of the date CC0 was
93+
applied by Affirmer to the Work. Should any part of the License for any
94+
reason be judged legally invalid or ineffective under applicable law, such
95+
partial invalidity or ineffectiveness shall not invalidate the remainder
96+
of the License, and in such case Affirmer hereby affirms that he or she
97+
will not (i) exercise any of his or her remaining Copyright and Related
98+
Rights in the Work or (ii) assert any associated claims and causes of
99+
action with respect to the Work, in either case contrary to Affirmer's
100+
express Statement of Purpose.
101+
102+
4. Limitations and Disclaimers.
103+
104+
a. No trademark or patent rights held by Affirmer are waived, abandoned,
105+
surrendered, licensed or otherwise affected by this document.
106+
b. Affirmer offers the Work as-is and makes no representations or
107+
warranties of any kind concerning the Work, express, implied,
108+
statutory or otherwise, including without limitation warranties of
109+
title, merchantability, fitness for a particular purpose, non
110+
infringement, or the absence of latent or other defects, accuracy, or
111+
the present or absence of errors, whether or not discoverable, all to
112+
the greatest extent permissible under applicable law.
113+
c. Affirmer disclaims responsibility for clearing rights of other persons
114+
that may apply to the Work or any use thereof, including without
115+
limitation any person's Copyright and Related Rights in the Work.
116+
Further, Affirmer disclaims responsibility for obtaining any necessary
117+
consents, permissions or other rights required for any use of the
118+
Work.
119+
d. Affirmer understands and acknowledges that Creative Commons is not a
120+
party to this document and has no duty or obligation with respect to
121+
this CC0 or use of the Work.
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# Power Platform Teams Management
2+
3+
## Summary
4+
5+
This solution allows admins to manage assignment of Security Roles, Column Security Profiles, and Users to Azure AD synced teams via a Canvas App.
6+
7+
I have also included a Power Automate Cloud Flow to create AAD synced team for demo purposes.
8+
9+
![picture of the sample](assets/Preview.png)
10+
11+
## Applies to
12+
13+
* [Microsoft Power Apps](https://docs.microsoft.com/powerapps/)
14+
15+
## Authors
16+
17+
Solution|Author(s)
18+
--------|---------
19+
ManageSecurityRoles | [Stuart Baxter - Business Applications MVP](https://github.com/StuartBaxter-MVP)
20+
21+
## Version history
22+
23+
Version|Date|Comments
24+
-------|----|--------
25+
1.0.0.0|July 22, 2023|Initial release
26+
27+
## Features
28+
29+
This sample illustrates the following concepts:
30+
31+
* assigning of security roles to Power Platform Teams by using relate/unrelate
32+
* assigning of column secuirty profiles to Power Platform Teams by using relate/unrelate
33+
* assigning of users to Azure AD groups in a using the Azure Ad connector for Canvas Apps
34+
35+
## Prerequisites
36+
37+
* A Dataverse user account with access to System Admin Security Role
38+
* Permissions to create Azure AD Groups
39+
40+
## Solution Components
41+
42+
The following solution components are used in this sample:
43+
44+
* Manage Power Platform Teams Canvas App (Canvas app)
45+
* Add a new AAD group and associated Team (Cloud flow)
46+
* AAD Group Admin (Environment variable)
47+
* AAD Manage Security Roles (Connection reference)
48+
* Dataverse Manage Security Roles (Connection reference)
49+
* Manage Security Roles Component Library (Component library)
50+
51+
## Data Sources
52+
53+
* Dataverse
54+
55+
## Minimal Path to Awesome
56+
57+
* Download the **[Unmanaged](./solution/SecurityRoleManagement.zip)** solution `.zip` from the `solution` folder
58+
* Within **<https://make.powerapps.com>**, import the `.zip` file via **Solutions** > **Import solution** > **Browse** and select the `.zip` file you just downloaded
59+
* Click next
60+
* Click Import
61+
* Run the **Add a new AAD group and associated Team** flow
62+
* Open the **Manage Power Platform Teams Canvas App**
63+
64+
## Using the Source Code
65+
66+
You can also use the [Power Apps CLI](https://aka.ms/pac/docs) to pack the source code by following these steps::
67+
68+
* Clone the repository to a local drive
69+
* Pack the source files back into `.zip` file:
70+
71+
```bash
72+
pac solution pack --folder pathtosourcefolder --zipfile pathtosolution --processCanvasApps
73+
```
74+
75+
Making sure to replace `pathtosourcefolder` to point to the path to this sample's `sourcecode` folder, and `pathtosolution` to point to the path of this solution's `.zip` file (located under the `Solutions` folder)
76+
* Within **<https://make.powerapps.com>**, import the `.zip` file via **Solutions** > **Import solution** > **Browse** and select the `.zip` file you just downloaded.
77+
* Click next.
78+
* Click import
79+
* following solution import, run the **Add a new AAD group and associated Team** flow to create a team for demo purposes
80+
* Open the **Manage Power Platform Teams Canvas App** and start using it
81+
82+
## Disclaimer
83+
84+
**THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.**
85+
86+
## Help
87+
88+
## For more information
89+
90+
* [Overview of creating apps in Power Apps](https://docs.microsoft.com/powerapps/maker/)
91+
* [Power Apps canvas apps documentation](https://docs.microsoft.com/powerapps/maker/canvas-apps/)
Loading

0 commit comments

Comments
 (0)