mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2025-12-30 17:48:52 -05:00
Add support for autoprovisioning group memberships from OIDC claims. Users are added to and removed from groups based on the value of an OIDC claim. If a group does not exist, it is created. Closes: #5538
27 lines
1023 B
Go
27 lines
1023 B
Go
package backend
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
cs3 "github.com/cs3org/go-cs3apis/cs3/identity/user/v1beta1"
|
|
)
|
|
|
|
var (
|
|
// ErrAccountNotFound account not found
|
|
ErrAccountNotFound = errors.New("user not found")
|
|
// ErrAccountDisabled account disabled
|
|
ErrAccountDisabled = errors.New("account disabled")
|
|
// ErrNotSupported operation not supported by user-backend
|
|
ErrNotSupported = errors.New("operation not supported")
|
|
)
|
|
|
|
// UserBackend allows the proxy to retrieve users from different user-backends (accounts-service, CS3)
|
|
type UserBackend interface {
|
|
GetUserByClaims(ctx context.Context, claim, value string) (*cs3.User, string, error)
|
|
Authenticate(ctx context.Context, username string, password string) (*cs3.User, string, error)
|
|
CreateUserFromClaims(ctx context.Context, claims map[string]interface{}) (*cs3.User, error)
|
|
UpdateUserIfNeeded(ctx context.Context, user *cs3.User, claims map[string]interface{}) error
|
|
SyncGroupMemberships(ctx context.Context, user *cs3.User, claims map[string]interface{}) error
|
|
}
|