eocene-auth-sdk
v0.3.0
Published
Eocene custodial WaaS product SDK — OAuth/session, EIP-1193, React auth UI
Downloads
200
Maintainers
Readme
eocene-auth-sdk
Eocene custodial WaaS product layer: OAuth/session, EIP-1193, signature confirm (optional wallet password).
Install: npmjs.com/package/eocene-auth-sdk
npm install eocene-auth-sdkimport { AuthProvider, useAuth, authConfigFromViteEnv } from 'eocene-auth-sdk'
import 'eocene-auth-sdk/styles.css'
const config = authConfigFromViteEnv(import.meta.env)
const { login, getConnectorShim, openPasswordSettings, passwordEnabled } = useAuth()Docs: https://eocene.io/docs
Environment variables (Vite):
| Key | Description |
|---|---|
| VITE_EOCENE_PROJECT_ID | Public project id (required for end-user OAuth) |
| VITE_EOCENE_CONTROL_URL | Optional. Default https://api.eocene.io |
| VITE_EOCENE_OAUTH_RETURN_TO | Optional. Default {origin}/login/eocene-callback |
| VITE_EOCENE_CHAIN_ID | Optional. Default 1 |
| VITE_EOCENE_OAUTH_FALLBACK_DEV | Optional. Local mock {provider}@eocene.local when IdP is off |
Unprefixed EOCENE_* still works if you set Vite envPrefix to include EOCENE_.
The built-in AuthLoginPanel confirms before redirecting to the IdP.
Telegram ('telegram' method, control-plane must have TELEGRAM_CLIENT_ID/SECRET + TELEGRAM_BOT_TOKEN):
web login uses the same OAuth redirect as the other providers; inside a
Telegram Mini App the signed initData is exchanged directly — call
loginTelegramMiniApp() from useAuth() (or just login('telegram'), which
detects the webview), and use isTelegramMiniApp() to auto-login on entry:
const { loginTelegramMiniApp } = useAuth()
useEffect(() => {
if (isTelegramMiniApp()) void loginTelegramMiniApp()
}, [])Production control default: https://api.eocene.io
Publishing
npm run publish:token verifies the token, checks the version isn't already on
npm, publishes, and cleans up the temporary auth file. Supply the token by env
var (keeps it out of shell history) or as a flag — the -- is required so npm
forwards it to the script:
# token as a flag (note the --)
npm run publish:token -- --token=npm_xxxxxxxx
npm run publish:token -- --token=npm_xxxxxxxx --dry-run
# or via the environment, without echoing it
read -rs NPM_TOKEN && export NPM_TOKEN && npm run publish:tokenThe token is only exported to the npm subprocess; the temp .npmrc references
${NPM_TOKEN}, never the literal value.
Session expiry
Sessions are short-lived and cannot be refreshed. Route the user back to login when one expires:
<AuthProvider config={config} onSessionExpired={() => nav('/login')}>By the time onSessionExpired fires, local state is already cleared and
authenticated has flipped to false.
Multi-chain
The EIP-1193 provider defaults to Ethereum mainnet and supports
wallet_switchEthereumChain / chainChanged. The control plane validates the
target chain and rejects unknown ids. Read the supported set from
GET {control}/chains.
