30 lines
973 B
Go
30 lines
973 B
Go
package session
|
|
|
|
import "time"
|
|
|
|
// Session represents a user authentication session (domain entity)
|
|
type Session struct {
|
|
UserID string
|
|
Email string
|
|
AccessToken string
|
|
RefreshToken string
|
|
ExpiresAt time.Time
|
|
CreatedAt time.Time
|
|
|
|
// Encrypted user data for password verification (stored during login)
|
|
Salt string // Base64 encoded salt for password derivation
|
|
EncryptedMasterKey string // Base64 encoded encrypted master key
|
|
EncryptedPrivateKey string // Base64 encoded encrypted private key
|
|
PublicKey string // Base64 encoded public key
|
|
KDFAlgorithm string // Key derivation algorithm: "PBKDF2-SHA256"
|
|
}
|
|
|
|
// IsExpired checks if the session has expired
|
|
func (s *Session) IsExpired() bool {
|
|
return time.Now().After(s.ExpiresAt)
|
|
}
|
|
|
|
// IsValid checks if the session is valid (not expired and has tokens)
|
|
func (s *Session) IsValid() bool {
|
|
return !s.IsExpired() && s.AccessToken != "" && s.RefreshToken != ""
|
|
}
|