From 456217528b2521adf55a5e337a5001357945f5e1 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Fri, 11 Sep 2020 17:15:36 +0200 Subject: [PATCH 1/2] Bring back building the index on service start --- pkg/service/v0/accounts.go | 22 ++++++++++++++++++++++ pkg/service/v0/groups.go | 22 ++++++++++++++++++++++ pkg/service/v0/service.go | 15 ++++++--------- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/pkg/service/v0/accounts.go b/pkg/service/v0/accounts.go index 28e7489fe..97f0a523d 100644 --- a/pkg/service/v0/accounts.go +++ b/pkg/service/v0/accounts.go @@ -37,6 +37,28 @@ import ( // accLock mutually exclude readers from writers on account files var accLock sync.Mutex +func (s Service) indexAccounts(path string) (err error) { + var f *os.File + if f, err = os.Open(path); err != nil { + s.log.Error().Err(err).Str("dir", path).Msg("could not open accounts folder") + return + } + list, err := f.Readdir(-1) + f.Close() + if err != nil { + s.log.Error().Err(err).Str("dir", path).Msg("could not list accounts folder") + return + } + for _, file := range list { + err = s.indexAccount(file.Name()) + if err != nil { + s.log.Error().Err(err).Str("file", file.Name()).Msg("could not index account") + } + } + + return +} + func (s Service) indexAccount(id string) error { a := &proto.BleveAccount{ BleveType: "account", diff --git a/pkg/service/v0/groups.go b/pkg/service/v0/groups.go index 0e5f8a253..3201dce07 100644 --- a/pkg/service/v0/groups.go +++ b/pkg/service/v0/groups.go @@ -20,6 +20,28 @@ import ( // accLock mutually exclude readers from writers on group files var groupLock sync.Mutex +func (s Service) indexGroups(path string) (err error) { + var f *os.File + if f, err = os.Open(path); err != nil { + s.log.Error().Err(err).Str("dir", path).Msg("could not open groups folder") + return + } + list, err := f.Readdir(-1) + f.Close() + if err != nil { + s.log.Error().Err(err).Str("dir", path).Msg("could not list groups folder") + return + } + for _, file := range list { + err = s.indexGroup(file.Name()) + if err != nil { + s.log.Error().Err(err).Str("file", file.Name()).Msg("could not index account") + } + } + + return +} + func (s Service) indexGroup(id string) error { g := &proto.BleveGroup{ BleveType: "group", diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index ceafad450..ea7776ad6 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -68,12 +68,18 @@ func New(opts ...Option) (s *Service, err error) { if err = s.createDefaultAccounts(accountsDir); err != nil { return nil, err } + if err = s.indexAccounts(accountsDir); err != nil { + return nil, err + } // create default groups groupsDir := filepath.Join(cfg.Server.AccountsDataPath, "groups") if err = s.createDefaultGroups(groupsDir); err != nil { return nil, err } + if err = s.indexGroups(groupsDir); err != nil { + return nil, err + } // TODO watch folders for new records @@ -293,11 +299,6 @@ func (s Service) createDefaultAccounts(accountsDir string) (err error) { s.log.Error().Err(err).Str("path", path).Interface("account", &accounts[i]).Msg("could not persist default account") return } - if err = s.indexAccount(accounts[i].Id); err != nil { - accounts[i].PasswordProfile.Password = "***REMOVED***" - s.log.Error().Err(err).Str("path", path).Interface("account", &accounts[i]).Msg("could not index default account") - return - } } // set role for admin users and regular users @@ -376,10 +377,6 @@ func (s Service) createDefaultGroups(groupsDir string) (err error) { s.log.Error().Err(err).Str("path", path).Interface("group", &groups[i]).Msg("could not persist default group") return } - if err = s.indexGroup(groups[i].Id); err != nil { - s.log.Error().Err(err).Str("path", path).Interface("group", &groups[i]).Msg("could not index default group") - return - } } } } else if !fi.IsDir() { From 9e52ee42b9614b40b93f47d7209ced8cafdaf27b Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Fri, 11 Sep 2020 17:21:50 +0200 Subject: [PATCH 2/2] Change changelog --- changelog/unreleased/single-service-handler.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog/unreleased/single-service-handler.md b/changelog/unreleased/single-service-handler.md index 3d5918464..7dff27c74 100644 --- a/changelog/unreleased/single-service-handler.md +++ b/changelog/unreleased/single-service-handler.md @@ -6,4 +6,5 @@ This fixes a bug that accounts created through the web ui were not able to sign https://github.com/owncloud/product/issues/224 https://github.com/owncloud/ocis-accounts/pull/117 +https://github.com/owncloud/ocis-accounts/pull/118