- OAuth callback fetches /v2/userinfo to store member_id + name,
auto-creates a 'profile' personal page on first connect
- Page modal adds type selector (personal/org), hides org ID for personal
- renderLinkedinPages shows 'Personal' badge instead of org ID
- botconfig saves type field; personal pages omit organization_id
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Provides a gitignored override file for credentials like LinkedIn OAuth
keys, avoiding reliance on Apache SetEnv / PHP-FPM env config.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Apache SetEnv doesn't reach PHP-FPM processes via getenv(), but the
values are still available in \$_SERVER.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- linkedin_auth API: generates auth URL with CSRF state stored in session
- linkedin_callback: exchanges code for tokens, writes to project's config.json
- index.php: route /linkedin/callback before auth check
- Connect button wired up in JS; reads LINKEDIN_CLIENT_ID/SECRET from server env
Server setup required:
SetEnv LINKEDIN_CLIENT_ID ...
SetEnv LINKEDIN_CLIENT_SECRET ...
Redirect URI to register in LinkedIn app: https://<host>/linkedin/callback
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>