mirror of
https://github.com/teamhanko/hanko.git
synced 2025-10-29 23:59:46 +08:00
61 lines
1.4 KiB
Go
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,
|
|
}
|
|
}
|