fix: fix the share space uuid.

This commit is contained in:
lishuang
2023-07-08 15:21:05 +08:00
parent 95fcaada2b
commit 76d4752776
3 changed files with 44 additions and 29 deletions
+11 -29
View File
@@ -70,38 +70,19 @@ func (this *ShareController) RegisterRoutes() map[string]func(writer http.Respon
func (this *ShareController) Create(writer http.ResponseWriter, request *http.Request) *result.WebResult {
matterUuids := request.FormValue("matterUuids")
expireInfinityStr := request.FormValue("expireInfinity")
expireTimeStr := request.FormValue("expireTime")
if matterUuids == "" {
panic(result.BadRequest("matterUuids cannot be null"))
}
var expireTime time.Time
expireInfinity := false
if expireInfinityStr == TRUE {
expireInfinity = true
expireTime = time.Now()
} else {
if expireTimeStr == "" {
panic(result.BadRequest("time format error"))
} else {
expireTime = util.ConvertDateTimeStringToTime(expireTimeStr)
}
uuidArray := util.ExtractRequestArray(request, "matterUuids")
expireInfinity := util.ExtractRequestBool(request, "expireInfinity")
spaceUuid := util.ExtractRequestString(request, "spaceUuid")
var expireTime = time.Now()
if !expireInfinity {
expireTime = util.ExtractRequestTime(request, "expireTime")
if expireTime.Before(time.Now()) {
panic(result.BadRequest("expire time cannot before now"))
}
}
uuidArray := strings.Split(matterUuids, ",")
if len(uuidArray) == 0 {
panic(result.BadRequest("share at least one file"))
} else if len(uuidArray) > SHARE_MAX_NUM {
if len(uuidArray) > SHARE_MAX_NUM {
panic(result.BadRequestI18n(request, i18n.ShareNumExceedLimit, len(uuidArray), SHARE_MAX_NUM))
}
@@ -150,6 +131,7 @@ func (this *ShareController) Create(writer http.ResponseWriter, request *http.Re
Code: util.RandomString4(),
ExpireInfinity: expireInfinity,
ExpireTime: expireTime,
SpaceUuid: spaceUuid,
}
this.shareDao.Create(share)
@@ -194,14 +176,14 @@ func (this *ShareController) DeleteBatch(writer http.ResponseWriter, request *ht
for _, uuid := range uuidArray {
imageCache := this.shareDao.FindByUuid(uuid)
share := this.shareDao.FindByUuid(uuid)
user := this.checkUser(request)
if imageCache.UserUuid != user.Uuid {
if share.UserUuid != user.Uuid {
panic(result.UNAUTHORIZED)
}
this.shareDao.Delete(imageCache)
this.shareDao.Delete(share)
}
return this.Success("OK")
+1
View File
@@ -33,6 +33,7 @@ type Share struct {
Code string `json:"code" gorm:"type:varchar(45) not null"`
ExpireInfinity bool `json:"expireInfinity" gorm:"type:tinyint(1) not null;default:0"`
ExpireTime time.Time `json:"expireTime" gorm:"type:timestamp not null;default:'2018-01-01 00:00:00'"`
SpaceUuid string `json:"spaceUuid" gorm:"type:char(36) not null;index:idx_space_uuid"`
DirMatter *Matter `json:"dirMatter" gorm:"-"`
Matters []*Matter `json:"matters" gorm:"-"`
}
+32
View File
@@ -4,6 +4,8 @@ import (
"fmt"
"net/http"
"strconv"
"strings"
"time"
)
// param is required. when missing, panic error.
@@ -26,6 +28,20 @@ func ExtractRequestStringWithErrorHint(request *http.Request, key string, errorH
}
}
// split by comma , param is required. when missing, panic error.
func ExtractRequestArray(request *http.Request, key string) []string {
str := request.FormValue(key)
if str == "" {
panic(fmt.Sprintf("%s is required", key))
} else {
arr := strings.Split(str, ",")
if len(arr) == 0 {
panic(fmt.Sprintf("%s cannot be empty", key))
}
return arr
}
}
// param is required. when missing, panic error.
func ExtractRequestInt64(request *http.Request, key string) int64 {
keyStr := request.FormValue(key)
@@ -85,6 +101,22 @@ func ExtractRequestOptionalString(request *http.Request, key string, defaultValu
}
// param is required. when missing, panic error.
func ExtractRequestBool(request *http.Request, key string) bool {
str := request.FormValue(key)
if str == "true" {
return true
} else {
return false
}
}
// param is required. when missing, panic error.
func ExtractRequestTime(request *http.Request, key string) time.Time {
str := request.FormValue(key)
return ConvertDateTimeStringToTime(str)
}
// param is optional. when missing, use default.
func ExtractRequestOptionalBool(request *http.Request, key string, defaultValue bool) bool {
str := request.FormValue(key)
if str == "" {