sp-dev-fx-webparts/samples/react-sp-elevatedprivileges
Hugo Bernier 7202809a7d Changed docs links to learn 2022-10-24 09:42:45 -04:00
..
api Bump Newtonsoft.Json 2022-06-25 17:06:35 +00:00
assets Changed docs links to learn 2022-10-24 09:42:45 -04:00
webpart
README.md Changed docs links to learn 2022-10-24 09:42:45 -04:00

README.md

page_type products languages extensions
sample
office-sp
javascript
aspx
typescript
contentType technologies platforms createdDate
samples
SharePoint Framework
React
1/1/2016 12:00:00 AM

Communicate using elevated privileges with SharePoint

Summary

Sample SharePoint Framework client-side web part illustrating communication with SharePoint using elevated privileges through a custom Web API.

Sample web part showing orders retrieved from a custom Web API secured with Azure Active Directory

Compatibility

SPFx 0.4.0 Node.js v6 Compatible with SharePoint Online Compatible SharePoint 2019 Compatible with SharePoint 2016 (Feature Pack 2) Local Workbench Compatible Hosted Workbench Compatible

Applies to

Solution

Solution Author(s)
react-sp-elevatedprivileges Waldek Mastykarz (MVP, Rencore, @waldekm)

Version history

Version Date Comments
1.0 October 12, 2016 Initial release

Minimal Path to Awesome

  • clone this repo

Deploy custom Web API

  • in the Azure Management Portal at https://portal.azure.com create a new API App
    • in the settings enable CORS for all origins using an *
    • copy the URL of the API App
  • in your SharePoint site
<AppPermissionRequests AllowAppOnlyPolicy="true">
  <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web/list" Right="Write" />
</AppPermissionRequests>
  • after confirming the changes, when prompted, select the previously created Tasks list
  • from the api folder, in Visual Studio open the pnp.api.elevatedprivileges.sln file
  • in the web.config file
    • update the value of the clientId setting with the previously copied client ID
    • update the value of the clientSecret setting with the previously copied client secret
    • update hte value of the siteUrl setting with the URL of your SharePoint site
    • if you named your list other than Tasks update the value of the listName property with the name of your list
  • build the solution
  • deploy the pnp.api.elevatedprivileges project to the newly created API App
  • verify that you can access the API by navigating in your web browser to https://your-api-app.azurewebsites.net/api/items
    • you should get an error that GET is not a supported method

Configure web part

  • in the command line
    • change the working directory to the webpart folder
    • run npm i
  • in your code editor open the webpart folder
  • in the ./src/webparts/createTask/components/CreateTask.tsx file
    • in line 76 replace the URL with the URL of your API App
  • in the command line execute gulp serve
  • add the web part to SharePoint workbench
  • enter the name of the new item and click the Create button
    • verify that a new item with the name you specified has been created in the Tasks list

Features

This project contains sample Web API using app-only permissions to create items in a specific SharePoint list, and a client-side web part connected to that API.

This project illustrates the following concepts:

  • elevating user privileges for communicating with SharePoint through a custom Web API
  • connecting SharePoint Framework client-side web part to a custom Web API hosted in Azure
  • persisting state in React components
  • communicating state updates in React components to users
  • executing REST API web requests from React components
  • using Office UI Fabric React components in SharePoint Framework client-side web parts
  • using form controls in Rest components

Help

We do not support samples, but this community is always willing to help, and we want to improve these samples. We use GitHub to track issues, which makes it easy for community members to volunteer their time and help resolve issues.

If you're having issues building the solution, please run spfx doctor from within the solution folder to diagnose incompatibility issues with your environment.

You can try looking at issues related to this sample to see if anybody else is having the same issues.

You can also try looking at discussions related to this sample and see what the community is saying.

If you encounter any issues while using this sample, create a new issue.

For questions regarding this sample, create a new question.

Finally, if you have an idea for improvement, make a suggestion.

Disclaimer

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.