[server][core] Accept User object in filesystem.UpdatePermissions

This commit is contained in:
Abhishek Shroff
2025-06-06 00:49:33 +05:30
parent 1940bca1f3
commit 3fa962b5d0
11 changed files with 26 additions and 28 deletions
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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)
}
+3 -3
View File
@@ -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 {
+3 -4
View File
@@ -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)
+1 -1
View File
@@ -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
}
}
-9
View File
@@ -1,9 +0,0 @@
package core
type Permissions = int32
const (
PermissionUsersInvite = Permissions(0x10)
PermissionUsersGrant = Permissions(0x20)
PermissionFilesAll = Permissions(0x100)
)
+2 -2
View File
@@ -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,
})
+2 -2
View File
@@ -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
+9 -1
View File
@@ -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) {