mirror of
https://github.com/pocket-id/pocket-id.git
synced 2026-07-18 16:59:53 +00:00
40 lines
1.7 KiB
Go
40 lines
1.7 KiB
Go
package usersignup
|
|
|
|
import (
|
|
"github.com/danielgtaylor/huma/v2"
|
|
"github.com/pocket-id/pocket-id/backend/internal/dto"
|
|
datatype "github.com/pocket-id/pocket-id/backend/internal/model/types"
|
|
"github.com/pocket-id/pocket-id/backend/internal/utils"
|
|
)
|
|
|
|
type signUpDto struct {
|
|
Username string `json:"username" required:"true" minLength:"1" maxLength:"50" pattern:"^[a-zA-Z0-9]([a-zA-Z0-9_.@-]*[a-zA-Z0-9])?$" patternDescription:"letters, numbers, underscores, dots, hyphens, and @ symbols without leading or trailing special characters" unorm:"nfc"`
|
|
Email *string `json:"email" required:"false" format:"email" unorm:"nfc"`
|
|
FirstName string `json:"firstName" required:"false" maxLength:"50" unorm:"nfc"`
|
|
LastName string `json:"lastName" required:"false" maxLength:"50" unorm:"nfc"`
|
|
Token string `json:"token" required:"false"`
|
|
}
|
|
|
|
func (d *signupTokenCreateDto) Resolve(huma.Context) []error {
|
|
if dto.ValidateTTL(d.TTL) {
|
|
return nil
|
|
}
|
|
return []error{&huma.ErrorDetail{Location: "body.ttl", Message: "TTL must be greater than one second and no more than 31 days"}}
|
|
}
|
|
|
|
type signupTokenCreateDto struct {
|
|
TTL utils.JSONDuration `json:"ttl" required:"true"`
|
|
UsageLimit int `json:"usageLimit" required:"true" minimum:"1" maximum:"100"`
|
|
UserGroupIDs []string `json:"userGroupIds" required:"false"`
|
|
}
|
|
|
|
type signupTokenDto struct {
|
|
ID string `json:"id"`
|
|
Token string `json:"token"`
|
|
ExpiresAt datatype.DateTime `json:"expiresAt"`
|
|
UsageLimit int `json:"usageLimit"`
|
|
UsageCount int `json:"usageCount"`
|
|
UserGroups []dto.UserGroupMinimalDto `json:"userGroups"`
|
|
CreatedAt datatype.DateTime `json:"createdAt"`
|
|
}
|