const config = useRuntimeConfig() export const byuAuthConfig = { clientId: config.byuClientId, issuer: config.byuIssuer, authorizationUrl: `${config.byuIssuer}/authorize`, tokenUrl: `${config.byuIssuer}/token`, userInfoUrl: `${config.byuIssuer}/userinfo`, redirectUri: config.baseUrl === 'http://localhost:8000' ? 'http://localhost:8000/api/auth/callback/byu-pkce' : `${config.baseUrl}/api/auth/callback/byu-pkce`, scopes: ['openid'] } // PKCE helper functions export function generateCodeVerifier(): string { const array = new Uint8Array(32) crypto.getRandomValues(array) return base64UrlEncode(array) } export async function generateCodeChallenge(verifier: string): Promise { const encoder = new TextEncoder() const data = encoder.encode(verifier) const hash = await crypto.subtle.digest('SHA-256', data) return base64UrlEncode(new Uint8Array(hash)) } function base64UrlEncode(array: Uint8Array): string { return btoa(String.fromCharCode(...array)) .replace(/\+/g, '-') .replace(/\//g, '_') .replace(/=/g, '') }