@godgpt/auth
v0.1.1
Published
Authentication module for GodGPT SDK with pluggable providers
Maintainers
Readme
@godgpt/auth
Authentication module for the GodGPT SDK with support for multiple providers.
Installation
npm install @godgpt/core @godgpt/auth
# or
pnpm add @godgpt/core @godgpt/auth
# or
yarn add @godgpt/core @godgpt/authUsage
Basic Setup
import { createSDK } from "@godgpt/core";
import { AuthModule } from "@godgpt/auth";
const sdk = createSDK();
const auth = sdk.use(new AuthModule());
await sdk.init();Registering Auth Providers
import { type AuthProviderHandler, type AuthResult } from "@godgpt/auth";
// Create a custom provider
const customProvider: AuthProviderHandler = {
isAvailable: () => true,
async signIn(options?: { email?: string; password?: string }): Promise<AuthResult> {
// Implement your authentication logic
const response = await fetch("/api/auth/login", {
method: "POST",
body: JSON.stringify(options),
});
const data = await response.json();
return {
success: true,
state: "success",
tokens: {
accessToken: data.accessToken,
refreshToken: data.refreshToken,
tokenType: "Bearer",
expiresIn: 3600,
},
user: {
id: data.user.id,
email: data.user.email,
name: data.user.name,
provider: "custom",
},
};
},
async signOut(): Promise<void> {
await fetch("/api/auth/logout", { method: "POST" });
},
};
auth.registerProvider("custom", customProvider);Sign In / Sign Out
// Sign in
const result = await auth.signIn("custom", {
email: "[email protected]",
password: "password123",
});
if (result.success) {
console.log("Welcome,", result.user?.name);
}
// Sign out
await auth.signOut();Checking Auth State
// Check if authenticated
if (auth.isAuthenticated()) {
const user = auth.getCurrentUser();
const token = auth.getAccessToken();
}Auth Events
sdk.on("auth:signIn", ({ user, tokens }) => {
console.log("User signed in:", user.email);
});
sdk.on("auth:signOut", () => {
console.log("User signed out");
});
sdk.on("auth:tokenRefreshed", ({ tokens }) => {
console.log("Token refreshed");
});API Reference
AuthModule Methods
registerProvider(name, handler): Register an auth providerhasProvider(name): Check if a provider is registeredgetProviders(): Get all registered provider namessignIn(provider, options?): Sign in with a providersignOut(): Sign out current userisAuthenticated(): Check if user is authenticatedgetCurrentUser(): Get current user infogetAccessToken(): Get current access tokengetTokens(): Get all tokensupdateUser(data): Update user information
Events
auth:signInStart: Emitted when sign in startsauth:signIn: Emitted on successful sign inauth:signOut: Emitted on sign outauth:tokenRefreshed: Emitted when token is refreshedauth:userUpdated: Emitted when user info is updatedauth:error: Emitted on auth errors
License
MIT
