Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dorukgezici/astro-decap-cms-oauth
Add Decap CMS’s admin dashboard and custom OAuth backend routes for GitHub to your Astro project
https://github.com/dorukgezici/astro-decap-cms-oauth
astro-integration decap-cms
Last synced: 1 day ago
JSON representation
Add Decap CMS’s admin dashboard and custom OAuth backend routes for GitHub to your Astro project
- Host: GitHub
- URL: https://github.com/dorukgezici/astro-decap-cms-oauth
- Owner: dorukgezici
- License: mit
- Created: 2023-08-27T20:34:09.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-21T08:41:41.000Z (25 days ago)
- Last Synced: 2024-10-28T16:56:40.979Z (18 days ago)
- Topics: astro-integration, decap-cms
- Language: TypeScript
- Homepage: https://astro-decap-cms-oauth.vercel.app
- Size: 617 KB
- Stars: 44
- Watchers: 2
- Forks: 4
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
This integration automatically mounts the Decap CMS admin dashboard to `/admin` and custom OAuth authentication backend routes to `/oauth`, `/oauth/callback` using GitHub as the provider.
_This way, you aren't vendor-locked to `Netlify` and your app can be deployed anywhere that supports SSR._
## Installation
```bash
npx astro add astro-decap-cms-oauth
```## Manual Installation
```bash
npm install astro-decap-cms-oauth
```Add the integration and set output to `server` or `hybrid` in your `astro.config.mjs` file:
```js
import { defineConfig } from "astro/config";
import decapCmsOauth from "astro-decap-cms-oauth";export default defineConfig({
...,
integrations: [decapCmsOauth()],
output: "server",
});
```## Usage
1. Make sure Astro is in SSR mode (`output: "server"` set in `astro.config.mjs`)
2. Put your `config.yml` file in `public/admin/config.yml` (see [Decap CMS Docs](https://decapcms.org/docs/add-to-your-site/#configuration) for more info)
```yml
backend:
name: github
branch: main # change this to your branch
repo: dorukgezici/astro-decap-cms-oauth # change this to your repo
site_domain: astro-decap-cms-oauth.vercel.app # change this to your domain
base_url: https://astro-decap-cms-oauth.vercel.app # change this to your prod URL
auth_endpoint: oauth # the oauth route provided by the integration
```3. Set up GitHub
You can either use a *GitHub OAuth app* or a *Github app* to get set up.
### GitHub OAuth
On GitHub, go to Settings > Developer Settings > OAuth apps > New OAuth app. Or use this [direct link](https://github.com/settings/applications/new).
**Homepage URL**: This must be the prod URL of your application.
**Authorization callback URL**: This must be the prod URL of your application followed by `/oauth/callback`.
### GitHub App
[Register a new GitHub application](https://github.com/settings/apps/new) on GitHub ([details](https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/registering-a-github-app)).
Select the scopes as `content:write`
**Homepage URL**: This must be the prod URL of your application.
**Authorization callback URL**: This must be the prod URL of your application followed by `/oauth/callback`.
Once registered, click on the **Generate a new client secret** button. The app’s **Client ID** and **Client Secret** will be displayed.
Then navigate to `https://github.com/apps//installations/new` to install it on the repo. You can scope the access tokens further if wanted - details on [this page](https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-user-access-token-for-a-github-app#using-the-web-application-flow-to-generate-a-user-access-token)
```bash
curl -s 'https://api.github.com/repos//' | jq .id
```You can then use this ID for the `OAUTH_GITHUB_REPO_ID` environment variable.
4. Set env variables
```bash
# GitHub OAuth App & GitHub App
OAUTH_GITHUB_CLIENT_ID=
OAUTH_GITHUB_CLIENT_SECRET=
# GitHub App only
OAUTH_GITHUB_REPO_ID=
# optional
PUBLIC_DECAP_CMS_SRC_URL=https://unpkg.com/decap-cms@^3.3.3/dist/decap-cms.js
PUBLIC_DECAP_CMS_VERSION=3.3.3
```## Configuration Options
```js
export interface DecapCMSOptions {
decapCMSSrcUrl?: string;
decapCMSVersion?: string;
adminDisabled?: boolean;
adminRoute?: string;
oauthDisabled?: boolean;
oauthLoginRoute?: string;
oauthCallbackRoute?: string;
}const defaultOptions: DecapCMSOptions = {
decapCMSSrcUrl: "",
decapCMSVersion: "3.3.3",
adminDisabled: false,
adminRoute: "/admin",
oauthDisabled: false,
oauthLoginRoute: "/oauth",
oauthCallbackRoute: "/oauth/callback",
};
```To override default version of Decap CMS used, set `PUBLIC_DECAP_CMS_VERSION` env variable (takes precedence) or `decapCMSVersion` in `astro.config.mjs`.
To override the full js source, set `PUBLIC_DECAP_CMS_SRC_URL` env variable (takes precedence) or `decapCMSSrcUrl` in `astro.config.mjs`. If set, `PUBLIC_DECAP_CMS_VERSION` is ignored.
To disable injecting Decap CMS admin route, set `adminDisabled` to `true` in `astro.config.mjs`.
To disable injecting OAuth routes, set `oauthDisabled` to `true` in `astro.config.mjs`.```js
import { defineConfig } from "astro/config";
import decapCmsOauth from "astro-decap-cms-oauth";export default defineConfig({
...,
integrations: [decapCmsOauth({ decapCMSVersion: "3.3.3", adminDisabled: false, oauthDisabled: true })],
output: "server",
});
```