1e5ef02bdf
Messages between matched users are now encrypted client-side with each user's own key pair before they ever reach the server; the backend only ever stores/relays opaque ciphertext + nonce and cannot read message content, including for the last-message preview on the matches list. - User gains a PublicKey field, registered/rotated via PUT /profile/public-key - Message gains CipherText/Nonce; legacy plaintext Text is kept as-is for messages sent before this change - MatchView exposes the partner's public key and the last message's ciphertext/nonce so the client can decrypt previews itself - Removed the now-dead plaintext SanitizeMessageText utility — the server can no longer sanitize message content since it's opaque ciphertext Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
33 lines
1.3 KiB
Go
33 lines
1.3 KiB
Go
package dto
|
|
|
|
// UpdateLocationRequest بهروزرسانی موقعیت مکانی کاربر (برای محاسبهی فاصلهی تقریبی)
|
|
type UpdateLocationRequest struct {
|
|
Latitude float64 `json:"latitude" binding:"required"`
|
|
Longitude float64 `json:"longitude" binding:"required"`
|
|
}
|
|
|
|
// UpdateBioRequest ویرایش بیوگرافی کوتاه پروفایل
|
|
type UpdateBioRequest struct {
|
|
Bio string `json:"bio" binding:"max=300"`
|
|
}
|
|
|
|
// CheckInResult نتیجهی ثبت ورود روزانه (برای استریک گیمیفیکیشن)
|
|
type CheckInResult struct {
|
|
StreakCount int `json:"streak_count"`
|
|
IsNewToday bool `json:"is_new_today"`
|
|
}
|
|
|
|
// UpdateNotificationSettingsRequest ترجیحات اعلان کاربر
|
|
type UpdateNotificationSettingsRequest struct {
|
|
NotifyMatches bool `json:"notify_matches"`
|
|
NotifyMessages bool `json:"notify_messages"`
|
|
NotifyLikes bool `json:"notify_likes"`
|
|
}
|
|
|
|
// UpdatePublicKeyRequest ثبت/بهروزرسانی کلید عمومی X25519 کاربر برای
|
|
// رمزنگاری سرتاسری پیامها. کلید باید دقیقاً ۳۲ بایت خام باشه که بهصورت
|
|
// base64 استاندارد (۴۴ کاراکتر، شامل padding) کدگذاری شده.
|
|
type UpdatePublicKeyRequest struct {
|
|
PublicKey string `json:"public_key" binding:"required,len=44"`
|
|
}
|