271 lines
11 KiB
Go
271 lines
11 KiB
Go
|
// Code generated by go-swagger; DO NOT EDIT.
|
||
|
|
||
|
// (c) 2012-2023 by Vernon Keenan
|
||
|
// All rights reserved worldwide.
|
||
|
// Proprietary product; unlicensed use is not allowed
|
||
|
|
||
|
package members_models
|
||
|
|
||
|
// This file was generated by the swagger tool.
|
||
|
// Editing this file might prove futile when you re-run the swagger generate command
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"encoding/json"
|
||
|
|
||
|
"github.com/go-openapi/errors"
|
||
|
"github.com/go-openapi/strfmt"
|
||
|
"github.com/go-openapi/swag"
|
||
|
"github.com/go-openapi/validate"
|
||
|
)
|
||
|
|
||
|
// ClerkUser Clerk user object
|
||
|
//
|
||
|
// swagger:model ClerkUser
|
||
|
type ClerkUser struct {
|
||
|
|
||
|
// If Backup Codes are configured on the instance, you can provide them to enable it on the newly created user without the need to reset them.
|
||
|
// You must provide the backup codes in plain format or the corresponding bcrypt digest.
|
||
|
BackupCodes []string `json:"backup_codes"`
|
||
|
|
||
|
// A custom date/time denoting _when_ the user signed up to the application, specified in RFC3339 format (e.g. `2012-10-20T07:15:20.902Z`).
|
||
|
CreatedAt *string `json:"created_at,omitempty"`
|
||
|
|
||
|
// Email addresses to add to the user.
|
||
|
// Must be unique across your instance.
|
||
|
// The first email address will be set as the user's primary email address.
|
||
|
EmailAddress []string `json:"email_address"`
|
||
|
|
||
|
// The ID of the user as used in your external systems or your previous authentication solution.
|
||
|
// Must be unique across your instance.
|
||
|
ExternalID *string `json:"external_id,omitempty"`
|
||
|
|
||
|
// The first name to assign to the user
|
||
|
FirstName *string `json:"first_name,omitempty"`
|
||
|
|
||
|
// The last name to assign to the user
|
||
|
LastName *string `json:"last_name,omitempty"`
|
||
|
|
||
|
// The plaintext password to give the user.
|
||
|
// Must be at least 8 characters long, and can not be in any list of hacked passwords.
|
||
|
Password *string `json:"password,omitempty"`
|
||
|
|
||
|
// In case you already have the password digests and not the passwords, you can use them for the newly created user via this property.
|
||
|
// The digests should be generated with one of the supported algorithms.
|
||
|
// The hashing algorithm can be specified using the `password_hasher` property.
|
||
|
PasswordDigest *string `json:"password_digest,omitempty"`
|
||
|
|
||
|
// The hashing algorithm that was used to generate the password digest.
|
||
|
// The algorithms we support at the moment are [bcrypt](https://en.wikipedia.org/wiki/Bcrypt), md5, pbkdf2_sha256, [pbkdf2_sha256_django](https://docs.djangoproject.com/en/4.0/topics/auth/passwords/), [scrypt_firebase](https://firebaseopensource.com/projects/firebase/scrypt/) and 2 [argon2](https://argon2.online/) variants, argon2i and argon2id.
|
||
|
// Each of the above expects the incoming digest to be of a particular format.
|
||
|
//
|
||
|
// More specifically:
|
||
|
//
|
||
|
// **bcrypt:** The digest should be of the following form:
|
||
|
//
|
||
|
// `$<algorithm version>$<cost>$<salt & hash>`
|
||
|
//
|
||
|
// **md5:** The digest should follow the regular form e.g.:
|
||
|
//
|
||
|
// `5f4dcc3b5aa765d61d8327deb882cf99`
|
||
|
//
|
||
|
// **pbkdf2_sha256:** This is the PBKDF2 algorithm using the SHA256 hashing function. The format should be as follows:
|
||
|
//
|
||
|
// `pbkdf2_sha256$<iterations>$<salt>$<hash>`
|
||
|
//
|
||
|
// Note: Both the salt and the hash are expected to be base64-encoded.
|
||
|
//
|
||
|
// **pbkdf2_sha256_django:** This is the Django-specific variant of PBKDF2 and the digest should have the following format (as exported from Django):
|
||
|
//
|
||
|
// `pbkdf2_sha256$<iterations>$<salt>$<hash>`
|
||
|
//
|
||
|
// Note: The salt is expected to be un-encoded, the hash is expected base64-encoded.
|
||
|
//
|
||
|
// **pbkdf2_sha1:** This is similar to pkbdf2_sha256_django, but with two differences:
|
||
|
// 1. uses sha1 instead of sha256
|
||
|
// 2. accepts the hash as a hex-encoded string
|
||
|
//
|
||
|
// The format is the following:
|
||
|
//
|
||
|
// `pbkdf2_sha1$<iterations>$<salt>$<hash-as-hex-string>`
|
||
|
//
|
||
|
//
|
||
|
// **scrypt_firebase:** The Firebase-specific variant of scrypt.
|
||
|
// The value is expected to have 6 segments separated by the $ character and include the following information:
|
||
|
//
|
||
|
// _hash:_ The actual Base64 hash. This can be retrieved when exporting the user from Firebase.
|
||
|
// _salt:_ The salt used to generate the above hash. Again, this is given when exporting the user.
|
||
|
// _signer key:_ The base64 encoded signer key.
|
||
|
// _salt separator:_ The base64 encoded salt separator.
|
||
|
// _rounds:_ The number of rounds the algorithm needs to run.
|
||
|
// _memory cost:_ The cost of the algorithm run
|
||
|
//
|
||
|
// The first 2 (hash and salt) are per user and can be retrieved when exporting the user from Firebase.
|
||
|
// The other 4 values (signer key, salt separator, rounds and memory cost) are project-wide settings and can be retrieved from the project's password hash parameters.
|
||
|
//
|
||
|
// Once you have all these, you can combine it in the following format and send this as the digest in order for Clerk to accept it:
|
||
|
//
|
||
|
// `<hash>$<salt>$<signer key>$<salt separator>$<rounds>$<memory cost>`
|
||
|
//
|
||
|
// **argon2i:** Algorithms in the argon2 family generate digests that encode the following information:
|
||
|
//
|
||
|
// _version (v):_ The argon version, version 19 is assumed
|
||
|
// _memory (m):_ The memory used by the algorithm (in kibibytes)
|
||
|
// _iterations (t):_ The number of iterations to perform
|
||
|
// _parallelism (p):_ The number of threads to use
|
||
|
//
|
||
|
// Parts are demarcated by the `$` character, with the first part identifying the algorithm variant.
|
||
|
// The middle part is a comma-separated list of the encoding options (memory, iterations, parallelism).
|
||
|
// The final part is the actual digest.
|
||
|
//
|
||
|
// `$argon2i$v=19$m=4096,t=3,p=1$4t6CL3P7YiHBtwESXawI8Hm20zJj4cs7/4/G3c187e0$m7RQFczcKr5bIR0IIxbpO2P0tyrLjf3eUW3M3QSwnLc`
|
||
|
//
|
||
|
// **argon2id:** See the previous algorithm for an explanation of the formatting.
|
||
|
//
|
||
|
// For the argon2id case, the value of the algorithm in the first part of the digest is `argon2id`:
|
||
|
//
|
||
|
// `$argon2id$v=19$m=64,t=4,p=8$Z2liZXJyaXNo$iGXEpMBTDYQ8G/71tF0qGjxRHEmR3gpGULcE93zUJVU`
|
||
|
//
|
||
|
// If you need support for any particular hashing algorithm, [please let us know](https://clerk.com/support).
|
||
|
// Enum: [bcrypt md5 pbkdf2_sha256 pbkdf2_sha256_django pbkdf2_sha1 scrypt_firebase argon2i argon2id]
|
||
|
PasswordHasher *string `json:"password_hasher,omitempty"`
|
||
|
|
||
|
// Phone numbers to add to the user.
|
||
|
// Must be unique across your instance.
|
||
|
// The first phone number will be set as the user's primary phone number.
|
||
|
PhoneNumber []string `json:"phone_number"`
|
||
|
|
||
|
// Metadata saved on the user, that is only visible to your Backend API
|
||
|
PrivateMetadata interface{} `json:"private_metadata,omitempty"`
|
||
|
|
||
|
// Metadata saved on the user, that is visible to both your Frontend and Backend APIs
|
||
|
PublicMetadata interface{} `json:"public_metadata,omitempty"`
|
||
|
|
||
|
// When set to `true` all password checks are skipped.
|
||
|
// It is recommended to use this method only when migrating plaintext passwords to Clerk.
|
||
|
// Upon migration the user base should be prompted to pick stronger password.
|
||
|
SkipPasswordChecks bool `json:"skip_password_checks,omitempty"`
|
||
|
|
||
|
// When set to `true`, `password` is not required anymore when creating the user and can be omitted.
|
||
|
// This is useful when you are trying to create a user that doesn't have a password, in an instance that is using passwords.
|
||
|
// Please note that you cannot use this flag if password is the only way for a user to sign into your instance.
|
||
|
SkipPasswordRequirement bool `json:"skip_password_requirement,omitempty"`
|
||
|
|
||
|
// In case TOTP is configured on the instance, you can provide the secret to enable it on the newly created user without the need to reset it.
|
||
|
// Please note that currently the supported options are:
|
||
|
// * Period: 30 seconds
|
||
|
// * Code length: 6 digits
|
||
|
// * Algorithm: SHA1
|
||
|
TotpSecret *string `json:"totp_secret,omitempty"`
|
||
|
|
||
|
// Metadata saved on the user, that can be updated from both the Frontend and Backend APIs.
|
||
|
// Note: Since this data can be modified from the frontend, it is not guaranteed to be safe.
|
||
|
UnsafeMetadata interface{} `json:"unsafe_metadata,omitempty"`
|
||
|
|
||
|
// The username to give to the user.
|
||
|
// It must be unique across your instance.
|
||
|
Username *string `json:"username,omitempty"`
|
||
|
|
||
|
// Web3 wallets to add to the user.
|
||
|
// Must be unique across your instance.
|
||
|
// The first wallet will be set as the user's primary wallet.
|
||
|
Web3Wallet []string `json:"web3_wallet"`
|
||
|
}
|
||
|
|
||
|
// Validate validates this clerk user
|
||
|
func (m *ClerkUser) Validate(formats strfmt.Registry) error {
|
||
|
var res []error
|
||
|
|
||
|
if err := m.validatePasswordHasher(formats); err != nil {
|
||
|
res = append(res, err)
|
||
|
}
|
||
|
|
||
|
if len(res) > 0 {
|
||
|
return errors.CompositeValidationError(res...)
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
var clerkUserTypePasswordHasherPropEnum []interface{}
|
||
|
|
||
|
func init() {
|
||
|
var res []string
|
||
|
if err := json.Unmarshal([]byte(`["bcrypt","md5","pbkdf2_sha256","pbkdf2_sha256_django","pbkdf2_sha1","scrypt_firebase","argon2i","argon2id"]`), &res); err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
for _, v := range res {
|
||
|
clerkUserTypePasswordHasherPropEnum = append(clerkUserTypePasswordHasherPropEnum, v)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const (
|
||
|
|
||
|
// ClerkUserPasswordHasherBcrypt captures enum value "bcrypt"
|
||
|
ClerkUserPasswordHasherBcrypt string = "bcrypt"
|
||
|
|
||
|
// ClerkUserPasswordHasherMd5 captures enum value "md5"
|
||
|
ClerkUserPasswordHasherMd5 string = "md5"
|
||
|
|
||
|
// ClerkUserPasswordHasherPbkdf2Sha256 captures enum value "pbkdf2_sha256"
|
||
|
ClerkUserPasswordHasherPbkdf2Sha256 string = "pbkdf2_sha256"
|
||
|
|
||
|
// ClerkUserPasswordHasherPbkdf2Sha256Django captures enum value "pbkdf2_sha256_django"
|
||
|
ClerkUserPasswordHasherPbkdf2Sha256Django string = "pbkdf2_sha256_django"
|
||
|
|
||
|
// ClerkUserPasswordHasherPbkdf2Sha1 captures enum value "pbkdf2_sha1"
|
||
|
ClerkUserPasswordHasherPbkdf2Sha1 string = "pbkdf2_sha1"
|
||
|
|
||
|
// ClerkUserPasswordHasherScryptFirebase captures enum value "scrypt_firebase"
|
||
|
ClerkUserPasswordHasherScryptFirebase string = "scrypt_firebase"
|
||
|
|
||
|
// ClerkUserPasswordHasherArgon2i captures enum value "argon2i"
|
||
|
ClerkUserPasswordHasherArgon2i string = "argon2i"
|
||
|
|
||
|
// ClerkUserPasswordHasherArgon2id captures enum value "argon2id"
|
||
|
ClerkUserPasswordHasherArgon2id string = "argon2id"
|
||
|
)
|
||
|
|
||
|
// prop value enum
|
||
|
func (m *ClerkUser) validatePasswordHasherEnum(path, location string, value string) error {
|
||
|
if err := validate.EnumCase(path, location, value, clerkUserTypePasswordHasherPropEnum, true); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (m *ClerkUser) validatePasswordHasher(formats strfmt.Registry) error {
|
||
|
if swag.IsZero(m.PasswordHasher) { // not required
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// value enum
|
||
|
if err := m.validatePasswordHasherEnum("password_hasher", "body", *m.PasswordHasher); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// ContextValidate validates this clerk user based on context it is used
|
||
|
func (m *ClerkUser) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// MarshalBinary interface implementation
|
||
|
func (m *ClerkUser) MarshalBinary() ([]byte, error) {
|
||
|
if m == nil {
|
||
|
return nil, nil
|
||
|
}
|
||
|
return swag.WriteJSON(m)
|
||
|
}
|
||
|
|
||
|
// UnmarshalBinary interface implementation
|
||
|
func (m *ClerkUser) UnmarshalBinary(b []byte) error {
|
||
|
var res ClerkUser
|
||
|
if err := swag.ReadJSON(b, &res); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
*m = res
|
||
|
return nil
|
||
|
}
|