/**
* BaseProvider — Abstract authentication provider
*
* All auth providers must implement:
* - name: string identifier
* - extractCredentials(req): Extract credentials from HTTP request
* - authenticate(credentials): Verify credentials, return auth result
*/
export class BaseProvider {
constructor (name) {
this.name = name
}
/**
* Extract credentials from HTTP request
* @param {Object} req - HTTP request
* @returns {Promise<Object|null>} Credentials or null if not applicable
*/
async extractCredentials (req) {
throw new Error('Not implemented')
}
/**
* Authenticate with extracted credentials
* @param {Object} credentials - Extracted credentials
* @returns {Promise<Object>} Auth result { identityId, method, credentials, permissions? }
*/
async authenticate (credentials) {
throw new Error('Not implemented')
}
}
export default BaseProvider