Forbid to create user without full UserInfo

This commit is contained in:
puh 2023-09-29 09:11:09 +03:00
parent fcb600efff
commit a7c36c999c
No known key found for this signature in database
GPG Key ID: 171E3E1356CEE151
4 changed files with 20 additions and 5 deletions

View File

@ -149,4 +149,4 @@ externalDocs:
host: 127.0.0.1:8080 host: 127.0.0.1:8080
basePath: / basePath: /
schemes: schemes:
- http - http

View File

@ -222,6 +222,14 @@ func (manager *localManager) WriteUserInfo(u UserInfo) (err error) {
if err != nil { if err != nil {
return err return err
} }
k, v := bucket.Cursor().First()
// Registration required full UserInfo
if k == nil && v == nil {
if u.SessionsCap == nil || u.UpRate == nil || u.DownRate == nil ||
u.UpCredit == nil || u.DownCredit == nil || u.ExpiryTime == nil {
return ErrInvalidUserInfo
}
}
if u.SessionsCap != nil { if u.SessionsCap != nil {
if err = bucket.Put([]byte("SessionsCap"), i32ToB(*u.SessionsCap)); err != nil { if err = bucket.Put([]byte("SessionsCap"), i32ToB(*u.SessionsCap)); err != nil {
return err return err

View File

@ -41,10 +41,16 @@ func TestLocalManager_WriteUserInfo(t *testing.T) {
mgr, cleaner := makeManager(t) mgr, cleaner := makeManager(t)
defer cleaner() defer cleaner()
err := mgr.WriteUserInfo(mockUserInfo) /* New user with partial UserInfo */
if err != nil { err := mgr.WriteUserInfo(UserInfo{
t.Error(err) UID: mockUID,
} SessionsCap: JustInt32(*mockUserInfo.SessionsCap + 1),
})
assert.Error(t, err, ErrInvalidUserInfo)
/* New user with full UserInfo */
err = mgr.WriteUserInfo(mockUserInfo)
assert.NoError(t, err)
got, err := mgr.GetUserInfo(mockUID) got, err := mgr.GetUserInfo(mockUID)
assert.NoError(t, err) assert.NoError(t, err)

View File

@ -52,6 +52,7 @@ var ErrMangerIsVoid = errors.New("cannot perform operation with user manager as
var ErrNoUpCredit = errors.New("No upload credit left") var ErrNoUpCredit = errors.New("No upload credit left")
var ErrNoDownCredit = errors.New("No download credit left") var ErrNoDownCredit = errors.New("No download credit left")
var ErrUserExpired = errors.New("User has expired") var ErrUserExpired = errors.New("User has expired")
var ErrInvalidUserInfo = errors.New("Invalid user info")
type UserManager interface { type UserManager interface {
AuthenticateUser([]byte) (int64, int64, error) AuthenticateUser([]byte) (int64, int64, error)