mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-04-27 07:40:27 -05:00
34 lines
836 B
Go
34 lines
836 B
Go
package fs
|
|
|
|
import (
|
|
"github.com/shroff/phylum/server/internal/core/db"
|
|
)
|
|
|
|
func (r Resource) UpdatePermissions(username string, permission Permission) (Resource, error) {
|
|
if !r.hasPermission(PermissionShare) {
|
|
return Resource{}, ErrInsufficientPermissions
|
|
}
|
|
// Do not grant more than what you have
|
|
permission = permission & r.userPermission
|
|
|
|
var p []byte
|
|
var err error
|
|
if permission == 0 {
|
|
p, err = r.f.db.RemoveUserPermissionForResource(r.f.ctx, db.RemoveUserPermissionForResourceParams{
|
|
ResourceID: r.ID(),
|
|
Username: username,
|
|
})
|
|
} else {
|
|
p, err = r.f.db.UpdateUserPermissionsForResource(r.f.ctx, db.UpdateUserPermissionsForResourceParams{
|
|
ResourceID: r.ID(),
|
|
Username: username,
|
|
Permission: permission,
|
|
})
|
|
}
|
|
if err != nil {
|
|
return Resource{}, err
|
|
}
|
|
r.Info.permissions = p
|
|
return r, nil
|
|
}
|