OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-identity / lib / auth / base-provider.js

34 lines · javascript ref:
/**
 * 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