// Parola transport kodlamasi. // Parolalarin istek govdesinde DUZ METIN gorunmesini engellemek icin Base64 ile kodlanir. // Backend "b64:" on ekini gorunce cozer. (Not: Bu HTTPS/TLS'in yerini tutmaz, ek bir gizleme katmanidir.) const PREFIX = 'b64:' /** * Verilen parolayi UTF-8 guvenli sekilde Base64'e kodlar ve "b64:" on eki ekler. * Bos/null/undefined degerler oldugu gibi (bos string) donulur. */ export function encodePassword(value: string | null | undefined): string { if (value === null || value === undefined || value === '') return '' const bytes = new TextEncoder().encode(String(value)) let binary = '' bytes.forEach((b) => { binary += String.fromCharCode(b) }) return PREFIX + btoa(binary) } /** * Verilen nesnenin sig kopyasini olusturur ve belirtilen alanlari encode eder. * Reactive store nesnelerini bozmamak icin daima yeni bir nesne doner. */ export function withEncodedPasswords>( data: T, fields: string[] ): T { const clone: Record = { ...data } fields.forEach((field) => { const current = clone[field] if (current !== null && current !== undefined && current !== '') { clone[field] = encodePassword(current) } }) return clone as T }