Documentation
¶
Index ¶
- Constants
- Variables
- func NewRBACAllUserRolesObject(organizationID *domain.OrganizationID) domain.RBACObject
- func NewRBACAppUser(organizationID *domain.OrganizationID, appUserID *domain.AppUserID) domain.RBACUser
- func NewRBACOrganization(organizationID *domain.OrganizationID) domain.RBACDomain
- func NewRBACUserRole(organizationID *domain.OrganizationID, userGroupID *domain.UserGroupID) domain.RBACRole
- func NewRBACUserRoleObject(organizationID *domain.OrganizationID, userRoleID *domain.UserGroupID) domain.RBACObject
- type AppUser
- type AppUserAddParameter
- func (p *AppUserAddParameter) LoginID() string
- func (p *AppUserAddParameter) Password() string
- func (p *AppUserAddParameter) Provider() string
- func (p *AppUserAddParameter) ProviderAuthToken() string
- func (p *AppUserAddParameter) ProviderLoginID() string
- func (p *AppUserAddParameter) ProviderRefreshToken() string
- func (p *AppUserAddParameter) Username() string
- type AppUserAddParameterInterface
- type AppUserInterface
- type AppUserRepository
- type AuthorizationManager
- type Option
- type Organization
- type OrganizationAddParameter
- type OrganizationAddParameterInterface
- type OrganizationRepository
- type Owner
- func (m *Owner) AddAppUser(ctx context.Context, param AppUserAddParameterInterface) (*domain.AppUserID, error)
- func (m *Owner) AppUserID() *domain.AppUserID
- func (m *Owner) IsOwner() bool
- func (m *Owner) LoginID() string
- func (m *Owner) OrganizationID() *domain.OrganizationID
- func (m *Owner) Username() string
- type OwnerModelInterface
- type PairOfUserAndGroupRepository
- type RBACRepository
- type RepositoryFactory
- type SystemAdmin
- func (m *SystemAdmin) AddOrganization(ctx context.Context, param OrganizationAddParameterInterface) (*domain.OrganizationID, error)
- func (m *SystemAdmin) AppUserID() *domain.AppUserID
- func (m *SystemAdmin) FindOrganizationByName(ctx context.Context, name string) (*Organization, error)
- func (m *SystemAdmin) FindSystemOwnerByOrganizationID(ctx context.Context, organizationID *domain.OrganizationID) (*SystemOwner, error)
- func (m *SystemAdmin) FindSystemOwnerByOrganizationName(ctx context.Context, organizationName string) (*SystemOwner, error)
- func (m *SystemAdmin) IsSystemAdmin() bool
- type SystemAdminInterface
- type SystemOwner
- func (m *SystemOwner) AddAppUser(ctx context.Context, param AppUserAddParameterInterface) (*domain.AppUserID, error)
- func (m *SystemOwner) AddFirstOwner(ctx context.Context, param AppUserAddParameterInterface) (*domain.AppUserID, error)
- func (m *SystemOwner) AppUserID() *domain.AppUserID
- func (m *SystemOwner) FindAppUserByID(ctx context.Context, id *domain.AppUserID) (*AppUser, error)
- func (m *SystemOwner) FindAppUserByLoginID(ctx context.Context, loginID string) (*AppUser, error)
- func (m *SystemOwner) GetOrganization(ctx context.Context) (*Organization, error)
- func (m *SystemOwner) IsOwner() bool
- func (m *SystemOwner) IsSystemOwner() bool
- func (m *SystemOwner) LoginID() string
- func (m *SystemOwner) OrganizationID() *domain.OrganizationID
- func (m *SystemOwner) Username() string
- type SystemOwnerInterface
- type TransactionManager
- type UserGroup
- type UserGroupAddParameter
- type UserGroupAddParameterInterface
- type UserGroupRepository
Constants ¶
View Source
const ( UserServiceContextKey libdomain.ContextKey = "user_service" SystemAdminLoginID = "__system_admin" SystemOwnerLoginID = "__system_owner" SystemOwnerGroupKey = "__system_owner" OwnerGroupKey = "__owner" SystemOwnerGroupName = "System Owner" OwnerGroupName = "Owner" )
Variables ¶
View Source
var ErrAppUserAlreadyExists = errors.New("AppUser already exists")
View Source
var ErrAppUserNotFound = errors.New("AppUser not found")
View Source
var ErrOrganizationAlreadyExists = errors.New("organization already exists")
View Source
var ErrOrganizationNotFound = errors.New("organization not found")
View Source
var ErrSystemOwnerNotFound = errors.New("SystemOwner not found")
View Source
var RBACAllowEffect = domain.NewRBACEffect("allow")
View Source
var RBACDenyEffect = domain.NewRBACEffect("deny")
View Source
var RBACSetAction = domain.NewRBACAction("Set")
View Source
var RBACUnsetAction = domain.NewRBACAction("Unset")
Functions ¶
func NewRBACAllUserRolesObject ¶
func NewRBACAllUserRolesObject(organizationID *domain.OrganizationID) domain.RBACObject
func NewRBACAppUser ¶
func NewRBACOrganization ¶
func NewRBACOrganization(organizationID *domain.OrganizationID) domain.RBACDomain
func NewRBACUserRole ¶
func NewRBACUserRole(organizationID *domain.OrganizationID, userGroupID *domain.UserGroupID) domain.RBACRole
func NewRBACUserRole(userRoleID domain.UserGroupID) domain.RBACRole {
return domain.NewRBACRole(fmt.Sprintf("role_%d", userRoleID.Int()))
}
func NewRBACUserRoleObject ¶
func NewRBACUserRoleObject(organizationID *domain.OrganizationID, userRoleID *domain.UserGroupID) domain.RBACObject
Types ¶
type AppUser ¶
type AppUser struct {
*domain.AppUserModel
}
func NewAppUser ¶
func NewAppUser(ctx context.Context, rf RepositoryFactory, appUserModel *domain.AppUserModel) (*AppUser, error)
func (*AppUser) OrganizationID ¶ added in v0.0.3
func (m *AppUser) OrganizationID() *domain.OrganizationID
type AppUserAddParameter ¶
type AppUserAddParameter struct {
LoginIDInternal string
UsernameInternal string
PasswordInternal string
ProviderInternal string
ProviderLoginIDInternal string
ProviderAuthTokenInternal string
// contains filtered or unexported fields
}
func NewAppUserAddParameter ¶
func NewAppUserAddParameter(loginID, username, password, provider, providerLoginID, providerAuthToken, providerRefreshToken string) (*AppUserAddParameter, error)
func (*AppUserAddParameter) LoginID ¶ added in v0.0.3
func (p *AppUserAddParameter) LoginID() string
func (*AppUserAddParameter) Password ¶ added in v0.0.3
func (p *AppUserAddParameter) Password() string
func (*AppUserAddParameter) Provider ¶ added in v0.0.5
func (p *AppUserAddParameter) Provider() string
func (*AppUserAddParameter) ProviderAuthToken ¶ added in v0.0.5
func (p *AppUserAddParameter) ProviderAuthToken() string
func (*AppUserAddParameter) ProviderLoginID ¶ added in v0.0.5
func (p *AppUserAddParameter) ProviderLoginID() string
func (*AppUserAddParameter) ProviderRefreshToken ¶ added in v0.0.5
func (p *AppUserAddParameter) ProviderRefreshToken() string
func (*AppUserAddParameter) Username ¶ added in v0.0.3
func (p *AppUserAddParameter) Username() string
type AppUserAddParameterInterface ¶ added in v0.0.3
type AppUserInterface ¶ added in v0.0.3
type AppUserRepository ¶
type AppUserRepository interface {
FindSystemOwnerByOrganizationID(ctx context.Context, operator SystemAdminInterface, organizationID *domain.OrganizationID) (*SystemOwner, error)
FindSystemOwnerByOrganizationName(ctx context.Context, operator SystemAdminInterface, organizationName string, options ...Option) (*SystemOwner, error)
FindAppUserByID(ctx context.Context, operator AppUserInterface, id *domain.AppUserID, options ...Option) (*AppUser, error)
FindAppUserByLoginID(ctx context.Context, operator AppUserInterface, loginID string) (*AppUser, error)
FindOwnerByLoginID(ctx context.Context, operator SystemOwnerInterface, loginID string) (*Owner, error)
AddAppUser(ctx context.Context, operator OwnerModelInterface, param AppUserAddParameterInterface) (*domain.AppUserID, error)
AddSystemOwner(ctx context.Context, operator SystemAdminInterface, organizationID *domain.OrganizationID) (*domain.AppUserID, error)
VerifyPassword(ctx context.Context, operator SystemAdminInterface, organizationID *domain.OrganizationID, loginID, password string) (bool, error)
}
type AuthorizationManager ¶
type AuthorizationManager interface {
Init(ctx context.Context) error
AddUserToGroup(ctx context.Context, operator AppUserInterface, appUserID *domain.AppUserID, userGroupID *domain.UserGroupID) error
AddUserToGroupBySystemAdmin(ctx context.Context, operator SystemAdminInterface, organizationID *domain.OrganizationID, appUserID *domain.AppUserID, userGroupID *domain.UserGroupID) error
AddPolicyToUser(ctx context.Context, operator AppUserInterface, subject domain.RBACSubject, action domain.RBACAction, object domain.RBACObject, effect domain.RBACEffect) error
AddPolicyToUserBySystemAdmin(ctx context.Context, operator SystemAdminInterface, organizationID *domain.OrganizationID, subject domain.RBACSubject, action domain.RBACAction, object domain.RBACObject, effect domain.RBACEffect) error
AddPolicyToGroup(ctx context.Context, operator AppUserInterface, subject domain.RBACSubject, action domain.RBACAction, object domain.RBACObject, effect domain.RBACEffect) error
AddPolicyToGroupBySystemAdmin(ctx context.Context, operator SystemAdminInterface, organizationID *domain.OrganizationID, subject domain.RBACSubject, action domain.RBACAction, object domain.RBACObject, effect domain.RBACEffect) error
Authorize(ctx context.Context, operator AppUserInterface, rbacAction domain.RBACAction, rbacObject domain.RBACObject) (bool, error)
}
type Organization ¶
type Organization struct {
*domain.OrganizationModel
}
func NewOrganization ¶
func NewOrganization(organizationModel *domain.OrganizationModel) (*Organization, error)
func (*Organization) Name ¶ added in v0.0.3
func (m *Organization) Name() string
func (*Organization) OrganizationID ¶ added in v0.0.3
func (m *Organization) OrganizationID() *domain.OrganizationID
type OrganizationAddParameter ¶
type OrganizationAddParameter struct {
Name_ string `validate:"required"`
FirstOwner_ AppUserAddParameterInterface
}
func NewOrganizationAddParameter ¶
func NewOrganizationAddParameter(name string, firstOwner AppUserAddParameterInterface) (*OrganizationAddParameter, error)
func (*OrganizationAddParameter) FirstOwner ¶ added in v0.0.3
func (p *OrganizationAddParameter) FirstOwner() AppUserAddParameterInterface
func (*OrganizationAddParameter) Name ¶ added in v0.0.3
func (p *OrganizationAddParameter) Name() string
type OrganizationAddParameterInterface ¶ added in v0.0.3
type OrganizationAddParameterInterface interface {
Name() string
FirstOwner() AppUserAddParameterInterface
}
type OrganizationRepository ¶
type OrganizationRepository interface {
GetOrganization(ctx context.Context, operator AppUserInterface) (*Organization, error)
FindOrganizationByName(ctx context.Context, operator SystemAdminInterface, name string) (*Organization, error)
FindOrganizationByID(ctx context.Context, operator SystemAdminInterface, id *domain.OrganizationID) (*Organization, error)
AddOrganization(ctx context.Context, operator SystemAdminInterface, param OrganizationAddParameterInterface) (*domain.OrganizationID, error)
}
type Owner ¶
type Owner struct {
*domain.OwnerModel
// contains filtered or unexported fields
}
func NewOwner ¶
func NewOwner(rf RepositoryFactory, ownerModel *domain.OwnerModel) *Owner
func (*Owner) AddAppUser ¶ added in v0.0.3
func (*Owner) OrganizationID ¶ added in v0.0.3
func (m *Owner) OrganizationID() *domain.OrganizationID
type OwnerModelInterface ¶ added in v0.0.3
type OwnerModelInterface interface {
AppUserInterface
IsOwner() bool
}
type PairOfUserAndGroupRepository ¶
type PairOfUserAndGroupRepository interface {
AddPairOfUserAndGroupBySystemAdmin(ctx context.Context, operator SystemAdminInterface, organizationID *domain.OrganizationID, appUserID *domain.AppUserID, userGroupID *domain.UserGroupID) error
AddPairOfUserAndGroup(ctx context.Context, operator AppUserInterface, appUserID *domain.AppUserID, userGroupID *domain.UserGroupID) error
RemovePairOfUserAndGroup(ctx context.Context, operator AppUserInterface, appUserID *domain.AppUserID, userGroupID *domain.UserGroupID) error
FindUserGroupsByUserID(ctx context.Context, operator AppUserInterface, appUserID *domain.AppUserID) ([]*domain.UserGroupModel, error)
}
type RBACRepository ¶
type RBACRepository interface {
Init() error
AddPolicy(ctx context.Context, domain domain.RBACDomain, subject domain.RBACSubject, action domain.RBACAction, object domain.RBACObject, effect domain.RBACEffect) error
AddSubjectGroupingPolicy(ctx context.Context, domain domain.RBACDomain, subject domain.RBACUser, object domain.RBACRole) error
AddObjectGroupingPolicy(ctx context.Context, domain domain.RBACDomain, child domain.RBACObject, parent domain.RBACObject) error
RemovePolicy(ctx context.Context, domain domain.RBACDomain, subject domain.RBACSubject, action domain.RBACAction, object domain.RBACObject, effect domain.RBACEffect) error
RemoveSubjectGroupingPolicy(ctx context.Context, domain domain.RBACDomain, subject domain.RBACUser, object domain.RBACRole) error
RemoveObjectGroupingPolicy(ctx context.Context, domain domain.RBACDomain, child domain.RBACObject, parent domain.RBACObject) error
NewEnforcerWithGroupsAndUsers(ctx context.Context, roles []domain.RBACRole, users []domain.RBACUser) (*casbin.Enforcer, error)
}
type RepositoryFactory ¶
type RepositoryFactory interface {
NewOrganizationRepository(ctx context.Context) OrganizationRepository
NewAppUserRepository(ctx context.Context) AppUserRepository
NewUserGroupRepository(ctx context.Context) UserGroupRepository
NewAuthorizationManager(ctx context.Context) AuthorizationManager
}
type SystemAdmin ¶
type SystemAdmin struct {
*domain.SystemAdminModel
// contains filtered or unexported fields
}
func NewSystemAdmin ¶
func NewSystemAdmin(ctx context.Context, rf RepositoryFactory) (*SystemAdmin, error)
func (*SystemAdmin) AddOrganization ¶
func (m *SystemAdmin) AddOrganization(ctx context.Context, param OrganizationAddParameterInterface) (*domain.OrganizationID, error)
func (*SystemAdmin) AppUserID ¶ added in v0.0.3
func (m *SystemAdmin) AppUserID() *domain.AppUserID
func (*SystemAdmin) FindOrganizationByName ¶
func (m *SystemAdmin) FindOrganizationByName(ctx context.Context, name string) (*Organization, error)
func (*SystemAdmin) FindSystemOwnerByOrganizationID ¶
func (m *SystemAdmin) FindSystemOwnerByOrganizationID(ctx context.Context, organizationID *domain.OrganizationID) (*SystemOwner, error)
func (*SystemAdmin) FindSystemOwnerByOrganizationName ¶
func (m *SystemAdmin) FindSystemOwnerByOrganizationName(ctx context.Context, organizationName string) (*SystemOwner, error)
func (*SystemAdmin) IsSystemAdmin ¶ added in v0.0.3
func (m *SystemAdmin) IsSystemAdmin() bool
type SystemAdminInterface ¶ added in v0.0.3
type SystemOwner ¶
type SystemOwner struct {
*domain.SystemOwnerModel
// contains filtered or unexported fields
}
func NewSystemOwner ¶
func NewSystemOwner(ctx context.Context, rf RepositoryFactory, systemOwnerModel *domain.SystemOwnerModel) (*SystemOwner, error)
func (*SystemOwner) AddAppUser ¶ added in v0.0.5
func (m *SystemOwner) AddAppUser(ctx context.Context, param AppUserAddParameterInterface) (*domain.AppUserID, error)
func (*SystemOwner) AddFirstOwner ¶
func (m *SystemOwner) AddFirstOwner(ctx context.Context, param AppUserAddParameterInterface) (*domain.AppUserID, error)
func (*SystemOwner) AppUserID ¶ added in v0.0.3
func (m *SystemOwner) AppUserID() *domain.AppUserID
func (*SystemOwner) FindAppUserByID ¶
func (*SystemOwner) FindAppUserByLoginID ¶
func (*SystemOwner) GetOrganization ¶
func (m *SystemOwner) GetOrganization(ctx context.Context) (*Organization, error)
func (*SystemOwner) IsOwner ¶ added in v0.0.3
func (m *SystemOwner) IsOwner() bool
func (*SystemOwner) IsSystemOwner ¶ added in v0.0.3
func (m *SystemOwner) IsSystemOwner() bool
func (*SystemOwner) LoginID ¶ added in v0.0.3
func (m *SystemOwner) LoginID() string
func (*SystemOwner) OrganizationID ¶ added in v0.0.3
func (m *SystemOwner) OrganizationID() *domain.OrganizationID
func (*SystemOwner) Username ¶ added in v0.0.3
func (m *SystemOwner) Username() string
type SystemOwnerInterface ¶ added in v0.0.3
type SystemOwnerInterface interface {
OwnerModelInterface
IsSystemOwner() bool
}
type TransactionManager ¶
type TransactionManager interface {
Do(ctx context.Context, fn func(rf RepositoryFactory) error) error
}
type UserGroup ¶
type UserGroup struct {
*domain.UserGroupModel
}
func NewUserGroup ¶
func NewUserGroup(userGroupModel *domain.UserGroupModel) (*UserGroup, error)
NewUserGroup returns a new UserGroup
func (*UserGroup) Description ¶ added in v0.0.3
func (*UserGroup) OrganizationID ¶ added in v0.0.3
func (m *UserGroup) OrganizationID() *domain.OrganizationID
func (*UserGroup) UserGroupID ¶ added in v0.0.3
func (m *UserGroup) UserGroupID() *domain.UserGroupID
type UserGroupAddParameter ¶
type UserGroupAddParameter struct {
KeyInternal string
NameInternal string
DescriptionInternal string
}
func NewUserGroupAddParameter ¶
func NewUserGroupAddParameter(key, name, description string) (*UserGroupAddParameter, error)
func (*UserGroupAddParameter) Description ¶ added in v0.0.3
func (p *UserGroupAddParameter) Description() string
func (*UserGroupAddParameter) Key ¶ added in v0.0.3
func (p *UserGroupAddParameter) Key() string
func (*UserGroupAddParameter) Name ¶ added in v0.0.3
func (p *UserGroupAddParameter) Name() string
type UserGroupAddParameterInterface ¶ added in v0.0.3
type UserGroupRepository ¶
type UserGroupRepository interface {
FindAllUserGroups(ctx context.Context, operator AppUserInterface) ([]*domain.UserGroupModel, error)
FindSystemOwnerGroup(ctx context.Context, operator SystemAdminInterface, organizationID *domain.OrganizationID) (*UserGroup, error)
FindUserGroupByKey(ctx context.Context, operator AppUserInterface, key string) (*UserGroup, error)
FindUserGroupByID(ctx context.Context, operator AppUserInterface, userGroupID *domain.UserGroupID) (*UserGroup, error)
AddOwnerGroup(ctx context.Context, operator SystemOwnerInterface, organizationID *domain.OrganizationID) (*domain.UserGroupID, error)
AddSystemOwnerGroup(ctx context.Context, operator SystemAdminInterface, organizationID *domain.OrganizationID) (*domain.UserGroupID, error)
AddUserGroup(ctx context.Context, operator OwnerModelInterface, parameter UserGroupAddParameterInterface) (*domain.UserGroupID, error)
}
Source Files
¶
Click to show internal directories.
Click to hide internal directories.