mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-26 15:02:52 -05:00
Add default roles on service start
This commit is contained in:
@@ -21,13 +21,32 @@ type Service struct {
|
||||
|
||||
// NewService returns a service implementation for Service.
|
||||
func NewService(cfg *config.Config, logger log.Logger) Service {
|
||||
return Service{
|
||||
service := Service{
|
||||
config: cfg,
|
||||
logger: logger,
|
||||
manager: store.New(cfg),
|
||||
}
|
||||
// FIXME: we're writing default roles per service start (i.e. twice at the moment, for http and grpc server).
|
||||
for _, role := range generateBundlesDefaultRoles() {
|
||||
bundleID := role.Extension + "." + role.Id
|
||||
// check if the role already exists
|
||||
bundle, _ := service.manager.ReadBundle(role.Id)
|
||||
if bundle != nil {
|
||||
logger.Debug().Msgf("Settings bundle %v already exists. Skipping.", bundleID)
|
||||
continue
|
||||
}
|
||||
// create the role
|
||||
_, err := service.manager.WriteBundle(role)
|
||||
if err != nil {
|
||||
logger.Error().Err(err).Msgf("Failed to register settings bundle %v", bundleID)
|
||||
}
|
||||
logger.Debug().Msgf("Successfully registered settings bundle %v", bundleID)
|
||||
}
|
||||
return service
|
||||
}
|
||||
|
||||
// TODO: check permissions on every request
|
||||
|
||||
// SaveBundle implements the BundleServiceHandler interface
|
||||
func (g Service) SaveBundle(c context.Context, req *proto.SaveBundleRequest, res *proto.SaveBundleResponse) error {
|
||||
cleanUpResource(c, req.Bundle.Resource)
|
||||
|
||||
65
pkg/service/v0/settings.go
Normal file
65
pkg/service/v0/settings.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package svc
|
||||
|
||||
import settings "github.com/owncloud/ocis-settings/pkg/proto/v0"
|
||||
|
||||
const (
|
||||
// BundleUUIDRoleAdmin represents the admin role
|
||||
BundleUUIDRoleAdmin = "71881883-1768-46bd-a24d-a356a2afdf7f"
|
||||
|
||||
// BundleUUIDRoleUser represents the user role.
|
||||
BundleUUIDRoleUser = "d7beeea8-8ff4-406b-8fb6-ab2dd81e6b11"
|
||||
|
||||
// BundleUUIDRoleGuest represents the guest role.
|
||||
BundleUUIDRoleGuest = "38071a68-456a-4553-846a-fa67bf5596cc"
|
||||
)
|
||||
|
||||
// generateBundlesDefaultRoles bootstraps the default roles.
|
||||
func generateBundlesDefaultRoles() []*settings.Bundle {
|
||||
return []*settings.Bundle{
|
||||
generateBundleAdminRole(),
|
||||
generateBundleUserRole(),
|
||||
generateBundleGuestRole(),
|
||||
}
|
||||
}
|
||||
|
||||
func generateBundleAdminRole() *settings.Bundle {
|
||||
return &settings.Bundle{
|
||||
Id: BundleUUIDRoleAdmin,
|
||||
Name: "admin",
|
||||
Type: settings.Bundle_TYPE_ROLE,
|
||||
Extension: "ocis-roles",
|
||||
DisplayName: "Admin",
|
||||
Resource: &settings.Resource{
|
||||
Type: settings.Resource_TYPE_SYSTEM,
|
||||
},
|
||||
Settings: []*settings.Setting{},
|
||||
}
|
||||
}
|
||||
|
||||
func generateBundleUserRole() *settings.Bundle {
|
||||
return &settings.Bundle{
|
||||
Id: BundleUUIDRoleUser,
|
||||
Name: "user",
|
||||
Type: settings.Bundle_TYPE_ROLE,
|
||||
Extension: "ocis-roles",
|
||||
DisplayName: "User",
|
||||
Resource: &settings.Resource{
|
||||
Type: settings.Resource_TYPE_SYSTEM,
|
||||
},
|
||||
Settings: []*settings.Setting{},
|
||||
}
|
||||
}
|
||||
|
||||
func generateBundleGuestRole() *settings.Bundle {
|
||||
return &settings.Bundle{
|
||||
Id: BundleUUIDRoleGuest,
|
||||
Name: "guest",
|
||||
Type: settings.Bundle_TYPE_ROLE,
|
||||
Extension: "ocis-roles",
|
||||
DisplayName: "Guest",
|
||||
Resource: &settings.Resource{
|
||||
Type: settings.Resource_TYPE_SYSTEM,
|
||||
},
|
||||
Settings: []*settings.Setting{},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user