From ea10eb1f3cbc6d609f647995d195a142224cfb33 Mon Sep 17 00:00:00 2001 From: ashvini Date: Wed, 12 Jun 2024 09:42:34 +0530 Subject: [PATCH] Fix web apps not installing via user, group, role issue Add case to handle web clip uninstallation Add license Refactor code Remove hard-coded value --- .../device/mgt/common/MDMAppConstants.java | 2 + .../app/mgt/windows/WebClipApplication.java | 76 +++++++++++++++++++ .../core/util/MDMWindowsOperationUtil.java | 24 +++++- 3 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/app/mgt/windows/WebClipApplication.java diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/MDMAppConstants.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/MDMAppConstants.java index da042f8d93..60d9503c97 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/MDMAppConstants.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/MDMAppConstants.java @@ -58,6 +58,8 @@ public class MDMAppConstants { } public static final String INSTALL_ENTERPRISE_APPLICATION = "INSTALL_ENTERPRISE_APPLICATION"; public static final String UNINSTALL_ENTERPRISE_APPLICATION = "UNINSTALL_ENTERPRISE_APPLICATION"; + public static final String INSTALL_WEB_CLIP_APPLICATION = "INSTALL_WEB_CLIP"; + public static final String UNINSTALL_WEB_CLIP_APPLICATION = "UNINSTALL_WEB_CLIP"; //App type constants related to window device type public static final String MSI = "MSI"; public static final String APPX = "APPX"; diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/app/mgt/windows/WebClipApplication.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/app/mgt/windows/WebClipApplication.java new file mode 100644 index 0000000000..be4feae54e --- /dev/null +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.common/src/main/java/io/entgra/device/mgt/core/device/mgt/common/app/mgt/windows/WebClipApplication.java @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2018 - 2024, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * + * Entgra (Pvt) Ltd. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package io.entgra.device.mgt.core.device.mgt.common.app.mgt.windows; +import com.google.gson.Gson; + +import java.util.Properties; + +public class WebClipApplication { + + private String url; + private String name; + private String icon; + private String type; + private Properties properties; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Properties getProperties() { + return properties; + } + + public void setProperties(Properties properties) { + this.properties = properties; + } + + public String toJSON() { + Gson gson = new Gson(); + return gson.toJson(this); + } +} diff --git a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/util/MDMWindowsOperationUtil.java b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/util/MDMWindowsOperationUtil.java index 932e2a6837..a1f0e0e31d 100644 --- a/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/util/MDMWindowsOperationUtil.java +++ b/components/device-mgt/io.entgra.device.mgt.core.device.mgt.core/src/main/java/io/entgra/device/mgt/core/device/mgt/core/util/MDMWindowsOperationUtil.java @@ -30,6 +30,7 @@ import io.entgra.device.mgt.core.device.mgt.common.app.mgt.App; import io.entgra.device.mgt.core.device.mgt.common.app.mgt.windows.EnterpriseApplication; import io.entgra.device.mgt.core.device.mgt.common.app.mgt.windows.HostedAppxApplication; import io.entgra.device.mgt.core.device.mgt.common.app.mgt.windows.HostedMSIApplication; +import io.entgra.device.mgt.core.device.mgt.common.app.mgt.windows.WebClipApplication; import io.entgra.device.mgt.core.device.mgt.common.exceptions.UnknownApplicationTypeException; import io.entgra.device.mgt.core.device.mgt.common.operation.mgt.Operation; import io.entgra.device.mgt.core.device.mgt.core.operation.mgt.ProfileOperation; @@ -54,7 +55,6 @@ public class MDMWindowsOperationUtil { public static Operation createInstallAppOperation(App application) throws UnknownApplicationTypeException { ProfileOperation operation = new ProfileOperation(); - operation.setCode(MDMAppConstants.WindowsConstants.INSTALL_ENTERPRISE_APPLICATION); operation.setType(Operation.Type.PROFILE); String appType = windowsAppType(application.getName()); String metaData = application.getMetaData(); @@ -62,6 +62,7 @@ public class MDMWindowsOperationUtil { switch (application.getType()) { case ENTERPRISE: + operation.setCode(MDMAppConstants.WindowsConstants.INSTALL_ENTERPRISE_APPLICATION); EnterpriseApplication enterpriseApplication = new EnterpriseApplication(); if (appType.equalsIgnoreCase(MDMAppConstants.WindowsConstants.APPX)) { HostedAppxApplication hostedAppxApplication = new HostedAppxApplication(); @@ -111,6 +112,16 @@ public class MDMWindowsOperationUtil { } operation.setPayLoad(enterpriseApplication.toJSON()); break; + case WEB_CLIP: + operation.setCode(MDMAppConstants.WindowsConstants.INSTALL_WEB_CLIP_APPLICATION); + WebClipApplication webClipApplication = new WebClipApplication(); + webClipApplication.setUrl(application.getLocation()); + webClipApplication.setName(application.getName()); + webClipApplication.setIcon(application.getIconImage()); + webClipApplication.setProperties(application.getProperties()); + webClipApplication.setType(application.getType().toString()); + operation.setPayLoad(webClipApplication.toJSON()); + break; default: String msg = "Application type " + application.getType() + " is not supported"; log.error(msg); @@ -130,7 +141,6 @@ public class MDMWindowsOperationUtil { public static Operation createUninstallAppOperation(App application) throws UnknownApplicationTypeException { ProfileOperation operation = new ProfileOperation(); - operation.setCode(MDMAppConstants.WindowsConstants.UNINSTALL_ENTERPRISE_APPLICATION); operation.setType(Operation.Type.PROFILE); String appType = windowsAppType(application.getName()); String metaData = application.getMetaData(); @@ -138,6 +148,7 @@ public class MDMWindowsOperationUtil { switch (application.getType()) { case ENTERPRISE: + operation.setCode(MDMAppConstants.WindowsConstants.UNINSTALL_ENTERPRISE_APPLICATION); EnterpriseApplication enterpriseApplication = new EnterpriseApplication(); if (appType.equalsIgnoreCase(MDMAppConstants.WindowsConstants.APPX)) { HostedAppxApplication hostedAppxApplication = new HostedAppxApplication(); @@ -187,6 +198,15 @@ public class MDMWindowsOperationUtil { } operation.setPayLoad(enterpriseApplication.toJSON()); break; + case WEB_CLIP: + operation.setCode(MDMAppConstants.WindowsConstants.UNINSTALL_WEB_CLIP_APPLICATION); + WebClipApplication webClipApplication = new WebClipApplication(); + webClipApplication.setUrl(application.getLocation()); + webClipApplication.setName(application.getName()); + webClipApplication.setIcon(application.getIconImage()); + webClipApplication.setProperties(application.getProperties()); + webClipApplication.setType(application.getType().toString()); + operation.setPayLoad(webClipApplication.toJSON()); default: String msg = "Application type " + application.getType() + " is not supported"; log.error(msg);