Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add option to generate the demo users #2495

Merged
merged 4 commits into from
Sep 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions accounts/pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,10 @@ type GRPC struct {

// Server configures a server.
type Server struct {
Version string
Name string
HashDifficulty int
Version string
Name string
HashDifficulty int
DemoUsersAndGroups bool
}

// Asset defines the available asset configuration.
Expand Down
7 changes: 7 additions & 0 deletions accounts/pkg/flagset/flagset.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,13 @@ func ServerWithConfig(cfg *config.Config) []cli.Flag {
EnvVars: []string{"ACCOUNTS_HASH_DIFFICULTY"},
Destination: &cfg.Server.HashDifficulty,
},
&cli.BoolFlag{
Name: "demo-users-and-groups",
Value: flags.OverrideDefaultBool(cfg.Server.DemoUsersAndGroups, true),
Usage: "Enable demo users and groups",
EnvVars: []string{"ACCOUNTS_DEMO_USERS_AND_GROUPS"},
Destination: &cfg.Server.DemoUsersAndGroups,
},
&cli.StringFlag{
Name: "asset-path",
Value: flags.OverrideDefaultString(cfg.Asset.Path, ""),
Expand Down
1 change: 1 addition & 0 deletions accounts/pkg/proto/v0/accounts.pb.micro_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ func init() {

cfg := config.New()
cfg.Repo.Disk.Path = dataPath
cfg.Server.DemoUsersAndGroups = true
var hdlr *svc.Service
var err error

Expand Down
29 changes: 25 additions & 4 deletions accounts/pkg/service/v0/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,11 @@ func New(opts ...Option) (s *Service, err error) {
return nil, err
}

if err = s.createDefaultAccounts(); err != nil {
if err = s.createDefaultAccounts(cfg.Server.DemoUsersAndGroups); err != nil {
return nil, err
}

if err = s.createDefaultGroups(); err != nil {
if err = s.createDefaultGroups(cfg.Server.DemoUsersAndGroups); err != nil {
return nil, err
}
return
Expand Down Expand Up @@ -152,7 +152,7 @@ func configFromSvc(cfg *config.Config) (*idxcfg.Config, error) {
return c, nil
}

func (s Service) createDefaultAccounts() (err error) {
func (s Service) createDefaultAccounts(withDemoAccounts bool) (err error) {
accounts := []proto.Account{
{
Id: "4c510ada-c86b-4815-8820-42cdf82c3d51",
Expand Down Expand Up @@ -278,8 +278,19 @@ func (s Service) createDefaultAccounts() (err error) {
},
},
}

mustHaveAccounts := map[string]bool{
"bc596f3c-c955-4328-80a0-60d018b4ad57": true, // Reva IOP
"820ba2a1-3f54-4538-80a4-2d73007e30bf": true, // Kopano IDP
"ddc2004c-0977-11eb-9d3f-a793888cd0f8": true, // admin
}

// this only deals with the metadata service.
for i := range accounts {
if !withDemoAccounts && !mustHaveAccounts[accounts[i].Id] {
continue
}

a := &proto.Account{}
err := s.repo.LoadAccount(context.Background(), accounts[i].Id, a)
if !storage.IsNotFoundErr(err) {
Expand Down Expand Up @@ -323,7 +334,7 @@ func (s Service) createDefaultAccounts() (err error) {
return nil
}

func (s Service) createDefaultGroups() (err error) {
func (s Service) createDefaultGroups(withDemoGroups bool) (err error) {
groups := []proto.Group{
{Id: "34f38767-c937-4eb6-b847-1c175829a2a0", GidNumber: 15000, OnPremisesSamAccountName: "sysusers", DisplayName: "Technical users", Description: "A group for technical users. They should not show up in sharing dialogs.", Members: []*proto.Account{
{Id: "820ba2a1-3f54-4538-80a4-2d73007e30bf"}, // idp
Expand Down Expand Up @@ -358,7 +369,17 @@ func (s Service) createDefaultGroups() (err error) {
{Id: "932b4540-8d16-481e-8ef4-588e4b6b151c"}, // feynman
}},
}

mustHaveGroups := map[string]bool{
"34f38767-c937-4eb6-b847-1c175829a2a0": true, // sysusers
"509a9dcd-bb37-4f4f-a01a-19dca27d9cfa": true, // users
}

for i := range groups {
if !withDemoGroups && !mustHaveGroups[groups[i].Id] {
continue
}

g := &proto.Group{}
err := s.repo.LoadGroup(context.Background(), groups[i].Id, g)
if !storage.IsNotFoundErr(err) {
Expand Down
6 changes: 6 additions & 0 deletions changelog/unreleased/skip-demo-users.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Enhancement: Demo users and groups won't be generated unless requested

We've added a new environment variable to decide whether we should generate the demo users and groups or not. This environment variable is false by default, so the demo users and groups won't be generated by default.
There are still some users and groups automatically generated: for users: Reva IOP, Kopano IDP, admin; for groups: sysusers and users.

https://github.com/owncloud/ocis/pull/2495
4 changes: 3 additions & 1 deletion ocs/pkg/server/http/svc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -538,7 +538,9 @@ func init() {
)

c := &accountsCfg.Config{
Server: accountsCfg.Server{},
Server: accountsCfg.Server{
DemoUsersAndGroups: true,
},
Repo: accountsCfg.Repo{
Disk: accountsCfg.Disk{
Path: dataPath,
Expand Down