Privacy Considerations

Privacy Considerations

GDPR and Privacy Compliance

// Privacy-focused implementation
class PrivacyAwareReferrerPolicy {
    constructor() {
        this.userPreferences = new Map();
    }
    
    middleware() {
        return (req, res, next) => {
            const userId = req.session?.userId;
            const preferences = this.userPreferences.get(userId) || {};
            
            // Respect user privacy preferences
            if (preferences.strictPrivacy) {
                res.setHeader('Referrer-Policy', 'no-referrer');
            } else if (preferences.limitedSharing) {
                res.setHeader('Referrer-Policy', 'same-origin');
            } else {
                res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin');
            }
            
            next();
        };
    }
    
    updateUserPreference(userId, preferences) {
        this.userPreferences.set(userId, preferences);
    }
}