I have an explanation in the FAQ section on the front page:
Why do you need full access to all of my GitHub repositories?
Well, the GitHub API kinda sucks when it comes to OAuth scoping. Pages CMS relies on the OAuth App flow, which doesn't allow for granular permissions. The alternative would be to use the GitHub App flow instead, but:
It's a lot more complicated and would require us to store and orchestrate a lot more in the backend.
Since we need to impersonate users (for things like commits), we anyway need to request user tokens, which technically would give us the same access as with the OAuth App flow.
However, we do not store your GitHub OAuth tokens in the backend. The serverless functions used to facilitate the OAuth login pass the OAuth token to the front-end, allowing it to directly communicate with the GitHub API.
And if you still don't trust the online version, you can deploy your own version for free in less than 10 minutes our Cloudflare Pages.
Do let me know if I got some of this wrong (@hunvreus), and feel free to suggest improvements in the issue queue.
Additionally I've added the support for Fine-grained PATs [1], allowing you to use a repository specific token. You'll see the button that reads "Sign in with a Fine-Grained PAT" on the login screen.
Got it; I hadn't heard of "Fine-Grained PATs" before so I just ignored it. My personal blog is open source already: https://github.com/FanaHOVA/2024-blog, so I was hoping to just OAuth and try it out, but I understand. Will try the self hosting at some point. Good luck with the project, looks slick.
> Well, the GitHub API kinda sucks when it comes to OAuth scoping. Pages CMS relies on the OAuth App flow, which doesn't allow for granular permissions.