mirror of
https://github.com/OpenListTeam/OpenList.git
synced 2025-09-19 12:16:24 +08:00
48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
![]() |
package model
|
||
|
|
||
|
import "time"
|
||
|
|
||
|
type SharingDB struct {
|
||
|
ID string `json:"id" gorm:"type:char(12);primaryKey"`
|
||
|
FilesRaw string `json:"-" gorm:"type:text"`
|
||
|
Expires *time.Time `json:"expires"`
|
||
|
Pwd string `json:"pwd"`
|
||
|
Accessed int `json:"accessed"`
|
||
|
MaxAccessed int `json:"max_accessed"`
|
||
|
CreatorId uint `json:"-"`
|
||
|
Disabled bool `json:"disabled"`
|
||
|
Remark string `json:"remark"`
|
||
|
Readme string `json:"readme" gorm:"type:text"`
|
||
|
Header string `json:"header" gorm:"type:text"`
|
||
|
Sort
|
||
|
}
|
||
|
|
||
|
type Sharing struct {
|
||
|
*SharingDB
|
||
|
Files []string `json:"files"`
|
||
|
Creator *User `json:"-"`
|
||
|
}
|
||
|
|
||
|
func (s *Sharing) Valid() bool {
|
||
|
if s.Disabled {
|
||
|
return false
|
||
|
}
|
||
|
if s.MaxAccessed > 0 && s.Accessed >= s.MaxAccessed {
|
||
|
return false
|
||
|
}
|
||
|
if len(s.Files) == 0 {
|
||
|
return false
|
||
|
}
|
||
|
if !s.Creator.CanShare() {
|
||
|
return false
|
||
|
}
|
||
|
if s.Expires != nil && !s.Expires.IsZero() && s.Expires.Before(time.Now()) {
|
||
|
return false
|
||
|
}
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
func (s *Sharing) Verify(pwd string) bool {
|
||
|
return s.Pwd == "" || s.Pwd == pwd
|
||
|
}
|