mirror of
https://github.com/portainer/portainer.git
synced 2025-07-19 13:29:41 +02:00
fix(container): prevent user from editing the portainer container it self EE-917 (#6093)
* fix(container): prevent from editing portainer container * fix(container): prevent from editing portainer container * Missing kill operation * fix(container): enhance creating stack from template * fix(docker): prevent user from editing the portainer container itself EE-917 * fix(docker): enhance code style * fix(container): fix issues from code review * fix(container): enhance creating stack from template * fix(container): some code review issues * fix(container): disable leave network when the container is portainer * fix(container): disable leave network when the container is portainer
This commit is contained in:
parent
d2fe76368a
commit
42e782452c
9 changed files with 74 additions and 13 deletions
|
@ -64,7 +64,7 @@
|
|||
<button
|
||||
type="button"
|
||||
class="btn btn-xs btn-danger"
|
||||
ng-disabled="$ctrl.leaveNetworkActionInProgress"
|
||||
ng-disabled="$ctrl.leaveNetworkActionInProgress || $ctrl.container.IsPortainer"
|
||||
button-spinner="$ctrl.leaveNetworkActionInProgress"
|
||||
ng-click="$ctrl.leaveNetworkAction($ctrl.container, key)"
|
||||
>
|
||||
|
|
|
@ -217,7 +217,7 @@
|
|||
ng-if="!$ctrl.offlineMode"
|
||||
authorization="DockerContainerStart, DockerContainerStop, DockerContainerKill, DockerContainerRestart, DockerContainerPause, DockerContainerUnpause, DockerContainerDelete, DockerContainerCreate"
|
||||
>
|
||||
<input id="select_{{ $index }}" type="checkbox" ng-model="item.Checked" ng-click="$ctrl.selectItem(item, $event)" />
|
||||
<input id="select_{{ $index }}" type="checkbox" ng-model="item.Checked" ng-click="$ctrl.selectItem(item, $event)" ng-disabled="!$ctrl.allowSelection(item)" />
|
||||
<label for="select_{{ $index }}"></label>
|
||||
</span>
|
||||
<a ng-if="!$ctrl.offlineMode" ui-sref="docker.containers.container({ id: item.Id, nodeName: item.NodeName })" title="{{ item | containername }}">{{
|
||||
|
|
|
@ -76,6 +76,10 @@ angular.module('portainer.docker').controller('ContainersDatatableController', [
|
|||
},
|
||||
};
|
||||
|
||||
this.allowSelection = function (item) {
|
||||
return !item.IsPortainer;
|
||||
};
|
||||
|
||||
this.onColumnVisibilityChange = onColumnVisibilityChange.bind(this);
|
||||
function onColumnVisibilityChange(columns) {
|
||||
this.columnVisibility.columns = columns;
|
||||
|
|
|
@ -45,6 +45,8 @@ export function ContainerViewModel(data) {
|
|||
}
|
||||
this.Mounts = data.Mounts;
|
||||
|
||||
this.IsPortainer = data.IsPortainer;
|
||||
|
||||
this.Ports = [];
|
||||
if (data.Ports) {
|
||||
for (var i = 0; i < data.Ports.length; ++i) {
|
||||
|
@ -139,4 +141,5 @@ export function ContainerDetailsViewModel(data) {
|
|||
if (data.Portainer && data.Portainer.ResourceControl) {
|
||||
this.ResourceControl = new ResourceControlViewModel(data.Portainer.ResourceControl);
|
||||
}
|
||||
this.IsPortainer = data.IsPortainer;
|
||||
}
|
||||
|
|
|
@ -168,7 +168,8 @@
|
|||
<button
|
||||
type="button"
|
||||
class="btn btn-primary btn-sm"
|
||||
ng-disabled="state.actionInProgress || !formValues.RegistryModel.Image || (!formValues.RegistryModel.Registry && fromContainer)"
|
||||
ng-disabled="state.actionInProgress || !formValues.RegistryModel.Image || (!formValues.RegistryModel.Registry && fromContainer)
|
||||
|| (fromContainer.IsPortainer && fromContainer.Name === '/' + config.name)"
|
||||
ng-click="create()"
|
||||
button-spinner="state.actionInProgress"
|
||||
>
|
||||
|
|
|
@ -14,25 +14,29 @@
|
|||
<rd-widget-header icon="fa-cogs" title-text="Actions"></rd-widget-header>
|
||||
<rd-widget-body classes="padding">
|
||||
<div class="btn-group" role="group" aria-label="...">
|
||||
<button authorization="DockerContainerStart" class="btn btn-success btn-sm" ng-click="start()" ng-disabled="container.State.Running"
|
||||
<button authorization="DockerContainerStart" class="btn btn-success btn-sm" ng-click="start()" ng-disabled="container.State.Running || container.IsPortainer"
|
||||
><i class="fa fa-play space-right" aria-hidden="true"></i>Start</button
|
||||
>
|
||||
<button authorization="DockerContainerStop" class="btn btn-danger btn-sm" ng-click="stop()" ng-disabled="!container.State.Running"
|
||||
<button authorization="DockerContainerStop" class="btn btn-danger btn-sm" ng-click="stop()" ng-disabled="!container.State.Running || container.IsPortainer"
|
||||
><i class="fa fa-stop space-right" aria-hidden="true"></i>Stop</button
|
||||
>
|
||||
<button authorization="DockerContainerKill" class="btn btn-danger btn-sm" ng-click="kill()" ng-disabled="!container.State.Running"
|
||||
<button authorization="DockerContainerKill" class="btn btn-danger btn-sm" ng-click="kill()" ng-disabled="!container.State.Running || container.IsPortainer"
|
||||
><i class="fa fa-bomb space-right" aria-hidden="true"></i>Kill</button
|
||||
>
|
||||
<button authorization="DockerContainerRestart" class="btn btn-primary btn-sm" ng-click="restart()" ng-disabled="!container.State.Running"
|
||||
<button authorization="DockerContainerRestart" class="btn btn-primary btn-sm" ng-click="restart()" ng-disabled="!container.State.Running || container.IsPortainer"
|
||||
><i class="fa fa-sync space-right" aria-hidden="true"></i>Restart</button
|
||||
>
|
||||
<button authorization="DockerContainerPause" class="btn btn-primary btn-sm" ng-click="pause()" ng-disabled="!container.State.Running || container.State.Paused"
|
||||
<button
|
||||
authorization="DockerContainerPause"
|
||||
class="btn btn-primary btn-sm"
|
||||
ng-click="pause()"
|
||||
ng-disabled="!container.State.Running || container.State.Paused || container.IsPortainer"
|
||||
><i class="fa fa-pause space-right" aria-hidden="true"></i>Pause</button
|
||||
>
|
||||
<button authorization="DockerContainerUnpause" class="btn btn-primary btn-sm" ng-click="unpause()" ng-disabled="!container.State.Paused"
|
||||
<button authorization="DockerContainerUnpause" class="btn btn-primary btn-sm" ng-click="unpause()" ng-disabled="!container.State.Paused || container.IsPortainer"
|
||||
><i class="fa fa-play space-right" aria-hidden="true"></i>Resume</button
|
||||
>
|
||||
<button authorization="DockerContainerDelete" class="btn btn-danger btn-sm" ng-click="confirmRemove()"
|
||||
<button authorization="DockerContainerDelete" class="btn btn-danger btn-sm" ng-click="confirmRemove()" ng-disabled="container.IsPortainer"
|
||||
><i class="fa fa-trash-alt space-right" aria-hidden="true"></i>Remove</button
|
||||
>
|
||||
</div>
|
||||
|
@ -40,7 +44,7 @@
|
|||
<button
|
||||
type="button"
|
||||
class="btn btn-danger btn-sm"
|
||||
ng-disabled="state.recreateContainerInProgress"
|
||||
ng-disabled="state.recreateContainerInProgress || container.IsPortainer"
|
||||
ng-click="recreate()"
|
||||
button-spinner="state.recreateContainerInProgress"
|
||||
>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue