mirror of
https://github.com/pocket-id/pocket-id.git
synced 2025-12-26 09:15:06 +03:00
30 lines
747 B
Go
30 lines
747 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"`
|
|
UserGroups []UserGroup `gorm:"many2many:signup_tokens_user_groups;"`
|
|
}
|
|
|
|
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()
|
|
}
|