Connecting React app to Sharepoint to list documents? - reactjs

I have a React app for clients to access. I also have a SharePoint where I store my documents for each client. I would like the ability to present my docs based on each client within the app(read only). I am stuck on how to get started though. I can only find videos about web parts.
The docs seem to have options but I am not skilled enough as a developer to navigate them to understand what to use.
Should I be connecting to SharePoint using PnPjs?
https://learn.microsoft.com/en-us/sharepoint/dev/spfx/connect-to-sharepoint
Should I be connecting to SharePoint using the JavaScript Object Model (JSOM)?
https://learn.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/guidance/connect-to-sharepoint-using-jsom
Is there something else I am missing here?
Additional info:
I also plan to scale this to use Azure SQL on a Azure VM. So don't know if all aspects are intertwined somewhere. https://learn.microsoft.com/en-us/azure/azure-sql/database/connect-query-nodejs?view=azuresql&tabs=windows

Related

Configuration of React app, .NET Core 3.1 API, and calls to Microsoft Graph

Is there a "best" way of achieving this?
Basically I want to leverage my company's Azure AD tenant to build a fully featured internal application. Using Microsoft Graph, I can retrieve users via their identifier guids, and use the identifiers as foreign keys for various tables in our on premises database, instead of having a dedicated User table, which would need to be populated and synced up with the AD. There are many other prospective uses for Graph, but leveraging users is the priority right now.
A large chunk of my application is built already. I am able to lock down my client app using the package react-aad-msal, requiring users to authenticate through single-sign-on. I have also successfully been able to pass that token back to the protected .NET Core API, accessing various endpoints as the authenticated user.
From here, I am not sure how I can develop the calls to Microsoft Graph. At which point should I make the connection? Should the client application connect to both the on-prem API, as well as Graph? Or should it only connect to the on-prem, which would then connect to Graph? Curious to know the pros and cons of either method.
I've also heard tell that Microsoft is working on their own package: #azure/msal-react, and that react-aad-msal should no longer be used (as it only supports msal 1.0 and not 2.0. I have no idea which version is better for my needs). While msal-react is still in development, apparently I should be using #azure/msal-browser. But I cannot find a good example of a react app using msal-browser to authenticate.
Here is a Sample on how to use MSAL with React to call Microsoft Graph.
The only different in your case will be that instead of calling Microsoft Graph, you will call your own API.
Bottomline is - there is no direct integration package yet for react. Which can also be read from the official statement on the msal-js repo:
After our current libraries are up to standards, we will begin
balancing new feature requests, with new platforms such as react and
node.js.
You can also use .net core instead. Please go through the sample here which can help.

How to access the Project Server REST API using Azure AD App permissions?

I have a standalone web application (not an add-in) and I would like to access Project Server PWA oData from this web application without using the PWA username/password combination.
I can do this for SharePoint oData by registering my web app in Azure AD and configuring the application to require "Read" permissions from "Office 365 SharePoint Online"
If you are interested to do this for SharePoint data, see this article for details: https://www.itunity.com/article/integrating-angularjs-aad-office-365sharepoint-part-1-622
My problem is that I want to do the same for a Project Server, but can't see any relevant Project Online permission in Azure AD.
Has any one ever accessed Project Online using Azure AD tokens?
My 10 Minutes of Internet Researchâ„¢ leads me to believe this isn't available but that it was a planned feature at one point. [see here]
Without knowing much (anything) about Project Server, this seems like a situation I've dealt with on AWS at work. We have a bunch of endpoints that are secured using IAM (AWS) credentials and we can't leave those creds lying around in our app (because that would be silly). Our solution is to generate access URLs server-side and hand them out, these typically will have a time limit and be restricted to a very specific action.
A quick search for Azure's equivalent to IAM tells me that you might be able to do something similar though I'm unsure it exists for Project Server.
That failing, you could always set up an intermediary micro-service that acts as proxy and has the username/password combo. We do stuff like this all the time with Lambda (AWS's serverless functions).

How can I make free/busy information available across Calendar server, Google apps and Exchange?

As some background, my company is currently using an Apple Calendar server, some Exchange servers and a Google Apps subscription to provide calendaring for different parts of the organization. I've been tasked with providing free/busy access across these services while we try to take at least one of the services out of the equation.
I've attempted to use Google Interop, but it does not work with Exchange 2013 due to Microsoft eliminating Exchange Public Folder Databases in that release. I've also set up an IIS WebDAV server to attempt to share calendars, but this has shortcomings as well because only one person is able to moderate the calendar, and f/b data can't be queried in the Apple Calendar app - you have to subscribe to a separate f/b calendar.
Are there any suggestions as to how I should proceed?
If you can write your own connectors for each service (ie using propietary API's) you could then expose that information through a custom caldav service.
For example you could use http://milton.io (java) or http://sabre.io/ (php), both allow pulling data from arbitrary data sources.

Understanding the different ways to connect to CRM 2011

I'm a beginner CRM developer and I'm quite confused about the connection methods to CRM.
What's the difference between creating a SOAP service reference to connect to CRM 2011 from a windows form application VS using connection string VS creating a web service?
Are they the same and I can use them interchangeably ? Or it depends on the task I want to do?
Thanks
Out of the 3 links that you have provided, one contains the best approach.
this - CRM SDK says to use this approach when you want to connect with CRM from some other application like Winform app, WPF app, website. In summary, you provide connection values through configuration and then use dlls provided by CRM to access data.
this - This is a special case in CRM. So here you are accessing some data from CRM, processing it in a service and then using that service to access processed data.
this - This document itself says that you should not use this approach. Problem with this approach is about hard coded service references.
You can find plenty of examples to start up with from CRM SDK.

What tool can I use to easily manage data within a cloud database (Azure/SimpleDB/etc)?

I need a cloud database as a back-end for a mobile app, most of them will do what I need, but I also need a management interface (ideally web-based, but could be a Windows client) that makes it easy to:
Add/edit data in the database (including cross-table forms)
Report on the database, ideally with dashboards/charts
So I'm wondering if anyone is aware of a web-based too that can be hooked up to one of the main cloud-database providers, that allows me to design forms and reports to manage the data in the database. My goal is to avoid writing all the forms and reports myself so I can focus efforts on the client mobile app.
Right now my "best" solution appears to be Microsoft Access (probably hooked up to Microsoft SQL Azure), and I cannot believe I'd have to sink that low. Save me from this depravity? Please? :)
I've been using SDBNavigator. It's a Chrome browser plugin. Works like a charm.
"SDB Navigator on the Chrome web store"
The App Engine datastore has built in datastore viewers (and editors). On the dev_appserver, this is accessible at /_ah/admin/datastore, and in production it's accessible through your app's admin console. Neither one lets you build forms and reports, though - reports are somewhat out of scope for most NoSQL databases.
If you're prepared to do some coding, you might want to consider Django, which makes constructing admin interfaces extremely straightforward.
If you're using SimpleDB, check out sdbtool. It's a Firefox plugin. Very simple app - never had a problem with it.
You can use SDB Explorer. SDB Explorer is world leading GUI to explore Amazon SimpleDB. It have many features like --
Upload My Sql data to amazon simpledb.
Supports interface for AWS IAM.
Export Domain.
Product support.
See more .. http://www.sdbexplorer.com/

Resources