service

package
v0.0.0-...-9eaf9d2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 6, 2022 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const SystemAdminID = 1
View Source
const SystemOwnerID = 2

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 ErrSpaceAlreadyExists = errors.New("space already exists")
View Source
var ErrSpaceNotFound = errors.New("space not found")
View Source
var ErrSystemOwnerNotFound = errors.New("SystemOwner not found")

Functions

func InitSystemAdmin

func InitSystemAdmin(rfFuncArg func(ctx context.Context, db *gorm.DB) (RepositoryFactory, error))

Types

type AppUser

type AppUser interface {
	domain.AppUserModel

	GetDefaultSpace(ctx context.Context) (Space, error)
	GetPersonalSpace(ctx context.Context) (Space, error)
}

func NewAppUser

func NewAppUser(rf RepositoryFactory, appUserModel domain.AppUserModel) (AppUser, error)

type AppUserAddParameter

type AppUserAddParameter interface {
	GetLoginID() string
	GetUsername() string
	GetRoles() []string
	GetProperties() map[string]string
}

func NewAppUserAddParameter

func NewAppUserAddParameter(loginID, username string, roles []string, properties map[string]string) (AppUserAddParameter, error)

type AppUserGroup

type AppUserGroup interface {
	domain.AppUserGroupModel
}

func NewAppUserGroup

func NewAppUserGroup(appUserGroupModel domain.AppUserGroupModel) (AppUserGroup, error)

NewAppUserGroup returns a new AppUserGroup

type AppUserGroupRepository

type AppUserGroupRepository interface {
	FindPublicGroup(ctx context.Context, operator domain.SystemOwnerModel) (AppUserGroup, error)

	AddPublicGroup(ctx context.Context, operator domain.SystemOwnerModel) (domain.AppUserGroupID, error)
}

type AppUserRepository

type AppUserRepository interface {
	FindSystemOwnerByOrganizationID(ctx context.Context, operator domain.SystemAdminModel, organizationID domain.OrganizationID) (SystemOwner, error)

	FindSystemOwnerByOrganizationName(ctx context.Context, operator domain.SystemAdminModel, organizationName string) (SystemOwner, error)

	FindAppUserByID(ctx context.Context, operator domain.AppUserModel, id domain.AppUserID) (AppUser, error)

	FindAppUserByLoginID(ctx context.Context, operator domain.AppUserModel, loginID string) (AppUser, error)

	FindOwnerByLoginID(ctx context.Context, operator domain.SystemOwnerModel, loginID string) (Owner, error)

	AddAppUser(ctx context.Context, operator domain.OwnerModel, param AppUserAddParameter) (domain.AppUserID, error)

	AddSystemOwner(ctx context.Context, operator domain.SystemAdminModel, organizationID domain.OrganizationID) (domain.AppUserID, error)

	AddFirstOwner(ctx context.Context, operator domain.SystemOwnerModel, param FirstOwnerAddParameter) (domain.AppUserID, error)
}

type FirstOwnerAddParameter

type FirstOwnerAddParameter interface {
	GetLoginID() string
	GetUsername() string
	GetPassword() string
}

func NewFirstOwnerAddParameter

func NewFirstOwnerAddParameter(loginID, username, password string) (FirstOwnerAddParameter, error)

type GroupUserRepository

type GroupUserRepository interface {
	AddGroupUser(ctx context.Context, operator domain.AppUserModel, appUserGroupID domain.AppUserGroupID, appUserID domain.AppUserID) error
}

type Organization

type Organization interface {
	domain.OrganizationModel
}

func NewOrganization

func NewOrganization(organizationModel domain.OrganizationModel) (Organization, error)

type OrganizationAddParameter

type OrganizationAddParameter interface {
	GetName() string
	GetFirstOwner() FirstOwnerAddParameter
}

func NewOrganizationAddParameter

func NewOrganizationAddParameter(name string, firstOwner FirstOwnerAddParameter) (OrganizationAddParameter, error)

type OrganizationRepository

type OrganizationRepository interface {
	GetOrganization(ctx context.Context, operator domain.AppUserModel) (Organization, error)

	FindOrganizationByName(ctx context.Context, operator domain.SystemAdminModel, name string) (Organization, error)

	FindOrganizationByID(ctx context.Context, operator domain.SystemAdminModel, id domain.OrganizationID) (Organization, error)

	AddOrganization(ctx context.Context, operator domain.SystemAdminModel, param OrganizationAddParameter) (domain.OrganizationID, error)
}

type Owner

type Owner interface {
	AppUser
}

func NewOwner

func NewOwner(rf RepositoryFactory, appUser AppUser) Owner

type RBACRepository

type RBACRepository interface {
	Init() error

	AddNamedPolicy(subject domain.RBACRole, object domain.RBACObject, action domain.RBACAction) error

	AddNamedGroupingPolicy(subject domain.RBACUser, object domain.RBACRole) error

	NewEnforcerWithRolesAndUsers(roles []domain.RBACRole, users []domain.RBACUser) (*casbin.Enforcer, error)
}

type RepositoryFactory

type RepositoryFactory interface {
	NewOrganizationRepository() OrganizationRepository
	NewSpaceRepository() SpaceRepository
	NewAppUserRepository() AppUserRepository
	NewAppUserGroupRepository() AppUserGroupRepository

	NewGroupUserRepository() GroupUserRepository
	NewUserSpaceRepository() UserSpaceRepository
	NewRBACRepository() RBACRepository
}

type RepositoryFactoryFunc

type RepositoryFactoryFunc func(ctx context.Context, db *gorm.DB) (RepositoryFactory, error)

type Space

type Space interface {
	domain.SpaceModel
}

func NewSpace

func NewSpace(spaceModel domain.SpaceModel) (Space, error)

type SpaceRepository

type SpaceRepository interface {
	FindDefaultSpace(ctx context.Context, operator domain.AppUserModel) (Space, error)

	FindPersonalSpace(ctx context.Context, operator domain.AppUserModel) (Space, error)

	FindSystemSpace(ctx context.Context, operator domain.AppUserModel) (Space, error)

	AddDefaultSpace(ctx context.Context, operator domain.SystemOwnerModel) (uint, error)

	AddPersonalSpace(ctx context.Context, operator domain.SystemOwnerModel, appUser domain.AppUserModel) (domain.SpaceID, error)

	AddSystemSpace(ctx context.Context, operator domain.SystemOwnerModel) (domain.SpaceID, error)
}

type SystemAdmin

type SystemAdmin interface {
	GetID() uint

	FindSystemOwnerByOrganizationID(ctx context.Context, organizationID domain.OrganizationID) (SystemOwner, error)

	FindSystemOwnerByOrganizationName(ctx context.Context, organizationName string) (SystemOwner, error)

	FindOrganizationByName(ctx context.Context, name string) (Organization, error)

	AddOrganization(ctx context.Context, parma OrganizationAddParameter) (domain.OrganizationID, error)
}

func NewSystemAdmin

func NewSystemAdmin(rf RepositoryFactory) SystemAdmin

func NewSystemAdminFromDB

func NewSystemAdminFromDB(ctx context.Context, db *gorm.DB) (SystemAdmin, error)

type SystemOwner

type SystemOwner interface {
	AppUser

	GetOrganization(ctxc context.Context) (Organization, error)

	FindAppUserByID(ctx context.Context, id domain.AppUserID) (AppUser, error)

	FindAppUserByLoginID(ctx context.Context, loginID string) (AppUser, error)

	FindSystemSpace(ctx context.Context) (Space, error)

	AddAppUser(ctx context.Context, param AppUserAddParameter) (domain.AppUserID, error)

	AddSystemSpace(ctx context.Context) (domain.SpaceID, error)
}

func NewSystemOwner

func NewSystemOwner(rf RepositoryFactory, appUser AppUser) (SystemOwner, error)

type UserSpaceRepository

type UserSpaceRepository interface {
	Add(ctx context.Context, operator domain.AppUserModel, spaceID domain.SpaceID) error
}

UserSpaceRepository mangages relationship between AppUser and Space

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL