Web Developer
Hi, I'd like to ask about rate limiting around Google OAuth login on Appwrite Cloud.
OVERVIEW
Service type: A PWA (web app) for members of a university club
Users: about 500
Appwrite plan: Pro
SDKs:
Frontend: appwrite (Web SDK) — called directly from the browser
Backend: node-appwrite (Server SDK / API Key) — used inside Next.js API Routes running on Cloudflare Workers
Authentication: Google OAuth
AUTHENTICATION FLOW
When a user logs in, the following requests hit Appwrite Cloud from the browser, in order:
(1) OAuth token initiation
Endpoint: GET /v1/account/tokens/oauth2/google
Caller: Browser (Web SDK not used; we build the URL ourselves and navigate via window.location)
Purpose: Redirect to Google's consent screen
(2) Session creation after Google authentication
Endpoint: POST /v1/account/sessions/token
SDK call: account.createSession(userId, secret)
Caller: Browser (Web SDK)
Purpose: Create an Appwrite session from the userId / secret returned by the OAuth callback
(3) Get current user
Endpoint: GET /v1/account
SDK call: account.get()
Purpose: Confirm successful login and verify the session on every page render
(4) Team membership check (admin / shift-manager role detection)
Endpoint: GET /v1/teams/{teamId}/memberships
SDK call: teams.listMemberships(teamId)
Caller: Browser (Web SDK)
Purpose: Toggle UI menus based on role
(5) JWT issuance (to be sent to our own server)
Endpoint: POST /v1/account/jwts
SDK call: account.createJWT()
Purpose: Sent as a Bearer token to Next.js API Routes (e.g. /api/verify-user) running on Cloudflare Workers
(6) Server-side JWT verification
Endpoint: GET /v1/account (via setJWT)
SDK call: node-appwrite's setJWT(jwt) + account.get()
Caller: Cloudflare Worker (server)
Purpose: Ask Appwrite whether the received JWT is valid