package bolt import portainer "github.com/portainer/portainer/api" // Init creates the default data set. func (store *Store) Init() error { groups, err := store.EndpointGroupService.EndpointGroups() if err != nil { return err } if len(groups) == 0 { unassignedGroup := &portainer.EndpointGroup{ Name: "Unassigned", Description: "Unassigned endpoints", Labels: []portainer.Pair{}, UserAccessPolicies: portainer.UserAccessPolicies{}, TeamAccessPolicies: portainer.TeamAccessPolicies{}, Tags: []string{}, } err = store.EndpointGroupService.CreateEndpointGroup(unassignedGroup) if err != nil { return err } } roles, err := store.RoleService.Roles() if err != nil { return err } if len(roles) == 0 { environmentAdministratorRole := &portainer.Role{ Name: "Endpoint administrator", Description: "Full control of all resources in an endpoint", Authorizations: map[portainer.Authorization]bool{ portainer.OperationDockerContainerArchiveInfo: true, portainer.OperationDockerContainerList: true, portainer.OperationDockerContainerExport: true, portainer.OperationDockerContainerChanges: true, portainer.OperationDockerContainerInspect: true, portainer.OperationDockerContainerTop: true, portainer.OperationDockerContainerLogs: true, portainer.OperationDockerContainerStats: true, portainer.OperationDockerContainerAttachWebsocket: true, portainer.OperationDockerContainerArchive: true, portainer.OperationDockerContainerCreate: true, portainer.OperationDockerContainerPrune: true, portainer.OperationDockerContainerKill: true, portainer.OperationDockerContainerPause: true, portainer.OperationDockerContainerUnpause: true, portainer.OperationDockerContainerRestart: true, portainer.OperationDockerContainerStart: true, portainer.OperationDockerContainerStop: true, portainer.OperationDockerContainerWait: true, portainer.OperationDockerContainerResize: true, portainer.OperationDockerContainerAttach: true, portainer.OperationDockerContainerExec: true, portainer.OperationDockerContainerRename: true, portainer.OperationDockerContainerUpdate: true, portainer.OperationDockerContainerPutContainerArchive: true, portainer.OperationDockerContainerDelete: true, portainer.OperationDockerImageList: true, portainer.OperationDockerImageSearch: true, portainer.OperationDockerImageGetAll: true, portainer.OperationDockerImageGet: true, portainer.OperationDockerImageHistory: true, portainer.OperationDockerImageInspect: true, portainer.OperationDockerImageLoad: true, portainer.OperationDockerImageCreate: true, portainer.OperationDockerImagePrune: true, portainer.OperationDockerImagePush: true, portainer.OperationDockerImageTag: true, portainer.OperationDockerImageDelete: true, portainer.OperationDockerImageCommit: true, portainer.OperationDockerImageBuild: true, portainer.OperationDockerNetworkList: true, portainer.OperationDockerNetworkInspect: true, portainer.OperationDockerNetworkCreate: true, portainer.OperationDockerNetworkConnect: true, portainer.OperationDockerNetworkDisconnect: true, portainer.OperationDockerNetworkPrune: true, portainer.OperationDockerNetworkDelete: true, portainer.OperationDockerVolumeList: true, portainer.OperationDockerVolumeInspect: true, portainer.OperationDockerVolumeCreate: true, portainer.OperationDockerVolumePrune: true, portainer.OperationDockerVolumeDelete: true, portainer.OperationDockerExecInspect: true, portainer.OperationDockerExecStart: true, portainer.OperationDockerExecResize: true, portainer.OperationDockerSwarmInspect: true, portainer.OperationDockerSwarmUnlockKey: true, portainer.OperationDockerSwarmInit: true, portainer.OperationDockerSwarmJoin: true, portainer.OperationDockerSwarmLeave: true, portainer.OperationDockerSwarmUpdate: true, portainer.OperationDockerSwarmUnlock: true, portainer.OperationDockerNodeList: true, portainer.OperationDockerNodeInspect: true, portainer.OperationDockerNodeUpdate: true, portainer.OperationDockerNodeDelete: true, portainer.OperationDockerServiceList: true, portainer.OperationDockerServiceInspect: true, portainer.OperationDockerServiceLogs: true, portainer.OperationDockerServiceCreate: true, portainer.OperationDockerServiceUpdate: true, portainer.OperationDockerServiceDelete: true, portainer.OperationDockerSecretList: true, portainer.OperationDockerSecretInspect: true, portainer.OperationDockerSecretCreate: true, portainer.OperationDockerSecretUpdate: true, portainer.OperationDockerSecretDelete: true, portainer.OperationDockerConfigList: true, portainer.OperationDockerConfigInspect: true, portainer.OperationDockerConfigCreate: true, portainer.OperationDockerConfigUpdate: true, portainer.OperationDockerConfigDelete: true, portainer.OperationDockerTaskList: true, portainer.OperationDockerTaskInspect: true, portainer.OperationDockerTaskLogs: true, portainer.OperationDockerPluginList: true, portainer.OperationDockerPluginPrivileges: true, portainer.OperationDockerPluginInspect: true, portainer.OperationDockerPluginPull: true, portainer.OperationDockerPluginCreate: true, portainer.OperationDockerPluginEnable: true, portainer.OperationDockerPluginDisable: true, portainer.OperationDockerPluginPush: true, portainer.OperationDockerPluginUpgrade: true, portainer.OperationDockerPluginSet: true, portainer.OperationDockerPluginDelete: true, portainer.OperationDockerSessionStart: true, portainer.OperationDockerDistributionInspect: true, portainer.OperationDockerBuildPrune: true, portainer.OperationDockerBuildCancel: true, portainer.OperationDockerPing: true, portainer.OperationDockerInfo: true, portainer.OperationDockerVersion: true, portainer.OperationDockerEvents: true, portainer.OperationDockerSystem: true, portainer.OperationDockerUndefined: true, portainer.OperationDockerAgentPing: true, portainer.OperationDockerAgentList: true, portainer.OperationDockerAgentHostInfo: true, portainer.OperationDockerAgentBrowseDelete: true, portainer.OperationDockerAgentBrowseGet: true, portainer.OperationDockerAgentBrowseList: true, portainer.OperationDockerAgentBrowsePut: true, portainer.OperationDockerAgentBrowseRename: true, portainer.OperationDockerAgentUndefined: true, portainer.OperationPortainerResourceControlCreate: true, portainer.OperationPortainerResourceControlUpdate: true, portainer.OperationPortainerResourceControlDelete: true, portainer.OperationPortainerStackList: true, portainer.OperationPortainerStackInspect: true, portainer.OperationPortainerStackFile: true, portainer.OperationPortainerStackCreate: true, portainer.OperationPortainerStackMigrate: true, portainer.OperationPortainerStackUpdate: true, portainer.OperationPortainerStackDelete: true, portainer.OperationPortainerWebsocketExec: true, portainer.OperationPortainerWebhookList: true, portainer.OperationPortainerWebhookCreate: true, portainer.OperationPortainerWebhookDelete: true, portainer.OperationIntegrationStoridgeAdmin: true, portainer.EndpointResourcesAccess: true, }, } err = store.RoleService.CreateRole(environmentAdministratorRole) if err != nil { return err } environmentReadOnlyUserRole := &portainer.Role{ Name: "Helpdesk", Description: "Read-only access of all resources in an endpoint", Authorizations: map[portainer.Authorization]bool{ portainer.OperationDockerContainerArchiveInfo: true, portainer.OperationDockerContainerList: true, portainer.OperationDockerContainerChanges: true, portainer.OperationDockerContainerInspect: true, portainer.OperationDockerContainerTop: true, portainer.OperationDockerContainerLogs: true, portainer.OperationDockerContainerStats: true, portainer.OperationDockerImageList: true, portainer.OperationDockerImageSearch: true, portainer.OperationDockerImageGetAll: true, portainer.OperationDockerImageGet: true, portainer.OperationDockerImageHistory: true, portainer.OperationDockerImageInspect: true, portainer.OperationDockerNetworkList: true, portainer.OperationDockerNetworkInspect: true, portainer.OperationDockerVolumeList: true, portainer.OperationDockerVolumeInspect: true, portainer.OperationDockerSwarmInspect: true, portainer.OperationDockerNodeList: true, portainer.OperationDockerNodeInspect: true, portainer.OperationDockerServiceList: true, portainer.OperationDockerServiceInspect: true, portainer.OperationDockerServiceLogs: true, portainer.OperationDockerSecretList: true, portainer.OperationDockerSecretInspect: true, portainer.OperationDockerConfigList: true, portainer.OperationDockerConfigInspect: true, portainer.OperationDockerTaskList: true, portainer.OperationDockerTaskInspect: true, portainer.OperationDockerTaskLogs: true, portainer.OperationDockerPluginList: true, portainer.OperationDockerDistributionInspect: true, portainer.OperationDockerPing: true, portainer.OperationDockerInfo: true, portainer.OperationDockerVersion: true, portainer.OperationDockerEvents: true, portainer.OperationDockerSystem: true, portainer.OperationDockerAgentPing: true, portainer.OperationDockerAgentList: true, portainer.OperationDockerAgentHostInfo: true, portainer.OperationDockerAgentBrowseGet: true, portainer.OperationDockerAgentBrowseList: true, portainer.OperationPortainerStackList: true, portainer.OperationPortainerStackInspect: true, portainer.OperationPortainerStackFile: true, portainer.OperationPortainerWebhookList: true, portainer.EndpointResourcesAccess: true, }, } err = store.RoleService.CreateRole(environmentReadOnlyUserRole) if err != nil { return err } standardUserRole := &portainer.Role{ Name: "Standard user", Description: "Full control of assigned resources in an endpoint", Authorizations: map[portainer.Authorization]bool{ portainer.OperationDockerContainerArchiveInfo: true, portainer.OperationDockerContainerList: true, portainer.OperationDockerContainerExport: true, portainer.OperationDockerContainerChanges: true, portainer.OperationDockerContainerInspect: true, portainer.OperationDockerContainerTop: true, portainer.OperationDockerContainerLogs: true, portainer.OperationDockerContainerStats: true, portainer.OperationDockerContainerAttachWebsocket: true, portainer.OperationDockerContainerArchive: true, portainer.OperationDockerContainerCreate: true, portainer.OperationDockerContainerKill: true, portainer.OperationDockerContainerPause: true, portainer.OperationDockerContainerUnpause: true, portainer.OperationDockerContainerRestart: true, portainer.OperationDockerContainerStart: true, portainer.OperationDockerContainerStop: true, portainer.OperationDockerContainerWait: true, portainer.OperationDockerContainerResize: true, portainer.OperationDockerContainerAttach: true, portainer.OperationDockerContainerExec: true, portainer.OperationDockerContainerRename: true, portainer.OperationDockerContainerUpdate: true, portainer.OperationDockerContainerPutContainerArchive: true, portainer.OperationDockerContainerDelete: true, portainer.OperationDockerImageList: true, portainer.OperationDockerImageSearch: true, portainer.OperationDockerImageGetAll: true, portainer.OperationDockerImageGet: true, portainer.OperationDockerImageHistory: true, portainer.OperationDockerImageInspect: true, portainer.OperationDockerImageLoad: true, portainer.OperationDockerImageCreate: true, portainer.OperationDockerImagePush: true, portainer.OperationDockerImageTag: true, portainer.OperationDockerImageDelete: true, portainer.OperationDockerImageCommit: true, portainer.OperationDockerImageBuild: true, portainer.OperationDockerNetworkList: true, portainer.OperationDockerNetworkInspect: true, portainer.OperationDockerNetworkCreate: true, portainer.OperationDockerNetworkConnect: true, portainer.OperationDockerNetworkDisconnect: true, portainer.OperationDockerNetworkDelete: true, portainer.OperationDockerVolumeList: true, portainer.OperationDockerVolumeInspect: true, portainer.OperationDockerVolumeCreate: true, portainer.OperationDockerVolumeDelete: true, portainer.OperationDockerExecInspect: true, portainer.OperationDockerExecStart: true, portainer.OperationDockerExecResize: true, portainer.OperationDockerSwarmInspect: true, portainer.OperationDockerSwarmUnlockKey: true, portainer.OperationDockerSwarmInit: true, portainer.OperationDockerSwarmJoin: true, portainer.OperationDockerSwarmLeave: true, portainer.OperationDockerSwarmUpdate: true, portainer.OperationDockerSwarmUnlock: true, portainer.OperationDockerNodeList: true, portainer.OperationDockerNodeInspect: true, portainer.OperationDockerNodeUpdate: true, portainer.OperationDockerNodeDelete: true, portainer.OperationDockerServiceList: true, portainer.OperationDockerServiceInspect: true, portainer.OperationDockerServiceLogs: true, portainer.OperationDockerServiceCreate: true, portainer.OperationDockerServiceUpdate: true, portainer.OperationDockerServiceDelete: true, portainer.OperationDockerSecretList: true, portainer.OperationDockerSecretInspect: true, portainer.OperationDockerSecretCreate: true, portainer.OperationDockerSecretUpdate: true, portainer.OperationDockerSecretDelete: true, portainer.OperationDockerConfigList: true, portainer.OperationDockerConfigInspect: true, portainer.OperationDockerConfigCreate: true, portainer.OperationDockerConfigUpdate: true, portainer.OperationDockerConfigDelete: true, portainer.OperationDockerTaskList: true, portainer.OperationDockerTaskInspect: true, portainer.OperationDockerTaskLogs: true, portainer.OperationDockerPluginList: true, portainer.OperationDockerPluginPrivileges: true, portainer.OperationDockerPluginInspect: true, portainer.OperationDockerPluginPull: true, portainer.OperationDockerPluginCreate: true, portainer.OperationDockerPluginEnable: true, portainer.OperationDockerPluginDisable: true, portainer.OperationDockerPluginPush: true, portainer.OperationDockerPluginUpgrade: true, portainer.OperationDockerPluginSet: true, portainer.OperationDockerPluginDelete: true, portainer.OperationDockerSessionStart: true, portainer.OperationDockerDistributionInspect: true, portainer.OperationDockerBuildPrune: true, portainer.OperationDockerBuildCancel: true, portainer.OperationDockerPing: true, portainer.OperationDockerInfo: true, portainer.OperationDockerVersion: true, portainer.OperationDockerEvents: true, portainer.OperationDockerSystem: true, portainer.OperationDockerUndefined: true, portainer.OperationDockerAgentPing: true, portainer.OperationDockerAgentList: true, portainer.OperationDockerAgentHostInfo: true, portainer.OperationDockerAgentBrowseDelete: true, portainer.OperationDockerAgentBrowseGet: true, portainer.OperationDockerAgentBrowseList: true, portainer.OperationDockerAgentBrowsePut: true, portainer.OperationDockerAgentBrowseRename: true, portainer.OperationDockerAgentUndefined: true, portainer.OperationPortainerResourceControlCreate: true, portainer.OperationPortainerResourceControlUpdate: true, portainer.OperationPortainerResourceControlDelete: true, portainer.OperationPortainerStackList: true, portainer.OperationPortainerStackInspect: true, portainer.OperationPortainerStackFile: true, portainer.OperationPortainerStackCreate: true, portainer.OperationPortainerStackMigrate: true, portainer.OperationPortainerStackUpdate: true, portainer.OperationPortainerStackDelete: true, portainer.OperationPortainerWebsocketExec: true, portainer.OperationPortainerWebhookList: true, portainer.OperationPortainerWebhookCreate: true, }, } err = store.RoleService.CreateRole(standardUserRole) if err != nil { return err } readOnlyUserRole := &portainer.Role{ Name: "Read-only user", Description: "Read-only access of assigned resources in an endpoint", Authorizations: map[portainer.Authorization]bool{ portainer.OperationDockerContainerArchiveInfo: true, portainer.OperationDockerContainerList: true, portainer.OperationDockerContainerChanges: true, portainer.OperationDockerContainerInspect: true, portainer.OperationDockerContainerTop: true, portainer.OperationDockerContainerLogs: true, portainer.OperationDockerContainerStats: true, portainer.OperationDockerImageList: true, portainer.OperationDockerImageSearch: true, portainer.OperationDockerImageGetAll: true, portainer.OperationDockerImageGet: true, portainer.OperationDockerImageHistory: true, portainer.OperationDockerImageInspect: true, portainer.OperationDockerNetworkList: true, portainer.OperationDockerNetworkInspect: true, portainer.OperationDockerVolumeList: true, portainer.OperationDockerVolumeInspect: true, portainer.OperationDockerSwarmInspect: true, portainer.OperationDockerNodeList: true, portainer.OperationDockerNodeInspect: true, portainer.OperationDockerServiceList: true, portainer.OperationDockerServiceInspect: true, portainer.OperationDockerServiceLogs: true, portainer.OperationDockerSecretList: true, portainer.OperationDockerSecretInspect: true, portainer.OperationDockerConfigList: true, portainer.OperationDockerConfigInspect: true, portainer.OperationDockerTaskList: true, portainer.OperationDockerTaskInspect: true, portainer.OperationDockerTaskLogs: true, portainer.OperationDockerPluginList: true, portainer.OperationDockerDistributionInspect: true, portainer.OperationDockerPing: true, portainer.OperationDockerInfo: true, portainer.OperationDockerVersion: true, portainer.OperationDockerEvents: true, portainer.OperationDockerSystem: true, portainer.OperationDockerAgentPing: true, portainer.OperationDockerAgentList: true, portainer.OperationDockerAgentHostInfo: true, portainer.OperationDockerAgentBrowseGet: true, portainer.OperationDockerAgentBrowseList: true, portainer.OperationPortainerStackList: true, portainer.OperationPortainerStackInspect: true, portainer.OperationPortainerStackFile: true, portainer.OperationPortainerWebhookList: true, }, } err = store.RoleService.CreateRole(readOnlyUserRole) if err != nil { return err } } return nil }