🔒 Check permissions

This commit is contained in:
2020-10-27 19:48:09 +01:00
parent 5961b33ba0
commit 99bce4d1fc
3 changed files with 96 additions and 8 deletions
+25
View File
@@ -56,6 +56,7 @@ type ShareStore interface {
GetShares() ([]Share, error)
GetShareUsers(share Share) ([]ShareUser, error)
GetShareLogins(share Share, username string) ([]Login, error)
GetShareAccess(share Share, username string) (ShareRole, error)
FindShareByLogin(username, loginName string) (LoginShare, error)
FindSharesByUser(username string) ([]UserShare, error)
@@ -384,6 +385,30 @@ func (store *DBStore) AddUserToShare(share Share, username string, role ShareRol
})
}
func (store *DBStore) GetShareAccess(share Share, username string) (ShareRole, error) {
if strings.Contains(username, ":") {
return "", ErrInvalidUsername
}
var shareRole ShareRole
err := store.db.View(func(tx *buntdb.Tx) error {
if _, err := tx.Get(share.key()); err != nil {
return ErrShareNotFound
}
if val, err := tx.Get(share.userKey(username)); err == buntdb.ErrNotFound {
return ErrUserNotFound
} else if err != nil {
return fmt.Errorf("cannot get user: %w", err)
} else {
shareRole = ShareRole(val)
}
return nil
})
return shareRole, err
}
func (store *DBStore) removeUserFromShare(tx *buntdb.Tx, share Share, username string) error {
var logins []string
loginsPrefix := share.loginKey(username, "")