| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package httpd
- import (
- "sync"
- "time"
- "github.com/drakkan/sftpgo/v2/util"
- )
- var (
- resetCodeLifespan = 10 * time.Minute
- resetCodes sync.Map
- )
- type resetCode struct {
- Code string
- Username string
- IsAdmin bool
- ExpiresAt time.Time
- }
- func (c *resetCode) isExpired() bool {
- return c.ExpiresAt.Before(time.Now().UTC())
- }
- func newResetCode(username string, isAdmin bool) *resetCode {
- return &resetCode{
- Code: util.GenerateUniqueID(),
- Username: username,
- IsAdmin: isAdmin,
- ExpiresAt: time.Now().Add(resetCodeLifespan).UTC(),
- }
- }
- func cleanupExpiredResetCodes() {
- resetCodes.Range(func(key, value interface{}) bool {
- c, ok := value.(*resetCode)
- if !ok || c.isExpired() {
- resetCodes.Delete(key)
- }
- return true
- })
- }
|