mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-05-05 19:59:29 -05:00
[server][core] Accept User object in filesystem.UpdatePermissions
This commit is contained in:
@@ -34,7 +34,7 @@ func handleShareRequest(c *gin.Context) {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
r, err = fs.UpdatePermissions(r, user.ID, params.Permission)
|
||||
r, err = fs.UpdatePermissions(r, user, params.Permission)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
@@ -43,8 +43,8 @@ type User struct {
|
||||
|
||||
type LoggedInUser struct {
|
||||
User
|
||||
Home pgtype.UUID `json:"home"`
|
||||
Permissions core.Permissions `json:"permissions"`
|
||||
Home pgtype.UUID `json:"home"`
|
||||
Permissions core.UserPermissions `json:"permissions"`
|
||||
}
|
||||
|
||||
type Publink struct {
|
||||
|
||||
@@ -23,7 +23,7 @@ func setupGrantCommand() *cobra.Command {
|
||||
fmt.Println("unable to find user :" + err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
var p core.Permissions
|
||||
var p core.UserPermissions
|
||||
permString := strings.TrimSpace(args[1])
|
||||
if strings.HasPrefix(permString, "0x") {
|
||||
var perm int64
|
||||
@@ -60,7 +60,7 @@ func setupRevokeCommand() *cobra.Command {
|
||||
fmt.Println("unable to find user :" + err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
var p core.Permissions
|
||||
var p core.UserPermissions
|
||||
permString := strings.TrimSpace(args[1])
|
||||
if strings.HasPrefix(permString, "0x") {
|
||||
var perm int64
|
||||
|
||||
@@ -35,7 +35,7 @@ func setupSetfaclCommand() *cobra.Command {
|
||||
fmt.Println("cannot update permissions for user '" + email + "': " + err.Error())
|
||||
os.Exit(1)
|
||||
} else {
|
||||
if _, err := f.UpdatePermissions(r, user.ID, permission); err != nil {
|
||||
if _, err := f.UpdatePermissions(r, user, permission); err != nil {
|
||||
fmt.Println("cannot update permissions for '" + path + "': " + err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package core
|
||||
|
||||
type Config struct {
|
||||
Password PasswordConfig `koanf:"password"`
|
||||
BaseDir string `koanf:"basedir"`
|
||||
Permisison Permissions `koanf:"permission"`
|
||||
Password PasswordConfig `koanf:"password"`
|
||||
BaseDir string `koanf:"basedir"`
|
||||
Permisison UserPermissions `koanf:"permission"`
|
||||
}
|
||||
|
||||
type PasswordConfig struct {
|
||||
|
||||
@@ -50,8 +50,7 @@ type FileSystem interface {
|
||||
Move(r Resource, target string, conflictResolution ResourceBindConflictResolution) (Resource, bool, error)
|
||||
|
||||
// permissions.go
|
||||
// TODO: #users
|
||||
UpdatePermissions(r Resource, userID int32, permission Permission) (Resource, error)
|
||||
UpdatePermissions(r Resource, user User, permission Permission) (Resource, error)
|
||||
|
||||
//publink.go
|
||||
CreatePublink(r Resource, id, password string, expires pgtype.Timestamp, accessLimit int) error
|
||||
@@ -94,8 +93,8 @@ type UserManager interface {
|
||||
UpdateUserHome(user User, home pgtype.UUID) error
|
||||
UpdateUserName(user User, name string) error
|
||||
UpdateUserPassword(user User, password string) error
|
||||
GrantUserPermissions(user User, permissions Permissions) error
|
||||
RevokeUserPermissions(user User, permissions Permissions) error
|
||||
GrantUserPermissions(user User, permissions UserPermissions) error
|
||||
RevokeUserPermissions(user User, permissions UserPermissions) error
|
||||
|
||||
// user_bookmarks.go
|
||||
AddBookmark(u User, resource Resource, name string) (Bookmark, error)
|
||||
|
||||
@@ -54,7 +54,7 @@ func (m manager) CreateUser(email, name string, noCreateHome bool) (User, error)
|
||||
}
|
||||
|
||||
if homeID.Valid {
|
||||
if _, err := f.UpdatePermissions(home, user.ID, PermissionRead|PermissionWrite|PermissionShare); err != nil {
|
||||
if _, err := f.UpdatePermissions(home, user, PermissionRead|PermissionWrite|PermissionShare); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
package core
|
||||
|
||||
type Permissions = int32
|
||||
|
||||
const (
|
||||
PermissionUsersInvite = Permissions(0x10)
|
||||
PermissionUsersGrant = Permissions(0x20)
|
||||
PermissionFilesAll = Permissions(0x100)
|
||||
)
|
||||
@@ -15,7 +15,7 @@ const (
|
||||
PermissionSU = Permission(-1)
|
||||
)
|
||||
|
||||
func (f filesystem) UpdatePermissions(r Resource, userID int32, permission Permission) (Resource, error) {
|
||||
func (f filesystem) UpdatePermissions(r Resource, user User, permission Permission) (Resource, error) {
|
||||
if r.deleted.Valid {
|
||||
return r, ErrResourceDeleted
|
||||
}
|
||||
@@ -47,7 +47,7 @@ RETURNING grants`
|
||||
err := f.runInTx(func(f filesystem) error {
|
||||
row := f.db.QueryRow(q, pgx.NamedArgs{
|
||||
"resource_id": r.id,
|
||||
"user_id": userID,
|
||||
"user_id": user.ID,
|
||||
"permission": permission,
|
||||
})
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ func (m manager) UpdateUserPassword(user User, password string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m manager) GrantUserPermissions(user User, permissions Permissions) error {
|
||||
func (m manager) GrantUserPermissions(user User, permissions UserPermissions) error {
|
||||
const q = "UPDATE users SET permissions = permissions | $2::INTEGER, modified = NOW() WHERE id = $1::INT"
|
||||
if _, err := m.db.Exec(q, user.ID, permissions); err != nil {
|
||||
return err
|
||||
@@ -45,7 +45,7 @@ func (m manager) GrantUserPermissions(user User, permissions Permissions) error
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m manager) RevokeUserPermissions(user User, permissions Permissions) error {
|
||||
func (m manager) RevokeUserPermissions(user User, permissions UserPermissions) error {
|
||||
const q = "UPDATE users SET permissions = permissions & ~ $2::INTEGER, modified = NOW() WHERE id = $1::INT"
|
||||
if _, err := m.db.Exec(q, user.ID, permissions); err != nil {
|
||||
return err
|
||||
|
||||
@@ -5,12 +5,20 @@ import (
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
)
|
||||
|
||||
type UserPermissions = int32
|
||||
|
||||
const (
|
||||
PermissionUsersInvite = UserPermissions(0x10)
|
||||
PermissionUsersGrant = UserPermissions(0x20)
|
||||
PermissionFilesAll = UserPermissions(0x100)
|
||||
)
|
||||
|
||||
type User struct {
|
||||
ID int32
|
||||
Email string
|
||||
Name string
|
||||
Home pgtype.UUID
|
||||
Permissions Permissions
|
||||
Permissions UserPermissions
|
||||
}
|
||||
|
||||
func scanUser(row pgx.CollectableRow) (User, error) {
|
||||
|
||||
Reference in New Issue
Block a user