feat(users): enable quota in handlers
This commit is contained in:
parent
75e10e6ad9
commit
e73947de0d
4 changed files with 60 additions and 34 deletions
|
@ -354,11 +354,19 @@ func (h *MultiUsersSvc) AddUser(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
spaceLimit := h.cfg.IntOr("Users.SpaceLimit", 1024)
|
||||
uploadSpeedLimit := h.cfg.IntOr("Users.UploadSpeedLimit", 100*1024)
|
||||
downloadSpeedLimit := h.cfg.IntOr("Users.DownloadSpeedLimit", 100*1024)
|
||||
err = h.deps.Users().AddUser(&userstore.User{
|
||||
ID: uid,
|
||||
Name: req.Name,
|
||||
Pwd: string(pwdHash),
|
||||
Role: req.Role,
|
||||
Quota: &userstore.Quota{
|
||||
SpaceLimit: spaceLimit,
|
||||
UploadSpeedLimit: uploadSpeedLimit,
|
||||
DownloadSpeedLimit: downloadSpeedLimit,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
c.JSON(q.ErrResp(c, 500, err))
|
||||
|
|
|
@ -20,6 +20,9 @@ type UsersCfg struct {
|
|||
CaptchaWidth int `json:"captchaWidth" yaml:"captchaWidth"`
|
||||
CaptchaHeight int `json:"captchaHeight" yaml:"captchaHeight"`
|
||||
CaptchaEnabled bool `json:"captchaEnabled" yaml:"captchaEnabled"`
|
||||
UploadSpeedLimit int `json:"uploadSpeedLimit" yaml:"uploadSpeedLimit"`
|
||||
DownloadSpeedLimit int `json:"downloadSpeedLimit" yaml:"downloadSpeedLimit"`
|
||||
SpaceLimit int `json:"spaceLimit" yaml:"spaceLimit"`
|
||||
}
|
||||
|
||||
type Secrets struct {
|
||||
|
@ -66,6 +69,9 @@ func DefaultConfig() (string, error) {
|
|||
CaptchaWidth: 256,
|
||||
CaptchaHeight: 60,
|
||||
CaptchaEnabled: true,
|
||||
UploadSpeedLimit: 100 * 1024, // B
|
||||
DownloadSpeedLimit: 100 * 1024, // B
|
||||
SpaceLimit: 1024, // GB
|
||||
},
|
||||
Secrets: &Secrets{
|
||||
TokenSecret: "",
|
||||
|
|
|
@ -17,14 +17,16 @@ const (
|
|||
InitNs = "usersInit"
|
||||
IDsNs = "ids"
|
||||
UsersNs = "users"
|
||||
PwdsNs = "pwds"
|
||||
RolesNs = "roles"
|
||||
RoleListNs = "roleList"
|
||||
InitTimeKey = "initTime"
|
||||
|
||||
defaultSpaceLimit = 1024 // 1GB
|
||||
defaultUploadSpeedLimit = 100 * 1024 // 100KB
|
||||
defaultDownloadSpeedLimit = 100 * 1024 // 100KB
|
||||
)
|
||||
|
||||
type Quota struct {
|
||||
SpaceLimit int64 `json:"spaceLimit,string"`
|
||||
SpaceLimit int `json:"spaceLimit"`
|
||||
UploadSpeedLimit int `json:"uploadSpeedLimit"`
|
||||
DownloadSpeedLimit int `json:"downloadSpeedLimit"`
|
||||
}
|
||||
|
@ -44,8 +46,6 @@ type IUserStore interface {
|
|||
DelUser(id uint64) error
|
||||
GetUser(id uint64) (*User, error)
|
||||
GetUserByName(name string) (*User, error)
|
||||
// SetName(id uint64, name string) error
|
||||
// SetRole(id uint64, role string) error
|
||||
SetInfo(id uint64, user *User) error
|
||||
SetPwd(id uint64, pwd string) error
|
||||
ListUsers() ([]*User, error)
|
||||
|
@ -66,8 +66,6 @@ func NewKVUserStore(store kvstore.IKVStore) (*KVUserStore, error) {
|
|||
for _, nsName := range []string{
|
||||
IDsNs,
|
||||
UsersNs,
|
||||
PwdsNs,
|
||||
RolesNs,
|
||||
InitNs,
|
||||
RoleListNs,
|
||||
} {
|
||||
|
@ -90,6 +88,11 @@ func (us *KVUserStore) Init(rootName, rootPwd string) error {
|
|||
Name: rootName,
|
||||
Pwd: rootPwd,
|
||||
Role: AdminRole,
|
||||
Quota: &Quota{
|
||||
SpaceLimit: defaultSpaceLimit,
|
||||
UploadSpeedLimit: defaultUploadSpeedLimit,
|
||||
DownloadSpeedLimit: defaultDownloadSpeedLimit,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
|
@ -23,14 +23,23 @@ func TestUserStores(t *testing.T) {
|
|||
t.Fatalf("passwords not match %s", err)
|
||||
}
|
||||
if root.Role != AdminRole {
|
||||
t.Fatalf("incorrect root fole")
|
||||
t.Fatalf("incorrect root role")
|
||||
}
|
||||
if root.Quota.SpaceLimit != defaultSpaceLimit {
|
||||
t.Fatalf("incorrect root SpaceLimit")
|
||||
}
|
||||
if root.Quota.UploadSpeedLimit != defaultUploadSpeedLimit {
|
||||
t.Fatalf("incorrect root UploadSpeedLimit")
|
||||
}
|
||||
if root.Quota.DownloadSpeedLimit != defaultDownloadSpeedLimit {
|
||||
t.Fatalf("incorrect root DownloadSpeedLimit")
|
||||
}
|
||||
|
||||
id, name1 := uint64(1), "test_user1"
|
||||
pwd1, pwd2 := "666", "888"
|
||||
role1, role2 := UserRole, AdminRole
|
||||
spaceLimit1, upLimit1, downLimit1 := int64(3), 5, 7
|
||||
spaceLimit2, upLimit2, downLimit2 := int64(11), 13, 17
|
||||
spaceLimit1, upLimit1, downLimit1 := 3, 5, 7
|
||||
spaceLimit2, upLimit2, downLimit2 := 11, 13, 17
|
||||
|
||||
err = store.AddUser(&User{
|
||||
ID: id,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue