2024-08-23 17:04:19 +02:00
|
|
|
package dto
|
|
|
|
|
|
2025-07-13 18:15:57 +02:00
|
|
|
import (
|
2025-09-09 00:31:49 -07:00
|
|
|
"errors"
|
|
|
|
|
|
|
|
|
|
"github.com/gin-gonic/gin/binding"
|
2025-08-21 23:02:56 -07:00
|
|
|
"github.com/pocket-id/pocket-id/backend/internal/utils"
|
2025-07-13 18:15:57 +02:00
|
|
|
)
|
2024-08-23 17:04:19 +02:00
|
|
|
|
|
|
|
|
type UserDto struct {
|
2024-10-28 18:11:54 +01:00
|
|
|
ID string `json:"id"`
|
|
|
|
|
Username string `json:"username"`
|
|
|
|
|
Email string `json:"email" `
|
|
|
|
|
FirstName string `json:"firstName"`
|
|
|
|
|
LastName string `json:"lastName"`
|
|
|
|
|
IsAdmin bool `json:"isAdmin"`
|
2025-03-20 19:57:41 +01:00
|
|
|
Locale *string `json:"locale"`
|
2024-10-28 18:11:54 +01:00
|
|
|
CustomClaims []CustomClaimDto `json:"customClaims"`
|
2025-03-06 15:25:03 -06:00
|
|
|
UserGroups []UserGroupDto `json:"userGroups"`
|
2025-01-19 06:02:07 -06:00
|
|
|
LdapID *string `json:"ldapId"`
|
2025-04-18 10:38:50 -05:00
|
|
|
Disabled bool `json:"disabled"`
|
2024-08-23 17:04:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type UserCreateDto struct {
|
2025-07-13 18:15:57 +02:00
|
|
|
Username string `json:"username" binding:"required,username,min=2,max=50" unorm:"nfc"`
|
|
|
|
|
Email string `json:"email" binding:"required,email" unorm:"nfc"`
|
|
|
|
|
FirstName string `json:"firstName" binding:"required,min=1,max=50" unorm:"nfc"`
|
|
|
|
|
LastName string `json:"lastName" binding:"max=50" unorm:"nfc"`
|
2025-03-20 19:57:41 +01:00
|
|
|
IsAdmin bool `json:"isAdmin"`
|
|
|
|
|
Locale *string `json:"locale"`
|
2025-04-18 10:38:50 -05:00
|
|
|
Disabled bool `json:"disabled"`
|
2025-03-20 19:57:41 +01:00
|
|
|
LdapID string `json:"-"`
|
2024-08-23 17:04:19 +02:00
|
|
|
}
|
|
|
|
|
|
2025-09-09 00:31:49 -07:00
|
|
|
func (u UserCreateDto) Validate() error {
|
|
|
|
|
e, ok := binding.Validator.Engine().(interface {
|
|
|
|
|
Struct(s any) error
|
|
|
|
|
})
|
|
|
|
|
if !ok {
|
|
|
|
|
return errors.New("validator does not implement the expected interface")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return e.Struct(u)
|
|
|
|
|
}
|
|
|
|
|
|
2024-08-23 17:04:19 +02:00
|
|
|
type OneTimeAccessTokenCreateDto struct {
|
2025-08-21 23:02:56 -07:00
|
|
|
UserID string `json:"userId"`
|
|
|
|
|
TTL utils.JSONDuration `json:"ttl" binding:"ttl"`
|
2024-08-23 17:04:19 +02:00
|
|
|
}
|
2025-01-19 15:30:31 +01:00
|
|
|
|
2025-04-20 18:32:40 +02:00
|
|
|
type OneTimeAccessEmailAsUnauthenticatedUserDto struct {
|
2025-07-13 18:15:57 +02:00
|
|
|
Email string `json:"email" binding:"required,email" unorm:"nfc"`
|
2025-01-19 15:30:31 +01:00
|
|
|
RedirectPath string `json:"redirectPath"`
|
|
|
|
|
}
|
2025-03-06 15:25:03 -06:00
|
|
|
|
2025-04-20 18:32:40 +02:00
|
|
|
type OneTimeAccessEmailAsAdminDto struct {
|
2025-08-21 23:02:56 -07:00
|
|
|
TTL utils.JSONDuration `json:"ttl" binding:"ttl"`
|
2025-04-20 18:32:40 +02:00
|
|
|
}
|
|
|
|
|
|
2025-03-06 15:25:03 -06:00
|
|
|
type UserUpdateUserGroupDto struct {
|
|
|
|
|
UserGroupIds []string `json:"userGroupIds" binding:"required"`
|
|
|
|
|
}
|
2025-06-27 15:01:10 -05:00
|
|
|
|
|
|
|
|
type SignUpDto struct {
|
2025-07-13 18:15:57 +02:00
|
|
|
Username string `json:"username" binding:"required,username,min=2,max=50" unorm:"nfc"`
|
|
|
|
|
Email string `json:"email" binding:"required,email" unorm:"nfc"`
|
|
|
|
|
FirstName string `json:"firstName" binding:"required,min=1,max=50" unorm:"nfc"`
|
|
|
|
|
LastName string `json:"lastName" binding:"max=50" unorm:"nfc"`
|
2025-06-27 15:01:10 -05:00
|
|
|
Token string `json:"token"`
|
|
|
|
|
}
|