feat: fileshare custom password support (#2493)

* feat: fileshare custom password support

* fix: blank password check

* feat: backend share link password check

* Revert "feat: backend share link password check"

This reverts commit 22c7bb0b35.

* feat: use go-playground/validator binding rule
pull/2498/head
WintBit 2025-06-16 16:34:47 +08:00 committed by GitHub
parent 40644f5234
commit 9d28fde00c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 1 deletions

View File

@ -111,6 +111,7 @@ type (
CreateShareArgs struct {
ExistedShareID int
IsPrivate bool
Password string
RemainDownloads int
Expire *time.Time
ShareView bool

View File

@ -4,6 +4,7 @@ import (
"context"
"encoding/gob"
"fmt"
"strings"
"time"
"github.com/cloudreve/Cloudreve/v4/application/constants"
@ -259,7 +260,10 @@ func (l *manager) CreateOrUpdateShare(ctx context.Context, path *fs.URI, args *C
password := ""
if args.IsPrivate {
password = util.RandString(8, util.RandomLowerCases)
password = args.Password
if strings.TrimSpace(password) == "" {
password = util.RandString(8, util.RandomLowerCases)
}
}
props := &types.ShareProps{

View File

@ -20,6 +20,7 @@ type (
ShareCreateService struct {
Uri string `json:"uri" binding:"required"`
IsPrivate bool `json:"is_private"`
Password string `json:"password" binding:"max=32,alphanum,omitempty"`
RemainDownloads int `json:"downloads"`
Expire int `json:"expire"`
ShareView bool `json:"share_view"`
@ -52,6 +53,7 @@ func (service *ShareCreateService) Upsert(c *gin.Context, existed int) (string,
share, err := m.CreateOrUpdateShare(c, uri, &manager.CreateShareArgs{
IsPrivate: service.IsPrivate,
Password: service.Password,
RemainDownloads: service.RemainDownloads,
Expire: expires,
ExistedShareID: existed,