feat(mobile): only allow request from mobile client to copy session
This commit is contained in:
parent
e4c87483d6
commit
bc0c374f00
3 changed files with 21 additions and 2 deletions
|
@ -3,9 +3,11 @@ package middleware
|
|||
import (
|
||||
"fmt"
|
||||
model "github.com/cloudreve/Cloudreve/v3/models"
|
||||
"github.com/cloudreve/Cloudreve/v3/pkg/auth"
|
||||
"github.com/cloudreve/Cloudreve/v3/pkg/hashid"
|
||||
"github.com/cloudreve/Cloudreve/v3/pkg/serializer"
|
||||
"github.com/gin-gonic/gin"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
// HashID 将给定对象的HashID转换为真实ID
|
||||
|
@ -60,3 +62,16 @@ func StaticResourceCache() gin.HandlerFunc {
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
// MobileRequestOnly
|
||||
func MobileRequestOnly() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
if c.GetHeader(auth.CrHeaderPrefix+"ios") == "" {
|
||||
c.Redirect(http.StatusMovedPermanently, model.GetSiteURL().String())
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -395,5 +395,4 @@ func UserPerformCopySession(c *gin.Context) {
|
|||
} else {
|
||||
c.JSON(200, ErrorResponse(err))
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -234,7 +234,12 @@ func InitMasterRouter() *gin.Engine {
|
|||
file.GET("archive/:sessionID/archive.zip", controllers.DownloadArchive)
|
||||
}
|
||||
|
||||
sign.GET("user/session/copy/:id", controllers.UserPerformCopySession)
|
||||
// Copy user session
|
||||
sign.GET(
|
||||
"user/session/copy/:id",
|
||||
middleware.MobileRequestOnly(),
|
||||
controllers.UserPerformCopySession,
|
||||
)
|
||||
}
|
||||
|
||||
// 从机的 RPC 通信
|
||||
|
|
Loading…
Add table
Reference in a new issue