Authentication API
The legitFs.auth object provides authentication and user management.
🧪 Experimental - Expect frequent changes
Methods
getUser(): Promise<LegitUser>
Gets the current user information.
Returns: Promise<LegitUser> - User object:
{ type: string; // 'local' | 'anonymous' | other types id: string; // User ID name: string; // User name email: string; // User email }Example:
const user = await legitFs.auth.getUser(); console.log(user.type); // 'local' | 'anonymous' | ... console.log(user.name); // User name console.log(user.email); // User email console.log(user.id); // User IDsignInAnonymously(): Promise<void>
Signs in as an anonymous user. This generates a random UUID for the user ID and updates the user metadata.
Example:
await legitFs.auth.signInAnonymously(); const user = await legitFs.auth.getUser(); console.log(user.type); // 'anonymous' console.log(user.id); // Random UUID console.log(user.email); // anonymous-sha1-{uuid}-@legitcontrol.comNote: After signing in anonymously, the user type changes from 'local' to 'anonymous', and a random UUID is generated for the user ID.
getMaxAccessTokenForBranch(branchId: string): Promise<string | undefined>
Gets the access token with maximum permissions for a branch.
Parameters:
- branchId (string): Branch ID
Returns: Promise<string | undefined> - Access token, or undefined if no token is available
Example:
const token = await legitFs.auth.getMaxAccessTokenForBranch('main'); if (token) { console.log('Access token available'); } else { console.log('No access token for this branch'); }Note: If no access tokens are stored, this method may return the publicKey provided to openLegitFs() if available.
addAccessToken(token: string): Promise<void>
Adds an access token to the user’s token store.
Parameters:
- token (string): Access token to add
Example:
await legitFs.auth.addAccessToken('your-access-token');Note: Tokens are stored in the Git configuration and associated with the current user ID.
User Types
Local User
The default user type when openLegitFs() is called without authentication. Local users:
- Have
type: 'local' - Have
id: 'local' - Cannot push to remote repositories
- Cannot use sync features that require authentication
Anonymous User
Users who have called signInAnonymously(). Anonymous users:
- Have
type: 'anonymous' - Have a randomly generated UUID as their
id - Can push to remote repositories if they have access tokens
- Can use sync features
Complete Example
// Get current user (initially local) let user = await legitFs.auth.getUser(); console.log(user.type); // 'local' // Sign in anonymously await legitFs.auth.signInAnonymously(); user = await legitFs.auth.getUser(); console.log(user.type); // 'anonymous' console.log(user.id); // Random UUID // Add an access token await legitFs.auth.addAccessToken('your-access-token'); // Get access token for a branch const token = await legitFs.auth.getMaxAccessTokenForBranch('main'); if (token) { console.log('Can access branch'); }See Also
- openLegitFs - Creating a LegitFs instance
- Sync - Synchronization API (requires authentication)
- LegitFs Instance - Instance properties and methods