From 4592af28565639c129599618b57f761f1fdef839 Mon Sep 17 00:00:00 2001 From: Craig Oda Date: Fri, 31 May 2024 09:26:03 -1000 Subject: [PATCH] updated cloud section --- docs/cloud.md | 50 ++++++++++++++++++++++++ docs/images/cloud/login_credentials.png | Bin 0 -> 23918 bytes 2 files changed, 50 insertions(+) create mode 100644 docs/images/cloud/login_credentials.png diff --git a/docs/cloud.md b/docs/cloud.md index a3ecfed..f1e9fc8 100644 --- a/docs/cloud.md +++ b/docs/cloud.md @@ -12,3 +12,53 @@ Contact Oppkey for login to our public cloud site to browse around. If you wish to deploy your own site, refer to code on GitHub repository [oppkey-ricoh360-viewer-demo-with-login](https://github.com/codetricity/oppkey-ricoh360-viewer-demo-with-login) for an example showing how to deploy to Vercel with basic authentication login. The repo includes an example `vercel.json` file. + +For the example with login, the `secrets.env` needs to contain +the `OPPKEY_VIEWER_PASSWORD` and `OPPKEY_VIEWER_USERNAME` +environmental variable. + +If you are stuck, we have a working example of the `secrets.env` file +[here](https://github.com/codetricity/oppkey-ricoh-viewer-credentials). +We will need to get authorization to send you the example file. + +```text +OPPKEY_VIEWER_PASSWORD=ChangeMe +OPPKEY_VIEWER_USERNAME=devuser +SESSION_SECRET=93qBc2janrrGcwvOxIEth3RFgf31Cg0K +CLIENT_ID= +CLIENT_SECRET= +PRIVATE_KEY="" +``` + +With the login example, the browser will open a sign in window. +even when running locally. You can change the credentials +in the `secrets.env` file for local testing. + +![ login](images/cloud/login_credentials.png) + +We have the reference for basic authentication if people want to share the demo they +build with their co-workers with a simple browser link. This repository example includes deployment configuration +to Vercel, free plan. If you deploy to the public +Vercel cloud, you must set the [environmental +variables in Vercel](https://vercel.com/docs/projects/environment-variables). A free alternative to Vercel is +Netlify. + +### example vercel.json + +```json +{ + "version": 2, + "builds": [ + { + "src": "./index.js", + "use": "@vercel/node" + } + ], + "routes": [ + { + "src": "/(.*)", + "dest": "/" + } + ] +} +``` \ No newline at end of file diff --git a/docs/images/cloud/login_credentials.png b/docs/images/cloud/login_credentials.png new file mode 100644 index 0000000000000000000000000000000000000000..438a0f76ed69499bed6c73710445d7c1fddb45bb GIT binary patch literal 23918 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