mirror of https://github.com/cbeuw/Cloak
Forbid to create user without full UserInfo
This commit is contained in:
parent
fcb600efff
commit
a7c36c999c
|
|
@ -149,4 +149,4 @@ externalDocs:
|
|||
host: 127.0.0.1:8080
|
||||
basePath: /
|
||||
schemes:
|
||||
- http
|
||||
- http
|
||||
|
|
|
|||
|
|
@ -222,6 +222,14 @@ func (manager *localManager) WriteUserInfo(u UserInfo) (err error) {
|
|||
if err != nil {
|
||||
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 err = bucket.Put([]byte("SessionsCap"), i32ToB(*u.SessionsCap)); err != nil {
|
||||
return err
|
||||
|
|
|
|||
|
|
@ -41,10 +41,16 @@ func TestLocalManager_WriteUserInfo(t *testing.T) {
|
|||
mgr, cleaner := makeManager(t)
|
||||
defer cleaner()
|
||||
|
||||
err := mgr.WriteUserInfo(mockUserInfo)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
/* New user with partial UserInfo */
|
||||
err := mgr.WriteUserInfo(UserInfo{
|
||||
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)
|
||||
assert.NoError(t, err)
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ var ErrMangerIsVoid = errors.New("cannot perform operation with user manager as
|
|||
var ErrNoUpCredit = errors.New("No upload credit left")
|
||||
var ErrNoDownCredit = errors.New("No download credit left")
|
||||
var ErrUserExpired = errors.New("User has expired")
|
||||
var ErrInvalidUserInfo = errors.New("Invalid user info")
|
||||
|
||||
type UserManager interface {
|
||||
AuthenticateUser([]byte) (int64, int64, error)
|
||||
|
|
|
|||
Loading…
Reference in New Issue