mirror of
https://github.com/pocket-id/pocket-id.git
synced 2025-12-12 16:22:58 +03:00
29 lines
671 B
Go
29 lines
671 B
Go
package model
|
|
|
|
import (
|
|
"time"
|
|
|
|
datatype "github.com/pocket-id/pocket-id/backend/internal/model/types"
|
|
)
|
|
|
|
type SignupToken struct {
|
|
Base
|
|
|
|
Token string `json:"token"`
|
|
ExpiresAt datatype.DateTime `json:"expiresAt" sortable:"true"`
|
|
UsageLimit int `json:"usageLimit" sortable:"true"`
|
|
UsageCount int `json:"usageCount" sortable:"true"`
|
|
}
|
|
|
|
func (st *SignupToken) IsExpired() bool {
|
|
return time.Time(st.ExpiresAt).Before(time.Now())
|
|
}
|
|
|
|
func (st *SignupToken) IsUsageLimitReached() bool {
|
|
return st.UsageCount >= st.UsageLimit
|
|
}
|
|
|
|
func (st *SignupToken) IsValid() bool {
|
|
return !st.IsExpired() && !st.IsUsageLimitReached()
|
|
}
|