Merge branch 'master' into 'master'

Add an open endpoint to get UI config

See merge request entgra/carbon-device-mgt!493
feature/appm-store/pbac
Saad Sahibjan 5 years ago
commit e5a44db713

@ -1,83 +0,0 @@
/* Copyright (c) 2019, 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 org.wso2.carbon.device.application.mgt.api.services;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Extension;
import io.swagger.annotations.ExtensionProperty;
import io.swagger.annotations.Info;
import io.swagger.annotations.SwaggerDefinition;
import org.wso2.carbon.device.application.mgt.common.*;
import org.wso2.carbon.device.application.mgt.common.ErrorResponse;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
/**
* APIs to handle application management related tasks.
*/
@SwaggerDefinition(
info = @Info(
version = "1.0.0",
title = "Application Management Config Retrieve Service",
extensions = {
@Extension(properties = {
@ExtensionProperty(name = "name", value = "ApplicationManagementConfigRetrieveService"),
@ExtensionProperty(name = "context", value = "/api/application-mgt/v1.0/config"),
})
}
)
)
@Path("/config")
@Api(value = "ApplicationDTO Management Common Service")
@Produces(MediaType.APPLICATION_JSON)
public interface ConfigRetrieveAPI {
@GET
@Path("/ui-config")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "get application management UI configuration",
notes = "This will get all UI configuration of application management"
)
@ApiResponses(
value = {
@ApiResponse(
code = 200,
message = "OK. \n Successfully got UI config.",
response = ApplicationList.class),
@ApiResponse(
code = 404,
message = "Not Found. There doesn't have an defined UI config." +
"query."),
@ApiResponse(
code = 500,
message = "Internal Server Error. \n Error occurred while getting the UI config.",
response = ErrorResponse.class)
})
Response getUiConfig();
}

@ -1,56 +0,0 @@
/* Copyright (c) 2019, 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 org.wso2.carbon.device.application.mgt.api.services.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.application.mgt.api.services.ConfigRetrieveAPI;
import org.wso2.carbon.device.application.mgt.common.config.UIConfiguration;
import org.wso2.carbon.device.application.mgt.common.services.AppmDataHandler;
import org.wso2.carbon.device.application.mgt.core.util.APIUtil;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
/**
* Implementation of ApplicationDTO Management related APIs.
*/
@Produces({"application/json"})
@Path("/config")
public class ConfigRetrieveAPIImpl implements ConfigRetrieveAPI {
private static Log log = LogFactory.getLog(ConfigRetrieveAPIImpl.class);
@GET
@Override
@Consumes("application/json")
@Path("/ui-config")
public Response getUiConfig() {
AppmDataHandler dataHandler = APIUtil.getDataHandler();
UIConfiguration uiConfiguration = dataHandler.getUIConfiguration();
if (uiConfiguration == null){
String msg = "UI configuration is not initiated.";
log.error(msg);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
}
return Response.status(Response.Status.OK).entity(uiConfiguration).build();
}
}

@ -25,7 +25,6 @@
<jaxrs:server id="applicationMgtCommonService" address="/">
<jaxrs:serviceBeans>
<ref bean="applicationMgtConfigService"/>
<ref bean="applicationMgtArtifactService"/>
<ref bean="swaggerResource"/>
</jaxrs:serviceBeans>
@ -53,7 +52,6 @@
<bean id="swaggerWriter" class="io.swagger.jaxrs.listing.SwaggerSerializers" />
<bean id="swaggerResource" class="io.swagger.jaxrs.listing.ApiListingResource" />
<bean id="applicationMgtConfigService" class="org.wso2.carbon.device.application.mgt.api.services.impl.ConfigRetrieveAPIImpl"/>
<bean id="applicationMgtArtifactService" class="org.wso2.carbon.device.application.mgt.api.services.impl.ArtifactDownloadAPIImpl"/>
<bean id="jsonProvider" class="org.wso2.carbon.device.application.mgt.addons.JSONMessageHandler"/>
<bean id="multipartProvider" class="org.wso2.carbon.device.application.mgt.addons.MultipartCustomProvider"/>

@ -18,7 +18,6 @@
package org.wso2.carbon.device.application.mgt.common.services;
import org.wso2.carbon.device.application.mgt.common.config.LifecycleState;
import org.wso2.carbon.device.application.mgt.common.config.UIConfiguration;
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
import org.wso2.carbon.device.application.mgt.common.exception.LifecycleManagementException;
@ -26,12 +25,6 @@ import java.io.InputStream;
import java.util.Map;
public interface AppmDataHandler {
/**
* Get UI configuration which is defined in the app-manager.xml
*
* @return {@link UIConfiguration} UI configuration
*/
UIConfiguration getUIConfiguration();
Map<String, LifecycleState> getLifecycleConfiguration() throws LifecycleManagementException;

@ -19,7 +19,6 @@ package org.wso2.carbon.device.application.mgt.core.config;
import org.wso2.carbon.device.application.mgt.common.config.MDMConfig;
import org.wso2.carbon.device.application.mgt.common.config.RatingConfiguration;
import org.wso2.carbon.device.application.mgt.common.config.UIConfiguration;
import org.wso2.carbon.device.application.mgt.common.config.LifecycleState;
import java.util.List;
@ -39,8 +38,6 @@ public class Configuration {
private List<LifecycleState> lifecycleStates;
private UIConfiguration uiConfiguration;
private List<String> appCategories;
private RatingConfiguration ratingConfiguration;
@ -76,15 +73,6 @@ public class Configuration {
this.lifecycleStates = lifecycleStates;
}
@XmlElement(name = "UIConfigs")
public UIConfiguration getUiConfiguration() {
return uiConfiguration;
}
public void setUiConfiguration(UIConfiguration uiConfiguration) {
this.uiConfiguration = uiConfiguration;
}
@XmlElement(name = "RatingConfig")
public RatingConfiguration getRatingConfiguration() { return ratingConfiguration; }

@ -19,7 +19,6 @@ package org.wso2.carbon.device.application.mgt.core.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.application.mgt.common.config.LifecycleState;
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationManagementException;
import org.wso2.carbon.device.application.mgt.common.exception.ApplicationStorageManagementException;
@ -27,7 +26,6 @@ import org.wso2.carbon.device.application.mgt.common.exception.LifecycleManageme
import org.wso2.carbon.device.application.mgt.common.exception.RequestValidatingException;
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
import org.wso2.carbon.device.application.mgt.common.services.AppmDataHandler;
import org.wso2.carbon.device.application.mgt.common.config.UIConfiguration;
import org.wso2.carbon.device.application.mgt.core.dao.ApplicationReleaseDAO;
import org.wso2.carbon.device.application.mgt.core.dao.common.ApplicationManagementDAOFactory;
import org.wso2.carbon.device.application.mgt.core.exception.BadRequestException;
@ -44,19 +42,12 @@ import java.util.Map;
public class AppmDataHandlerImpl implements AppmDataHandler {
private static final Log log = LogFactory.getLog(AppmDataHandlerImpl.class);
private UIConfiguration uiConfiguration;
private LifecycleStateManager lifecycleStateManager;
public AppmDataHandlerImpl(UIConfiguration config) {
this.uiConfiguration = config;
public AppmDataHandlerImpl() {
lifecycleStateManager = DataHolder.getInstance().getLifecycleStateManager();
}
@Override
public UIConfiguration getUIConfiguration() {
return this.uiConfiguration;
}
@Override
public Map<String, LifecycleState> getLifecycleConfiguration() throws LifecycleManagementException {
return lifecycleStateManager.getLifecycleConfig();

@ -22,7 +22,6 @@ import org.apache.commons.logging.LogFactory;
import org.osgi.framework.BundleContext;
import org.osgi.service.component.ComponentContext;
import org.wso2.carbon.device.application.mgt.common.config.LifecycleState;
import org.wso2.carbon.device.application.mgt.common.config.UIConfiguration;
import org.wso2.carbon.device.application.mgt.common.services.ApplicationManager;
import org.wso2.carbon.device.application.mgt.common.services.ApplicationStorageManager;
import org.wso2.carbon.device.application.mgt.common.services.AppmDataHandler;
@ -108,9 +107,7 @@ public class ApplicationManagementServiceComponent {
DataHolder.getInstance().setApplicationStorageManager(applicationStorageManager);
bundleContext.registerService(ApplicationStorageManager.class.getName(), applicationStorageManager, null);
UIConfiguration uiConfiguration = ConfigurationManager.getInstance().
getConfiguration().getUiConfiguration();
AppmDataHandler configManager = new AppmDataHandlerImpl(uiConfiguration);
AppmDataHandler configManager = new AppmDataHandlerImpl();
DataHolder.getInstance().setConfigManager(configManager);
bundleContext.registerService(AppmDataHandler.class.getName(), configManager, null);

@ -132,47 +132,6 @@
</LifecycleState>
</LifecycleStates>
<UIConfigs>
<EnableOAuth>true</EnableOAuth>
<EnableSSO>false</EnableSSO>
<AppRegistration>
<Tags>
<Tag>application_management</Tag>
<Tag>device_management</Tag>
<Tag>subscription_management</Tag>
<Tag>review_management</Tag>
</Tags>
<AllowToAllDomains>true</AllowToAllDomains>
</AppRegistration>
<Scopes>
<Scope>perm:app:review:view</Scope>
<Scope>perm:app:review:update</Scope>
<Scope>perm:app:publisher:view</Scope>
<Scope>perm:app:publisher:update</Scope>
<Scope>perm:app:store:view</Scope>
<Scope>perm:app:subscription:install</Scope>
<Scope>perm:app:subscription:uninstall</Scope>
<Scope>perm:admin:app:review:update</Scope>
<Scope>perm:admin:app:review:view</Scope>
<Scope>perm:admin:app:publisher:update</Scope>
<Scope>perm:admin:app:review:update</Scope>
</Scopes>
<SSOConfiguration>
<Issuer>app-mgt</Issuer>
</SSOConfiguration>
<ErrorCallback>
<BadRequest>/pages/error/client-errors/400</BadRequest>
<Unauthorized>/pages/error/client-errors/401</Unauthorized>
<Forbidden>/pages/error/client-errors/403</Forbidden>
<NotFound>/pages/error/client-errors/404</NotFound>
<MethodNotAllowed>/pages/error/client-errors/405</MethodNotAllowed>
<NotAcceptable>/pages/error/client-errors/406</NotAcceptable>
<UnsupportedMediaType>/pages/error/client-errors/415</UnsupportedMediaType>
<InternalServerError>/pages/error/server-errors/500</InternalServerError>
<DefaultPage>/pages/error/default</DefaultPage>
</ErrorCallback>
</UIConfigs>
<AppCategories>
<Category>EMM</Category>
<Category>IoT</Category>

@ -132,47 +132,6 @@
</LifecycleState>
</LifecycleStates>
<UIConfigs>
<EnableOAuth>true</EnableOAuth>
<EnableSSO>false</EnableSSO>
<AppRegistration>
<Tags>
<Tag>application_management</Tag>
<Tag>device_management</Tag>
<Tag>subscription_management</Tag>
<Tag>review_management</Tag>
</Tags>
<AllowToAllDomains>true</AllowToAllDomains>
</AppRegistration>
<Scopes>
<Scope>perm:app:review:view</Scope>
<Scope>perm:app:review:update</Scope>
<Scope>perm:app:publisher:view</Scope>
<Scope>perm:app:publisher:update</Scope>
<Scope>perm:app:store:view</Scope>
<Scope>perm:app:subscription:install</Scope>
<Scope>perm:app:subscription:uninstall</Scope>
<Scope>perm:admin:app:review:update</Scope>
<Scope>perm:admin:app:review:view</Scope>
<Scope>perm:admin:app:publisher:update</Scope>
<Scope>perm:admin:app:review:update</Scope>
</Scopes>
<SSOConfiguration>
<Issuer>app-mgt</Issuer>
</SSOConfiguration>
<ErrorCallback>
<BadRequest>/pages/error/client-errors/400</BadRequest>
<Unauthorized>/pages/error/client-errors/401</Unauthorized>
<Forbidden>/pages/error/client-errors/403</Forbidden>
<NotFound>/pages/error/client-errors/404</NotFound>
<MethodNotAllowed>/pages/error/client-errors/405</MethodNotAllowed>
<NotAcceptable>/pages/error/client-errors/406</NotAcceptable>
<UnsupportedMediaType>/pages/error/client-errors/415</UnsupportedMediaType>
<InternalServerError>/pages/error/server-errors/500</InternalServerError>
<DefaultPage>/pages/error/default</DefaultPage>
</ErrorCallback>
</UIConfigs>
<AppCategories>
<Category>EMM</Category>
<Category>IoT</Category>

@ -192,4 +192,30 @@ public interface ConfigurationManagementService {
required = true)
PlatformConfiguration configuration);
@GET
@Path("/ui-config")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON,
httpMethod = "GET",
value = "get application management UI configuration",
notes = "This will get all UI configuration of application management"
)
@ApiResponses(
value = {
@ApiResponse(
code = 200,
message = "OK. \n Successfully got UI config."),
@ApiResponse(
code = 404,
message = "Not Found. There doesn't have an defined UI config." +
"query."),
@ApiResponse(
code = 500,
message = "Internal Server Error. \n Error occurred while getting the UI config.",
response = ErrorResponse.class)
})
Response getUiConfig();
}

@ -23,6 +23,8 @@ import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry;
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException;
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
import org.wso2.carbon.device.mgt.core.ui.config.UIConfiguration;
import org.wso2.carbon.device.mgt.core.ui.config.UIConfigurationManager;
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
import org.wso2.carbon.device.mgt.jaxrs.service.api.ConfigurationManagementService;
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.RequestValidationUtil;
@ -31,6 +33,7 @@ import org.wso2.carbon.device.mgt.common.MDMAppConstants;
import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
import org.wso2.carbon.policy.mgt.core.util.PolicyManagerUtil;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.PUT;
@ -91,4 +94,23 @@ public class ConfigurationServiceImpl implements ConfigurationManagementService
}
}
@GET
@Override
@Consumes("application/json")
@Path("/ui-config")
public Response getUiConfig() {
UIConfigurationManager uiConfigurationManager = UIConfigurationManager.getInstance();
if (uiConfigurationManager == null) {
String msg = "IoTS UI configuration manager is not initialized.";
log.error(msg);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
}
UIConfiguration uiConfiguration = uiConfigurationManager.getUIConfig();
if (uiConfiguration == null) {
String msg = "IoTS UI configuration is not defined.";
log.error(msg);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
}
return Response.status(Response.Status.OK).entity(uiConfiguration).build();
}
}

@ -48,7 +48,8 @@
<context-param>
<param-name>nonSecuredEndPoints</param-name>
<param-value>
/api/device-mgt/v1.0/users/validate
/api/device-mgt/v1.0/users/validate,
/api/device-mgt/v1.0/configuration/ui-config
</param-value>
</context-param>

@ -27,6 +27,7 @@ public final class DeviceManagementConstants {
public static final String DB_CHECK_QUERY = "SELECT * FROM DM_DEVICE";
public static final String SECURE_VAULT_NS = "http://org.wso2.securevault/configuration";
public static final String DEVICE_CONFIG_XML_NAME = "cdm-config.xml";
public static final String UI_CONFIG_XML_NAME = "mdm-ui-config.xml";
}
public static final class SecureValueProperties {

@ -18,9 +18,6 @@
package org.wso2.carbon.device.mgt.core.config;
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
import org.wso2.carbon.device.mgt.core.config.identity.IdentityConfigurations;
import org.wso2.carbon.device.mgt.core.config.policy.PolicyConfiguration;
import org.wso2.carbon.device.mgt.core.config.task.TaskConfiguration;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@ -66,6 +66,7 @@ import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceIm
import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService;
import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderServiceImpl;
import org.wso2.carbon.device.mgt.core.task.DeviceTaskManagerService;
import org.wso2.carbon.device.mgt.core.ui.config.UIConfigurationManager;
import org.wso2.carbon.device.mgt.core.util.DeviceManagementSchemaInitializer;
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
import org.wso2.carbon.email.sender.core.service.EmailSenderService;
@ -161,6 +162,7 @@ public class DeviceManagementServiceComponent {
}
/* Initializing Device Management Configuration */
DeviceConfigurationManager.getInstance().initConfig();
UIConfigurationManager.getInstance().initConfig();
DeviceManagementConfig config =
DeviceConfigurationManager.getInstance().getDeviceManagementConfig();

@ -23,8 +23,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.Count;
import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.app.mgt.Application;
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
import org.wso2.carbon.device.mgt.common.exceptions.BadRequestException;
import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.PaginationRequest;

@ -0,0 +1,47 @@
/* Copyright (c) 2020, 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 org.wso2.carbon.device.mgt.core.ui.config;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import java.util.List;
public class AppRegistration {
private List<String> tags;
private boolean isAllowToAllDomains;
@XmlElementWrapper(name = "Tags")
@XmlElement(name = "Tag")
public List<String> getTags() {
return tags;
}
public void setTags(List<String> tags) {
this.tags = tags;
}
@XmlElement(name = "AllowToAllDomains")
public boolean isAllowToAllDomains() {
return isAllowToAllDomains;
}
public void setAllowToAllDomains(boolean allowToAllDomains) {
isAllowToAllDomains = allowToAllDomains;
}
}

@ -1,6 +1,7 @@
/* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
/*
* Copyright (c) 2019, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved.
*
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
* 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
@ -14,18 +15,22 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.device.application.mgt.common.config;
package org.wso2.carbon.device.mgt.core.ui.config;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
/**
* Represents the Application Management Configuration.
*/
@XmlRootElement(name = "UIConfiguration")
public class UIConfiguration {
private AppRegistration appRegistration;
private List<String> scopes;
private boolean isSsoEnable;
private ErrorCallback errorCallback;
@XmlElement(name = "AppRegistration", required=true)
public AppRegistration getAppRegistration() {
@ -54,9 +59,4 @@ public class UIConfiguration {
public void setSsoEnable(boolean ssoEnable) {
isSsoEnable = ssoEnable;
}
@XmlElement(name = "ErrorCallback", required=true)
public ErrorCallback getErrorCallback() { return errorCallback; }
public void setErrorCallback(ErrorCallback errorCallback) { this.errorCallback = errorCallback; }
}

@ -0,0 +1,79 @@
/*
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. 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 org.wso2.carbon.device.mgt.core.ui.config;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Document;
import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
import org.wso2.carbon.utils.CarbonUtils;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import java.io.File;
/**
* Class responsible for the UI configuration initialization.
*/
public class UIConfigurationManager {
private static final Log log = LogFactory.getLog(UIConfigurationManager.class);
private UIConfiguration currentUIConfiguration;
private static UIConfigurationManager uiConfigurationManager;
private static final String UI_CONFIG_PATH = CarbonUtils.getCarbonConfigDirPath() + File.separator
+ DeviceManagementConstants.DataSourceProperties.UI_CONFIG_XML_NAME;
public static UIConfigurationManager getInstance() {
if (uiConfigurationManager == null) {
synchronized (UIConfigurationManager.class) {
if (uiConfigurationManager == null) {
uiConfigurationManager = new UIConfigurationManager();
}
}
}
return uiConfigurationManager;
}
public synchronized void initConfig(String configLocation) throws DeviceManagementException {
try {
File uiConfig = new File(configLocation);
Document doc = DeviceManagerUtil.convertToDocument(uiConfig);
/* Un-marshaling UI configuration */
JAXBContext cdmContext = JAXBContext.newInstance(UIConfiguration.class);
Unmarshaller unmarshaller = cdmContext.createUnmarshaller();
this.currentUIConfiguration = (UIConfiguration) unmarshaller.unmarshal(doc);
} catch (JAXBException e) {
String msg = "Error occurred while initializing UI config";
log.error(msg, e);
throw new DeviceManagementException(msg, e);
}
}
public void initConfig() throws DeviceManagementException {
this.initConfig(UI_CONFIG_PATH);
}
public UIConfiguration getUIConfig() {
return currentUIConfiguration;
}
}

@ -57,7 +57,6 @@ import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager;
import org.wso2.carbon.device.mgt.core.config.DeviceManagementConfig;
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
import org.wso2.carbon.device.mgt.core.config.datasource.JNDILookupDefinition;
import org.wso2.carbon.device.mgt.core.config.policy.PolicyConfiguration;
import org.wso2.carbon.device.mgt.core.config.tenant.PlatformConfigurationManagementServiceImpl;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;

@ -221,16 +221,16 @@ public class LoginHandler extends HttpServlet {
* Define username and password static parameters.
*/
private static void validateLoginRequest(HttpServletRequest req) throws LoginException {
String gatewayCarbonPort = System.getProperty("iot.gateway.carbon.https.port");
String gatewayCarbonPort = System.getProperty("iot.core.https.port");
if (HandlerConstants.HTTP_PROTOCOL.equals(req.getScheme())) {
gatewayCarbonPort = System.getProperty("iot.gateway.carbon.http.port");
gatewayCarbonPort = System.getProperty("iot.core.http.port");
}
username = req.getParameter("username");
password = req.getParameter("password");
gatewayUrl = req.getScheme() + HandlerConstants.SCHEME_SEPARATOR + System.getProperty("iot.gateway.host")
+ HandlerConstants.COLON + HandlerUtil.getGatewayPort(req.getScheme());
uiConfigUrl = req.getScheme() + HandlerConstants.SCHEME_SEPARATOR + req.getServerName() + HandlerConstants.COLON
+ gatewayCarbonPort + HandlerConstants.UI_CONFIG_ENDPOINT;
uiConfigUrl = req.getScheme() + HandlerConstants.SCHEME_SEPARATOR + System.getProperty("iot.core.host")
+ HandlerConstants.COLON + gatewayCarbonPort + HandlerConstants.UI_CONFIG_ENDPOINT;
if (username == null || password == null) {
String msg = "Invalid login request. Username or Password is not received for login request.";
log.error(msg);

@ -21,7 +21,7 @@ package io.entgra.ui.request.interceptor.util;
public class HandlerConstants {
public static final String PUBLISHER_APPLICATION_NAME = "application-mgt-publisher";
public static final String APP_REG_ENDPOINT = "/api-application-registration/register";
public static final String UI_CONFIG_ENDPOINT = "/api/application-mgt/v1.0/config/ui-config";
public static final String UI_CONFIG_ENDPOINT = "/api/device-mgt/v1.0/configuration/ui-config";
public static final String TOKEN_ENDPOINT = "/token";
public static final String INTROSPECT_ENDPOINT = "/oauth2/introspect";
public static final String LOGIN_PAGE = "/login";

@ -132,151 +132,6 @@
</LifecycleState>
</LifecycleStates>
<UIConfigs>
<EnableOAuth>true</EnableOAuth>
<EnableSSO>false</EnableSSO>
<AppRegistration>
<Tags>
<Tag>application_management</Tag>
<Tag>device_management</Tag>
<Tag>subscription_management</Tag>
<Tag>review_management</Tag>
</Tags>
<AllowToAllDomains>true</AllowToAllDomains>
</AppRegistration>
<Scopes>
<Scope>perm:app:review:view</Scope>
<Scope>perm:app:review:update</Scope>
<Scope>perm:app:publisher:view</Scope>
<Scope>perm:app:publisher:update</Scope>
<Scope>perm:app:store:view</Scope>
<Scope>perm:app:subscription:install</Scope>
<Scope>perm:app:subscription:uninstall</Scope>
<Scope>perm:admin:app:review:update</Scope>
<Scope>perm:admin:app:review:view</Scope>
<Scope>perm:admin:app:publisher:update</Scope>
<Scope>perm:admin:app:review:update</Scope>
<Scope>perm:admin:app:subscription:view</Scope>
<Scope>perm:device-types:types</Scope>
<Scope>perm:enterprise:modify</Scope>
<Scope>perm:enterprise:view</Scope>
<Scope>perm:android-work:customer</Scope>
<Scope>perm:android-work:admin</Scope>
<Scope>perm:application-command:modify</Scope>
<Scope>perm:sign-csr</Scope>
<Scope>perm:admin:devices:view</Scope>
<Scope>perm:admin:topics:view</Scope>
<Scope>perm:roles:add</Scope>
<Scope>perm:roles:add-users</Scope>
<Scope>perm:roles:update</Scope>
<Scope>perm:roles:permissions</Scope>
<Scope>perm:roles:details</Scope>
<Scope>perm:roles:view</Scope>
<Scope>perm:roles:create-combined-role</Scope>
<Scope>perm:roles:delete</Scope>
<Scope>perm:dashboard:vulnerabilities</Scope>
<Scope>perm:dashboard:non-compliant-count</Scope>
<Scope>perm:dashboard:non-compliant</Scope>
<Scope>perm:dashboard:by-groups</Scope>
<Scope>perm:dashboard:device-counts</Scope>
<Scope>perm:dashboard:feature-non-compliant</Scope>
<Scope>perm:dashboard:count-overview</Scope>
<Scope>perm:dashboard:filtered-count</Scope>
<Scope>perm:dashboard:details</Scope>
<Scope>perm:get-activity</Scope>
<Scope>perm:devices:delete</Scope>
<Scope>perm:devices:applications</Scope>
<Scope>perm:devices:effective-policy</Scope>
<Scope>perm:devices:compliance-data</Scope>
<Scope>perm:devices:features</Scope>
<Scope>perm:devices:operations</Scope>
<Scope>perm:devices:search</Scope>
<Scope>perm:devices:details</Scope>
<Scope>perm:devices:update</Scope>
<Scope>perm:devices:view</Scope>
<Scope>perm:view-configuration</Scope>
<Scope>perm:manage-configuration</Scope>
<Scope>perm:policies:remove</Scope>
<Scope>perm:policies:priorities</Scope>
<Scope>perm:policies:deactivate</Scope>
<Scope>perm:policies:get-policy-details</Scope>
<Scope>perm:policies:manage</Scope>
<Scope>perm:policies:activate</Scope>
<Scope>perm:policies:update</Scope>
<Scope>perm:policies:changes</Scope>
<Scope>perm:policies:get-details</Scope>
<Scope>perm:users:add</Scope>
<Scope>perm:users:details</Scope>
<Scope>perm:users:count</Scope>
<Scope>perm:users:delete</Scope>
<Scope>perm:users:roles</Scope>
<Scope>perm:users:user-details</Scope>
<Scope>perm:users:credentials</Scope>
<Scope>perm:users:search</Scope>
<Scope>perm:users:is-exist</Scope>
<Scope>perm:users:update</Scope>
<Scope>perm:users:send-invitation</Scope>
<Scope>perm:admin-users:view</Scope>
<Scope>perm:admin:devices:update-enrollment</Scope>
<Scope>perm:groups:devices</Scope>
<Scope>perm:groups:update</Scope>
<Scope>perm:groups:add</Scope>
<Scope>perm:groups:device</Scope>
<Scope>perm:groups:devices-count</Scope>
<Scope>perm:groups:remove</Scope>
<Scope>perm:groups:groups</Scope>
<Scope>perm:groups:groups-view</Scope>
<Scope>perm:groups:share</Scope>
<Scope>perm:groups:count</Scope>
<Scope>perm:groups:roles</Scope>
<Scope>perm:groups:devices-remove</Scope>
<Scope>perm:groups:devices-add</Scope>
<Scope>perm:groups:assign</Scope>
<Scope>perm:device-types:configs</Scope>
<Scope>perm:device-types:features</Scope>
<Scope>perm:device-types:types</Scope>
<Scope>perm:applications:install</Scope>
<Scope>perm:applications:uninstall</Scope>
<Scope>perm:admin-groups:count</Scope>
<Scope>perm:admin-groups:view</Scope>
<Scope>perm:notifications:mark-checked</Scope>
<Scope>perm:notifications:view</Scope>
<Scope>perm:admin:certificates:delete</Scope>
<Scope>perm:admin:certificates:details</Scope>
<Scope>perm:admin:certificates:view</Scope>
<Scope>perm:admin:certificates:add</Scope>
<Scope>perm:admin:certificates:verify</Scope>
<Scope>perm:admin</Scope>
<Scope>perm:devicetype:deployment</Scope>
<Scope>perm:device-types:events</Scope>
<Scope>perm:device-types:events:view</Scope>
<Scope>perm:admin:device-type</Scope>
<Scope>perm:admin:device-type:view</Scope>
<Scope>perm:admin:device-type:configs</Scope>
<Scope>perm:device:enroll</Scope>
<Scope>perm:geo-service:analytics-view</Scope>
<Scope>perm:geo-service:alerts-manage</Scope>
<Scope>appm:read</Scope>
<Scope>perm:devices:permanent-delete</Scope>
<Scope>perm:android:manage-configuration</Scope>
<Scope>perm:android:view-configuration</Scope>
</Scopes>
<SSOConfiguration>
<Issuer>app-mgt</Issuer>
</SSOConfiguration>
<ErrorCallback>
<BadRequest>/pages/error/client-errors/400</BadRequest>
<Unauthorized>/pages/error/client-errors/401</Unauthorized>
<Forbidden>/pages/error/client-errors/403</Forbidden>
<NotFound>/pages/error/client-errors/404</NotFound>
<MethodNotAllowed>/pages/error/client-errors/405</MethodNotAllowed>
<NotAcceptable>/pages/error/client-errors/406</NotAcceptable>
<UnsupportedMediaType>/pages/error/client-errors/415</UnsupportedMediaType>
<InternalServerError>/pages/error/server-errors/500</InternalServerError>
<DefaultPage>/pages/error/default</DefaultPage>
</ErrorCallback>
</UIConfigs>
<AppCategories>
<Category>EMM</Category>
<Category>IoT</Category>

@ -0,0 +1,153 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Copyright (c) 2020, Entgra (pvt) Ltd. (http://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.
-->
<UIConfiguration>
<EnableOAuth>true</EnableOAuth>
<EnableSSO>false</EnableSSO>
<AppRegistration>
<Tags>
<Tag>application_management</Tag>
<Tag>device_management</Tag>
<Tag>subscription_management</Tag>
<Tag>review_management</Tag>
</Tags>
<AllowToAllDomains>true</AllowToAllDomains>
</AppRegistration>
<Scopes>
<Scope>perm:app:review:view</Scope>
<Scope>perm:app:review:update</Scope>
<Scope>perm:app:publisher:view</Scope>
<Scope>perm:app:publisher:update</Scope>
<Scope>perm:app:store:view</Scope>
<Scope>perm:app:subscription:install</Scope>
<Scope>perm:app:subscription:uninstall</Scope>
<Scope>perm:admin:app:review:update</Scope>
<Scope>perm:admin:app:review:view</Scope>
<Scope>perm:admin:app:publisher:update</Scope>
<Scope>perm:admin:app:review:update</Scope>
<Scope>perm:admin:app:subscription:view</Scope>
<Scope>perm:device-types:types</Scope>
<Scope>perm:enterprise:modify</Scope>
<Scope>perm:enterprise:view</Scope>
<Scope>perm:android-work:customer</Scope>
<Scope>perm:android-work:admin</Scope>
<Scope>perm:application-command:modify</Scope>
<Scope>perm:sign-csr</Scope>
<Scope>perm:admin:devices:view</Scope>
<Scope>perm:admin:topics:view</Scope>
<Scope>perm:roles:add</Scope>
<Scope>perm:roles:add-users</Scope>
<Scope>perm:roles:update</Scope>
<Scope>perm:roles:permissions</Scope>
<Scope>perm:roles:details</Scope>
<Scope>perm:roles:view</Scope>
<Scope>perm:roles:create-combined-role</Scope>
<Scope>perm:roles:delete</Scope>
<Scope>perm:dashboard:vulnerabilities</Scope>
<Scope>perm:dashboard:non-compliant-count</Scope>
<Scope>perm:dashboard:non-compliant</Scope>
<Scope>perm:dashboard:by-groups</Scope>
<Scope>perm:dashboard:device-counts</Scope>
<Scope>perm:dashboard:feature-non-compliant</Scope>
<Scope>perm:dashboard:count-overview</Scope>
<Scope>perm:dashboard:filtered-count</Scope>
<Scope>perm:dashboard:details</Scope>
<Scope>perm:get-activity</Scope>
<Scope>perm:devices:delete</Scope>
<Scope>perm:devices:applications</Scope>
<Scope>perm:devices:effective-policy</Scope>
<Scope>perm:devices:compliance-data</Scope>
<Scope>perm:devices:features</Scope>
<Scope>perm:devices:operations</Scope>
<Scope>perm:devices:search</Scope>
<Scope>perm:devices:details</Scope>
<Scope>perm:devices:update</Scope>
<Scope>perm:devices:view</Scope>
<Scope>perm:view-configuration</Scope>
<Scope>perm:manage-configuration</Scope>
<Scope>perm:policies:remove</Scope>
<Scope>perm:policies:priorities</Scope>
<Scope>perm:policies:deactivate</Scope>
<Scope>perm:policies:get-policy-details</Scope>
<Scope>perm:policies:manage</Scope>
<Scope>perm:policies:activate</Scope>
<Scope>perm:policies:update</Scope>
<Scope>perm:policies:changes</Scope>
<Scope>perm:policies:get-details</Scope>
<Scope>perm:users:add</Scope>
<Scope>perm:users:details</Scope>
<Scope>perm:users:count</Scope>
<Scope>perm:users:delete</Scope>
<Scope>perm:users:roles</Scope>
<Scope>perm:users:user-details</Scope>
<Scope>perm:users:credentials</Scope>
<Scope>perm:users:search</Scope>
<Scope>perm:users:is-exist</Scope>
<Scope>perm:users:update</Scope>
<Scope>perm:users:send-invitation</Scope>
<Scope>perm:admin-users:view</Scope>
<Scope>perm:admin:devices:update-enrollment</Scope>
<Scope>perm:groups:devices</Scope>
<Scope>perm:groups:update</Scope>
<Scope>perm:groups:add</Scope>
<Scope>perm:groups:device</Scope>
<Scope>perm:groups:devices-count</Scope>
<Scope>perm:groups:remove</Scope>
<Scope>perm:groups:groups</Scope>
<Scope>perm:groups:groups-view</Scope>
<Scope>perm:groups:share</Scope>
<Scope>perm:groups:count</Scope>
<Scope>perm:groups:roles</Scope>
<Scope>perm:groups:devices-remove</Scope>
<Scope>perm:groups:devices-add</Scope>
<Scope>perm:groups:assign</Scope>
<Scope>perm:device-types:configs</Scope>
<Scope>perm:device-types:features</Scope>
<Scope>perm:device-types:types</Scope>
<Scope>perm:applications:install</Scope>
<Scope>perm:applications:uninstall</Scope>
<Scope>perm:admin-groups:count</Scope>
<Scope>perm:admin-groups:view</Scope>
<Scope>perm:notifications:mark-checked</Scope>
<Scope>perm:notifications:view</Scope>
<Scope>perm:admin:certificates:delete</Scope>
<Scope>perm:admin:certificates:details</Scope>
<Scope>perm:admin:certificates:view</Scope>
<Scope>perm:admin:certificates:add</Scope>
<Scope>perm:admin:certificates:verify</Scope>
<Scope>perm:admin</Scope>
<Scope>perm:devicetype:deployment</Scope>
<Scope>perm:device-types:events</Scope>
<Scope>perm:device-types:events:view</Scope>
<Scope>perm:admin:device-type</Scope>
<Scope>perm:admin:device-type:view</Scope>
<Scope>perm:admin:device-type:configs</Scope>
<Scope>perm:device:enroll</Scope>
<Scope>perm:geo-service:analytics-view</Scope>
<Scope>perm:geo-service:alerts-manage</Scope>
<Scope>appm:read</Scope>
<Scope>perm:devices:permanent-delete</Scope>
<Scope>perm:android:manage-configuration</Scope>
<Scope>perm:android:view-configuration</Scope>
</Scopes>
<SSOConfiguration>
<Issuer>device-mgt</Issuer>
</SSOConfiguration>
</UIConfiguration>

@ -1,5 +1,6 @@
instructions.configure = \
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.basics_${feature.version}/conf/cdm-config.xml,target:${installFolder}/../../conf/cdm-config.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.basics_${feature.version}/conf/mdm-ui-config.xml,target:${installFolder}/../../conf/mdm-ui-config.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.basics_${feature.version}/conf/license-config.xml,target:${installFolder}/../../conf/etc/license-config.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.basics_${feature.version}/conf/remote-appmanager-config.xml,target:${installFolder}/../../conf/etc/remote-appmanager-config.xml,overwrite:true);\
org.eclipse.equinox.p2.touchpoint.natives.copy(source:${installFolder}/../features/org.wso2.carbon.device.mgt.basics_${feature.version}/dbscripts/cdm,target:${installFolder}/../../../dbscripts/cdm,overwrite:true);\

Loading…
Cancel
Save