#!/usr/bin/env bare
/**
* Debug bearer token authentication
*/
import Corestore from 'corestore'
import Hyperbee from 'hyperbee'
import process from 'bare-process'
import { BearerTokenProvider } from '../lib/auth/providers/bearer-token.js'
async function main() {
const token = process.argv[2]
if (!token) {
console.error('Usage: bare debug-auth.js <bearer-token>')
process.exit(1)
}
console.log('🔍 Debugging bearer token authentication...\n')
console.log('Token:', token)
console.log('')
// Initialize storage (same as server)
const store = new Corestore('./pear-git-storage')
await store.ready()
const core = store.get({ name: 'pear-git-db' })
const db = new Hyperbee(core, { keyEncoding: 'utf-8', valueEncoding: 'json' })
await db.ready()
// Create mock registry
const registry = {
db,
isRevoked: async (tokenHash) => {
// Check if identity is revoked
const entry = await db.get(`revoked:${tokenHash}`)
return !!entry
}
}
const provider = new BearerTokenProvider(registry)
try {
console.log('Step 1: Extract credentials (simulated)')
console.log(' Token extracted:', token.substring(0, 16) + '...')
console.log('')
console.log('Step 2: Authenticate')
const result = await provider.authenticate(token)
console.log('✅ Authentication successful!')
console.log('')
console.log('Result:')
console.log(` Identity ID: ${result.identityId}`)
console.log(` Method: ${result.method}`)
console.log(` Verified: ${result.verified}`)
console.log(` Username: ${result.credentials.username}`)
console.log(` Permissions: ${result.permissions.join(', ')}`)
console.log(` Repos: ${result.repos.join(', ')}`)
} catch (err) {
console.error('❌ Authentication failed:', err.message)
console.error('')
console.error('Full error:')
console.error(err)
process.exit(1)
} finally {
await db.close()
await store.close()
}
}
main().catch(err => {
console.error('Fatal error:', err)
process.exit(1)
})