40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
package source
|
|
|
|
import (
|
|
portainer "github.com/portainer/portainer/api"
|
|
"github.com/portainer/portainer/api/dataservices"
|
|
)
|
|
|
|
type UserContext = dataservices.SourceServiceUserContext
|
|
|
|
type userContext struct {
|
|
id portainer.UserID
|
|
role portainer.UserRole
|
|
memberships []portainer.TeamMembership
|
|
}
|
|
|
|
func (uc userContext) ID() portainer.UserID {
|
|
return uc.id
|
|
}
|
|
|
|
func (uc userContext) TeamMemberships() []portainer.TeamMembership {
|
|
return uc.memberships
|
|
}
|
|
|
|
func (uc userContext) IsAdmin() bool {
|
|
return uc.role == portainer.AdministratorRole
|
|
}
|
|
|
|
// Create a new admin context
|
|
//
|
|
// # THIS FUNCTION MUST NOT BE USED IN A USER-AWARE FLOW, ONLY FOR MIGRATIONS AND TESTS
|
|
//
|
|
// The only flows outside of migrations/test allowed to use this func is the datastore.Import/Export for sources
|
|
func InsecureNewAdminContext() UserContext {
|
|
return NewUserContext(&portainer.User{Role: portainer.AdministratorRole}, []portainer.TeamMembership{})
|
|
}
|
|
|
|
func NewUserContext(user *portainer.User, userMemberships []portainer.TeamMembership) UserContext {
|
|
return userContext{id: user.ID, role: user.Role, memberships: userMemberships}
|
|
}
|