Files
hanko/backend/dto/email.go
Lennart Fleischmann efeca4a76f feat: custom jwt claims
2025-04-16 15:17:48 +02:00

61 lines
1.4 KiB
Go

package dto
import (
"github.com/gofrs/uuid"
"github.com/teamhanko/hanko/backend/config"
"github.com/teamhanko/hanko/backend/persistence/models"
)
type EmailResponse struct {
ID uuid.UUID `json:"id"`
Address string `json:"address"`
IsVerified bool `json:"is_verified"`
IsPrimary bool `json:"is_primary"`
Identity *Identity `json:"identity,omitempty"` // Deprecated
Identities Identities `json:"identities,omitempty"`
}
type EmailCreateRequest struct {
Address string `json:"address"`
}
type EmailUpdateRequest struct {
IsPrimary *bool `json:"is_primary"`
}
// FromEmailModel Converts the DB model to a DTO object
func FromEmailModel(email *models.Email, cfg *config.Config) *EmailResponse {
emailResponse := &EmailResponse{
ID: email.ID,
Address: email.Address,
IsVerified: email.Verified,
IsPrimary: email.IsPrimary(),
Identities: FromIdentitiesModel(email.Identities, cfg),
}
if len(email.Identities) > 0 {
identity := FromIdentityModel(&email.Identities[0], cfg)
emailResponse.Identity = identity
}
return emailResponse
}
type EmailJWT struct {
Address string `json:"address"`
IsPrimary bool `json:"is_primary"`
IsVerified bool `json:"is_verified"`
}
func EmailJWTFromEmailModel(email *models.Email) *EmailJWT {
if email == nil {
return nil
}
return &EmailJWT{
Address: email.Address,
IsPrimary: email.IsPrimary(),
IsVerified: email.Verified,
}
}