# build project
$ npm run build
# start dev server
$ npm run dev
# deploy to Cloudflare
$ npm run deploy
Users are normalized to make working with different providers easier.
config.toml
should contain the domain the Worker is under and a list of providers and their scopes.
domain = "https://auth.cf.sebastiaanyn.me"
[providers]
discord = ["identify", "email"]
github = ["user:email"]
Providers are defined in src/providers
and configured using TOML. Client ID and secret are provided through Worker environment variables prefixed with the provider name, such as DISCORD_CLIENT_ID
and DISCORD_CLIENT_SECRET
.
name = "discord"
[style]
display-name = "Discord"
background-color = "#5865f2"
background-color-hover = "#707bf4"
[url]
auth = "https://discord.com/api/oauth2/authorize"
token = "https://discord.com/api/oauth2/token"
After acquiring the access token a function to fetch the user profile is called. Providers can make requests to any API required and return the normalized user object.
pub async fn fetch_user(access_token: &str) -> Result<User>;