NetlifyCMS oAuth GitHub client for use on Google AppEngine
Clone or download
Pull request Compare This branch is 13 commits ahead of davidejones:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
gaesessions
.gitignore
README.md
app.yaml
appengine_config.py
main.py
requirements.txt

README.md

Netlify-cms-oauth-provider-python-appengine

Netlify-CMS is an open source project that you can use without using Netlify. In order to do so, you need a way to authenticate; one of the ways to do this is using GitHub oAuth. If you're going to do that though, you need a server-side component acting as the oAuth client, allowing your admin users to connect to GitHub's servers to authenticate.

This is that system.

Based on the Generic Python version of the same thing, this extensively rewritten application is a lightweight mostly-generic oauth client, specifically written for Google AppEngine.

Benefits

  • Use Netlify-CMS on several front end projects withg one lightweight backend shared between them.
  • Deploy simply to AppEngine and forget
  • Profit from your free lightweight CMS (it's unlikely your usage fo this will take you over the GAE Free Tier)

How to use this

  • Clone the repo locally
  • Set up a GitHub oAuth App
  • Put your new app's key and secret into the /app.yaml file (or manage your secrets another way, as long as they end up as environment variables in the deployed codebase)
  • Set up a Google Cloud Platform account and enable AppEngine
  • Set up the GCloud SDK locally
  • Run gcloud app deploy from the root of the project folder
  • Edit your netlify CMS config to have the following backend:
backend:
  name: github
  repo: <<user/reponame>> # whichever repo your admin system is going to be affecting
  base_url: https://<<appengine-url>>.appspot.com # the URL you got from the deploy command above

Then simply login to any running version of your codebase (including locally).