🔒 Check permissions
This commit is contained in:
@@ -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, "")
|
||||
|
||||
Reference in New Issue
Block a user