Get rid of hardcoded admin user uuid

The UUID is generated by `ocs init` now and stored in the config file.
To avoid that every ocis install uses the same UUID

Closes: #3524
This commit is contained in:
Ralf Haferkamp
2022-05-04 12:42:28 +02:00
committed by Ralf Haferkamp
parent c312ecf926
commit 7ef205d232
17 changed files with 52 additions and 14 deletions
@@ -41,5 +41,9 @@ func Validate(cfg *config.Config) error {
return shared.MissingMachineAuthApiKeyError(cfg.Service.Name)
}
if cfg.AdminUserID == "" {
return shared.MissingAdminUserID(cfg.Service.Name)
}
return nil
}
@@ -126,7 +126,7 @@ func (g Service) RegisterDefaultRoles() {
}
}
for _, req := range defaultRoleAssignments() {
for _, req := range g.defaultRoleAssignments() {
if _, err := g.manager.WriteRoleAssignment(req.AccountUuid, req.RoleId); err != nil {
g.logger.Error().Err(err).Msg("failed to register role assignment")
}
@@ -532,14 +532,14 @@ func generatePermissionRequests() []*settingssvc.AddSettingToBundleRequest {
}
}
func defaultRoleAssignments() []*settingsmsg.UserRoleAssignment {
func (g Service) defaultRoleAssignments() []*settingsmsg.UserRoleAssignment {
return []*settingsmsg.UserRoleAssignment{
// default admin users
{
AccountUuid: "058bff95-6708-4fe5-91e4-9ea3d377588b", // demo user "moss"
RoleId: BundleUUIDRoleAdmin,
}, {
AccountUuid: "ddc2004c-0977-11eb-9d3f-a793888cd0f8",
AccountUuid: g.config.Commons.AdminUserID,
RoleId: BundleUUIDRoleAdmin,
},
// default users with role "user"
@@ -1,6 +1,7 @@
package defaults
import (
"github.com/owncloud/ocis/extensions/settings/pkg/config"
settingsmsg "github.com/owncloud/ocis/protogen/gen/ocis/messages/settings/v0"
)
@@ -496,14 +497,14 @@ var languageSetting = settingsmsg.Setting_SingleChoiceValue{
}
// DefaultRoleAssignments returns (as one might guess) the default role assignments
func DefaultRoleAssignments() []*settingsmsg.UserRoleAssignment {
func DefaultRoleAssignments(cfg *config.Config) []*settingsmsg.UserRoleAssignment {
return []*settingsmsg.UserRoleAssignment{
// default admin users
{
AccountUuid: "058bff95-6708-4fe5-91e4-9ea3d377588b", // demo user "moss"
RoleId: BundleUUIDRoleAdmin,
}, {
AccountUuid: "ddc2004c-0977-11eb-9d3f-a793888cd0f8",
AccountUuid: cfg.Commons.AdminUserID,
RoleId: BundleUUIDRoleAdmin,
},
// default users with role "user"
@@ -14,7 +14,7 @@ import (
// ListRoleAssignments loads and returns all role assignments matching the given assignment identifier.
func (s *Store) ListRoleAssignments(accountUUID string) ([]*settingsmsg.UserRoleAssignment, error) {
if s.mdc == nil {
return defaultRoleAssignments(accountUUID), nil
return s.defaultRoleAssignments(accountUUID), nil
}
s.Init()
ctx := context.TODO()
@@ -92,9 +92,9 @@ func (s *Store) RemoveRoleAssignment(assignmentID string) error {
return fmt.Errorf("assignmentID '%s' not found", assignmentID)
}
func defaultRoleAssignments(accID string) []*settingsmsg.UserRoleAssignment {
func (s *Store) defaultRoleAssignments(accID string) []*settingsmsg.UserRoleAssignment {
var assmnts []*settingsmsg.UserRoleAssignment
for _, r := range defaults.DefaultRoleAssignments() {
for _, r := range defaults.DefaultRoleAssignments(s.cfg) {
if r.AccountUuid == accID {
assmnts = append(assmnts, r)
}
@@ -5,8 +5,10 @@ import (
"sync"
"testing"
"github.com/gofrs/uuid"
"github.com/owncloud/ocis/extensions/settings/pkg/config/defaults"
olog "github.com/owncloud/ocis/ocis-pkg/log"
"github.com/owncloud/ocis/ocis-pkg/shared"
settingsmsg "github.com/owncloud/ocis/protogen/gen/ocis/messages/settings/v0"
"github.com/stretchr/testify/require"
)
@@ -18,7 +20,6 @@ var (
s = &Store{
Logger: logger,
l: &sync.Mutex{},
cfg: defaults.DefaultConfig(),
}
logger = olog.NewLogger(
@@ -89,6 +90,11 @@ var (
)
func init() {
s.cfg = defaults.DefaultConfig()
s.cfg.Commons = &shared.Commons{
AdminUserID: uuid.Must(uuid.NewV4()).String(),
}
_ = NewMDC(s)
setupRoles()
}
@@ -123,7 +123,7 @@ func (s *Store) initMetadataClient(mdc MetadataClient) error {
}
}
for _, p := range defaults.DefaultRoleAssignments() {
for _, p := range defaults.DefaultRoleAssignments(s.cfg) {
accountUUID := p.AccountUuid
roleID := p.RoleId
err = mdc.MakeDirIfNotExist(ctx, accountPath(accountUUID))