fix(userstore): enable strict user checking
This commit is contained in:
parent
b7609e6c06
commit
d65f1c4356
8 changed files with 53 additions and 34 deletions
|
@ -37,7 +37,7 @@ var (
|
|||
DefaultSiteName = "Quickshare"
|
||||
DefaultSiteDesc = "Quickshare"
|
||||
DefaultBgConfig = &BgConfig{
|
||||
Repeat: "repeated",
|
||||
Repeat: "repeat",
|
||||
Position: "top",
|
||||
Align: "fixed",
|
||||
BgColor: "#ccc",
|
||||
|
@ -75,6 +75,16 @@ var (
|
|||
DefaultDownloadSpeedLimit = 50 * 1024 * 1024 // 50MB
|
||||
VisitorUploadSpeedLimit = 10 * 1024 * 1024 // 10MB
|
||||
VisitorDownloadSpeedLimit = 10 * 1024 * 1024 // 10MB
|
||||
|
||||
DefaultPreferences = Preferences{
|
||||
Bg: DefaultBgConfig,
|
||||
CSSURL: DefaultCSSURL,
|
||||
LanPackURL: DefaultLanPackURL,
|
||||
Lan: DefaultLan,
|
||||
Theme: DefaultTheme,
|
||||
Avatar: DefaultAvatar,
|
||||
Email: DefaultEmail,
|
||||
}
|
||||
)
|
||||
|
||||
type FileInfo struct {
|
||||
|
@ -231,9 +241,6 @@ func CheckPreferences(prefers *Preferences, fillDefault bool) error {
|
|||
prefers.Avatar = DefaultAvatar
|
||||
}
|
||||
if prefers.Email == "" {
|
||||
if !fillDefault {
|
||||
return ErrInvalidPreferences
|
||||
}
|
||||
prefers.Email = DefaultEmail
|
||||
}
|
||||
if prefers.Bg == nil {
|
||||
|
@ -281,7 +288,7 @@ func CheckBgConfig(cfg *BgConfig, fillDefault bool) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func CheckUser(user User, fillDefault bool) error {
|
||||
func CheckUser(user *User, fillDefault bool) error {
|
||||
if user.ID == 0 && user.Role != AdminRole {
|
||||
return ErrInvalidUser
|
||||
}
|
||||
|
|
|
@ -22,16 +22,6 @@ var (
|
|||
ErrReachedLimit = errors.New("reached space limit")
|
||||
ErrUserNotFound = errors.New("user not found")
|
||||
ErrNegtiveUsedSpace = errors.New("used space can not be negative")
|
||||
|
||||
DefaultPreferences = db.Preferences{
|
||||
Bg: db.DefaultBgConfig,
|
||||
CSSURL: db.DefaultCSSURL,
|
||||
LanPackURL: db.DefaultLanPackURL,
|
||||
Lan: db.DefaultLan,
|
||||
Theme: db.DefaultTheme,
|
||||
Avatar: db.DefaultAvatar,
|
||||
Email: db.DefaultEmail,
|
||||
}
|
||||
)
|
||||
|
||||
type IUserStore interface {
|
||||
|
@ -93,7 +83,7 @@ func (us *KVUserStore) Init(rootName, rootPwd string) error {
|
|||
UploadSpeedLimit: db.DefaultUploadSpeedLimit,
|
||||
DownloadSpeedLimit: db.DefaultDownloadSpeedLimit,
|
||||
},
|
||||
Preferences: &DefaultPreferences,
|
||||
Preferences: &db.DefaultPreferences,
|
||||
}
|
||||
|
||||
visitor := &db.User{
|
||||
|
@ -106,7 +96,7 @@ func (us *KVUserStore) Init(rootName, rootPwd string) error {
|
|||
UploadSpeedLimit: db.VisitorUploadSpeedLimit,
|
||||
DownloadSpeedLimit: db.VisitorDownloadSpeedLimit,
|
||||
},
|
||||
Preferences: &DefaultPreferences,
|
||||
Preferences: &db.DefaultPreferences,
|
||||
}
|
||||
|
||||
for _, user := range []*db.User{admin, visitor} {
|
||||
|
@ -134,6 +124,10 @@ func (us *KVUserStore) IsInited() bool {
|
|||
func (us *KVUserStore) setUser(user *db.User) error {
|
||||
var err error
|
||||
|
||||
if err = db.CheckUser(user, false); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
userID := fmt.Sprint(user.ID)
|
||||
err = us.store.SetStringIn(db.UserIDsNs, user.Name, userID)
|
||||
if err != nil {
|
||||
|
@ -159,6 +153,9 @@ func (us *KVUserStore) getUser(id uint64) (*db.User, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
if err = db.CheckUser(user, true); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return user, nil
|
||||
}
|
||||
|
||||
|
@ -178,6 +175,10 @@ func (us *KVUserStore) getUserByName(name string) (*db.User, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err = db.CheckUser(user, true); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return user, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -37,8 +37,8 @@ func TestUserStores(t *testing.T) {
|
|||
if root.Quota.DownloadSpeedLimit != db.DefaultDownloadSpeedLimit {
|
||||
t.Fatalf("incorrect root DownloadSpeedLimit")
|
||||
}
|
||||
if !db.ComparePreferences(root.Preferences, &DefaultPreferences) {
|
||||
t.Fatalf("incorrect preference %v %v", root.Preferences, DefaultPreferences)
|
||||
if !db.ComparePreferences(root.Preferences, &db.DefaultPreferences) {
|
||||
t.Fatalf("incorrect preference %v %v", root.Preferences, db.DefaultPreferences)
|
||||
}
|
||||
|
||||
visitor, err := store.GetUser(1)
|
||||
|
@ -63,7 +63,7 @@ func TestUserStores(t *testing.T) {
|
|||
if visitor.Quota.DownloadSpeedLimit != db.VisitorDownloadSpeedLimit {
|
||||
t.Fatalf("incorrect visitor DownloadSpeedLimit")
|
||||
}
|
||||
if !db.ComparePreferences(visitor.Preferences, &DefaultPreferences) {
|
||||
if !db.ComparePreferences(visitor.Preferences, &db.DefaultPreferences) {
|
||||
t.Fatalf("incorrect preference")
|
||||
}
|
||||
|
||||
|
@ -83,6 +83,7 @@ func TestUserStores(t *testing.T) {
|
|||
UploadSpeedLimit: upLimit1,
|
||||
DownloadSpeedLimit: downLimit1,
|
||||
},
|
||||
Preferences: &db.DefaultPreferences,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal("there should be no error")
|
||||
|
@ -191,7 +192,7 @@ func TestUserStores(t *testing.T) {
|
|||
Bg: &db.BgConfig{
|
||||
Url: "/url",
|
||||
Repeat: "repeat",
|
||||
Position: "pos",
|
||||
Position: "center",
|
||||
Align: "fixed",
|
||||
BgColor: "#333",
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue