mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge with release-2.0.x branch
This commit is contained in:
commit
431ce58c65
@ -22,13 +22,13 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>apimgt-extensions</artifactId>
|
<artifactId>apimgt-extensions</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.apimgt.annotations</artifactId>
|
<artifactId>org.wso2.carbon.apimgt.annotations</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>bundle</packaging>
|
<packaging>bundle</packaging>
|
||||||
<name>WSO2 Carbon - API Management Annotations</name>
|
<name>WSO2 Carbon - API Management Annotations</name>
|
||||||
<description>WSO2 Carbon - API Management Custom Annotation Module</description>
|
<description>WSO2 Carbon - API Management Custom Annotation Module</description>
|
||||||
|
|||||||
@ -21,12 +21,12 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>apimgt-extensions</artifactId>
|
<artifactId>apimgt-extensions</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<artifactId>org.wso2.carbon.apimgt.application.extension.api</artifactId>
|
<artifactId>org.wso2.carbon.apimgt.application.extension.api</artifactId>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<name>WSO2 Carbon - API Application Management API</name>
|
<name>WSO2 Carbon - API Application Management API</name>
|
||||||
|
|||||||
@ -22,12 +22,12 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>apimgt-extensions</artifactId>
|
<artifactId>apimgt-extensions</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<artifactId>org.wso2.carbon.apimgt.application.extension</artifactId>
|
<artifactId>org.wso2.carbon.apimgt.application.extension</artifactId>
|
||||||
<packaging>bundle</packaging>
|
<packaging>bundle</packaging>
|
||||||
<name>WSO2 Carbon - API Application Management</name>
|
<name>WSO2 Carbon - API Application Management</name>
|
||||||
|
|||||||
@ -22,13 +22,13 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>apimgt-extensions</artifactId>
|
<artifactId>apimgt-extensions</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.apimgt.webapp.publisher</artifactId>
|
<artifactId>org.wso2.carbon.apimgt.webapp.publisher</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>bundle</packaging>
|
<packaging>bundle</packaging>
|
||||||
<name>WSO2 Carbon - API Management Webapp Publisher</name>
|
<name>WSO2 Carbon - API Management Webapp Publisher</name>
|
||||||
<description>WSO2 Carbon - API Management Webapp Publisher</description>
|
<description>WSO2 Carbon - API Management Webapp Publisher</description>
|
||||||
|
|||||||
@ -22,13 +22,13 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>apimgt-extensions</artifactId>
|
<artifactId>apimgt-extensions</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>WSO2 Carbon - API Management Extensions Component</name>
|
<name>WSO2 Carbon - API Management Extensions Component</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>certificate-mgt</artifactId>
|
<artifactId>certificate-mgt</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>certificate-mgt</artifactId>
|
<artifactId>certificate-mgt</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,13 +21,13 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>certificate-mgt</artifactId>
|
<artifactId>certificate-mgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.certificate.mgt.core</artifactId>
|
<artifactId>org.wso2.carbon.certificate.mgt.core</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>bundle</packaging>
|
<packaging>bundle</packaging>
|
||||||
<name>WSO2 Carbon - Certificate Management Core</name>
|
<name>WSO2 Carbon - Certificate Management Core</name>
|
||||||
<description>WSO2 Carbon - Certificate Management Core</description>
|
<description>WSO2 Carbon - Certificate Management Core</description>
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>certificate-mgt</artifactId>
|
<artifactId>certificate-mgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>WSO2 Carbon - Certificate Management Component</name>
|
<name>WSO2 Carbon - Certificate Management Component</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt-extensions</artifactId>
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt-extensions</artifactId>
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt-extensions</artifactId>
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt-extensions</artifactId>
|
<artifactId>device-mgt-extensions</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -1,58 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.jaxrs.beans;
|
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModel;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class holds Device Group user name and assigned roles of user for particular group. Exposed to external access.
|
|
||||||
*/
|
|
||||||
@ApiModel(value = "DeviceGroupShare", description = "This class carries roles assigned to a user of a managed device group.")
|
|
||||||
public class DeviceGroupShare implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 1998141711L;
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "username", value = "Username of the user.", required = true)
|
|
||||||
private String username;
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "roles", value = "List of roles assigned to user from the group.")
|
|
||||||
private List<String> groupRoles;
|
|
||||||
|
|
||||||
public String getUsername() {
|
|
||||||
return username;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUsername(String username) {
|
|
||||||
this.username = username;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getGroupRoles() {
|
|
||||||
return groupRoles;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupRoles(List<String> groupRoles) {
|
|
||||||
this.groupRoles = groupRoles;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,54 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016, 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.jaxrs.beans;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupUser;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class DeviceGroupUsersList extends BasePaginatedResult {
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "List of device group users returned")
|
|
||||||
@JsonProperty("users")
|
|
||||||
private List<GroupUser> users = new ArrayList<>();
|
|
||||||
|
|
||||||
public List<GroupUser> getList() {
|
|
||||||
return users;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setList(List<GroupUser> users) {
|
|
||||||
this.users = users;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
sb.append("{\n");
|
|
||||||
|
|
||||||
sb.append(" count: ").append(getCount()).append(",\n");
|
|
||||||
sb.append(" users: [").append(users).append("\n");
|
|
||||||
sb.append("]}\n");
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -19,26 +19,37 @@
|
|||||||
|
|
||||||
package org.wso2.carbon.device.mgt.jaxrs.service.api;
|
package org.wso2.carbon.device.mgt.jaxrs.service.api;
|
||||||
|
|
||||||
import io.swagger.annotations.SwaggerDefinition;
|
|
||||||
import io.swagger.annotations.Info;
|
|
||||||
import io.swagger.annotations.ExtensionProperty;
|
|
||||||
import io.swagger.annotations.Extension;
|
|
||||||
import io.swagger.annotations.Tag;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.AuthorizationScope;
|
|
||||||
import io.swagger.annotations.Authorization;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import io.swagger.annotations.ApiParam;
|
import io.swagger.annotations.ApiParam;
|
||||||
import io.swagger.annotations.ApiResponse;
|
import io.swagger.annotations.ApiResponse;
|
||||||
import io.swagger.annotations.ApiResponses;
|
import io.swagger.annotations.ApiResponses;
|
||||||
|
import io.swagger.annotations.Authorization;
|
||||||
|
import io.swagger.annotations.AuthorizationScope;
|
||||||
|
import io.swagger.annotations.Extension;
|
||||||
|
import io.swagger.annotations.ExtensionProperty;
|
||||||
|
import io.swagger.annotations.Info;
|
||||||
import io.swagger.annotations.ResponseHeader;
|
import io.swagger.annotations.ResponseHeader;
|
||||||
|
import io.swagger.annotations.SwaggerDefinition;
|
||||||
|
import io.swagger.annotations.Tag;
|
||||||
import org.apache.axis2.transport.http.HTTPConstants;
|
import org.apache.axis2.transport.http.HTTPConstants;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.*;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceGroupList;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceList;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.beans.RoleList;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.DELETE;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
import javax.ws.rs.PUT;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.PathParam;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -58,12 +69,14 @@ import java.util.List;
|
|||||||
}
|
}
|
||||||
),
|
),
|
||||||
tags = {
|
tags = {
|
||||||
@Tag(name = "device_management", description = "")
|
@Tag(name = "device_management", description = "Device group related REST-API. " +
|
||||||
|
"This can be used to manipulated device group related " +
|
||||||
|
"details.")
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@Path("/groups")
|
@Path("/groups")
|
||||||
@Api(value = "Device Group Management", description = "This API carries all device group management related operations " +
|
@Api(value = "Device Group Management", description = "This API carries all device group management related " +
|
||||||
"such as get all the available groups, etc.")
|
"operations such as get all the available groups, etc.")
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Consumes(MediaType.APPLICATION_JSON)
|
@Consumes(MediaType.APPLICATION_JSON)
|
||||||
public interface GroupManagementService {
|
public interface GroupManagementService {
|
||||||
@ -470,130 +483,10 @@ public interface GroupManagementService {
|
|||||||
required = true)
|
required = true)
|
||||||
@PathParam("groupId") int groupId,
|
@PathParam("groupId") int groupId,
|
||||||
@ApiParam(
|
@ApiParam(
|
||||||
name = "deviceGroupShare",
|
name = "userRoles",
|
||||||
value = "User name and the assigned roles for the share.",
|
value = "User roles to share group with.",
|
||||||
required = true)
|
required = true)
|
||||||
@Valid DeviceGroupShare deviceGroupShare);
|
@Valid List<String> userRoles);
|
||||||
|
|
||||||
@Path("/id/{groupId}/users")
|
|
||||||
@GET
|
|
||||||
@ApiOperation(
|
|
||||||
produces = MediaType.APPLICATION_JSON,
|
|
||||||
httpMethod = HTTPConstants.HEADER_GET,
|
|
||||||
value = "View list of users of a device group.",
|
|
||||||
notes = "Returns details of users which particular group has been shared with.",
|
|
||||||
tags = "Device Group Management",
|
|
||||||
authorizations = {
|
|
||||||
@Authorization(
|
|
||||||
value="permission",
|
|
||||||
scopes = { @AuthorizationScope(scope = "/device-mgt/groups/users/view",
|
|
||||||
description = "View users") }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
@ApiResponses(value = {
|
|
||||||
@ApiResponse(code = 200, message = "OK. \n Successfully fetched the users.",
|
|
||||||
response = DeviceGroupUsersList.class,
|
|
||||||
responseHeaders = {
|
|
||||||
@ResponseHeader(
|
|
||||||
name = "Content-Type",
|
|
||||||
description = "The content type of the body"),
|
|
||||||
@ResponseHeader(
|
|
||||||
name = "ETag",
|
|
||||||
description = "Entity Tag of the response resource.\n" +
|
|
||||||
"Used by caches, or in conditional requests."),
|
|
||||||
@ResponseHeader(
|
|
||||||
name = "Last-Modified",
|
|
||||||
description = "Date and time the resource has been modified the last time.\n" +
|
|
||||||
"Used by caches, or in conditional requests."),
|
|
||||||
}),
|
|
||||||
@ApiResponse(
|
|
||||||
code = 304,
|
|
||||||
message = "Not Modified. \n Empty body because the client has already the latest version of " +
|
|
||||||
"the requested resource."),
|
|
||||||
@ApiResponse(
|
|
||||||
code = 404,
|
|
||||||
message = "No groups found.",
|
|
||||||
response = ErrorResponse.class),
|
|
||||||
@ApiResponse(
|
|
||||||
code = 406,
|
|
||||||
message = "Not Acceptable.\n The requested media type is not supported."),
|
|
||||||
@ApiResponse(
|
|
||||||
code = 500,
|
|
||||||
message = "Internal Server Error. \n Server error occurred while fetching the users.",
|
|
||||||
response = ErrorResponse.class)
|
|
||||||
})
|
|
||||||
Response getUsersOfGroup(@ApiParam(
|
|
||||||
name = "groupId",
|
|
||||||
value = "ID of the group.",
|
|
||||||
required = true)
|
|
||||||
@PathParam("groupId") int groupId);
|
|
||||||
|
|
||||||
|
|
||||||
@Path("id/{groupId}/roles/create")
|
|
||||||
@POST
|
|
||||||
@ApiOperation(
|
|
||||||
produces = MediaType.APPLICATION_JSON,
|
|
||||||
httpMethod = HTTPConstants.HEADER_GET,
|
|
||||||
value = "Create a group sharing role to a device group.",
|
|
||||||
notes = "Group sharing is done through a group sharing role.",
|
|
||||||
tags = "Device Group Management",
|
|
||||||
authorizations = {
|
|
||||||
@Authorization(
|
|
||||||
value="permission",
|
|
||||||
scopes = { @AuthorizationScope(scope = "/device-mgt/groups/roles/create",
|
|
||||||
description = "Create roles") }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
@ApiResponses(value = {
|
|
||||||
@ApiResponse(code = 200, message = "OK. \n Successfully created the role.",
|
|
||||||
response = DeviceGroupUsersList.class,
|
|
||||||
responseHeaders = {
|
|
||||||
@ResponseHeader(
|
|
||||||
name = "Content-Type",
|
|
||||||
description = "The content type of the body"),
|
|
||||||
@ResponseHeader(
|
|
||||||
name = "ETag",
|
|
||||||
description = "Entity Tag of the response resource.\n" +
|
|
||||||
"Used by caches, or in conditional requests."),
|
|
||||||
@ResponseHeader(
|
|
||||||
name = "Last-Modified",
|
|
||||||
description = "Date and time the resource has been modified the last time.\n" +
|
|
||||||
"Used by caches, or in conditional requests."),
|
|
||||||
}),
|
|
||||||
@ApiResponse(
|
|
||||||
code = 304,
|
|
||||||
message = "Not Modified. \n Empty body because the client has already the latest version of " +
|
|
||||||
"the requested resource."),
|
|
||||||
@ApiResponse(
|
|
||||||
code = 404,
|
|
||||||
message = "No groups found.",
|
|
||||||
response = ErrorResponse.class),
|
|
||||||
@ApiResponse(
|
|
||||||
code = 406,
|
|
||||||
message = "Not Acceptable.\n The requested media type is not supported."),
|
|
||||||
@ApiResponse(
|
|
||||||
code = 500,
|
|
||||||
message = "Internal Server Error. \n Server error occurred while creating the role.",
|
|
||||||
response = ErrorResponse.class)
|
|
||||||
})
|
|
||||||
Response createGroupSharingRole(
|
|
||||||
@ApiParam(
|
|
||||||
name = "groupId",
|
|
||||||
value = "ID of the group.",
|
|
||||||
required = true)
|
|
||||||
@PathParam("groupId") int groupId,
|
|
||||||
@ApiParam(
|
|
||||||
name = "userName",
|
|
||||||
value = "User name of the current user.",
|
|
||||||
required = false)
|
|
||||||
@QueryParam("userName") String userName,
|
|
||||||
@ApiParam(
|
|
||||||
name = "roleInfo",
|
|
||||||
value = "Group role information with permissions and users",
|
|
||||||
required = true)
|
|
||||||
@Valid RoleInfo roleInfo);
|
|
||||||
|
|
||||||
@Path("/id/{groupId}/roles")
|
@Path("/id/{groupId}/roles")
|
||||||
@GET
|
@GET
|
||||||
@ -613,7 +506,7 @@ public interface GroupManagementService {
|
|||||||
)
|
)
|
||||||
@ApiResponses(value = {
|
@ApiResponses(value = {
|
||||||
@ApiResponse(code = 200, message = "OK. \n Successfully fetched the users.",
|
@ApiResponse(code = 200, message = "OK. \n Successfully fetched the users.",
|
||||||
response = DeviceGroupUsersList.class,
|
response = RoleList.class,
|
||||||
responseHeaders = {
|
responseHeaders = {
|
||||||
@ResponseHeader(
|
@ResponseHeader(
|
||||||
name = "Content-Type",
|
name = "Content-Type",
|
||||||
@ -647,12 +540,7 @@ public interface GroupManagementService {
|
|||||||
name = "groupId",
|
name = "groupId",
|
||||||
value = "ID of the group.",
|
value = "ID of the group.",
|
||||||
required = true)
|
required = true)
|
||||||
@PathParam("groupId") int groupId,
|
@PathParam("groupId") int groupId);
|
||||||
@ApiParam(
|
|
||||||
name = "userName",
|
|
||||||
value = "User name of the current user.",
|
|
||||||
required = false)
|
|
||||||
@QueryParam("userName") String userName);
|
|
||||||
|
|
||||||
@Path("/id/{groupId}/devices")
|
@Path("/id/{groupId}/devices")
|
||||||
@GET
|
@GET
|
||||||
|
|||||||
@ -356,6 +356,70 @@ public interface RoleManagementService {
|
|||||||
value = "The properties required to add a new role.",
|
value = "The properties required to add a new role.",
|
||||||
required = true) RoleInfo role);
|
required = true) RoleInfo role);
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("/create-combined-role/{roleName}")
|
||||||
|
@ApiOperation(
|
||||||
|
consumes = MediaType.APPLICATION_JSON,
|
||||||
|
produces = MediaType.APPLICATION_JSON,
|
||||||
|
httpMethod = "POST",
|
||||||
|
value = "Adding a combined Role",
|
||||||
|
notes = "WSO2 EMM supports role-based access control (RBAC) and role management. Add a new combined role to WSO2 EMM using this REST API.",
|
||||||
|
tags = "Role Management",
|
||||||
|
authorizations = {
|
||||||
|
@Authorization(
|
||||||
|
value="permission",
|
||||||
|
scopes = { @AuthorizationScope(scope = "/device-mgt/roles/manage",
|
||||||
|
description = "Manage Roles") }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(
|
||||||
|
code = 201,
|
||||||
|
message = "Created. \n Successfully created the role.",
|
||||||
|
responseHeaders = {
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Location",
|
||||||
|
description = "The URL to the newly added role."),
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Type",
|
||||||
|
description = "The content type of the body"),
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "ETag",
|
||||||
|
description = "Entity Tag of the response resource.\n" +
|
||||||
|
"Used by caches, or in conditional requests."),
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Last-Modified",
|
||||||
|
description = "Date and time the resource has been modified the last time.\n" +
|
||||||
|
"Used by caches, or in conditional requests.")}),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 303,
|
||||||
|
message = "See Other. \n The source can be retrieved from the URL specified in the location header.",
|
||||||
|
responseHeaders = {
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Location",
|
||||||
|
description = "The Source URL of the document.")}),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 400,
|
||||||
|
message = "Bad Request. \n Invalid request or validation error.",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 415,
|
||||||
|
message = "Unsupported media type. \n The format of the requested entity was not supported.",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 500,
|
||||||
|
message = "Internal Server Error. \n Server error occurred while adding a new role.",
|
||||||
|
response = ErrorResponse.class)
|
||||||
|
})
|
||||||
|
Response addCombinedRole(
|
||||||
|
@ApiParam(
|
||||||
|
name = "roles",
|
||||||
|
value = "List of roles names required to add a new combined role.",
|
||||||
|
required = true) List<String> roles,
|
||||||
|
@PathParam("roleName") String roleName,
|
||||||
|
@QueryParam("user-store") String userStoreName);
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
@Path("/{roleName}")
|
@Path("/{roleName}")
|
||||||
@ApiOperation(
|
@ApiOperation(
|
||||||
|
|||||||
@ -31,19 +31,16 @@ import org.wso2.carbon.device.mgt.common.PaginationResult;
|
|||||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException;
|
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupUser;
|
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.RoleDoesNotExistException;
|
import org.wso2.carbon.device.mgt.common.group.mgt.RoleDoesNotExistException;
|
||||||
import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService;
|
import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.*;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceGroupList;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceList;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.beans.RoleList;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.GroupManagementService;
|
import org.wso2.carbon.device.mgt.jaxrs.service.api.GroupManagementService;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.RequestValidationUtil;
|
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.RequestValidationUtil;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||||
import org.wso2.carbon.user.api.UserStoreException;
|
|
||||||
import org.wso2.carbon.user.api.UserStoreManager;
|
|
||||||
import org.wso2.carbon.user.core.multiplecredentials.UserDoesNotExistException;
|
|
||||||
|
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class GroupManagementServiceImpl implements GroupManagementService {
|
public class GroupManagementServiceImpl implements GroupManagementService {
|
||||||
@ -100,8 +97,6 @@ public class GroupManagementServiceImpl implements GroupManagementService {
|
|||||||
return Response.status(Response.Status.BAD_REQUEST).build();
|
return Response.status(Response.Status.BAD_REQUEST).build();
|
||||||
}
|
}
|
||||||
group.setOwner(owner);
|
group.setOwner(owner);
|
||||||
group.setDateOfCreation(new Date().getTime());
|
|
||||||
group.setDateOfLastUpdate(new Date().getTime());
|
|
||||||
try {
|
try {
|
||||||
DeviceMgtAPIUtils.getGroupManagementProviderService().createGroup(group, DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_PERMISSIONS);
|
DeviceMgtAPIUtils.getGroupManagementProviderService().createGroup(group, DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_PERMISSIONS);
|
||||||
return Response.status(Response.Status.CREATED).build();
|
return Response.status(Response.Status.CREATED).build();
|
||||||
@ -168,69 +163,24 @@ public class GroupManagementServiceImpl implements GroupManagementService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response manageGroupSharing(int groupId, DeviceGroupShare deviceGroupShare) {
|
public Response manageGroupSharing(int groupId, List<String> userRoles) {
|
||||||
try {
|
try {
|
||||||
DeviceMgtAPIUtils.getGroupManagementProviderService()
|
DeviceMgtAPIUtils.getGroupManagementProviderService()
|
||||||
.manageGroupSharing(groupId, deviceGroupShare.getUsername(), deviceGroupShare.getGroupRoles());
|
.manageGroupSharing(groupId, userRoles);
|
||||||
return Response.status(Response.Status.OK).build();
|
return Response.status(Response.Status.OK).build();
|
||||||
} catch (GroupManagementException e) {
|
} catch (GroupManagementException e) {
|
||||||
String msg = "Error occurred while managing group share.";
|
String msg = "Error occurred while managing group share.";
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||||
} catch (RoleDoesNotExistException | UserDoesNotExistException e) {
|
} catch (RoleDoesNotExistException e) {
|
||||||
return Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).build();
|
return Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getUsersOfGroup(int groupId) {
|
public Response getRolesOfGroup(int groupId) {
|
||||||
try {
|
try {
|
||||||
List<GroupUser> groupUsers = DeviceMgtAPIUtils.getGroupManagementProviderService().getUsers(groupId);
|
List<String> groupRoles = DeviceMgtAPIUtils.getGroupManagementProviderService().getRoles(groupId);
|
||||||
if (groupUsers != null && groupUsers.size() > 0) {
|
|
||||||
DeviceGroupUsersList deviceGroupUsersList = new DeviceGroupUsersList();
|
|
||||||
deviceGroupUsersList.setList(groupUsers);
|
|
||||||
deviceGroupUsersList.setCount(groupUsers.size());
|
|
||||||
return Response.status(Response.Status.OK).entity(deviceGroupUsersList).build();
|
|
||||||
} else {
|
|
||||||
return Response.status(Response.Status.NOT_FOUND).build();
|
|
||||||
}
|
|
||||||
} catch (GroupManagementException e) {
|
|
||||||
String msg = "Error occurred while getting users of the group.";
|
|
||||||
log.error(msg, e);
|
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response createGroupSharingRole(int groupId, String userName, RoleInfo roleInfo) {
|
|
||||||
try {
|
|
||||||
DeviceMgtAPIUtils.getGroupManagementProviderService()
|
|
||||||
.addGroupSharingRole(userName, groupId, roleInfo.getRoleName(), roleInfo.getPermissions());
|
|
||||||
return Response.status(Response.Status.CREATED).build();
|
|
||||||
} catch (GroupManagementException e) {
|
|
||||||
String msg = "Error occurred while creating group sharing role.";
|
|
||||||
log.error(msg, e);
|
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Response getRolesOfGroup(int groupId, String userName) {
|
|
||||||
try {
|
|
||||||
List<String> groupRoles;
|
|
||||||
if(userName != null) {
|
|
||||||
UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager();
|
|
||||||
if (!userStoreManager.isExistingUser(userName)) {
|
|
||||||
// returning response with bad request state
|
|
||||||
return Response.status(Response.Status.CONFLICT).entity(
|
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage("User by username: " +
|
|
||||||
userName + " doesn't exists. Therefore, request made to get user " +
|
|
||||||
"was refused.").build()).build();
|
|
||||||
}
|
|
||||||
groupRoles = DeviceMgtAPIUtils.getGroupManagementProviderService().getRoles(userName, groupId);
|
|
||||||
} else {
|
|
||||||
groupRoles = DeviceMgtAPIUtils.getGroupManagementProviderService().getRoles(groupId);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(groupRoles != null && groupRoles.size() > 0) {
|
if(groupRoles != null && groupRoles.size() > 0) {
|
||||||
RoleList deviceGroupRolesList = new RoleList();
|
RoleList deviceGroupRolesList = new RoleList();
|
||||||
@ -244,10 +194,6 @@ public class GroupManagementServiceImpl implements GroupManagementService {
|
|||||||
String msg = "Error occurred while getting roles of the group.";
|
String msg = "Error occurred while getting roles of the group.";
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||||
} catch (UserStoreException e) {
|
|
||||||
String msg = "Error while retrieving the user.";
|
|
||||||
log.error(msg, e);
|
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -30,13 +30,26 @@ import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.FilteringUtil;
|
|||||||
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.RequestValidationUtil;
|
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.RequestValidationUtil;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.util.SetReferenceTransformer;
|
import org.wso2.carbon.device.mgt.jaxrs.util.SetReferenceTransformer;
|
||||||
import org.wso2.carbon.user.api.*;
|
import org.wso2.carbon.user.api.AuthorizationManager;
|
||||||
|
import org.wso2.carbon.user.api.Permission;
|
||||||
|
import org.wso2.carbon.user.api.UserRealm;
|
||||||
|
import org.wso2.carbon.user.api.UserStoreException;
|
||||||
|
import org.wso2.carbon.user.api.UserStoreManager;
|
||||||
import org.wso2.carbon.user.core.common.AbstractUserStoreManager;
|
import org.wso2.carbon.user.core.common.AbstractUserStoreManager;
|
||||||
import org.wso2.carbon.user.mgt.UserRealmProxy;
|
import org.wso2.carbon.user.mgt.UserRealmProxy;
|
||||||
import org.wso2.carbon.user.mgt.common.UIPermissionNode;
|
import org.wso2.carbon.user.mgt.common.UIPermissionNode;
|
||||||
import org.wso2.carbon.user.mgt.common.UserAdminException;
|
import org.wso2.carbon.user.mgt.common.UserAdminException;
|
||||||
|
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.DELETE;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.HeaderParam;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
import javax.ws.rs.PUT;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.PathParam;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
@ -45,7 +58,9 @@ import java.net.URISyntaxException;
|
|||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import static org.wso2.carbon.device.mgt.jaxrs.util.Constants.PRIMARY_USER_STORE;
|
import static org.wso2.carbon.device.mgt.jaxrs.util.Constants.PRIMARY_USER_STORE;
|
||||||
|
|
||||||
@ -69,7 +84,7 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
RoleList targetRoles = new RoleList();
|
RoleList targetRoles = new RoleList();
|
||||||
|
|
||||||
//if user store is null set it to primary
|
//if user store is null set it to primary
|
||||||
if(userStore == null || "".equals(userStore)){
|
if (userStore == null || "".equals(userStore)) {
|
||||||
userStore = PRIMARY_USER_STORE;
|
userStore = PRIMARY_USER_STORE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,7 +109,8 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
@Path("/{roleName}/permissions")
|
@Path("/{roleName}/permissions")
|
||||||
@Override
|
@Override
|
||||||
public Response getPermissionsOfRole(@PathParam("roleName") String roleName,
|
public Response getPermissionsOfRole(@PathParam("roleName") String roleName,
|
||||||
@QueryParam("user-store") String userStoreName, @HeaderParam("If-Modified-Since") String ifModifiedSince) {
|
@QueryParam("user-store") String userStoreName,
|
||||||
|
@HeaderParam("If-Modified-Since") String ifModifiedSince) {
|
||||||
if (userStoreName != null && !userStoreName.isEmpty()) {
|
if (userStoreName != null && !userStoreName.isEmpty()) {
|
||||||
roleName = userStoreName + "/" + roleName;
|
roleName = userStoreName + "/" + roleName;
|
||||||
}
|
}
|
||||||
@ -166,7 +182,7 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
@Path("/{roleName}")
|
@Path("/{roleName}")
|
||||||
@Override
|
@Override
|
||||||
public Response getRole(@PathParam("roleName") String roleName, @QueryParam("user-store") String userStoreName,
|
public Response getRole(@PathParam("roleName") String roleName, @QueryParam("user-store") String userStoreName,
|
||||||
@HeaderParam("If-Modified-Since") String ifModifiedSince) {
|
@HeaderParam("If-Modified-Since") String ifModifiedSince) {
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("Getting the list of user roles");
|
log.debug("Getting the list of user roles");
|
||||||
}
|
}
|
||||||
@ -181,7 +197,7 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
if (!userStoreManager.isExistingRole(roleName)) {
|
if (!userStoreManager.isExistingRole(roleName)) {
|
||||||
return Response.status(404).entity(
|
return Response.status(404).entity(
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage("No role exists with the name '" +
|
new ErrorResponse.ErrorResponseBuilder().setMessage("No role exists with the name '" +
|
||||||
roleName + "'").build()).build();
|
roleName + "'").build()).build();
|
||||||
}
|
}
|
||||||
roleInfo.setRoleName(roleName);
|
roleInfo.setRoleName(roleName);
|
||||||
roleInfo.setUsers(userStoreManager.getUserListOfRole(roleName));
|
roleInfo.setUsers(userStoreManager.getUserListOfRole(roleName));
|
||||||
@ -235,7 +251,7 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
//TODO fix what's returned in the entity
|
//TODO fix what's returned in the entity
|
||||||
return Response.created(new URI(API_BASE_PATH + "/" + URLEncoder.encode(roleInfo.getRoleName(), "UTF-8"))).
|
return Response.created(new URI(API_BASE_PATH + "/" + URLEncoder.encode(roleInfo.getRoleName(), "UTF-8"))).
|
||||||
entity("Role '" + roleInfo.getRoleName() + "' has " + "successfully been"
|
entity("Role '" + roleInfo.getRoleName() + "' has " + "successfully been"
|
||||||
+ " added").build();
|
+ " added").build();
|
||||||
} catch (UserStoreException e) {
|
} catch (UserStoreException e) {
|
||||||
String msg = "Error occurred while adding role '" + roleInfo.getRoleName() + "'";
|
String msg = "Error occurred while adding role '" + roleInfo.getRoleName() + "'";
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
@ -255,11 +271,76 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("/create-combined-role/{roleName}")
|
||||||
|
@Override
|
||||||
|
public Response addCombinedRole(List<String> roles, @PathParam("roleName") String roleName,
|
||||||
|
@QueryParam("user-store") String userStoreName) {
|
||||||
|
if (userStoreName != null && !userStoreName.isEmpty()) {
|
||||||
|
roleName = userStoreName + "/" + roleName;
|
||||||
|
}
|
||||||
|
if (roles.size() < 2) {
|
||||||
|
return Response.status(400).entity(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setMessage("Combining Roles requires at least two roles.")
|
||||||
|
.build()
|
||||||
|
).build();
|
||||||
|
}
|
||||||
|
for (String role : roles) {
|
||||||
|
RequestValidationUtil.validateRoleName(role);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
UserStoreManager userStoreManager = DeviceMgtAPIUtils.getUserStoreManager();
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Persisting the role in the underlying user store");
|
||||||
|
}
|
||||||
|
|
||||||
|
HashSet<Permission> permsSet = new HashSet<>();
|
||||||
|
try {
|
||||||
|
for (String role : roles) {
|
||||||
|
mergePermissions(new UIPermissionNode[]{getRolePermissions(role)}, permsSet);
|
||||||
|
}
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
return Response.status(404).entity(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setMessage(e.getMessage()).build()
|
||||||
|
).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
Permission[] permissions = permsSet.toArray(new Permission[permsSet.size()]);
|
||||||
|
userStoreManager.addRole(roleName, new String[0], permissions);
|
||||||
|
|
||||||
|
//TODO fix what's returned in the entity
|
||||||
|
return Response.created(new URI(API_BASE_PATH + "/" + URLEncoder.encode(roleName, "UTF-8"))).
|
||||||
|
entity("Role '" + roleName + "' has " + "successfully been"
|
||||||
|
+ " added").build();
|
||||||
|
} catch (UserAdminException e) {
|
||||||
|
String msg = "Error occurred while retrieving the permissions of role '" + roleName + "'";
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.serverError().entity(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
||||||
|
} catch (UserStoreException e) {
|
||||||
|
String msg = "Error occurred while adding role '" + roleName + "'";
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.serverError().entity(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
||||||
|
} catch (URISyntaxException e) {
|
||||||
|
String msg = "Error occurred while composing the URI at which the information of the newly created role " +
|
||||||
|
"can be retrieved";
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.serverError().entity(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
String msg = "Error occurred while encoding role name";
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.serverError().entity(
|
||||||
|
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
@Path("/{roleName}")
|
@Path("/{roleName}")
|
||||||
@Override
|
@Override
|
||||||
public Response updateRole(@PathParam("roleName") String roleName, RoleInfo roleInfo,
|
public Response updateRole(@PathParam("roleName") String roleName, RoleInfo roleInfo,
|
||||||
@QueryParam("user-store") String userStoreName) {
|
@QueryParam("user-store") String userStoreName) {
|
||||||
if (userStoreName != null && !userStoreName.isEmpty()) {
|
if (userStoreName != null && !userStoreName.isEmpty()) {
|
||||||
roleName = userStoreName + "/" + roleName;
|
roleName = userStoreName + "/" + roleName;
|
||||||
}
|
}
|
||||||
@ -271,7 +352,7 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
if (!userStoreManager.isExistingRole(roleName)) {
|
if (!userStoreManager.isExistingRole(roleName)) {
|
||||||
return Response.status(404).entity(
|
return Response.status(404).entity(
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage("No role exists with the name '" +
|
new ErrorResponse.ErrorResponseBuilder().setMessage("No role exists with the name '" +
|
||||||
roleName + "'").build()).build();
|
roleName + "'").build()).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
final AuthorizationManager authorizationManager = userRealm.getAuthorizationManager();
|
final AuthorizationManager authorizationManager = userRealm.getAuthorizationManager();
|
||||||
@ -287,7 +368,7 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
if (roleInfo.getUsers() != null) {
|
if (roleInfo.getUsers() != null) {
|
||||||
SetReferenceTransformer<String> transformer = new SetReferenceTransformer<>();
|
SetReferenceTransformer<String> transformer = new SetReferenceTransformer<>();
|
||||||
transformer.transform(Arrays.asList(userStoreManager.getUserListOfRole(newRoleName)),
|
transformer.transform(Arrays.asList(userStoreManager.getUserListOfRole(newRoleName)),
|
||||||
Arrays.asList(roleInfo.getUsers()));
|
Arrays.asList(roleInfo.getUsers()));
|
||||||
final String[] usersToAdd = transformer.getObjectsToAdd().toArray(new String[transformer
|
final String[] usersToAdd = transformer.getObjectsToAdd().toArray(new String[transformer
|
||||||
.getObjectsToAdd().size()]);
|
.getObjectsToAdd().size()]);
|
||||||
final String[] usersToDelete = transformer.getObjectsToRemove().toArray(new String[transformer
|
final String[] usersToDelete = transformer.getObjectsToRemove().toArray(new String[transformer
|
||||||
@ -307,7 +388,7 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
}
|
}
|
||||||
//TODO: Need to send the updated role information in the entity back to the client
|
//TODO: Need to send the updated role information in the entity back to the client
|
||||||
return Response.status(Response.Status.OK).entity("Role '" + roleInfo.getRoleName() + "' has " +
|
return Response.status(Response.Status.OK).entity("Role '" + roleInfo.getRoleName() + "' has " +
|
||||||
"successfully been updated").build();
|
"successfully been updated").build();
|
||||||
} catch (UserStoreException e) {
|
} catch (UserStoreException e) {
|
||||||
String msg = "Error occurred while updating role '" + roleName + "'";
|
String msg = "Error occurred while updating role '" + roleName + "'";
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
@ -330,7 +411,7 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
if (!userStoreManager.isExistingRole(roleName)) {
|
if (!userStoreManager.isExistingRole(roleName)) {
|
||||||
return Response.status(404).entity(
|
return Response.status(404).entity(
|
||||||
new ErrorResponse.ErrorResponseBuilder().setMessage("No role exists with the name '" +
|
new ErrorResponse.ErrorResponseBuilder().setMessage("No role exists with the name '" +
|
||||||
roleName + "'").build()).build();
|
roleName + "'").build()).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
final AuthorizationManager authorizationManager = userRealm.getAuthorizationManager();
|
final AuthorizationManager authorizationManager = userRealm.getAuthorizationManager();
|
||||||
@ -354,7 +435,7 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
@Path("/{roleName}/users")
|
@Path("/{roleName}/users")
|
||||||
@Override
|
@Override
|
||||||
public Response updateUsersOfRole(@PathParam("roleName") String roleName,
|
public Response updateUsersOfRole(@PathParam("roleName") String roleName,
|
||||||
@QueryParam("user-store") String userStoreName, List<String> users) {
|
@QueryParam("user-store") String userStoreName, List<String> users) {
|
||||||
if (userStoreName != null && !userStoreName.isEmpty()) {
|
if (userStoreName != null && !userStoreName.isEmpty()) {
|
||||||
roleName = userStoreName + "/" + roleName;
|
roleName = userStoreName + "/" + roleName;
|
||||||
}
|
}
|
||||||
@ -367,7 +448,7 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
}
|
}
|
||||||
SetReferenceTransformer<String> transformer = new SetReferenceTransformer<>();
|
SetReferenceTransformer<String> transformer = new SetReferenceTransformer<>();
|
||||||
transformer.transform(Arrays.asList(userStoreManager.getUserListOfRole(roleName)),
|
transformer.transform(Arrays.asList(userStoreManager.getUserListOfRole(roleName)),
|
||||||
users);
|
users);
|
||||||
final String[] usersToAdd = transformer.getObjectsToAdd().toArray(new String[transformer
|
final String[] usersToAdd = transformer.getObjectsToAdd().toArray(new String[transformer
|
||||||
.getObjectsToAdd().size()]);
|
.getObjectsToAdd().size()]);
|
||||||
final String[] usersToDelete = transformer.getObjectsToRemove().toArray(new String[transformer
|
final String[] usersToDelete = transformer.getObjectsToRemove().toArray(new String[transformer
|
||||||
@ -376,7 +457,8 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
userStoreManager.updateUserListOfRole(roleName, usersToDelete, usersToAdd);
|
userStoreManager.updateUserListOfRole(roleName, usersToDelete, usersToAdd);
|
||||||
|
|
||||||
return Response.status(Response.Status.OK).entity("Role '" + roleName + "' has " +
|
return Response.status(Response.Status.OK).entity("Role '" + roleName + "' has " +
|
||||||
"successfully been updated with the user list").build();
|
"successfully been updated with the user list")
|
||||||
|
.build();
|
||||||
} catch (UserStoreException e) {
|
} catch (UserStoreException e) {
|
||||||
String msg = "Error occurred while updating the users of the role '" + roleName + "'";
|
String msg = "Error occurred while updating the users of the role '" + roleName + "'";
|
||||||
log.error(msg, e);
|
log.error(msg, e);
|
||||||
@ -400,7 +482,8 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
// removing all internal roles, roles created for Service-providers and application related roles.
|
// removing all internal roles, roles created for Service-providers and application related roles.
|
||||||
List<String> filteredRoles = new ArrayList<>();
|
List<String> filteredRoles = new ArrayList<>();
|
||||||
for (String role : roles) {
|
for (String role : roles) {
|
||||||
if (!(role.startsWith("Internal/") || role.startsWith("Authentication/") || role.startsWith("Application/"))) {
|
if (!(role.startsWith("Internal/") || role.startsWith("Authentication/") || role.startsWith(
|
||||||
|
"Application/"))) {
|
||||||
if (!filterRolesByName) {
|
if (!filterRolesByName) {
|
||||||
filteredRoles.add(role);
|
filteredRoles.add(role);
|
||||||
} else {
|
} else {
|
||||||
@ -413,4 +496,31 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
|||||||
return filteredRoles;
|
return filteredRoles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Set<Permission> mergePermissions(UIPermissionNode[] permissionNodes, Set<Permission> permissions)
|
||||||
|
throws UserStoreException, UserAdminException {
|
||||||
|
for (UIPermissionNode permissionNode : permissionNodes) {
|
||||||
|
if (permissionNode.getNodeList().length > 0) {
|
||||||
|
mergePermissions(permissionNode.getNodeList(), permissions);
|
||||||
|
}
|
||||||
|
if (permissionNode.isSelected()) {
|
||||||
|
permissions.add(new Permission(permissionNode.getResourcePath(), CarbonConstants.UI_PERMISSION_ACTION));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return permissions;
|
||||||
|
}
|
||||||
|
|
||||||
|
private UIPermissionNode getRolePermissions(String roleName) throws UserStoreException, UserAdminException {
|
||||||
|
final UserRealm userRealm = DeviceMgtAPIUtils.getUserRealm();
|
||||||
|
if (!userRealm.getUserStoreManager().isExistingRole(roleName)) {
|
||||||
|
throw new IllegalArgumentException("No role exists with the name '" + roleName + "'");
|
||||||
|
}
|
||||||
|
|
||||||
|
final UIPermissionNode rolePermissions = this.getUIPermissionNode(roleName, userRealm);
|
||||||
|
if (rolePermissions == null) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("No permissions found for the role '" + roleName + "'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return rolePermissions;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -20,10 +20,7 @@ package org.wso2.carbon.device.mgt.common.group.mgt;
|
|||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds Device Group details and expose to external access
|
* Holds Device Group details and expose to external access
|
||||||
@ -44,10 +41,14 @@ public class DeviceGroup implements Serializable {
|
|||||||
required = true)
|
required = true)
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
private Long dateOfCreation;
|
|
||||||
private Long dateOfLastUpdate;
|
|
||||||
private String owner;
|
private String owner;
|
||||||
|
|
||||||
|
public DeviceGroup() {}
|
||||||
|
|
||||||
|
public DeviceGroup(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
public int getGroupId() {
|
public int getGroupId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
@ -72,22 +73,6 @@ public class DeviceGroup implements Serializable {
|
|||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getDateOfCreation() {
|
|
||||||
return dateOfCreation;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDateOfCreation(Long dateOfCreation) {
|
|
||||||
this.dateOfCreation = dateOfCreation;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getDateOfLastUpdate() {
|
|
||||||
return dateOfLastUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDateOfLastUpdate(Long dateOfLastUpdate) {
|
|
||||||
this.dateOfLastUpdate = dateOfLastUpdate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOwner() {
|
public String getOwner() {
|
||||||
return owner;
|
return owner;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -86,6 +86,18 @@ public interface GroupDAO {
|
|||||||
*/
|
*/
|
||||||
List<DeviceGroup> getGroups(GroupPaginationRequest paginationRequest, int tenantId) throws GroupManagementDAOException;
|
List<DeviceGroup> getGroups(GroupPaginationRequest paginationRequest, int tenantId) throws GroupManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get paginated list of Device Groups in tenant with specified device group ids.
|
||||||
|
*
|
||||||
|
* @param paginationRequest to filter results.
|
||||||
|
* @param deviceGroupIds of groups required.
|
||||||
|
* @param tenantId of user's tenant.
|
||||||
|
* @return List of all Device Groups in tenant.
|
||||||
|
* @throws GroupManagementDAOException
|
||||||
|
*/
|
||||||
|
List<DeviceGroup> getGroups(GroupPaginationRequest paginationRequest, List<Integer> deviceGroupIds,
|
||||||
|
int tenantId) throws GroupManagementDAOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of Device Groups in tenant.
|
* Get the list of Device Groups in tenant.
|
||||||
*
|
*
|
||||||
@ -178,4 +190,94 @@ public interface GroupDAO {
|
|||||||
List<Device> getDevices(int groupId, int startIndex, int rowCount, int tenantId)
|
List<Device> getDevices(int groupId, int startIndex, int rowCount, int tenantId)
|
||||||
throws GroupManagementDAOException;
|
throws GroupManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all user roles for device group.
|
||||||
|
*
|
||||||
|
* @param groupId of the group
|
||||||
|
* @param tenantId of user's tenant.
|
||||||
|
* @return list of roles
|
||||||
|
* @throws GroupManagementDAOException
|
||||||
|
*/
|
||||||
|
List<String> getRoles(int groupId, int tenantId) throws GroupManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add user role for device group.
|
||||||
|
*
|
||||||
|
* @param groupId of the group.
|
||||||
|
* @param role to be added.
|
||||||
|
* @param tenantId of user's tenant.
|
||||||
|
* @throws GroupManagementDAOException
|
||||||
|
*/
|
||||||
|
void addRole(int groupId, String role, int tenantId) throws GroupManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add user role for device group.
|
||||||
|
*
|
||||||
|
* @param groupId of the group.
|
||||||
|
* @param role to be removed.
|
||||||
|
* @param tenantId of user's tenant.
|
||||||
|
* @throws GroupManagementDAOException
|
||||||
|
*/
|
||||||
|
void removeRole(int groupId, String role, int tenantId) throws GroupManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all device groups which shared with a user role.
|
||||||
|
*
|
||||||
|
* @param roles of the group.
|
||||||
|
* @param tenantId of user's tenant.
|
||||||
|
* @return list of device groups.
|
||||||
|
* @throws GroupManagementDAOException
|
||||||
|
*/
|
||||||
|
List<DeviceGroup> getGroups(String[] roles, int tenantId) throws GroupManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all device group ids which shared with a user role.
|
||||||
|
*
|
||||||
|
* @param roles of the group.
|
||||||
|
* @param tenantId of user's tenant.
|
||||||
|
* @return list of device group ids.
|
||||||
|
* @throws GroupManagementDAOException
|
||||||
|
*/
|
||||||
|
List<Integer> getGroupIds(String[] roles, int tenantId) throws GroupManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get count of all device groups which shared with a user role.
|
||||||
|
*
|
||||||
|
* @param roles of the group.
|
||||||
|
* @param tenantId of user's tenant.
|
||||||
|
* @return count of device groups.
|
||||||
|
* @throws GroupManagementDAOException
|
||||||
|
*/
|
||||||
|
int getGroupsCount(String[] roles, int tenantId) throws GroupManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all device groups which owned by user.
|
||||||
|
*
|
||||||
|
* @param username of the owner.
|
||||||
|
* @param tenantId of user's tenant.
|
||||||
|
* @return list of device groups.
|
||||||
|
* @throws GroupManagementDAOException
|
||||||
|
*/
|
||||||
|
List<DeviceGroup> getOwnGroups(String username, int tenantId) throws GroupManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all device group ids which owned by user.
|
||||||
|
*
|
||||||
|
* @param username of the owner.
|
||||||
|
* @param tenantId of user's tenant.
|
||||||
|
* @return list of device group ids.
|
||||||
|
* @throws GroupManagementDAOException
|
||||||
|
*/
|
||||||
|
List<Integer> getOwnGroupIds(String username, int tenantId) throws GroupManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get count of device groups which owned by user.
|
||||||
|
*
|
||||||
|
* @param username of the owner.
|
||||||
|
* @param tenantId of user's tenant.
|
||||||
|
* @return count of device groups.
|
||||||
|
* @throws GroupManagementDAOException
|
||||||
|
*/
|
||||||
|
int getOwnGroupsCount(String username, int tenantId) throws GroupManagementDAOException;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,9 +22,9 @@ import org.wso2.carbon.device.mgt.common.Device;
|
|||||||
import org.wso2.carbon.device.mgt.common.GroupPaginationRequest;
|
import org.wso2.carbon.device.mgt.common.GroupPaginationRequest;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.GroupDAO;
|
import org.wso2.carbon.device.mgt.core.dao.GroupDAO;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
|
|
||||||
import org.wso2.carbon.device.mgt.core.dao.GroupManagementDAOException;
|
import org.wso2.carbon.device.mgt.core.dao.GroupManagementDAOException;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.GroupManagementDAOFactory;
|
import org.wso2.carbon.device.mgt.core.dao.GroupManagementDAOFactory;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.util.GroupManagementDAOUtil;
|
import org.wso2.carbon.device.mgt.core.dao.util.GroupManagementDAOUtil;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
@ -32,7 +32,6 @@ import java.sql.PreparedStatement;
|
|||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -47,15 +46,12 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
int groupId = -1;
|
int groupId = -1;
|
||||||
try {
|
try {
|
||||||
Connection conn = GroupManagementDAOFactory.getConnection();
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
String sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, DATE_OF_CREATE, DATE_OF_LAST_UPDATE, "
|
String sql = "INSERT INTO DM_GROUP(DESCRIPTION, GROUP_NAME, OWNER, TENANT_ID) VALUES (?, ?, ?, ?)";
|
||||||
+ "OWNER, TENANT_ID) VALUES (?, ?, ?, ?, ?, ?)";
|
|
||||||
stmt = conn.prepareStatement(sql, new String[]{"ID"});
|
stmt = conn.prepareStatement(sql, new String[]{"ID"});
|
||||||
stmt.setString(1, deviceGroup.getDescription());
|
stmt.setString(1, deviceGroup.getDescription());
|
||||||
stmt.setString(2, deviceGroup.getName());
|
stmt.setString(2, deviceGroup.getName());
|
||||||
stmt.setLong(3, new Date().getTime());
|
stmt.setString(3, deviceGroup.getOwner());
|
||||||
stmt.setLong(4, new Date().getTime());
|
stmt.setInt(4, tenantId);
|
||||||
stmt.setString(5, deviceGroup.getOwner());
|
|
||||||
stmt.setInt(6, tenantId);
|
|
||||||
stmt.executeUpdate();
|
stmt.executeUpdate();
|
||||||
rs = stmt.getGeneratedKeys();
|
rs = stmt.getGeneratedKeys();
|
||||||
if (rs.next()) {
|
if (rs.next()) {
|
||||||
@ -64,7 +60,7 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
return groupId;
|
return groupId;
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new GroupManagementDAOException("Error occurred while adding deviceGroup '" +
|
throw new GroupManagementDAOException("Error occurred while adding deviceGroup '" +
|
||||||
deviceGroup.getName() + "'", e);
|
deviceGroup.getName() + "'", e);
|
||||||
} finally {
|
} finally {
|
||||||
GroupManagementDAOUtil.cleanupResources(stmt, null);
|
GroupManagementDAOUtil.cleanupResources(stmt, null);
|
||||||
}
|
}
|
||||||
@ -76,19 +72,18 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
PreparedStatement stmt = null;
|
PreparedStatement stmt = null;
|
||||||
try {
|
try {
|
||||||
Connection conn = GroupManagementDAOFactory.getConnection();
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
String sql = "UPDATE DM_GROUP SET DESCRIPTION = ?, GROUP_NAME = ?, DATE_OF_LAST_UPDATE = ?, OWNER = ? "
|
String sql =
|
||||||
+ "WHERE ID = ? AND TENANT_ID = ?";
|
"UPDATE DM_GROUP SET DESCRIPTION = ?, GROUP_NAME = ?, OWNER = ? WHERE ID = ? AND TENANT_ID = ?";
|
||||||
stmt = conn.prepareStatement(sql);
|
stmt = conn.prepareStatement(sql);
|
||||||
stmt.setString(1, deviceGroup.getDescription());
|
stmt.setString(1, deviceGroup.getDescription());
|
||||||
stmt.setString(2, deviceGroup.getName());
|
stmt.setString(2, deviceGroup.getName());
|
||||||
stmt.setLong(3, deviceGroup.getDateOfLastUpdate());
|
stmt.setString(3, deviceGroup.getOwner());
|
||||||
stmt.setString(4, deviceGroup.getOwner());
|
stmt.setInt(4, groupId);
|
||||||
stmt.setInt(5, groupId);
|
stmt.setInt(5, tenantId);
|
||||||
stmt.setInt(6, tenantId);
|
|
||||||
stmt.executeUpdate();
|
stmt.executeUpdate();
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new GroupManagementDAOException("Error occurred while updating deviceGroup '" +
|
throw new GroupManagementDAOException("Error occurred while updating deviceGroup '" +
|
||||||
deviceGroup.getName() + "'", e);
|
deviceGroup.getName() + "'", e);
|
||||||
} finally {
|
} finally {
|
||||||
GroupManagementDAOUtil.cleanupResources(stmt, null);
|
GroupManagementDAOUtil.cleanupResources(stmt, null);
|
||||||
}
|
}
|
||||||
@ -100,7 +95,12 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
PreparedStatement stmt = null;
|
PreparedStatement stmt = null;
|
||||||
try {
|
try {
|
||||||
conn = GroupManagementDAOFactory.getConnection();
|
conn = GroupManagementDAOFactory.getConnection();
|
||||||
String sql = "DELETE FROM DM_DEVICE_GROUP_MAP WHERE GROUP_ID = ? AND TENANT_ID = ?";
|
String sql = "DELETE FROM DM_ROLE_GROUP_MAP WHERE GROUP_ID = ? AND TENANT_ID = ?";
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
stmt.setInt(1, groupId);
|
||||||
|
stmt.setInt(2, tenantId);
|
||||||
|
stmt.executeUpdate();
|
||||||
|
sql = "DELETE FROM DM_DEVICE_GROUP_MAP WHERE GROUP_ID = ? AND TENANT_ID = ?";
|
||||||
stmt = conn.prepareStatement(sql);
|
stmt = conn.prepareStatement(sql);
|
||||||
stmt.setInt(1, groupId);
|
stmt.setInt(1, groupId);
|
||||||
stmt.setInt(2, tenantId);
|
stmt.setInt(2, tenantId);
|
||||||
@ -131,8 +131,7 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
ResultSet resultSet = null;
|
ResultSet resultSet = null;
|
||||||
try {
|
try {
|
||||||
Connection conn = GroupManagementDAOFactory.getConnection();
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
String sql = "SELECT ID, DESCRIPTION, GROUP_NAME, DATE_OF_CREATE, DATE_OF_LAST_UPDATE, OWNER "
|
String sql = "SELECT ID, DESCRIPTION, GROUP_NAME, OWNER FROM DM_GROUP WHERE ID = ? AND TENANT_ID = ?";
|
||||||
+ "FROM DM_GROUP WHERE ID = ? AND TENANT_ID = ?";
|
|
||||||
stmt = conn.prepareStatement(sql);
|
stmt = conn.prepareStatement(sql);
|
||||||
stmt.setInt(1, groupId);
|
stmt.setInt(1, groupId);
|
||||||
stmt.setInt(2, tenantId);
|
stmt.setInt(2, tenantId);
|
||||||
@ -144,7 +143,7 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
}
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new GroupManagementDAOException("Error occurred while obtaining information of Device Group '" +
|
throw new GroupManagementDAOException("Error occurred while obtaining information of Device Group '" +
|
||||||
groupId + "'", e);
|
groupId + "'", e);
|
||||||
} finally {
|
} finally {
|
||||||
GroupManagementDAOUtil.cleanupResources(stmt, resultSet);
|
GroupManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||||
}
|
}
|
||||||
@ -157,15 +156,15 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
List<DeviceGroup> deviceGroupBuilders = new ArrayList<>();
|
List<DeviceGroup> deviceGroupBuilders = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
Connection conn = GroupManagementDAOFactory.getConnection();
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
String sql = "SELECT G.ID, G.GROUP_NAME, G.DESCRIPTION, G.DATE_OF_CREATE, G.DATE_OF_LAST_UPDATE, \n" +
|
String sql = "SELECT G.ID, G.GROUP_NAME, G.DESCRIPTION, G.OWNER FROM DM_GROUP G " +
|
||||||
"G.OWNER FROM DM_GROUP G INNER JOIN DM_DEVICE_GROUP_MAP GM ON G.ID = GM.GROUP_ID " +
|
"INNER JOIN DM_DEVICE_GROUP_MAP GM ON G.ID = GM.GROUP_ID " +
|
||||||
"WHERE GM.DEVICE_ID = ? AND GM.TENANT_ID = ?";
|
"WHERE GM.DEVICE_ID = ? AND GM.TENANT_ID = ?";
|
||||||
stmt = conn.prepareStatement(sql);
|
stmt = conn.prepareStatement(sql);
|
||||||
stmt.setInt(1, deviceId);
|
stmt.setInt(1, deviceId);
|
||||||
stmt.setInt(2, tenantId);
|
stmt.setInt(2, tenantId);
|
||||||
resultSet = stmt.executeQuery();
|
resultSet = stmt.executeQuery();
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
deviceGroupBuilders.add(GroupManagementDAOUtil.loadGroup(resultSet));
|
deviceGroupBuilders.add(GroupManagementDAOUtil.loadGroup(resultSet));
|
||||||
}
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new GroupManagementDAOException("Error occurred while obtaining information of Device Groups ", e);
|
throw new GroupManagementDAOException("Error occurred while obtaining information of Device Groups ", e);
|
||||||
@ -190,8 +189,7 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
Connection conn = GroupManagementDAOFactory.getConnection();
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
String sql = "SELECT ID, DESCRIPTION, GROUP_NAME, DATE_OF_CREATE, DATE_OF_LAST_UPDATE, OWNER "
|
String sql = "SELECT ID, DESCRIPTION, GROUP_NAME, OWNER FROM DM_GROUP WHERE TENANT_ID = ?";
|
||||||
+ "FROM DM_GROUP WHERE TENANT_ID = ?";
|
|
||||||
if (groupName != null && !groupName.isEmpty()) {
|
if (groupName != null && !groupName.isEmpty()) {
|
||||||
sql += " AND GROUP_NAME LIKE ?";
|
sql += " AND GROUP_NAME LIKE ?";
|
||||||
hasGroupName = true;
|
hasGroupName = true;
|
||||||
@ -208,7 +206,7 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
stmt = conn.prepareStatement(sql);
|
stmt = conn.prepareStatement(sql);
|
||||||
stmt.setInt(paramIndex++, tenantId);
|
stmt.setInt(paramIndex++, tenantId);
|
||||||
if (hasGroupName) {
|
if (hasGroupName) {
|
||||||
stmt.setString(paramIndex++, groupName + "%");
|
stmt.setString(paramIndex++, groupName + "%");
|
||||||
}
|
}
|
||||||
if (hasOwner) {
|
if (hasOwner) {
|
||||||
stmt.setString(paramIndex++, owner + "%");
|
stmt.setString(paramIndex++, owner + "%");
|
||||||
@ -230,6 +228,72 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
return deviceGroupList;
|
return deviceGroupList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DeviceGroup> getGroups(GroupPaginationRequest request, List<Integer> deviceGroupIds,
|
||||||
|
int tenantId) throws GroupManagementDAOException {
|
||||||
|
int deviceGroupIdsCount = deviceGroupIds.size();
|
||||||
|
if (deviceGroupIdsCount == 0) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
List<DeviceGroup> deviceGroupList = null;
|
||||||
|
|
||||||
|
String groupName = request.getGroupName();
|
||||||
|
boolean hasGroupName = false;
|
||||||
|
String owner = request.getOwner();
|
||||||
|
boolean hasOwner = false;
|
||||||
|
boolean hasLimit = request.getRowCount() != 0;
|
||||||
|
|
||||||
|
try {
|
||||||
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
|
String sql = "SELECT ID, DESCRIPTION, GROUP_NAME, OWNER FROM DM_GROUP WHERE TENANT_ID = ?";
|
||||||
|
if (groupName != null && !groupName.isEmpty()) {
|
||||||
|
sql += " AND GROUP_NAME LIKE ?";
|
||||||
|
hasGroupName = true;
|
||||||
|
}
|
||||||
|
if (owner != null && !owner.isEmpty()) {
|
||||||
|
sql += " AND OWNER LIKE ?";
|
||||||
|
hasOwner = true;
|
||||||
|
}
|
||||||
|
sql += " AND ID IN (";
|
||||||
|
for (int i = 0; i < deviceGroupIdsCount; i++) {
|
||||||
|
sql += (deviceGroupIdsCount - 1 != i) ? "?," : "?";
|
||||||
|
}
|
||||||
|
sql += ")";
|
||||||
|
if (hasLimit) {
|
||||||
|
sql += " LIMIT ?, ?";
|
||||||
|
}
|
||||||
|
|
||||||
|
int paramIndex = 1;
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
stmt.setInt(paramIndex++, tenantId);
|
||||||
|
if (hasGroupName) {
|
||||||
|
stmt.setString(paramIndex++, groupName + "%");
|
||||||
|
}
|
||||||
|
if (hasOwner) {
|
||||||
|
stmt.setString(paramIndex++, owner + "%");
|
||||||
|
}
|
||||||
|
for (Integer deviceGroupId : deviceGroupIds) {
|
||||||
|
stmt.setInt(paramIndex++, deviceGroupId);
|
||||||
|
}
|
||||||
|
if (hasLimit) {
|
||||||
|
stmt.setInt(paramIndex++, request.getStartIndex());
|
||||||
|
stmt.setInt(paramIndex, request.getRowCount());
|
||||||
|
}
|
||||||
|
resultSet = stmt.executeQuery();
|
||||||
|
deviceGroupList = new ArrayList<>();
|
||||||
|
while (resultSet.next()) {
|
||||||
|
deviceGroupList.add(GroupManagementDAOUtil.loadGroup(resultSet));
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementDAOException("Error occurred while listing all groups in tenant: " + tenantId, e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||||
|
}
|
||||||
|
return deviceGroupList;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DeviceGroup> getGroups(int tenantId) throws GroupManagementDAOException {
|
public List<DeviceGroup> getGroups(int tenantId) throws GroupManagementDAOException {
|
||||||
PreparedStatement stmt = null;
|
PreparedStatement stmt = null;
|
||||||
@ -237,8 +301,7 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
List<DeviceGroup> deviceGroupList = null;
|
List<DeviceGroup> deviceGroupList = null;
|
||||||
try {
|
try {
|
||||||
Connection conn = GroupManagementDAOFactory.getConnection();
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
String sql = "SELECT ID, DESCRIPTION, GROUP_NAME, DATE_OF_CREATE, DATE_OF_LAST_UPDATE, OWNER "
|
String sql = "SELECT ID, DESCRIPTION, GROUP_NAME, OWNER FROM DM_GROUP WHERE TENANT_ID = ?";
|
||||||
+ "FROM DM_GROUP WHERE TENANT_ID = ?";
|
|
||||||
stmt = conn.prepareStatement(sql);
|
stmt = conn.prepareStatement(sql);
|
||||||
stmt.setInt(1, tenantId);
|
stmt.setInt(1, tenantId);
|
||||||
resultSet = stmt.executeQuery();
|
resultSet = stmt.executeQuery();
|
||||||
@ -327,8 +390,8 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
ResultSet resultSet = null;
|
ResultSet resultSet = null;
|
||||||
try {
|
try {
|
||||||
Connection conn = GroupManagementDAOFactory.getConnection();
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
String sql = "SELECT ID, DESCRIPTION, GROUP_NAME, DATE_OF_CREATE, DATE_OF_LAST_UPDATE, OWNER " +
|
String sql =
|
||||||
"FROM DM_GROUP WHERE GROUP_NAME = ? AND TENANT_ID = ?";
|
"SELECT ID, DESCRIPTION, GROUP_NAME, OWNER FROM DM_GROUP WHERE GROUP_NAME = ? AND TENANT_ID = ?";
|
||||||
stmt = conn.prepareStatement(sql);
|
stmt = conn.prepareStatement(sql);
|
||||||
stmt.setString(1, groupName);
|
stmt.setString(1, groupName);
|
||||||
stmt.setInt(2, tenantId);
|
stmt.setInt(2, tenantId);
|
||||||
@ -356,7 +419,6 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
stmt.setInt(2, groupId);
|
stmt.setInt(2, groupId);
|
||||||
stmt.setInt(3, tenantId);
|
stmt.setInt(3, tenantId);
|
||||||
stmt.executeUpdate();
|
stmt.executeUpdate();
|
||||||
stmt.getGeneratedKeys();
|
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new GroupManagementDAOException("Error occurred while adding device to Group.", e);
|
throw new GroupManagementDAOException("Error occurred while adding device to Group.", e);
|
||||||
} finally {
|
} finally {
|
||||||
@ -376,7 +438,6 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
stmt.setInt(2, groupId);
|
stmt.setInt(2, groupId);
|
||||||
stmt.setInt(3, tenantId);
|
stmt.setInt(3, tenantId);
|
||||||
stmt.executeUpdate();
|
stmt.executeUpdate();
|
||||||
stmt.getGeneratedKeys();
|
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new GroupManagementDAOException("Error occurred while removing device from Group.", e);
|
throw new GroupManagementDAOException("Error occurred while removing device from Group.", e);
|
||||||
} finally {
|
} finally {
|
||||||
@ -411,7 +472,8 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
ResultSet resultSet = null;
|
ResultSet resultSet = null;
|
||||||
try {
|
try {
|
||||||
Connection conn = GroupManagementDAOFactory.getConnection();
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
String sql = "SELECT COUNT(ID) AS DEVICE_COUNT FROM DM_DEVICE_GROUP_MAP WHERE GROUP_ID = ? AND TENANT_ID = ?";
|
String sql =
|
||||||
|
"SELECT COUNT(ID) AS DEVICE_COUNT FROM DM_DEVICE_GROUP_MAP WHERE GROUP_ID = ? AND TENANT_ID = ?";
|
||||||
stmt = conn.prepareStatement(sql);
|
stmt = conn.prepareStatement(sql);
|
||||||
stmt.setInt(1, groupId);
|
stmt.setInt(1, groupId);
|
||||||
stmt.setInt(2, tenantId);
|
stmt.setInt(2, tenantId);
|
||||||
@ -428,7 +490,6 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: Move this to device mgt
|
|
||||||
@Override
|
@Override
|
||||||
public List<Device> getDevices(int groupId, int startIndex, int rowCount, int tenantId)
|
public List<Device> getDevices(int groupId, int startIndex, int rowCount, int tenantId)
|
||||||
throws GroupManagementDAOException {
|
throws GroupManagementDAOException {
|
||||||
@ -439,13 +500,15 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
try {
|
try {
|
||||||
conn = GroupManagementDAOFactory.getConnection();
|
conn = GroupManagementDAOFactory.getConnection();
|
||||||
String sql = "SELECT d1.DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, " +
|
String sql = "SELECT d1.DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, " +
|
||||||
"d1.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, " +
|
"d1.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, " +
|
||||||
"e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID FROM DM_ENROLMENT e, " +
|
"e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID FROM DM_ENROLMENT e, " +
|
||||||
"(SELECT gd.DEVICE_ID, gd.DESCRIPTION, gd.NAME, gd.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM " +
|
"(SELECT gd.DEVICE_ID, gd.DESCRIPTION, gd.NAME, gd.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE " +
|
||||||
"(SELECT d.ID AS DEVICE_ID, d.DESCRIPTION, d.NAME, d.DEVICE_IDENTIFICATION, d.DEVICE_TYPE_ID FROM DM_DEVICE d, (" +
|
"FROM " +
|
||||||
"SELECT dgm.DEVICE_ID FROM DM_DEVICE_GROUP_MAP dgm WHERE dgm.GROUP_ID = ?) dgm1 " +
|
"(SELECT d.ID AS DEVICE_ID, d.DESCRIPTION, d.NAME, d.DEVICE_IDENTIFICATION, d.DEVICE_TYPE_ID FROM" +
|
||||||
"WHERE d.ID = dgm1.DEVICE_ID AND d.TENANT_ID = ?) gd, DM_DEVICE_TYPE t " +
|
" DM_DEVICE d, (" +
|
||||||
"WHERE gd.DEVICE_TYPE_ID = t.ID) d1 WHERE d1.DEVICE_ID = e.DEVICE_ID AND TENANT_ID = ? LIMIT ? , ?";
|
"SELECT dgm.DEVICE_ID FROM DM_DEVICE_GROUP_MAP dgm WHERE dgm.GROUP_ID = ?) dgm1 " +
|
||||||
|
"WHERE d.ID = dgm1.DEVICE_ID AND d.TENANT_ID = ?) gd, DM_DEVICE_TYPE t " +
|
||||||
|
"WHERE gd.DEVICE_TYPE_ID = t.ID) d1 WHERE d1.DEVICE_ID = e.DEVICE_ID AND TENANT_ID = ? LIMIT ? , ?";
|
||||||
|
|
||||||
stmt = conn.prepareStatement(sql);
|
stmt = conn.prepareStatement(sql);
|
||||||
stmt.setInt(1, groupId);
|
stmt.setInt(1, groupId);
|
||||||
@ -463,11 +526,257 @@ public class GroupDAOImpl implements GroupDAO {
|
|||||||
}
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new GroupManagementDAOException("Error occurred while retrieving information of all " +
|
throw new GroupManagementDAOException("Error occurred while retrieving information of all " +
|
||||||
"registered devices", e);
|
"registered devices", e);
|
||||||
} finally {
|
} finally {
|
||||||
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||||
}
|
}
|
||||||
return devices;
|
return devices;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getRoles(int groupId, int tenantId) throws GroupManagementDAOException {
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
List<String> userRoles;
|
||||||
|
try {
|
||||||
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
|
String sql = "SELECT ROLE FROM DM_ROLE_GROUP_MAP WHERE GROUP_ID = ? AND TENANT_ID = ?";
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
stmt.setInt(1, groupId);
|
||||||
|
stmt.setInt(2, tenantId);
|
||||||
|
resultSet = stmt.executeQuery();
|
||||||
|
userRoles = new ArrayList<>();
|
||||||
|
while (resultSet.next()) {
|
||||||
|
userRoles.add(resultSet.getString("ROLE"));
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementDAOException("Error occurred while listing all groups in tenant: " + tenantId, e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||||
|
}
|
||||||
|
return userRoles;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addRole(int groupId, String role, int tenantId) throws GroupManagementDAOException {
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
try {
|
||||||
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
|
String sql = "INSERT INTO DM_ROLE_GROUP_MAP(GROUP_ID, ROLE, TENANT_ID) VALUES (?, ?, ?)";
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
stmt.setInt(1, groupId);
|
||||||
|
stmt.setString(2, role);
|
||||||
|
stmt.setInt(3, tenantId);
|
||||||
|
stmt.executeUpdate();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementDAOException("Error occurred while adding new user role to Group.", e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOUtil.cleanupResources(stmt, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeRole(int groupId, String role, int tenantId) throws GroupManagementDAOException {
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
try {
|
||||||
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
|
String sql = "DELETE FROM DM_ROLE_GROUP_MAP WHERE GROUP_ID = ? AND ROLE = ? AND TENANT_ID = ?";
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
stmt.setInt(1, groupId);
|
||||||
|
stmt.setString(2, role);
|
||||||
|
stmt.setInt(3, tenantId);
|
||||||
|
stmt.executeUpdate();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementDAOException("Error occurred while removing device from Group.", e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOUtil.cleanupResources(stmt, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DeviceGroup> getGroups(String[] roles, int tenantId) throws GroupManagementDAOException {
|
||||||
|
int rolesCount = roles.length;
|
||||||
|
if (rolesCount == 0) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
List<DeviceGroup> deviceGroupList = null;
|
||||||
|
try {
|
||||||
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
|
String sql = "SELECT ID, DESCRIPTION, GROUP_NAME, OWNER FROM DM_GROUP g, " +
|
||||||
|
"(SELECT GROUP_ID FROM DM_ROLE_GROUP_MAP WHERE ROLE IN (";
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
while (index++ < rolesCount - 1) {
|
||||||
|
sql += "?,";
|
||||||
|
}
|
||||||
|
sql += "?)) gr WHERE g.ID = gr.GROUP_ID AND TENANT_ID = ? GROUP BY g.ID";
|
||||||
|
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
index = 0;
|
||||||
|
while (index++ < rolesCount) {
|
||||||
|
stmt.setString(index, roles[index - 1]);
|
||||||
|
}
|
||||||
|
stmt.setInt(index, tenantId);
|
||||||
|
resultSet = stmt.executeQuery();
|
||||||
|
deviceGroupList = new ArrayList<>();
|
||||||
|
while (resultSet.next()) {
|
||||||
|
deviceGroupList.add(GroupManagementDAOUtil.loadGroup(resultSet));
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementDAOException("Error occurred while listing all groups in tenant: " + tenantId, e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||||
|
}
|
||||||
|
return deviceGroupList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Integer> getGroupIds(String[] roles, int tenantId) throws GroupManagementDAOException {
|
||||||
|
if (roles.length == 0) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
List<Integer> deviceGroupIdList = null;
|
||||||
|
try {
|
||||||
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
|
String sql = "SELECT ID FROM DM_GROUP g, (SELECT GROUP_ID FROM DM_ROLE_GROUP_MAP WHERE ROLE IN (";
|
||||||
|
|
||||||
|
int rolesCount = roles.length;
|
||||||
|
for (int i = 0; i < rolesCount; i++) {
|
||||||
|
sql += (rolesCount - 1 != i) ? "?," : "?";
|
||||||
|
}
|
||||||
|
sql += ")) gr WHERE g.ID = gr.GROUP_ID AND TENANT_ID = ? GROUP BY g.ID";
|
||||||
|
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
int index = 0;
|
||||||
|
while (index++ < rolesCount) {
|
||||||
|
stmt.setString(index, roles[index - 1]);
|
||||||
|
}
|
||||||
|
stmt.setInt(index, tenantId);
|
||||||
|
resultSet = stmt.executeQuery();
|
||||||
|
deviceGroupIdList = new ArrayList<>();
|
||||||
|
while (resultSet.next()) {
|
||||||
|
deviceGroupIdList.add(resultSet.getInt("ID"));
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementDAOException("Error occurred while listing all groups in tenant: " + tenantId, e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||||
|
}
|
||||||
|
return deviceGroupIdList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getGroupsCount(String[] roles, int tenantId) throws GroupManagementDAOException {
|
||||||
|
int rolesCount = roles.length;
|
||||||
|
if (rolesCount == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
try {
|
||||||
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
|
String sql = "SELECT COUNT(ID) AS GROUP_COUNT FROM DM_GROUP g, " +
|
||||||
|
"(SELECT GROUP_ID FROM DM_ROLE_GROUP_MAP WHERE ROLE IN (";
|
||||||
|
for (int i = 0; i < rolesCount; i++) {
|
||||||
|
sql += (rolesCount - 1 != i) ? "?," : "?";
|
||||||
|
}
|
||||||
|
sql += ")) gr WHERE g.ID = gr.GROUP_ID AND TENANT_ID = ? GROUP BY g.ID";
|
||||||
|
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
int index = 0;
|
||||||
|
while (index++ < rolesCount) {
|
||||||
|
stmt.setString(index, roles[index - 1]);
|
||||||
|
}
|
||||||
|
stmt.setInt(index, tenantId);
|
||||||
|
resultSet = stmt.executeQuery();
|
||||||
|
if (resultSet.next()) {
|
||||||
|
return resultSet.getInt("GROUP_COUNT");
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementDAOException("Error occurred while getting permitted groups count.", e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DeviceGroup> getOwnGroups(String username, int tenantId) throws GroupManagementDAOException {
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
List<DeviceGroup> deviceGroupList = null;
|
||||||
|
try {
|
||||||
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
|
String sql = "SELECT ID, DESCRIPTION, GROUP_NAME, OWNER FROM DM_GROUP WHERE OWNER = ? AND TENANT_ID = ?";
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
stmt.setString(1, username);
|
||||||
|
stmt.setInt(2, tenantId);
|
||||||
|
resultSet = stmt.executeQuery();
|
||||||
|
deviceGroupList = new ArrayList<>();
|
||||||
|
while (resultSet.next()) {
|
||||||
|
deviceGroupList.add(GroupManagementDAOUtil.loadGroup(resultSet));
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementDAOException("Error occurred while getting own groups of user '"
|
||||||
|
+ username + "'", e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||||
|
}
|
||||||
|
return deviceGroupList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Integer> getOwnGroupIds(String username, int tenantId) throws GroupManagementDAOException {
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
List<Integer> deviceGroupIdList = null;
|
||||||
|
try {
|
||||||
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
|
String sql = "SELECT ID FROM DM_GROUP WHERE OWNER = ? AND TENANT_ID = ?";
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
stmt.setString(1, username);
|
||||||
|
stmt.setInt(2, tenantId);
|
||||||
|
resultSet = stmt.executeQuery();
|
||||||
|
deviceGroupIdList = new ArrayList<>();
|
||||||
|
while (resultSet.next()) {
|
||||||
|
deviceGroupIdList.add(resultSet.getInt("ID"));
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementDAOException("Error occurred while getting own groups of user '"
|
||||||
|
+ username + "'", e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||||
|
}
|
||||||
|
return deviceGroupIdList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getOwnGroupsCount(String username, int tenantId) throws GroupManagementDAOException {
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet resultSet = null;
|
||||||
|
try {
|
||||||
|
Connection conn = GroupManagementDAOFactory.getConnection();
|
||||||
|
String sql = "SELECT COUNT(ID) AS GROUP_COUNT FROM DM_GROUP WHERE OWNER = ? AND TENANT_ID = ?";
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
stmt.setString(1, username);
|
||||||
|
stmt.setInt(2, tenantId);
|
||||||
|
resultSet = stmt.executeQuery();
|
||||||
|
if (resultSet.next()) {
|
||||||
|
return resultSet.getInt("GROUP_COUNT");
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementDAOException("Error occurred while getting own groups count of user '"
|
||||||
|
+ username + "'", e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOUtil.cleanupResources(stmt, resultSet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -84,8 +84,6 @@ public final class GroupManagementDAOUtil {
|
|||||||
group.setGroupId(resultSet.getInt("ID"));
|
group.setGroupId(resultSet.getInt("ID"));
|
||||||
group.setDescription(resultSet.getString("DESCRIPTION"));
|
group.setDescription(resultSet.getString("DESCRIPTION"));
|
||||||
group.setName(resultSet.getString("GROUP_NAME"));
|
group.setName(resultSet.getString("GROUP_NAME"));
|
||||||
group.setDateOfCreation(resultSet.getLong("DATE_OF_CREATE"));
|
|
||||||
group.setDateOfLastUpdate(resultSet.getLong("DATE_OF_LAST_UPDATE"));
|
|
||||||
group.setOwner(resultSet.getString("OWNER"));
|
group.setOwner(resultSet.getString("OWNER"));
|
||||||
return group;
|
return group;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,12 +19,28 @@ package org.wso2.carbon.device.mgt.core.service;
|
|||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.wso2.carbon.CarbonConstants;
|
||||||
import org.wso2.carbon.context.CarbonContext;
|
import org.wso2.carbon.context.CarbonContext;
|
||||||
import org.wso2.carbon.device.mgt.common.*;
|
import org.wso2.carbon.device.mgt.common.Device;
|
||||||
|
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||||
|
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.DeviceManager;
|
||||||
|
import org.wso2.carbon.device.mgt.common.DeviceNotFoundException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.DeviceTypeIdentifier;
|
||||||
|
import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
|
||||||
|
import org.wso2.carbon.device.mgt.common.FeatureManager;
|
||||||
|
import org.wso2.carbon.device.mgt.common.InvalidDeviceException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||||
|
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||||
|
import org.wso2.carbon.device.mgt.common.TransactionManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
||||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
|
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
|
||||||
import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo;
|
import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo;
|
||||||
import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation;
|
import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation;
|
||||||
|
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||||
|
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroupConstants;
|
||||||
|
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.license.mgt.License;
|
import org.wso2.carbon.device.mgt.common.license.mgt.License;
|
||||||
import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException;
|
import org.wso2.carbon.device.mgt.common.license.mgt.LicenseManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||||
@ -32,7 +48,12 @@ import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
|||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
||||||
import org.wso2.carbon.device.mgt.core.DeviceManagementPluginRepository;
|
import org.wso2.carbon.device.mgt.core.DeviceManagementPluginRepository;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.*;
|
import org.wso2.carbon.device.mgt.core.dao.ApplicationDAO;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.DeviceDAO;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.DeviceTypeDAO;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dao.EnrollmentDAO;
|
||||||
import org.wso2.carbon.device.mgt.core.device.details.mgt.dao.DeviceDetailsDAO;
|
import org.wso2.carbon.device.mgt.core.device.details.mgt.dao.DeviceDetailsDAO;
|
||||||
import org.wso2.carbon.device.mgt.core.device.details.mgt.dao.DeviceDetailsMgtDAOException;
|
import org.wso2.carbon.device.mgt.core.device.details.mgt.dao.DeviceDetailsMgtDAOException;
|
||||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||||
@ -47,7 +68,13 @@ import org.wso2.carbon.email.sender.core.TypedValue;
|
|||||||
import org.wso2.carbon.user.api.UserStoreException;
|
import org.wso2.carbon.user.api.UserStoreException;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
public class DeviceManagementProviderServiceImpl implements DeviceManagementProviderService,
|
public class DeviceManagementProviderServiceImpl implements DeviceManagementProviderService,
|
||||||
PluginInitializationListener {
|
PluginInitializationListener {
|
||||||
@ -130,7 +157,6 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
deviceManager.enrollDevice(device);
|
deviceManager.enrollDevice(device);
|
||||||
|
|
||||||
if (deviceManager.isClaimable(deviceIdentifier)) {
|
if (deviceManager.isClaimable(deviceIdentifier)) {
|
||||||
device.getEnrolmentInfo().setStatus(EnrolmentInfo.Status.INACTIVE);
|
device.getEnrolmentInfo().setStatus(EnrolmentInfo.Status.INACTIVE);
|
||||||
} else {
|
} else {
|
||||||
@ -221,6 +247,9 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
|
|||||||
status = true;
|
status = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (status) {
|
||||||
|
addDeviceToGroups(deviceIdentifier, device.getEnrolmentInfo().getOwnership());
|
||||||
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1834,4 +1863,58 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
|
|||||||
return deviceManagementService.getDeviceManager();
|
return deviceManagementService.getDeviceManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the enrolled devices to the default groups based on ownership
|
||||||
|
*
|
||||||
|
* @param deviceIdentifier of the device.
|
||||||
|
* @param ownership of the device.
|
||||||
|
* @throws DeviceManagementException If error occurred in adding the device to the group.
|
||||||
|
*/
|
||||||
|
private void addDeviceToGroups(DeviceIdentifier deviceIdentifier, EnrolmentInfo.OwnerShip ownership)
|
||||||
|
throws DeviceManagementException {
|
||||||
|
GroupManagementProviderService groupManagementProviderService = new GroupManagementProviderServiceImpl();
|
||||||
|
try {
|
||||||
|
DeviceGroup defaultGroup = createDefaultGroup(groupManagementProviderService, ownership.toString());
|
||||||
|
if (defaultGroup != null) {
|
||||||
|
List<DeviceIdentifier> deviceIdentifiers = new ArrayList<>();
|
||||||
|
deviceIdentifiers.add(deviceIdentifier);
|
||||||
|
groupManagementProviderService.addDevices(defaultGroup.getGroupId(), deviceIdentifiers);
|
||||||
|
}
|
||||||
|
} catch (DeviceNotFoundException e) {
|
||||||
|
throw new DeviceManagementException("Unable to find the device with the id: '" + deviceIdentifier.getId(),
|
||||||
|
e);
|
||||||
|
} catch (GroupManagementException e) {
|
||||||
|
throw new DeviceManagementException("An error occurred when adding the device to the group.", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks for the default group existence and create group based on device ownership
|
||||||
|
*
|
||||||
|
* @param service {@link GroupManagementProviderService} instance.
|
||||||
|
* @param groupName of the group to create.
|
||||||
|
* @return Group with details.
|
||||||
|
* @throws GroupManagementException
|
||||||
|
*/
|
||||||
|
private DeviceGroup createDefaultGroup(GroupManagementProviderService service, String groupName)
|
||||||
|
throws GroupManagementException {
|
||||||
|
DeviceGroup defaultGroup = service.getGroup(groupName);
|
||||||
|
if (defaultGroup == null) {
|
||||||
|
defaultGroup = new DeviceGroup(groupName);
|
||||||
|
// Setting system level user (wso2.system.user) as the owner
|
||||||
|
defaultGroup.setOwner(CarbonConstants.REGISTRY_SYSTEM_USERNAME);
|
||||||
|
try {
|
||||||
|
service.createGroup(defaultGroup, DeviceGroupConstants.Roles.DEFAULT_ADMIN_ROLE,
|
||||||
|
DeviceGroupConstants.Permissions.DEFAULT_ADMIN_PERMISSIONS);
|
||||||
|
} catch (GroupAlreadyExistException e) {
|
||||||
|
if (log.isDebugEnabled()) {
|
||||||
|
log.debug("Default group: " + defaultGroup.getName() + " already exists. Skipping group creation.",
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return service.getGroup(groupName);
|
||||||
|
} else {
|
||||||
|
return defaultGroup;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,14 +22,11 @@ import org.wso2.carbon.device.mgt.common.Device;
|
|||||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceNotFoundException;
|
import org.wso2.carbon.device.mgt.common.DeviceNotFoundException;
|
||||||
import org.wso2.carbon.device.mgt.common.GroupPaginationRequest;
|
import org.wso2.carbon.device.mgt.common.GroupPaginationRequest;
|
||||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
|
||||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException;
|
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupUser;
|
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.RoleDoesNotExistException;
|
import org.wso2.carbon.device.mgt.common.group.mgt.RoleDoesNotExistException;
|
||||||
import org.wso2.carbon.user.core.multiplecredentials.UserDoesNotExistException;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -76,6 +73,15 @@ public interface GroupManagementProviderService {
|
|||||||
*/
|
*/
|
||||||
DeviceGroup getGroup(int groupId) throws GroupManagementException;
|
DeviceGroup getGroup(int groupId) throws GroupManagementException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the device group provided the device group name.
|
||||||
|
*
|
||||||
|
* @param groupName of the group.
|
||||||
|
* @return group with details.
|
||||||
|
* @throws GroupManagementException
|
||||||
|
*/
|
||||||
|
DeviceGroup getGroup(String groupName) throws GroupManagementException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all device groups in tenant.
|
* Get all device groups in tenant.
|
||||||
*
|
*
|
||||||
@ -132,36 +138,12 @@ public interface GroupManagementProviderService {
|
|||||||
/**
|
/**
|
||||||
* Manage device group sharing with user with list of roles.
|
* Manage device group sharing with user with list of roles.
|
||||||
*
|
*
|
||||||
* @param username of the user
|
|
||||||
* @param groupId of the group
|
* @param groupId of the group
|
||||||
* @param newRoles to be shared
|
* @param newRoles to be shared
|
||||||
* @throws GroupManagementException UserDoesNotExistException
|
* @throws GroupManagementException UserDoesNotExistException
|
||||||
*/
|
*/
|
||||||
void manageGroupSharing(int groupId, String username, List<String> newRoles)
|
void manageGroupSharing(int groupId, List<String> newRoles)
|
||||||
throws GroupManagementException, UserDoesNotExistException, RoleDoesNotExistException;
|
throws GroupManagementException, RoleDoesNotExistException;
|
||||||
|
|
||||||
/**
|
|
||||||
* Add new sharing role for device group
|
|
||||||
*
|
|
||||||
* @param userName of the user
|
|
||||||
* @param groupId of the group
|
|
||||||
* @param roleName to add
|
|
||||||
* @param permissions to bind with role
|
|
||||||
* @return is role added
|
|
||||||
* @throws GroupManagementException
|
|
||||||
*/
|
|
||||||
boolean addGroupSharingRole(String userName, int groupId, String roleName, String[] permissions)
|
|
||||||
throws GroupManagementException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove existing sharing role for device group
|
|
||||||
*
|
|
||||||
* @param groupId of the group
|
|
||||||
* @param roleName to remove
|
|
||||||
* @return is role removed
|
|
||||||
* @throws GroupManagementException
|
|
||||||
*/
|
|
||||||
boolean removeGroupSharingRole(int groupId, String roleName) throws GroupManagementException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all sharing roles for device group
|
* Get all sharing roles for device group
|
||||||
@ -172,25 +154,6 @@ public interface GroupManagementProviderService {
|
|||||||
*/
|
*/
|
||||||
List<String> getRoles(int groupId) throws GroupManagementException;
|
List<String> getRoles(int groupId) throws GroupManagementException;
|
||||||
|
|
||||||
/**
|
|
||||||
* Get specific device group sharing roles for user
|
|
||||||
*
|
|
||||||
* @param userName of the user
|
|
||||||
* @param groupId of the group
|
|
||||||
* @return list of roles
|
|
||||||
* @throws GroupManagementException UserDoesNotExistException
|
|
||||||
*/
|
|
||||||
List<String> getRoles(String userName, int groupId) throws GroupManagementException, UserDoesNotExistException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get device group users
|
|
||||||
*
|
|
||||||
* @param groupId of the group
|
|
||||||
* @return list of group users
|
|
||||||
* @throws GroupManagementException
|
|
||||||
*/
|
|
||||||
List<GroupUser> getUsers(int groupId) throws GroupManagementException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all devices in device group as paginated result.
|
* Get all devices in device group as paginated result.
|
||||||
*
|
*
|
||||||
@ -218,8 +181,8 @@ public interface GroupManagementProviderService {
|
|||||||
* @param deviceIdentifiers of devices.
|
* @param deviceIdentifiers of devices.
|
||||||
* @throws GroupManagementException
|
* @throws GroupManagementException
|
||||||
*/
|
*/
|
||||||
void addDevices(int groupId, List<DeviceIdentifier> deviceIdentifiers) throws GroupManagementException,
|
void addDevices(int groupId, List<DeviceIdentifier> deviceIdentifiers)
|
||||||
DeviceNotFoundException;
|
throws GroupManagementException, DeviceNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove device from device group.
|
* Remove device from device group.
|
||||||
@ -230,17 +193,6 @@ public interface GroupManagementProviderService {
|
|||||||
*/
|
*/
|
||||||
void removeDevice(int groupId, List<DeviceIdentifier> deviceIdentifiers) throws GroupManagementException,
|
void removeDevice(int groupId, List<DeviceIdentifier> deviceIdentifiers) throws GroupManagementException,
|
||||||
DeviceNotFoundException;
|
DeviceNotFoundException;
|
||||||
|
|
||||||
/**
|
|
||||||
* Get device group permissions of user.
|
|
||||||
*
|
|
||||||
* @param username of the user.
|
|
||||||
* @param groupId of the group
|
|
||||||
* @return array of permissions.
|
|
||||||
* @throws GroupManagementException UserDoesNotExistException
|
|
||||||
*/
|
|
||||||
String[] getPermissions(String username, int groupId) throws GroupManagementException, UserDoesNotExistException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get device groups of user with permission.
|
* Get device groups of user with permission.
|
||||||
*
|
*
|
||||||
@ -252,10 +204,10 @@ public interface GroupManagementProviderService {
|
|||||||
List<DeviceGroup> getGroups(String username, String permission) throws GroupManagementException;
|
List<DeviceGroup> getGroups(String username, String permission) throws GroupManagementException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the group of device.
|
* Get groups which contains particular device.
|
||||||
*
|
*
|
||||||
* @param deviceIdentifier
|
* @param deviceIdentifier of the device.
|
||||||
* @return
|
* @return groups contain the device.
|
||||||
* @throws GroupManagementException
|
* @throws GroupManagementException
|
||||||
*/
|
*/
|
||||||
List<DeviceGroup> getGroups(DeviceIdentifier deviceIdentifier) throws GroupManagementException;
|
List<DeviceGroup> getGroups(DeviceIdentifier deviceIdentifier) throws GroupManagementException;
|
||||||
|
|||||||
@ -33,23 +33,18 @@ import org.wso2.carbon.device.mgt.common.TransactionManagementException;
|
|||||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException;
|
import org.wso2.carbon.device.mgt.common.group.mgt.GroupAlreadyExistException;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupUser;
|
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.RoleDoesNotExistException;
|
import org.wso2.carbon.device.mgt.common.group.mgt.RoleDoesNotExistException;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.GroupDAO;
|
import org.wso2.carbon.device.mgt.core.dao.GroupDAO;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.GroupManagementDAOException;
|
import org.wso2.carbon.device.mgt.core.dao.GroupManagementDAOException;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.GroupManagementDAOFactory;
|
import org.wso2.carbon.device.mgt.core.dao.GroupManagementDAOFactory;
|
||||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||||
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
|
||||||
import org.wso2.carbon.user.api.Permission;
|
|
||||||
import org.wso2.carbon.user.api.UserRealm;
|
import org.wso2.carbon.user.api.UserRealm;
|
||||||
import org.wso2.carbon.user.api.UserStoreException;
|
import org.wso2.carbon.user.api.UserStoreException;
|
||||||
import org.wso2.carbon.user.api.UserStoreManager;
|
import org.wso2.carbon.user.api.UserStoreManager;
|
||||||
import org.wso2.carbon.user.core.multiplecredentials.UserDoesNotExistException;
|
|
||||||
import org.wso2.carbon.user.core.util.UserCoreUtil;
|
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -77,12 +72,11 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
throw new GroupManagementException("DeviceGroup cannot be null.", new NullPointerException());
|
throw new GroupManagementException("DeviceGroup cannot be null.", new NullPointerException());
|
||||||
}
|
}
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
int groupId = -1;
|
|
||||||
try {
|
try {
|
||||||
GroupManagementDAOFactory.beginTransaction();
|
GroupManagementDAOFactory.beginTransaction();
|
||||||
DeviceGroup existingGroup = this.groupDAO.getGroup(deviceGroup.getName(), tenantId);
|
DeviceGroup existingGroup = this.groupDAO.getGroup(deviceGroup.getName(), tenantId);
|
||||||
if (existingGroup == null) {
|
if (existingGroup == null) {
|
||||||
groupId = this.groupDAO.addGroup(deviceGroup, tenantId);
|
this.groupDAO.addGroup(deviceGroup, tenantId);
|
||||||
GroupManagementDAOFactory.commitTransaction();
|
GroupManagementDAOFactory.commitTransaction();
|
||||||
} else {
|
} else {
|
||||||
throw new GroupAlreadyExistException("Group exist with name " + deviceGroup.getName());
|
throw new GroupAlreadyExistException("Group exist with name " + deviceGroup.getName());
|
||||||
@ -97,7 +91,6 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
GroupManagementDAOFactory.closeConnection();
|
GroupManagementDAOFactory.closeConnection();
|
||||||
}
|
}
|
||||||
|
|
||||||
addGroupSharingRole(deviceGroup.getOwner(), groupId, defaultRole, defaultPermissions);
|
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("DeviceGroup added: " + deviceGroup.getName());
|
log.debug("DeviceGroup added: " + deviceGroup.getName());
|
||||||
}
|
}
|
||||||
@ -117,7 +110,6 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
GroupManagementDAOFactory.beginTransaction();
|
GroupManagementDAOFactory.beginTransaction();
|
||||||
DeviceGroup existingGroup = this.groupDAO.getGroup(deviceGroup.getName(), tenantId);
|
DeviceGroup existingGroup = this.groupDAO.getGroup(deviceGroup.getName(), tenantId);
|
||||||
if (existingGroup == null || existingGroup.getGroupId() == groupId) {
|
if (existingGroup == null || existingGroup.getGroupId() == groupId) {
|
||||||
deviceGroup.setDateOfLastUpdate(new Date().getTime());
|
|
||||||
this.groupDAO.updateGroup(deviceGroup, groupId, tenantId);
|
this.groupDAO.updateGroup(deviceGroup, groupId, tenantId);
|
||||||
GroupManagementDAOFactory.commitTransaction();
|
GroupManagementDAOFactory.commitTransaction();
|
||||||
} else {
|
} else {
|
||||||
@ -139,18 +131,10 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean deleteGroup(int groupId) throws GroupManagementException {
|
public boolean deleteGroup(int groupId) throws GroupManagementException {
|
||||||
String roleName;
|
|
||||||
DeviceGroup deviceGroup = getGroup(groupId);
|
DeviceGroup deviceGroup = getGroup(groupId);
|
||||||
if (deviceGroup == null) {
|
if (deviceGroup == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
List<String> groupRoles = getRoles(groupId);
|
|
||||||
for (String role : groupRoles) {
|
|
||||||
if (role != null) {
|
|
||||||
roleName = role.replace("Internal/group-" + deviceGroup.getGroupId() + "-", "");
|
|
||||||
removeGroupSharingRole(deviceGroup.getGroupId(), roleName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
GroupManagementDAOFactory.beginTransaction();
|
GroupManagementDAOFactory.beginTransaction();
|
||||||
this.groupDAO.deleteGroup(groupId, CarbonContext.getThreadLocalCarbonContext().getTenantId());
|
this.groupDAO.deleteGroup(groupId, CarbonContext.getThreadLocalCarbonContext().getTenantId());
|
||||||
@ -188,6 +172,25 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
return deviceGroup;
|
return deviceGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public DeviceGroup getGroup(String groupName) throws GroupManagementException {
|
||||||
|
DeviceGroup deviceGroup;
|
||||||
|
try {
|
||||||
|
GroupManagementDAOFactory.openConnection();
|
||||||
|
deviceGroup = this.groupDAO.getGroup(groupName, CarbonContext.getThreadLocalCarbonContext().getTenantId());
|
||||||
|
} catch (GroupManagementDAOException e) {
|
||||||
|
throw new GroupManagementException("Error occurred while obtaining group with name: '" + groupName + "'", e);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementException("Error occurred while opening a connection to the data source.", e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOFactory.closeConnection();
|
||||||
|
}
|
||||||
|
return deviceGroup;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DeviceGroup> getGroups() throws GroupManagementException {
|
public List<DeviceGroup> getGroups() throws GroupManagementException {
|
||||||
List<DeviceGroup> deviceGroups = new ArrayList<>();
|
List<DeviceGroup> deviceGroups = new ArrayList<>();
|
||||||
@ -208,14 +211,6 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
@Override
|
@Override
|
||||||
public PaginationResult getGroups(GroupPaginationRequest request) throws GroupManagementException {
|
public PaginationResult getGroups(GroupPaginationRequest request) throws GroupManagementException {
|
||||||
request = DeviceManagerUtil.validateGroupListPageSize(request);
|
request = DeviceManagerUtil.validateGroupListPageSize(request);
|
||||||
List<DeviceGroup> deviceGroups = getPlainDeviceGroups(request);
|
|
||||||
PaginationResult groupResult = new PaginationResult();
|
|
||||||
groupResult.setData(deviceGroups);
|
|
||||||
groupResult.setRecordsTotal(getGroupCount(request));
|
|
||||||
return groupResult;
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<DeviceGroup> getPlainDeviceGroups(GroupPaginationRequest request) throws GroupManagementException {
|
|
||||||
List<DeviceGroup> deviceGroups = new ArrayList<>();
|
List<DeviceGroup> deviceGroups = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
@ -228,7 +223,10 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
} finally {
|
} finally {
|
||||||
GroupManagementDAOFactory.closeConnection();
|
GroupManagementDAOFactory.closeConnection();
|
||||||
}
|
}
|
||||||
return deviceGroups;
|
PaginationResult groupResult = new PaginationResult();
|
||||||
|
groupResult.setData(deviceGroups);
|
||||||
|
groupResult.setRecordsTotal(getGroupCount(request));
|
||||||
|
return groupResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -240,57 +238,70 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
userStoreManager = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId)
|
userStoreManager = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId)
|
||||||
.getUserStoreManager();
|
.getUserStoreManager();
|
||||||
String[] roleList = userStoreManager.getRoleListOfUser(username);
|
String[] roleList = userStoreManager.getRoleListOfUser(username);
|
||||||
for (String role : roleList) {
|
GroupManagementDAOFactory.openConnection();
|
||||||
if (role != null && role.contains("Internal/group-")) {
|
List<DeviceGroup> deviceGroups = this.groupDAO.getOwnGroups(username, tenantId);
|
||||||
DeviceGroup deviceGroup = checkAndExtractNonExistingGroup(groups, role);
|
for (DeviceGroup deviceGroup : deviceGroups) {
|
||||||
if (deviceGroup != null) {
|
groups.put(deviceGroup.getGroupId(), deviceGroup);
|
||||||
groups.put(deviceGroup.getGroupId(), deviceGroup);
|
}
|
||||||
}
|
deviceGroups = this.groupDAO.getGroups(roleList, tenantId);
|
||||||
}
|
for (DeviceGroup deviceGroup : deviceGroups) {
|
||||||
|
groups.put(deviceGroup.getGroupId(), deviceGroup);
|
||||||
}
|
}
|
||||||
} catch (UserStoreException e) {
|
} catch (UserStoreException e) {
|
||||||
throw new GroupManagementException("Error occurred while getting user store manager.", e);
|
throw new GroupManagementException("Error occurred while getting user store manager.", e);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementException("Error occurred while retrieving all groups accessible to user.", e);
|
||||||
|
} catch (GroupManagementDAOException e) {
|
||||||
|
throw new GroupManagementException(e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOFactory.closeConnection();
|
||||||
}
|
}
|
||||||
return new ArrayList<>(groups.values());
|
return new ArrayList<>(groups.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
public PaginationResult getGroups(String currentUser, GroupPaginationRequest request) throws GroupManagementException {
|
private List<Integer> getGroupIds(String username) throws GroupManagementException {
|
||||||
request = DeviceManagerUtil.validateGroupListPageSize(request);
|
UserStoreManager userStoreManager;
|
||||||
int startIndex = request.getStartIndex();
|
List<Integer> deviceGroupIds = new ArrayList<>();
|
||||||
int count = request.getRowCount();
|
|
||||||
int index = 0;
|
|
||||||
request.setRowCount(0);
|
|
||||||
List<DeviceGroup> allMatchingGroups = this.getPlainDeviceGroups(request);
|
|
||||||
List<DeviceGroup> deviceGroups = new ArrayList<>();
|
|
||||||
try {
|
try {
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
UserStoreManager userStoreManager = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId)
|
userStoreManager = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId)
|
||||||
.getUserStoreManager();
|
.getUserStoreManager();
|
||||||
String[] roleList = userStoreManager.getRoleListOfUser(currentUser);
|
String[] roleList = userStoreManager.getRoleListOfUser(username);
|
||||||
List<Integer> groupIds = new ArrayList<>();
|
GroupManagementDAOFactory.openConnection();
|
||||||
for (String role : roleList) {
|
deviceGroupIds = this.groupDAO.getOwnGroupIds(username, tenantId);
|
||||||
if (role != null && role.contains("Internal/group-")) {
|
deviceGroupIds.addAll(this.groupDAO.getGroupIds(roleList, tenantId));
|
||||||
int groupId = Integer.parseInt(role.split("-")[1]);
|
|
||||||
if (!groupIds.contains(groupId)) {
|
|
||||||
groupIds.add(groupId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (DeviceGroup group : allMatchingGroups) {
|
|
||||||
int groupId = group.getGroupId();
|
|
||||||
if (groupIds.contains(groupId)) {
|
|
||||||
if (startIndex <= index && index < count) {
|
|
||||||
deviceGroups.add(group);
|
|
||||||
}
|
|
||||||
index++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (UserStoreException e) {
|
} catch (UserStoreException e) {
|
||||||
throw new GroupManagementException("Error occurred while getting user store manager.", e);
|
throw new GroupManagementException("Error occurred while getting user store manager.", e);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementException("Error occurred while retrieving all groups accessible to user.", e);
|
||||||
|
} catch (GroupManagementDAOException e) {
|
||||||
|
throw new GroupManagementException(e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOFactory.closeConnection();
|
||||||
|
}
|
||||||
|
return deviceGroupIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PaginationResult getGroups(String currentUser, GroupPaginationRequest request)
|
||||||
|
throws GroupManagementException {
|
||||||
|
request = DeviceManagerUtil.validateGroupListPageSize(request);
|
||||||
|
List<Integer> allDeviceGroupIdsOfUser = getGroupIds(currentUser);
|
||||||
|
List<DeviceGroup> allMatchingGroups = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
|
GroupManagementDAOFactory.openConnection();
|
||||||
|
allMatchingGroups = this.groupDAO.getGroups(request, allDeviceGroupIdsOfUser, tenantId);
|
||||||
|
} catch (GroupManagementDAOException e) {
|
||||||
|
throw new GroupManagementException("Error occurred while retrieving all groups in tenant", e);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementException("Error occurred while opening a connection to the data source.", e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOFactory.closeConnection();
|
||||||
}
|
}
|
||||||
PaginationResult groupResult = new PaginationResult();
|
PaginationResult groupResult = new PaginationResult();
|
||||||
groupResult.setData(deviceGroups);
|
groupResult.setData(allMatchingGroups);
|
||||||
groupResult.setRecordsTotal(index);
|
groupResult.setRecordsTotal(getGroupCount(currentUser));
|
||||||
return groupResult;
|
return groupResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -329,25 +340,24 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
@Override
|
@Override
|
||||||
public int getGroupCount(String username) throws GroupManagementException {
|
public int getGroupCount(String username) throws GroupManagementException {
|
||||||
UserStoreManager userStoreManager;
|
UserStoreManager userStoreManager;
|
||||||
int count = 0;
|
int count;
|
||||||
try {
|
try {
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
userStoreManager = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId)
|
userStoreManager = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId)
|
||||||
.getUserStoreManager();
|
.getUserStoreManager();
|
||||||
String[] roleList = userStoreManager.getRoleListOfUser(username);
|
String[] roleList = userStoreManager.getRoleListOfUser(username);
|
||||||
List<Integer> groupIds = new ArrayList<>();
|
GroupManagementDAOFactory.openConnection();
|
||||||
for (String role : roleList) {
|
count = groupDAO.getOwnGroupsCount(username, tenantId);
|
||||||
if (role != null && role.contains("Internal/group-")) {
|
count += groupDAO.getGroupsCount(roleList, tenantId);
|
||||||
int groupId = Integer.parseInt(role.split("-")[1]);
|
|
||||||
if (!groupIds.contains(groupId)) {
|
|
||||||
groupIds.add(groupId);
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return count;
|
return count;
|
||||||
} catch (UserStoreException e) {
|
} catch (UserStoreException e) {
|
||||||
throw new GroupManagementException("Error occurred while getting user store manager.", e);
|
throw new GroupManagementException("Error occurred while getting user store manager.", e);
|
||||||
|
} catch (GroupManagementDAOException e) {
|
||||||
|
throw new GroupManagementException("Error occurred while retrieving group count of user '" + username + "'", e);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new GroupManagementException("Error occurred while opening a connection to the data source.", e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOFactory.closeConnection();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -355,103 +365,41 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("Duplicates")
|
public void manageGroupSharing(int groupId, List<String> newRoles)
|
||||||
public void manageGroupSharing(int groupId, String username, List<String> newRoles)
|
throws GroupManagementException, RoleDoesNotExistException {
|
||||||
throws GroupManagementException, UserDoesNotExistException, RoleDoesNotExistException {
|
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
UserStoreManager userStoreManager;
|
UserStoreManager userStoreManager;
|
||||||
try {
|
try {
|
||||||
userStoreManager =
|
userStoreManager =
|
||||||
DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(
|
DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(
|
||||||
tenantId).getUserStoreManager();
|
tenantId).getUserStoreManager();
|
||||||
if (!userStoreManager.isExistingUser(username)) {
|
List<String> currentUserRoles = getRoles(groupId);
|
||||||
throw new UserDoesNotExistException("User not exists with name " + username);
|
GroupManagementDAOFactory.beginTransaction();
|
||||||
}
|
|
||||||
List<String> currentGroupRoles = getRoles(groupId);
|
|
||||||
List<String> currentUserRoles = getRoles(username, groupId);
|
|
||||||
List<String> rolesToAdd = new ArrayList<>();
|
|
||||||
List<String> rolesToRemove = new ArrayList<>();
|
|
||||||
String roleNamePrefix = "Internal/group-" + groupId + "-";
|
|
||||||
for (String role : newRoles) {
|
for (String role : newRoles) {
|
||||||
if (currentGroupRoles.contains(role)) {
|
if (!userStoreManager.isExistingRole(role)) {
|
||||||
if (!currentUserRoles.contains(role)) {
|
throw new RoleDoesNotExistException("Role '" + role + "' does not exists in the user store.");
|
||||||
rolesToAdd.add(roleNamePrefix + role);
|
}
|
||||||
}
|
// Removing role from current user roles of the group will return true if role exist.
|
||||||
} else {
|
// So we don't need to add it to the db again.
|
||||||
throw new RoleDoesNotExistException("Role '" + role + "' is not exists in requested group.");
|
if (!currentUserRoles.remove(role)) {
|
||||||
|
// If group doesn't have the role, it is adding to the db.
|
||||||
|
groupDAO.addRole(groupId, role, tenantId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (String role : currentUserRoles) {
|
for (String role : currentUserRoles) {
|
||||||
if (currentGroupRoles.contains(role)) {
|
// Removing old roles from db which are not available in the new roles list.
|
||||||
if (!newRoles.contains(role)) {
|
groupDAO.removeRole(groupId, role, tenantId);
|
||||||
rolesToRemove.add(roleNamePrefix + role);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw new RoleDoesNotExistException("Role '" + role + "' is not exists in requested group.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
userStoreManager.updateRoleListOfUser(username,
|
GroupManagementDAOFactory.commitTransaction();
|
||||||
rolesToRemove.toArray(new String[rolesToRemove.size()]),
|
} catch (GroupManagementDAOException e) {
|
||||||
rolesToAdd.toArray(new String[rolesToAdd.size()]));
|
GroupManagementDAOFactory.rollbackTransaction();
|
||||||
|
throw new GroupManagementException(e);
|
||||||
} catch (UserStoreException e) {
|
} catch (UserStoreException e) {
|
||||||
if (e instanceof UserDoesNotExistException) {
|
|
||||||
throw (UserDoesNotExistException) e;
|
|
||||||
}
|
|
||||||
throw new GroupManagementException("User store error in updating sharing roles.", e);
|
throw new GroupManagementException("User store error in updating sharing roles.", e);
|
||||||
}
|
} catch (TransactionManagementException e) {
|
||||||
}
|
throw new GroupManagementException(e);
|
||||||
|
} finally {
|
||||||
/**
|
GroupManagementDAOFactory.closeConnection();
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean addGroupSharingRole(String username, int groupId, String roleName, String[] permissions)
|
|
||||||
throws GroupManagementException {
|
|
||||||
if (groupId == -1) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
UserStoreManager userStoreManager;
|
|
||||||
String role;
|
|
||||||
String[] userNames = new String[1];
|
|
||||||
try {
|
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
|
||||||
userStoreManager = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId)
|
|
||||||
.getUserStoreManager();
|
|
||||||
role = "Internal/group-" + groupId + "-" + roleName;
|
|
||||||
userNames[0] = username;
|
|
||||||
Permission[] carbonPermissions = new Permission[permissions.length];
|
|
||||||
for (int i = 0; i < permissions.length; i++) {
|
|
||||||
carbonPermissions[i] = new Permission(permissions[i], CarbonConstants.UI_PERMISSION_ACTION);
|
|
||||||
}
|
|
||||||
userStoreManager.addRole(role, userNames, carbonPermissions);
|
|
||||||
return true;
|
|
||||||
} catch (UserStoreException e) {
|
|
||||||
String errorMsg = "User store error in adding role to group id:" + groupId;
|
|
||||||
throw new GroupManagementException(errorMsg, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean removeGroupSharingRole(int groupId, String roleName) throws GroupManagementException {
|
|
||||||
if (groupId == -1) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
UserStoreManager userStoreManager;
|
|
||||||
String role;
|
|
||||||
try {
|
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
|
||||||
userStoreManager = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId)
|
|
||||||
.getUserStoreManager();
|
|
||||||
role = "Internal/group-" + groupId + "-" + roleName;
|
|
||||||
userStoreManager.deleteRole(role);
|
|
||||||
return true;
|
|
||||||
} catch (UserStoreException userStoreEx) {
|
|
||||||
String errorMsg = "User store error in adding role to group id:" + groupId;
|
|
||||||
log.error(errorMsg, userStoreEx);
|
|
||||||
throw new GroupManagementException(errorMsg, userStoreEx);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -460,92 +408,16 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<String> getRoles(int groupId) throws GroupManagementException {
|
public List<String> getRoles(int groupId) throws GroupManagementException {
|
||||||
UserStoreManager userStoreManager;
|
|
||||||
String[] roles;
|
|
||||||
List<String> groupRoles;
|
|
||||||
try {
|
try {
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
userStoreManager = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId)
|
GroupManagementDAOFactory.openConnection();
|
||||||
.getUserStoreManager();
|
return groupDAO.getRoles(groupId, tenantId);
|
||||||
roles = userStoreManager.getRoleNames();
|
} catch (GroupManagementDAOException e) {
|
||||||
groupRoles = new ArrayList<>();
|
throw new GroupManagementException("Error occurred while retrieving all groups in tenant", e);
|
||||||
for (String r : roles) {
|
} catch (SQLException e) {
|
||||||
if (r != null && r.contains("Internal/group-" + groupId + "-")) {
|
throw new GroupManagementException("Error occurred while opening a connection to the data source.", e);
|
||||||
groupRoles.add(r.replace("Internal/group-" + groupId + "-", ""));
|
} finally {
|
||||||
}
|
GroupManagementDAOFactory.closeConnection();
|
||||||
}
|
|
||||||
return groupRoles;
|
|
||||||
} catch (UserStoreException userStoreEx) {
|
|
||||||
String errorMsg = "User store error in adding role to group id:" + groupId;
|
|
||||||
log.error(errorMsg, userStoreEx);
|
|
||||||
throw new GroupManagementException(errorMsg, userStoreEx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<String> getRoles(String username, int groupId)
|
|
||||||
throws GroupManagementException, UserDoesNotExistException {
|
|
||||||
UserStoreManager userStoreManager;
|
|
||||||
List<String> groupRoleList = new ArrayList<>();
|
|
||||||
try {
|
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
|
||||||
userStoreManager = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId)
|
|
||||||
.getUserStoreManager();
|
|
||||||
if (!userStoreManager.isExistingUser(username)) {
|
|
||||||
throw new UserDoesNotExistException("User not exists with name " + username);
|
|
||||||
}
|
|
||||||
String[] roleList = userStoreManager.getRoleListOfUser(username);
|
|
||||||
for (String role : roleList) {
|
|
||||||
if (role != null && role.contains("Internal/group-" + groupId)) {
|
|
||||||
String roleName = role.replace("Internal/group-" + groupId + "-", "");
|
|
||||||
groupRoleList.add(roleName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return groupRoleList;
|
|
||||||
} catch (UserStoreException e) {
|
|
||||||
if (e instanceof UserDoesNotExistException) {
|
|
||||||
throw (UserDoesNotExistException) e;
|
|
||||||
}
|
|
||||||
throw new GroupManagementException("Error occurred while getting user store manager.", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<GroupUser> getUsers(int groupId) throws GroupManagementException {
|
|
||||||
UserStoreManager userStoreManager;
|
|
||||||
Map<String, GroupUser> groupUserHashMap = new HashMap<>();
|
|
||||||
try {
|
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
|
||||||
userStoreManager = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId)
|
|
||||||
.getUserStoreManager();
|
|
||||||
List<String> rolesForGroup = this.getRoles(groupId);
|
|
||||||
for (String role : rolesForGroup) {
|
|
||||||
String[] users = userStoreManager.getUserListOfRole("Internal/group-" + groupId + "-" + role);
|
|
||||||
for (String user : users) {
|
|
||||||
GroupUser groupUser;
|
|
||||||
if (groupUserHashMap.containsKey(user)) {
|
|
||||||
groupUser = groupUserHashMap.get(user);
|
|
||||||
groupUser.getGroupRoles().add(role);
|
|
||||||
} else {
|
|
||||||
groupUser = new GroupUser();
|
|
||||||
groupUser.setUsername(user);
|
|
||||||
groupUser.setGroupRoles(new ArrayList<String>());
|
|
||||||
groupUser.getGroupRoles().add(role);
|
|
||||||
groupUserHashMap.put(user, groupUser);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new ArrayList<>(groupUserHashMap.values());
|
|
||||||
} catch (UserStoreException e) {
|
|
||||||
String errorMsg = "User store error in fetching user list for group id:" + groupId;
|
|
||||||
log.error(errorMsg, e);
|
|
||||||
throw new GroupManagementException(errorMsg, e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -653,58 +525,26 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String[] getPermissions(String username, int groupId)
|
public List<DeviceGroup> getGroups(String username, String permission) throws GroupManagementException {
|
||||||
throws GroupManagementException, UserDoesNotExistException {
|
List<DeviceGroup> deviceGroups = getGroups(username);
|
||||||
|
Map<Integer, DeviceGroup> permittedDeviceGroups = new HashMap<>();
|
||||||
UserRealm userRealm;
|
UserRealm userRealm;
|
||||||
List<String> roles = getRoles(username, groupId);
|
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
try {
|
try {
|
||||||
userRealm = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId);
|
userRealm = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId);
|
||||||
List<String> lstPermissions = new ArrayList<>();
|
for (DeviceGroup deviceGroup : deviceGroups) {
|
||||||
String[] resourceIds = userRealm.getAuthorizationManager().getAllowedUIResourcesForUser(username, "/");
|
List<String> roles = getRoles(deviceGroup.getGroupId());
|
||||||
if (resourceIds != null) {
|
for (String roleName : roles) {
|
||||||
for (String resourceId : resourceIds) {
|
if (userRealm.getAuthorizationManager().
|
||||||
for (String roleName : roles) {
|
isRoleAuthorized(roleName, permission, CarbonConstants.UI_PERMISSION_ACTION)) {
|
||||||
if (userRealm.getAuthorizationManager().
|
permittedDeviceGroups.put(deviceGroup.getGroupId(), deviceGroup);
|
||||||
isRoleAuthorized("Internal/group-" + groupId + "-" + roleName, resourceId,
|
|
||||||
CarbonConstants.UI_PERMISSION_ACTION)) {
|
|
||||||
lstPermissions.add(resourceId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
String[] permissions = lstPermissions.toArray(new String[lstPermissions.size()]);
|
|
||||||
return UserCoreUtil.optimizePermissions(permissions);
|
|
||||||
} catch (UserStoreException e) {
|
|
||||||
throw new GroupManagementException("Error occurred while getting user realm.", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<DeviceGroup> getGroups(String username, String permission)
|
|
||||||
throws GroupManagementException {
|
|
||||||
UserRealm userRealm;
|
|
||||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
|
||||||
Map<Integer, DeviceGroup> groups = new HashMap<>();
|
|
||||||
try {
|
|
||||||
userRealm = DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId);
|
|
||||||
String[] roles = userRealm.getUserStoreManager().getRoleListOfUser(username);
|
|
||||||
for (String role : roles) {
|
|
||||||
if (role != null && role.contains("Internal/group-") && userRealm.getAuthorizationManager()
|
|
||||||
.isRoleAuthorized(role, permission, CarbonConstants.UI_PERMISSION_ACTION)) {
|
|
||||||
DeviceGroup group = checkAndExtractNonExistingGroup(groups, role);
|
|
||||||
if (group != null) {
|
|
||||||
groups.put(group.getGroupId(), group);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new ArrayList<>(groups.values());
|
|
||||||
} catch (UserStoreException e) {
|
} catch (UserStoreException e) {
|
||||||
throw new GroupManagementException("Error occurred while getting user realm.", e);
|
throw new GroupManagementException("Error occurred while getting user realm.", e);
|
||||||
}
|
}
|
||||||
|
return new ArrayList<>(permittedDeviceGroups.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -725,26 +565,4 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
|||||||
GroupManagementDAOFactory.closeConnection();
|
GroupManagementDAOFactory.closeConnection();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* This method returns group belongs to particular role, if it is not existed in groups map.
|
|
||||||
*
|
|
||||||
* @param groups existing groups map.
|
|
||||||
* @param role group related role which needs to evaluate.
|
|
||||||
* @return device group if it is not existing in the groups map.
|
|
||||||
* @throws GroupManagementException
|
|
||||||
*/
|
|
||||||
private DeviceGroup checkAndExtractNonExistingGroup(Map<Integer, DeviceGroup> groups, String role)
|
|
||||||
throws GroupManagementException {
|
|
||||||
try {
|
|
||||||
int groupId = Integer.parseInt(role.split("-")[1]);
|
|
||||||
if (!groups.containsKey(groupId)) {
|
|
||||||
return getGroup(groupId);
|
|
||||||
}
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
log.error("Unable to extract groupId from role " + role, e);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -78,8 +78,6 @@ public class TestDataHolder {
|
|||||||
DeviceGroup deviceGroup = new DeviceGroup();
|
DeviceGroup deviceGroup = new DeviceGroup();
|
||||||
deviceGroup.setName("Test device group");
|
deviceGroup.setName("Test device group");
|
||||||
deviceGroup.setDescription("Test description");
|
deviceGroup.setDescription("Test description");
|
||||||
deviceGroup.setDateOfCreation(new Date().getTime());
|
|
||||||
deviceGroup.setDateOfLastUpdate(new Date().getTime());
|
|
||||||
deviceGroup.setOwner(OWNER);
|
deviceGroup.setOwner(OWNER);
|
||||||
return deviceGroup;
|
return deviceGroup;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,7 +31,7 @@ import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest;
|
|||||||
import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
|
import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Date;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class GroupPersistTests extends BaseDeviceManagementTest {
|
public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||||
@ -48,7 +48,7 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAddGroupTest() {
|
public void addGroupTest() {
|
||||||
DeviceGroup deviceGroup = TestDataHolder.generateDummyGroupData();
|
DeviceGroup deviceGroup = TestDataHolder.generateDummyGroupData();
|
||||||
try {
|
try {
|
||||||
GroupManagementDAOFactory.beginTransaction();
|
GroupManagementDAOFactory.beginTransaction();
|
||||||
@ -73,7 +73,7 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
|||||||
log.debug("Group name: " + group.getName());
|
log.debug("Group name: " + group.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(dependsOnMethods = {"testAddGroupTest"})
|
@Test(dependsOnMethods = {"addGroupTest"})
|
||||||
public void getGroupTest() {
|
public void getGroupTest() {
|
||||||
try {
|
try {
|
||||||
GroupManagementDAOFactory.openConnection();
|
GroupManagementDAOFactory.openConnection();
|
||||||
@ -97,7 +97,82 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(dependsOnMethods = {"testAddGroupTest"})
|
@Test(dependsOnMethods = {"addGroupTest"})
|
||||||
|
public void shareGroupTest() {
|
||||||
|
try {
|
||||||
|
GroupManagementDAOFactory.beginTransaction();
|
||||||
|
List<String> addedRoles = new ArrayList<>();
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
String role = "role-" + i;
|
||||||
|
groupDAO.addRole(groupId, role, TestDataHolder.SUPER_TENANT_ID);
|
||||||
|
addedRoles.add(role);
|
||||||
|
}
|
||||||
|
GroupManagementDAOFactory.commitTransaction();
|
||||||
|
List<String> roles = groupDAO.getRoles(groupId, TestDataHolder.SUPER_TENANT_ID);
|
||||||
|
Assert.assertEquals(roles, addedRoles, "Added roles are not equal to returned roles.");
|
||||||
|
log.debug("Group shared with roles.");
|
||||||
|
} catch (GroupManagementDAOException e) {
|
||||||
|
String msg = "Error occurred while find group by name.";
|
||||||
|
log.error(msg, e);
|
||||||
|
Assert.fail(msg, e);
|
||||||
|
} catch (TransactionManagementException e) {
|
||||||
|
String msg = "Error occurred while opening a connection to the data source.";
|
||||||
|
log.error(msg, e);
|
||||||
|
Assert.fail(msg, e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOFactory.closeConnection();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(dependsOnMethods = {"shareGroupTest"})
|
||||||
|
public void getShareGroupTest() {
|
||||||
|
try {
|
||||||
|
GroupManagementDAOFactory.openConnection();
|
||||||
|
List<String> roles = groupDAO.getRoles(groupId, TestDataHolder.SUPER_TENANT_ID);
|
||||||
|
roles.remove(0);
|
||||||
|
List<DeviceGroup> deviceGroups = groupDAO.getGroups(roles.toArray(new String[roles.size()]), TestDataHolder.SUPER_TENANT_ID);
|
||||||
|
Assert.assertEquals(deviceGroups.size(), 1, "Unexpected number of device groups found with role.");
|
||||||
|
Assert.assertEquals(deviceGroups.get(0).getGroupId(), groupId, "Unexpected groupId found with role.");
|
||||||
|
log.debug("Group found for given roles.");
|
||||||
|
} catch (GroupManagementDAOException e) {
|
||||||
|
String msg = "Error occurred while getting groups shared with roles.";
|
||||||
|
log.error(msg, e);
|
||||||
|
Assert.fail(msg, e);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while opening a connection to the data source.";
|
||||||
|
log.error(msg, e);
|
||||||
|
Assert.fail(msg, e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOFactory.closeConnection();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(dependsOnMethods = {"getShareGroupTest"})
|
||||||
|
public void unshareGroupTest() {
|
||||||
|
try {
|
||||||
|
GroupManagementDAOFactory.beginTransaction();
|
||||||
|
List<String> rolesToRemove = groupDAO.getRoles(groupId, TestDataHolder.SUPER_TENANT_ID);
|
||||||
|
for (String role : rolesToRemove) {
|
||||||
|
groupDAO.removeRole(groupId, role, TestDataHolder.SUPER_TENANT_ID);
|
||||||
|
}
|
||||||
|
GroupManagementDAOFactory.commitTransaction();
|
||||||
|
List<String> roles = groupDAO.getRoles(groupId, TestDataHolder.SUPER_TENANT_ID);
|
||||||
|
Assert.assertNotEquals(roles, rolesToRemove, "Roles not removed.");
|
||||||
|
log.debug("Group unshared with given roles.");
|
||||||
|
} catch (GroupManagementDAOException e) {
|
||||||
|
String msg = "Error occurred while find group by name.";
|
||||||
|
log.error(msg, e);
|
||||||
|
Assert.fail(msg, e);
|
||||||
|
} catch (TransactionManagementException e) {
|
||||||
|
String msg = "Error occurred while opening a connection to the data source.";
|
||||||
|
log.error(msg, e);
|
||||||
|
Assert.fail(msg, e);
|
||||||
|
} finally {
|
||||||
|
GroupManagementDAOFactory.closeConnection();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(dependsOnMethods = {"addGroupTest"})
|
||||||
public void addDeviceToGroupTest() {
|
public void addDeviceToGroupTest() {
|
||||||
Device initialTestDevice = TestDataHolder.initialTestDevice;
|
Device initialTestDevice = TestDataHolder.initialTestDevice;
|
||||||
DeviceGroup deviceGroup = getGroupById(groupId);
|
DeviceGroup deviceGroup = getGroupById(groupId);
|
||||||
@ -163,14 +238,12 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(dependsOnMethods = {"removeDeviceFromGroupTest"})
|
@Test(dependsOnMethods = {"removeDeviceFromGroupTest", "unshareGroupTest"})
|
||||||
public void updateGroupTest() {
|
public void updateGroupTest() {
|
||||||
long time = new Date().getTime();
|
|
||||||
String name = "Test Updated";
|
String name = "Test Updated";
|
||||||
String desc = "Desc updated";
|
String desc = "Desc updated";
|
||||||
DeviceGroup group = getGroupById(groupId);
|
DeviceGroup group = getGroupById(groupId);
|
||||||
Assert.assertNotNull(group, "Group is null");
|
Assert.assertNotNull(group, "Group is null");
|
||||||
group.setDateOfLastUpdate(time);
|
|
||||||
group.setName(name);
|
group.setName(name);
|
||||||
group.setDescription(desc);
|
group.setDescription(desc);
|
||||||
try {
|
try {
|
||||||
@ -195,7 +268,6 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
|||||||
Assert.assertNotNull(group, "Group is null");
|
Assert.assertNotNull(group, "Group is null");
|
||||||
Assert.assertEquals(group.getName(), name, "Group name");
|
Assert.assertEquals(group.getName(), name, "Group name");
|
||||||
Assert.assertEquals(group.getDescription(), desc, "Group description");
|
Assert.assertEquals(group.getDescription(), desc, "Group description");
|
||||||
Assert.assertEquals((long) group.getDateOfLastUpdate(), time, "Update time");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(dependsOnMethods = {"updateGroupTest"})
|
@Test(dependsOnMethods = {"updateGroupTest"})
|
||||||
|
|||||||
@ -10,13 +10,21 @@ CREATE TABLE IF NOT EXISTS DM_GROUP (
|
|||||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||||
GROUP_NAME VARCHAR(100) DEFAULT NULL,
|
GROUP_NAME VARCHAR(100) DEFAULT NULL,
|
||||||
DESCRIPTION TEXT DEFAULT NULL,
|
DESCRIPTION TEXT DEFAULT NULL,
|
||||||
DATE_OF_CREATE BIGINT DEFAULT NULL,
|
|
||||||
DATE_OF_LAST_UPDATE BIGINT DEFAULT NULL,
|
|
||||||
OWNER VARCHAR(45) DEFAULT NULL,
|
OWNER VARCHAR(45) DEFAULT NULL,
|
||||||
TENANT_ID INTEGER DEFAULT 0,
|
TENANT_ID INTEGER DEFAULT 0,
|
||||||
PRIMARY KEY (ID)
|
PRIMARY KEY (ID)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS DM_ROLE_GROUP_MAP (
|
||||||
|
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||||
|
GROUP_ID INTEGER DEFAULT NULL,
|
||||||
|
ROLE VARCHAR(45) DEFAULT NULL,
|
||||||
|
TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT fk_DM_ROLE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||||
|
REFERENCES DM_GROUP (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||||
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE (
|
CREATE TABLE IF NOT EXISTS DM_DEVICE_CERTIFICATE (
|
||||||
ID INTEGER auto_increment NOT NULL,
|
ID INTEGER auto_increment NOT NULL,
|
||||||
SERIAL_NUMBER VARCHAR(500) DEFAULT NULL,
|
SERIAL_NUMBER VARCHAR(500) DEFAULT NULL,
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -50,15 +50,17 @@ under the License. --}}
|
|||||||
|
|
||||||
{{defineZone "header"}}
|
{{defineZone "header"}}
|
||||||
|
|
||||||
<div class="navbar-wrapper">
|
|
||||||
{{defineZone "navbars"}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{defineZone "sidePanes"}}
|
{{defineZone "sidePanes"}}
|
||||||
|
|
||||||
<!-- page-content-wrapper -->
|
<!-- page-content-wrapper -->
|
||||||
<div class="page-content-wrapper">
|
<div class="page-content-wrapper">
|
||||||
{{defineZone "contentTitle"}}
|
|
||||||
|
<div class="navbar-wrapper">
|
||||||
|
{{defineZone "navbars"}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{!defineZone "contentTitle"}}
|
||||||
|
|
||||||
<div class="container-fluid ">
|
<div class="container-fluid ">
|
||||||
<div class="body-wrapper">
|
<div class="body-wrapper">
|
||||||
{{defineZone "content"}}
|
{{defineZone "content"}}
|
||||||
|
|||||||
@ -80,7 +80,7 @@
|
|||||||
<div id="ast-container" class="ast-container list-view">
|
<div id="ast-container" class="ast-container list-view">
|
||||||
<div class="ctrl-info-panel col-centered text-center wr-login">
|
<div class="ctrl-info-panel col-centered text-center wr-login">
|
||||||
<h2>You don't have any group registered at the moment.</h2>
|
<h2>You don't have any group registered at the moment.</h2>
|
||||||
<br/>
|
<br />
|
||||||
{{#if permissions.ADD_GROUP}}
|
{{#if permissions.ADD_GROUP}}
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
<a href="{{@app.context}}/group/add" class="wr-btn">
|
<a href="{{@app.context}}/group/add" class="wr-btn">
|
||||||
@ -115,67 +115,26 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="user-names">
|
<div id="user-names">
|
||||||
<h4>
|
<h4>
|
||||||
Enter user name to manage group sharing
|
Select user roles to manage group sharing
|
||||||
<br><br>
|
<br><br>
|
||||||
<input type="text" id="share-user-selector" class="form-control modal-input operationDataKeys">
|
<div style="max-height: 200px; overflow: scroll" id="rolesListing">
|
||||||
</input>
|
</div>
|
||||||
</h4>
|
</h4>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="#" id="share-group-next-link" class="btn-operations">
|
{{#if permissions.CREATE_GROUP_ROLES}}
|
||||||
Next
|
<a href="{{@app.context}}/role/add" class="btn-operations">
|
||||||
</a>
|
New Role
|
||||||
|
|
||||||
<a href="#" id="share-group-w1-cancel-link" class="btn-operations btn-default">
|
|
||||||
Cancel
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="share-group-w2-modal-content" class="hide">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h3 class="pull-left modal-title">
|
|
||||||
<span>
|
|
||||||
<span class="fw-stack">
|
|
||||||
<i class="fw fw-ring fw-stack-2x"></i>
|
|
||||||
<i class="fw fw-share fw-stack-1x"></i>
|
|
||||||
</span> Group Sharing
|
|
||||||
</span>
|
|
||||||
</h3>
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i
|
|
||||||
class="fw fw-cancel"></i></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body add-margin-top-2x add-margin-bottom-2x">
|
|
||||||
<div id="notification-error-msg" class="alert alert-danger hidden" role="alert">
|
|
||||||
<i class="icon fw fw-error"></i><span></span>
|
|
||||||
</div>
|
|
||||||
<div id="user-roles">
|
|
||||||
<h4>
|
|
||||||
Select sharing roles
|
|
||||||
<br><br>
|
|
||||||
</h4>
|
|
||||||
</div>
|
|
||||||
{{#if permissions.CREATE_GROUP_ROLES}}
|
|
||||||
<div class="buttons">
|
|
||||||
<a href="#" id="share-group-w2-add-new-role-link" class="btn-operations">
|
|
||||||
<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-add fw-stack-1x"></i></span> Add New Role
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
<a href="#" id="share-group-new-role-from-selection" class="btn-operations">
|
||||||
{{/if}}
|
New Role from Selection
|
||||||
</div>
|
</a>
|
||||||
<div class="modal-footer">
|
{{/if}}
|
||||||
<div class="buttons">
|
<a href="#" id="share-group-next-link" class="btn-operations">
|
||||||
<a href="#" id="share-group-yes-link" class="btn-operations">
|
Share
|
||||||
OK
|
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="#" id="share-group-w2-cancel-link" class="btn-operations btn-default">
|
|
||||||
Cancel
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -201,25 +160,10 @@
|
|||||||
<h4>
|
<h4>
|
||||||
Enter Group Sharing Role Name
|
Enter Group Sharing Role Name
|
||||||
<br><br>
|
<br><br>
|
||||||
<input type="text" id="group-sharing-role-name" class="form-control modal-input operationDataKeys"/>
|
<input type="text" id="group-sharing-role-name"
|
||||||
<br><br>
|
class="form-control modal-input operationDataKeys" />
|
||||||
Role Permissions
|
|
||||||
<br><br>
|
<br><br>
|
||||||
</h4>
|
</h4>
|
||||||
<table class="table">
|
|
||||||
<tbody id="permission-table-container">
|
|
||||||
{{#each groupPermissions}}
|
|
||||||
<tr>
|
|
||||||
<td>{{this}}</td>
|
|
||||||
<td>
|
|
||||||
<a href="#" class="btn-operations btn-default" onclick="togglePermissionAction(this)" data-value="unchecked">
|
|
||||||
<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-add fw-stack-1x"></i></span>
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{{/each}}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
@ -239,7 +183,43 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-5 col-md-6 col-centered">
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
<h3>Group sharing updated successfully.</h3>
|
<h3>Group was successfully updated.</h3>
|
||||||
|
<br />
|
||||||
|
Do you need to Add / Remove users to the chosen roles?
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="{{@app.context}}/users" id="share-group-add-users-yes-link"
|
||||||
|
class="btn-operations">
|
||||||
|
Yes
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="#" class="btn-operations btn-default" data-dismiss="modal">
|
||||||
|
No
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="create-combined-role-200-content" class="hide">
|
||||||
|
<div class="content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-5 col-md-6 col-centered">
|
||||||
|
<h3>New Role was successfully created.</h3>
|
||||||
|
<br />
|
||||||
|
Do you need to Add / Remove users to the chosen roles?
|
||||||
|
<div class="buttons">
|
||||||
|
<a href="{{@app.context}}/users" id="share-group-add-users-yes-link"
|
||||||
|
class="btn-operations">
|
||||||
|
Yes
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="#" class="btn-operations btn-default" data-dismiss="modal">
|
||||||
|
No
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -256,7 +236,8 @@
|
|||||||
Yes
|
Yes
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="#" id="remove-group-cancel-link" class="btn-operations btn-default">
|
<a href="#" id="remove-group-cancel-link" class="btn-operations btn-default"
|
||||||
|
data-dismiss="modal">
|
||||||
Cancel
|
Cancel
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -110,12 +110,12 @@ function loadGroups() {
|
|||||||
var objects = [];
|
var objects = [];
|
||||||
$(data.deviceGroups).each(function (index) {
|
$(data.deviceGroups).each(function (index) {
|
||||||
objects.push({
|
objects.push({
|
||||||
groupId: data.deviceGroups[index].id,
|
groupId: data.deviceGroups[index].id,
|
||||||
name: data.deviceGroups[index].name,
|
name: data.deviceGroups[index].name,
|
||||||
description: data.deviceGroups[index].description,
|
description: data.deviceGroups[index].description,
|
||||||
owner: data.deviceGroups[index].owner,
|
owner: data.deviceGroups[index].owner,
|
||||||
dateOfCreation: data.deviceGroups[index].dateOfCreation
|
dateOfCreation: data.deviceGroups[index].dateOfCreation
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
var json = {
|
var json = {
|
||||||
"recordsTotal": data.count,
|
"recordsTotal": data.count,
|
||||||
@ -154,34 +154,50 @@ function loadGroups() {
|
|||||||
class: 'text-right content-fill text-left-on-grid-view no-wrap',
|
class: 'text-right content-fill text-left-on-grid-view no-wrap',
|
||||||
render: function (id, type, row, meta) {
|
render: function (id, type, row, meta) {
|
||||||
var html;
|
var html;
|
||||||
if ($.hasPermission("VIEW_GROUP_DEVICES")){
|
if ($.hasPermission("VIEW_GROUP_DEVICES")) {
|
||||||
html = '<a href="devices?groupId=' + row.groupId + '&groupName=' + row.name + '" data-click-event="remove-form" class="btn padding-reduce-on-grid-view">' +
|
html = '<a href="devices?groupId=' + row.groupId + '&groupName=' + row.name
|
||||||
'<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-view fw-stack-1x"></i></span>' +
|
+ '" data-click-event="remove-form" class="btn padding-reduce-on-grid-view">' +
|
||||||
'<span class="hidden-xs hidden-on-grid-view">View Devices</span></a>';
|
'<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-view fw-stack-1x"></i></span>'
|
||||||
|
+
|
||||||
|
'<span class="hidden-xs hidden-on-grid-view">View Devices</span></a>';
|
||||||
|
|
||||||
html += '<a href="group/' + row.name + '/' + row.groupId + '/analytics" data-click-event="remove-form" class="btn padding-reduce-on-grid-view">' +
|
html += '<a href="group/' + row.name + '/' + row.groupId
|
||||||
'<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-statistics fw-stack-1x"></i></span>' +
|
+ '/analytics" data-click-event="remove-form" class="btn padding-reduce-on-grid-view">' +
|
||||||
'<span class="hidden-xs hidden-on-grid-view">Analytics</span></a>';
|
'<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-statistics fw-stack-1x"></i></span>'
|
||||||
|
+
|
||||||
|
'<span class="hidden-xs hidden-on-grid-view">Analytics</span></a>';
|
||||||
} else {
|
} else {
|
||||||
html = '';
|
html = '';
|
||||||
}
|
}
|
||||||
if($.hasPermission("SHARE_GROUP")) {
|
if ($.hasPermission("SHARE_GROUP")) {
|
||||||
html += '<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view share-group-link" data-group-id="' + row.groupId + '" ' +
|
html +=
|
||||||
'data-group-owner="' + row.owner + '"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-share fw-stack-1x"></i></span>' +
|
'<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view share-group-link" data-group-id="'
|
||||||
|
+ row.groupId + '" ' +
|
||||||
|
'data-group-owner="' + row.owner
|
||||||
|
+ '"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-share fw-stack-1x"></i></span>'
|
||||||
|
+
|
||||||
'<span class="hidden-xs hidden-on-grid-view">Share</span></a>';
|
'<span class="hidden-xs hidden-on-grid-view">Share</span></a>';
|
||||||
} else {
|
} else {
|
||||||
html += '';
|
html += '';
|
||||||
}
|
}
|
||||||
if($.hasPermission("UPDATE_GROUP")) {
|
if ($.hasPermission("UPDATE_GROUP")) {
|
||||||
html += '<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view edit-group-link" data-group-name="' + row.name + '" ' +
|
html +=
|
||||||
'data-group-owner="' + row.owner + '" data-group-description="' + row.description + '" data-group-id="' + row.groupId + '"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
'<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view edit-group-link" data-group-name="'
|
||||||
|
+ row.name + '" ' +
|
||||||
|
'data-group-owner="' + row.owner + '" data-group-description="' + row.description
|
||||||
|
+ '" data-group-id="' + row.groupId
|
||||||
|
+ '"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i>' +
|
||||||
'<i class="fw fw-edit fw-stack-1x"></i></span><span class="hidden-xs hidden-on-grid-view">Edit</span></a>';
|
'<i class="fw fw-edit fw-stack-1x"></i></span><span class="hidden-xs hidden-on-grid-view">Edit</span></a>';
|
||||||
} else {
|
} else {
|
||||||
html += '';
|
html += '';
|
||||||
}
|
}
|
||||||
if ($.hasPermission("REMOVE_GROUP")) {
|
if ($.hasPermission("REMOVE_GROUP")) {
|
||||||
html += '<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view remove-group-link" data-group-id="' + row.groupId + '" ' +
|
html +=
|
||||||
'data-group-owner="' + row.owner + '"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-delete fw-stack-1x"></i>' +
|
'<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view remove-group-link" data-group-id="'
|
||||||
|
+ row.groupId + '" ' +
|
||||||
|
'data-group-owner="' + row.owner
|
||||||
|
+ '"><span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-delete fw-stack-1x"></i>'
|
||||||
|
+
|
||||||
'</span><span class="hidden-xs hidden-on-grid-view">Delete</span></a>';
|
'</span><span class="hidden-xs hidden-on-grid-view">Delete</span></a>';
|
||||||
} else {
|
} else {
|
||||||
html += '';
|
html += '';
|
||||||
@ -336,7 +352,7 @@ function hidePopup() {
|
|||||||
$(modalPopupContent).html("");
|
$(modalPopupContent).html("");
|
||||||
$(modalPopupContent).removeClass("operation-data");
|
$(modalPopupContent).removeClass("operation-data");
|
||||||
$(modalPopup).modal('hide');
|
$(modalPopup).modal('hide');
|
||||||
$('body').removeClass('modal-open').css('padding-right','0px');
|
$('body').removeClass('modal-open').css('padding-right', '0px');
|
||||||
$('.modal-backdrop').remove();
|
$('.modal-backdrop').remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -352,33 +368,37 @@ function attachEvents() {
|
|||||||
$("a.share-group-link").click(function () {
|
$("a.share-group-link").click(function () {
|
||||||
var groupId = $(this).data("group-id");
|
var groupId = $(this).data("group-id");
|
||||||
var groupOwner = $(this).data("group-owner");
|
var groupOwner = $(this).data("group-owner");
|
||||||
|
|
||||||
$(modalPopupContent).html($('#share-group-w1-modal-content').html());
|
$(modalPopupContent).html($('#share-group-w1-modal-content').html());
|
||||||
$("a#share-group-next-link").show();
|
|
||||||
showPopup();
|
showPopup();
|
||||||
$("a#share-group-next-link").click(function () {
|
|
||||||
var successCallback = function (data) {
|
listAllRoles(groupId);
|
||||||
if(data === 'true') {
|
var shareGroupNextLink = $("a#share-group-next-link");
|
||||||
getAllRoles(groupId, selectedUser);
|
shareGroupNextLink.click(function () {
|
||||||
} else {
|
var roles = [];
|
||||||
var errorMsgWrapper = "#notification-error-msg";
|
$('.modal .roleCheckBoxes').each(
|
||||||
var errorMsg = "#notification-error-msg span";
|
function () {
|
||||||
$(errorMsg).text("User does not exist.");
|
if ($(this).is(':checked')) {
|
||||||
$(errorMsgWrapper).removeClass("hidden");
|
roles.push($(this).data('role-name'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
);
|
||||||
var selectedUser = $('#share-user-selector').val();
|
updateGroupShare(groupId, roles);
|
||||||
if (selectedUser == $("#group-listing").data("current-user")) {
|
|
||||||
$("#user-names").html("Please specify a user other than current user.");
|
|
||||||
$("a#share-group-next-link").hide();
|
|
||||||
} else {
|
|
||||||
invokerUtil.get("/api/device-mgt/v1.0/users/checkUser?username=" + selectedUser,
|
|
||||||
successCallback, function (message) {
|
|
||||||
displayErrors(message);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
$("a#share-group-w1-cancel-link").click(function () {
|
|
||||||
hidePopup();
|
var shareGroupNewRoleFromSelectionLink = $("a#share-group-new-role-from-selection");
|
||||||
|
shareGroupNewRoleFromSelectionLink.click(function () {
|
||||||
|
var roles = [];
|
||||||
|
$('.modal .roleCheckBoxes').each(
|
||||||
|
function () {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
roles.push($(this).data('role-name'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
addNewRole(roles);
|
||||||
|
// $(modalPopupContent).html($('#share-group-w3-modal-content').html());
|
||||||
|
// createNewRole(roles);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -408,8 +428,8 @@ function attachEvents() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
invokerUtil.delete("/api/device-mgt/v1.0/groups/id/" + groupId,
|
invokerUtil.delete("/api/device-mgt/v1.0/groups/id/" + groupId,
|
||||||
successCallback, function (message) {
|
successCallback, function (message) {
|
||||||
displayErrors(message);
|
displayErrors(message);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -453,8 +473,8 @@ function attachEvents() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
invokerUtil.put("/api/device-mgt/v1.0/groups/id/" + groupId, group,
|
invokerUtil.put("/api/device-mgt/v1.0/groups/id/" + groupId, group,
|
||||||
successCallback, function (message) {
|
successCallback, function (message) {
|
||||||
displayErrors(message);
|
displayErrors(message);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -464,16 +484,22 @@ function attachEvents() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAllRoles(groupId, selectedUser) {
|
function markAlreadySavedUsersRoles(groupId) {
|
||||||
$(modalPopupContent).html($('#share-group-w2-modal-content').html());
|
|
||||||
$("a#share-group-yes-link").hide();
|
|
||||||
var successCallback = function (data, textStatus, xhr) {
|
var successCallback = function (data, textStatus, xhr) {
|
||||||
data = JSON.parse(data);
|
data = JSON.parse(data);
|
||||||
if (xhr.status == 200) {
|
if (xhr.status == 200) {
|
||||||
if (data.roles.length > 0) {
|
if (data.roles.length > 0) {
|
||||||
generateRoleMap(groupId, selectedUser, data.roles);
|
for (var i = 0; i < data.roles.length; i++) {
|
||||||
|
$('.roleCheckBoxes').each(
|
||||||
|
function () {
|
||||||
|
if (data.roles[i] == $(this).data('role-name')) {
|
||||||
|
$(this).attr('checked', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$('#user-roles').html("There is no any roles for this group.");
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
displayErrors(xhr);
|
displayErrors(xhr);
|
||||||
@ -481,98 +507,52 @@ function getAllRoles(groupId, selectedUser) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
invokerUtil.get("/api/device-mgt/v1.0/groups/id/" + groupId + "/roles",
|
invokerUtil.get("/api/device-mgt/v1.0/groups/id/" + groupId + "/roles",
|
||||||
successCallback, function (message) {
|
successCallback, function (message) {
|
||||||
displayErrors(message);
|
displayErrors(message);
|
||||||
});
|
});
|
||||||
|
|
||||||
$("a#share-group-w2-cancel-link").click(function () {
|
|
||||||
hidePopup();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function generateRoleMap(groupId, selectedUser, allRoles) {
|
function listAllRoles(groupId) {
|
||||||
var successCallback = function (data, textStatus, xhr) {
|
var successCallback = function (data, textStatus, xhr) {
|
||||||
data = JSON.parse(data);
|
data = JSON.parse(data);
|
||||||
if (xhr.status == 200) {
|
if (xhr.status == 200) {
|
||||||
var userRoles = [];
|
if (data.roles.length > 0) {
|
||||||
if(data != "EMPTY") {
|
var html = "<br/>";
|
||||||
userRoles = data.roles;
|
for (var i = 0; i < data.roles.length; i++) {
|
||||||
}
|
html += '<div class="wr-input-control"><label class="wr-input-control checkbox">' +
|
||||||
var str = $('#user-roles').html();
|
'<input class="roleCheckBoxes" type="checkbox" data-role-name="' + data.roles[i] + '" />' +
|
||||||
|
'<span class="helper" title="' + data.roles[i] + '">' + data.roles[i] +
|
||||||
for (var i = 0; i < allRoles.length; i++) {
|
'</span></label></div>';
|
||||||
var isChecked = '';
|
$('.roleCheckBoxes').each(
|
||||||
for (var j = 0; j < userRoles.length; j++) {
|
function () {
|
||||||
if (allRoles[i] == userRoles[j]) {
|
if (data.roles[i] == $(this).data('role-name')) {
|
||||||
isChecked = 'checked';
|
$(this).attr('checked', true);
|
||||||
break;
|
}
|
||||||
}
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
str += '<label class="wr-input-control checkbox"><input type="checkbox" class="form-control modal-input operationDataKeys" id="user-role-' + allRoles[i] + '" value="' + allRoles[i]
|
$("#rolesListing").html(html);
|
||||||
+ '" ' + isChecked + '/>' +'<span class="helper" title="Check to share this group role with user."> '+ allRoles[i] + '</span></label><br><br>';
|
markAlreadySavedUsersRoles(groupId);
|
||||||
|
} else {
|
||||||
|
$("#rolesListing").html("No roles available");
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#user-roles').html(str);
|
|
||||||
$("a#share-group-yes-link").show();
|
|
||||||
$("a#share-group-yes-link").show();
|
|
||||||
$("a#share-group-yes-link").click(function () {
|
|
||||||
var roles = [];
|
|
||||||
for (var i = 0; i < allRoles.length; i++) {
|
|
||||||
if ($('#user-role-' + allRoles[i]).is(':checked')) {
|
|
||||||
roles.push(allRoles[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
updateGroupShare(groupId, selectedUser, roles);
|
|
||||||
});
|
|
||||||
$("a#share-group-w2-add-new-role-link").click(function () {
|
|
||||||
addNewRole(groupId, selectedUser, allRoles);
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
displayErrors(xhr);
|
displayErrors(xhr);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
invokerUtil.get("/api/device-mgt/v1.0/groups/id/" + groupId + "/roles?userName=" + selectedUser,
|
invokerUtil.get("/api/device-mgt/v1.0/roles?offset=0&limit=100&user-store=all",
|
||||||
successCallback, function (message) {
|
successCallback, function (message) {
|
||||||
displayErrors(message);
|
displayErrors(message);
|
||||||
});
|
});
|
||||||
|
|
||||||
$("a#share-group-w2-cancel-link").click(function () {
|
|
||||||
hidePopup();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function addNewRole(groupId, selectedUser, allRoles) {
|
function addNewRole(roles) {
|
||||||
$(modalPopupContent).html($('#share-group-w3-modal-content').html());
|
$(modalPopupContent).html($('#share-group-w3-modal-content').html());
|
||||||
function getPermissions() {
|
|
||||||
var PERMISSION_PREFIX = '/permission/admin/';
|
|
||||||
var permissions = [];
|
|
||||||
$('#permission-table-container').find('tr').each(function () {
|
|
||||||
var row = $(this).closest('tr');
|
|
||||||
var permission = $(row).find('td:nth-child(1)').text();
|
|
||||||
var check = $(row).find('td:nth-child(2) a').data('value');
|
|
||||||
if(check === 'checked') {
|
|
||||||
permission = PERMISSION_PREFIX + permission;
|
|
||||||
permissions.push(permission);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return permissions;
|
|
||||||
};
|
|
||||||
$("a#share-group-w3-yes-link").click(function () {
|
$("a#share-group-w3-yes-link").click(function () {
|
||||||
var successCallback = function (data, status, jqXHR) {
|
|
||||||
if(status == "success") {
|
|
||||||
getAllRoles(groupId, selectedUser);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var roleName = $('#group-sharing-role-name').val();
|
var roleName = $('#group-sharing-role-name').val();
|
||||||
var users = [];
|
if (roleName) {
|
||||||
if(roleName) {
|
createNewCombinedRole(roleName, roles);
|
||||||
var groupRoleInfo = {"roleName": roleName, "permissions": getPermissions(), "users": users};
|
|
||||||
var currentUser = $("#group-listing").data("current-user");
|
|
||||||
invokerUtil.post("/api/device-mgt/v1.0/groups/id/" + groupId + "/roles/create?userName=" + currentUser,
|
|
||||||
groupRoleInfo, successCallback, function (message) {
|
|
||||||
displayErrors(message);
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
var errorMsgWrapper = "#notification-error-msg";
|
var errorMsgWrapper = "#notification-error-msg";
|
||||||
var errorMsg = "#notification-error-msg span";
|
var errorMsg = "#notification-error-msg span";
|
||||||
@ -588,7 +568,7 @@ function addNewRole(groupId, selectedUser, allRoles) {
|
|||||||
function togglePermissionAction(element) {
|
function togglePermissionAction(element) {
|
||||||
$(element).data('value', 'checked');
|
$(element).data('value', 'checked');
|
||||||
var icon = $(element).find("i")[1];
|
var icon = $(element).find("i")[1];
|
||||||
if($(icon).hasClass('fw-minus')) {
|
if ($(icon).hasClass('fw-minus')) {
|
||||||
$(icon).removeClass('fw-minus');
|
$(icon).removeClass('fw-minus');
|
||||||
$(icon).addClass('fw-add');
|
$(icon).addClass('fw-add');
|
||||||
$(element).data('value', 'unchecked');
|
$(element).data('value', 'unchecked');
|
||||||
@ -599,20 +579,26 @@ function togglePermissionAction(element) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateGroupShare(groupId, selectedUser, roles) {
|
function updateGroupShare(groupId, roles) {
|
||||||
var successCallback = function (data) {
|
var successCallback = function (data) {
|
||||||
$(modalPopupContent).html($('#share-group-200-content').html());
|
$(modalPopupContent).html($('#share-group-200-content').html());
|
||||||
setTimeout(function () {
|
|
||||||
hidePopup();
|
|
||||||
location.reload(false);
|
|
||||||
}, 2000);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var deviceGroupShare = {"username": selectedUser, "groupRoles": roles };
|
|
||||||
invokerUtil.post("/api/device-mgt/v1.0/groups/id/" + groupId + "/share",
|
invokerUtil.post("/api/device-mgt/v1.0/groups/id/" + groupId + "/share",
|
||||||
deviceGroupShare, successCallback, function (message) {
|
roles, successCallback, function (message) {
|
||||||
displayErrors(message);
|
displayErrors(message);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function createNewCombinedRole(roleName, roleList) {
|
||||||
|
var successCallback = function (data, status, jqXHR, isLast) {
|
||||||
|
$(modalPopupContent).html($('#create-combined-role-200-content').html());
|
||||||
|
showPopup();
|
||||||
|
};
|
||||||
|
invokerUtil.post("/api/device-mgt/v1.0/roles/create-combined-role/" + roleName, roleList,
|
||||||
|
successCallback, function (message) {
|
||||||
|
displayErrors(message);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function displayErrors(jqXHR) {
|
function displayErrors(jqXHR) {
|
||||||
|
|||||||
@ -131,7 +131,7 @@ function loadRoles() {
|
|||||||
class: "fade-edge",
|
class: "fade-edge",
|
||||||
data: "name",
|
data: "name",
|
||||||
render: function (name, type, row, meta) {
|
render: function (name, type, row, meta) {
|
||||||
return '<h4>' + name + 'role</h4>';
|
return '<h4>' + name + '</h4>';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -13,61 +13,59 @@
|
|||||||
<div class="page-content-wrapper">
|
<div class="page-content-wrapper">
|
||||||
<div class="row no-gutter add-padding-5x add-margin-top-5x" style="border: 1px solid #e4e4e4;">
|
<div class="row no-gutter add-padding-5x add-margin-top-5x" style="border: 1px solid #e4e4e4;">
|
||||||
<div class="media">
|
<div class="media">
|
||||||
<div class="media-body asset-desc add-padding-left-5x">
|
<div style="background: #11375B; color: #fff; padding: 10px; margin-bottom: 5px">
|
||||||
<div style="background: #11375B; color: #fff; padding: 10px; margin-bottom: 5px">
|
Policy Overview
|
||||||
Policy Overview
|
</div>
|
||||||
|
{{#defineZone "policy-detail-properties"}}
|
||||||
|
<table class="table table-responsive table-striped" id="members">
|
||||||
|
<tbody>
|
||||||
|
<tr role="row" class="even">
|
||||||
|
<td class="sorting_1" style="padding:10px 15px; width: 14%;">Platform</td>
|
||||||
|
<td id="policy-platform" style="padding:10px 15px;"></td>
|
||||||
|
</tr>
|
||||||
|
<tr role="row" class="odd">
|
||||||
|
<td class="sorting_1" style="padding:10px 15px;">Ownership</td>
|
||||||
|
<td id="policy-assignment" style="padding:10px 15px;"></td>
|
||||||
|
</tr>
|
||||||
|
<tr role="row" class="even">
|
||||||
|
<td class="sorting_1" style="padding:10px 15px;">Action upon non-compliance</td>
|
||||||
|
<td id="policy-action" style="padding:10px 15px;"></td>
|
||||||
|
</tr>
|
||||||
|
<tr role="row" class="even">
|
||||||
|
<td class="sorting_1" style="padding:10px 15px;">Status</td>
|
||||||
|
<td id="policy-status" style="padding:10px 15px;"></td>
|
||||||
|
</tr>
|
||||||
|
<tr role="row" id="users-row" class="even">
|
||||||
|
<td class="sorting_1" style="padding:10px 15px;">Assigned Users</td>
|
||||||
|
<td id="policy-users" style="padding:10px 15px;"></td>
|
||||||
|
</tr>
|
||||||
|
<tr role="row" id="roles-row" class="even">
|
||||||
|
<td class="sorting_1" style="padding:10px 15px;">Assigned Roles</td>
|
||||||
|
<td id="policy-roles" style="padding:10px 15px;"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{{/defineZone}}
|
||||||
|
<div style="background: #11375B; color: #fff; padding: 10px; margin-bottom: 5px">Description
|
||||||
|
</div>
|
||||||
|
<div class="add-margin-top-4x">
|
||||||
|
<div id="policy-description" class="panel-title-description"></div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<div style="background: #11375B; color: #fff; padding: 10px; margin-bottom: 5px">
|
||||||
|
Profile Information
|
||||||
|
</div>
|
||||||
|
<div class="add-margin-top-4x">
|
||||||
|
<div id="policy-profile-main-error-msg" class="alert alert-danger hidden" role="alert">
|
||||||
|
<i class="icon fw fw-error"></i><span></span>
|
||||||
</div>
|
</div>
|
||||||
{{#defineZone "policy-detail-properties"}}
|
<div class="wr-advance-operations">
|
||||||
<table class="table table-responsive table-striped" id="members">
|
<div class="wr-advance-operations-init">
|
||||||
<tbody>
|
<br>
|
||||||
<tr role="row" class="even">
|
<i class="fw fw-settings fw-spin fw-2x"></i>
|
||||||
<td class="sorting_1" style="padding:10px 15px; width: 14%;">Platform</td>
|
Loading platform features . . .
|
||||||
<td id="policy-platform" style="padding:10px 15px;"></td>
|
<br>
|
||||||
</tr>
|
<br>
|
||||||
<tr role="row" class="odd">
|
|
||||||
<td class="sorting_1" style="padding:10px 15px;">Ownership</td>
|
|
||||||
<td id="policy-assignment" style="padding:10px 15px;"></td>
|
|
||||||
</tr>
|
|
||||||
<tr role="row" class="even">
|
|
||||||
<td class="sorting_1" style="padding:10px 15px;">Action upon non-compliance</td>
|
|
||||||
<td id="policy-action" style="padding:10px 15px;"></td>
|
|
||||||
</tr>
|
|
||||||
<tr role="row" class="even">
|
|
||||||
<td class="sorting_1" style="padding:10px 15px;">Status</td>
|
|
||||||
<td id="policy-status" style="padding:10px 15px;"></td>
|
|
||||||
</tr>
|
|
||||||
<tr role="row" id="users-row" class="even">
|
|
||||||
<td class="sorting_1" style="padding:10px 15px;">Assigned Users</td>
|
|
||||||
<td id="policy-users" style="padding:10px 15px;"></td>
|
|
||||||
</tr>
|
|
||||||
<tr role="row" id="roles-row" class="even">
|
|
||||||
<td class="sorting_1" style="padding:10px 15px;">Assigned Roles</td>
|
|
||||||
<td id="policy-roles" style="padding:10px 15px;"></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
{{/defineZone}}
|
|
||||||
<div style="background: #11375B; color: #fff; padding: 10px; margin-bottom: 5px">Description
|
|
||||||
</div>
|
|
||||||
<div class="add-margin-top-4x">
|
|
||||||
<div id="policy-description" class="panel-title-description"></div>
|
|
||||||
</div>
|
|
||||||
<br>
|
|
||||||
<div style="background: #11375B; color: #fff; padding: 10px; margin-bottom: 5px">
|
|
||||||
Profile Information
|
|
||||||
</div>
|
|
||||||
<div class="add-margin-top-4x">
|
|
||||||
<div id="policy-profile-main-error-msg" class="alert alert-danger hidden" role="alert">
|
|
||||||
<i class="icon fw fw-error"></i><span></span>
|
|
||||||
</div>
|
|
||||||
<div class="wr-advance-operations">
|
|
||||||
<div class="wr-advance-operations-init">
|
|
||||||
<br>
|
|
||||||
<i class="fw fw-settings fw-spin fw-2x"></i>
|
|
||||||
Loading platform features . . .
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -3522,7 +3522,7 @@ a.btn-operations {
|
|||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background: #11375B;
|
background: #11375B;
|
||||||
padding: 10px 24px;
|
padding: 5px 20px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-right: 2px;
|
margin-right: 2px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>device-mgt</artifactId>
|
<artifactId>device-mgt</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>email-sender</artifactId>
|
<artifactId>email-sender</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -16,13 +16,12 @@
|
|||||||
~ under the License.
|
~ under the License.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>dynamic-client-registration</artifactId>
|
<artifactId>dynamic-client-registration</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -16,13 +16,12 @@
|
|||||||
~ under the License.
|
~ under the License.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>dynamic-client-registration</artifactId>
|
<artifactId>dynamic-client-registration</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -21,13 +21,13 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>dynamic-client-registration</artifactId>
|
<artifactId>dynamic-client-registration</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.dynamic.client.registration</artifactId>
|
<artifactId>org.wso2.carbon.dynamic.client.registration</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>bundle</packaging>
|
<packaging>bundle</packaging>
|
||||||
<name>WSO2 Carbon - Dynamic client registration service</name>
|
<name>WSO2 Carbon - Dynamic client registration service</name>
|
||||||
<description>WSO2 Carbon - Dynamic Client Registration Service</description>
|
<description>WSO2 Carbon - Dynamic Client Registration Service</description>
|
||||||
|
|||||||
@ -21,13 +21,13 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>dynamic-client-registration</artifactId>
|
<artifactId>dynamic-client-registration</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.dynamic.client.web.app.registration</artifactId>
|
<artifactId>org.wso2.carbon.dynamic.client.web.app.registration</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>bundle</packaging>
|
<packaging>bundle</packaging>
|
||||||
<name>WSO2 Carbon - Dynamic client web app registration</name>
|
<name>WSO2 Carbon - Dynamic client web app registration</name>
|
||||||
<description>WSO2 Carbon - Dynamic Client Web-app Registration Service</description>
|
<description>WSO2 Carbon - Dynamic Client Web-app Registration Service</description>
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>identity-extensions</artifactId>
|
<artifactId>identity-extensions</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>dynamic-client-registration</artifactId>
|
<artifactId>dynamic-client-registration</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>WSO2 Carbon - Dynamic client registration</name>
|
<name>WSO2 Carbon - Dynamic client registration</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
|
|||||||
@ -22,13 +22,13 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>identity-extensions</artifactId>
|
<artifactId>identity-extensions</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.device.mgt.oauth.extensions</artifactId>
|
<artifactId>org.wso2.carbon.device.mgt.oauth.extensions</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>bundle</packaging>
|
<packaging>bundle</packaging>
|
||||||
<name>WSO2 Carbon - OAuth Extensions</name>
|
<name>WSO2 Carbon - OAuth Extensions</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>identity-extensions</artifactId>
|
<artifactId>identity-extensions</artifactId>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>identity-extensions</artifactId>
|
<artifactId>identity-extensions</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>policy-mgt</artifactId>
|
<artifactId>policy-mgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>org.wso2.carbon.complex.policy.decision.point</artifactId>
|
<artifactId>org.wso2.carbon.complex.policy.decision.point</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>bundle</packaging>
|
<packaging>bundle</packaging>
|
||||||
<name>WSO2 Carbon - Policy Decision Point</name>
|
<name>WSO2 Carbon - Policy Decision Point</name>
|
||||||
<description>WSO2 Carbon - Policy Decision Point</description>
|
<description>WSO2 Carbon - Policy Decision Point</description>
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>policy-mgt</artifactId>
|
<artifactId>policy-mgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>org.wso2.carbon.policy.information.point</artifactId>
|
<artifactId>org.wso2.carbon.policy.information.point</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>bundle</packaging>
|
<packaging>bundle</packaging>
|
||||||
<name>WSO2 Carbon - Policy Information Point</name>
|
<name>WSO2 Carbon - Policy Information Point</name>
|
||||||
<description>WSO2 Carbon - Policy Information Point</description>
|
<description>WSO2 Carbon - Policy Information Point</description>
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>policy-mgt</artifactId>
|
<artifactId>policy-mgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>org.wso2.carbon.policy.mgt.common</artifactId>
|
<artifactId>org.wso2.carbon.policy.mgt.common</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>bundle</packaging>
|
<packaging>bundle</packaging>
|
||||||
<name>WSO2 Carbon - Policy Management Common</name>
|
<name>WSO2 Carbon - Policy Management Common</name>
|
||||||
<description>WSO2 Carbon - Policy Management Common</description>
|
<description>WSO2 Carbon - Policy Management Common</description>
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>policy-mgt</artifactId>
|
<artifactId>policy-mgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>org.wso2.carbon.policy.mgt.core</artifactId>
|
<artifactId>org.wso2.carbon.policy.mgt.core</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>bundle</packaging>
|
<packaging>bundle</packaging>
|
||||||
<name>WSO2 Carbon - Policy Management Core</name>
|
<name>WSO2 Carbon - Policy Management Core</name>
|
||||||
<description>WSO2 Carbon - Policy Management Core</description>
|
<description>WSO2 Carbon - Policy Management Core</description>
|
||||||
|
|||||||
@ -3,14 +3,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>policy-mgt</artifactId>
|
<artifactId>policy-mgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>org.wso2.carbon.simple.policy.decision.point</artifactId>
|
<artifactId>org.wso2.carbon.simple.policy.decision.point</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>bundle</packaging>
|
<packaging>bundle</packaging>
|
||||||
<name>WSO2 Carbon - Simple Policy Decision Point</name>
|
<name>WSO2 Carbon - Simple Policy Decision Point</name>
|
||||||
<description>WSO2 Carbon - Simple Policy Decision Point</description>
|
<description>WSO2 Carbon - Simple Policy Decision Point</description>
|
||||||
|
|||||||
@ -23,13 +23,13 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>policy-mgt</artifactId>
|
<artifactId>policy-mgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>WSO2 Carbon - Policy Management Component</name>
|
<name>WSO2 Carbon - Policy Management Component</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
|
|||||||
@ -21,14 +21,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>webapp-authenticator-framework</artifactId>
|
<artifactId>webapp-authenticator-framework</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>org.wso2.carbon.webapp.authenticator.framework</artifactId>
|
<artifactId>org.wso2.carbon.webapp.authenticator.framework</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>bundle</packaging>
|
<packaging>bundle</packaging>
|
||||||
<name>WSO2 Carbon - Web Application Authenticator Framework Bundle</name>
|
<name>WSO2 Carbon - Web Application Authenticator Framework Bundle</name>
|
||||||
<description>WSO2 Carbon - Web Application Authenticator Framework Bundle</description>
|
<description>WSO2 Carbon - Web Application Authenticator Framework Bundle</description>
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>webapp-authenticator-framework</artifactId>
|
<artifactId>webapp-authenticator-framework</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>WSO2 Carbon - Webapp Authenticator Framework</name>
|
<name>WSO2 Carbon - Webapp Authenticator Framework</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
|
|||||||
@ -21,14 +21,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>apimgt-extensions-feature</artifactId>
|
<artifactId>apimgt-extensions-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.apimgt.application.extension.feature</artifactId>
|
<artifactId>org.wso2.carbon.apimgt.application.extension.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - API Management Application Extension Feature</name>
|
<name>WSO2 Carbon - API Management Application Extension Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>This feature contains an implementation of a api application registration, which takes care of subscription
|
<description>This feature contains an implementation of a api application registration, which takes care of subscription
|
||||||
|
|||||||
@ -21,14 +21,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>apimgt-extensions-feature</artifactId>
|
<artifactId>apimgt-extensions-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.apimgt.webapp.publisher.feature</artifactId>
|
<artifactId>org.wso2.carbon.apimgt.webapp.publisher.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - API Management Webapp Publisher Feature</name>
|
<name>WSO2 Carbon - API Management Webapp Publisher Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>This feature contains an implementation of a Tomcat lifecycle listener, which takes care of publishing
|
<description>This feature contains an implementation of a Tomcat lifecycle listener, which takes care of publishing
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>apimgt-extensions-feature</artifactId>
|
<artifactId>apimgt-extensions-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>WSO2 Carbon - API Management Extensions Feature</name>
|
<name>WSO2 Carbon - API Management Extensions Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>certificate-mgt-feature</artifactId>
|
<artifactId>certificate-mgt-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>certificate-mgt-feature</artifactId>
|
<artifactId>certificate-mgt-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>certificate-mgt-feature</artifactId>
|
<artifactId>certificate-mgt-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.certificate.mgt.server.feature</artifactId>
|
<artifactId>org.wso2.carbon.certificate.mgt.server.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - Certificate Management Server Feature</name>
|
<name>WSO2 Carbon - Certificate Management Server Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>This feature contains the core bundles required for back-end Certificate Management functionality
|
<description>This feature contains the core bundles required for back-end Certificate Management functionality
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>certificate-mgt-feature</artifactId>
|
<artifactId>certificate-mgt-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>WSO2 Carbon - Certificate Management Feature</name>
|
<name>WSO2 Carbon - Certificate Management Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt-extensions-feature</artifactId>
|
<artifactId>device-mgt-extensions-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature</artifactId>
|
<artifactId>org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - Device Type Deployer Feature</name>
|
<name>WSO2 Carbon - Device Type Deployer Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>WSO2 Carbon - Device Type Deployer Feature</description>
|
<description>WSO2 Carbon - Device Type Deployer Feature</description>
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt-extensions-feature</artifactId>
|
<artifactId>device-mgt-extensions-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.device.mgt.extensions.push.notification.provider.gcm.feature</artifactId>
|
<artifactId>org.wso2.carbon.device.mgt.extensions.push.notification.provider.gcm.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - GCM Based Push Notification Provider Feature</name>
|
<name>WSO2 Carbon - GCM Based Push Notification Provider Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>WSO2 Carbon - MQTT Based Push Notification Provider Feature</description>
|
<description>WSO2 Carbon - MQTT Based Push Notification Provider Feature</description>
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt-extensions-feature</artifactId>
|
<artifactId>device-mgt-extensions-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature</artifactId>
|
<artifactId>org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - MQTT Based Push Notification Provider Feature</name>
|
<name>WSO2 Carbon - MQTT Based Push Notification Provider Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>WSO2 Carbon - MQTT Based Push Notification Provider Feature</description>
|
<description>WSO2 Carbon - MQTT Based Push Notification Provider Feature</description>
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt-extensions-feature</artifactId>
|
<artifactId>device-mgt-extensions-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature</artifactId>
|
<artifactId>org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - XMPP Based Push Notification Provider Feature</name>
|
<name>WSO2 Carbon - XMPP Based Push Notification Provider Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>WSO2 Carbon - XMPP Based Push Notification Provider Feature</description>
|
<description>WSO2 Carbon - XMPP Based Push Notification Provider Feature</description>
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -3,13 +3,13 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt-feature</artifactId>
|
<artifactId>device-mgt-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<artifactId>org.wso2.carbon.device.mgt.analytics.dashboard.feature</artifactId>
|
<artifactId>org.wso2.carbon.device.mgt.analytics.dashboard.feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>WSO2 Carbon - Device Management Dashboard Analytics Feature</name>
|
<name>WSO2 Carbon - Device Management Dashboard Analytics Feature</name>
|
||||||
<description>WSO2 Carbon - Device Management Dashboard Analytics Feature</description>
|
<description>WSO2 Carbon - Device Management Dashboard Analytics Feature</description>
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt-feature</artifactId>
|
<artifactId>device-mgt-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.device.mgt.analytics.data.publisher.feature</artifactId>
|
<artifactId>org.wso2.carbon.device.mgt.analytics.data.publisher.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - Device Management Server Feature</name>
|
<name>WSO2 Carbon - Device Management Server Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>This feature contains bundles related to device analytics data publisher</description>
|
<description>This feature contains bundles related to device analytics data publisher</description>
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt-feature</artifactId>
|
<artifactId>device-mgt-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -4,14 +4,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt-feature</artifactId>
|
<artifactId>device-mgt-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.device.mgt.extensions.feature</artifactId>
|
<artifactId>org.wso2.carbon.device.mgt.extensions.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - Device Management Extensions Feature</name>
|
<name>WSO2 Carbon - Device Management Extensions Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>This feature contains common extensions used by key device management functionalities
|
<description>This feature contains common extensions used by key device management functionalities
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt-feature</artifactId>
|
<artifactId>device-mgt-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt-feature</artifactId>
|
<artifactId>device-mgt-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.device.mgt.server.feature</artifactId>
|
<artifactId>org.wso2.carbon.device.mgt.server.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - Device Management Server Feature</name>
|
<name>WSO2 Carbon - Device Management Server Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>This feature contains the core bundles required for Back-end Device Management functionality
|
<description>This feature contains the core bundles required for Back-end Device Management functionality
|
||||||
|
|||||||
@ -10,13 +10,21 @@ CREATE TABLE IF NOT EXISTS DM_GROUP (
|
|||||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||||
GROUP_NAME VARCHAR(100) DEFAULT NULL,
|
GROUP_NAME VARCHAR(100) DEFAULT NULL,
|
||||||
DESCRIPTION TEXT DEFAULT NULL,
|
DESCRIPTION TEXT DEFAULT NULL,
|
||||||
DATE_OF_CREATE BIGINT DEFAULT NULL,
|
|
||||||
DATE_OF_LAST_UPDATE BIGINT DEFAULT NULL,
|
|
||||||
OWNER VARCHAR(45) DEFAULT NULL,
|
OWNER VARCHAR(45) DEFAULT NULL,
|
||||||
TENANT_ID INTEGER DEFAULT 0,
|
TENANT_ID INTEGER DEFAULT 0,
|
||||||
PRIMARY KEY (ID)
|
PRIMARY KEY (ID)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS DM_ROLE_GROUP_MAP (
|
||||||
|
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||||
|
GROUP_ID INTEGER DEFAULT NULL,
|
||||||
|
ROLE VARCHAR(45) DEFAULT NULL,
|
||||||
|
TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT fk_DM_ROLE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||||
|
REFERENCES DM_GROUP (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||||
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS DM_DEVICE (
|
CREATE TABLE IF NOT EXISTS DM_DEVICE (
|
||||||
ID INTEGER auto_increment NOT NULL,
|
ID INTEGER auto_increment NOT NULL,
|
||||||
DESCRIPTION TEXT DEFAULT NULL,
|
DESCRIPTION TEXT DEFAULT NULL,
|
||||||
|
|||||||
@ -11,6 +11,33 @@ CREATE TABLE DM_DEVICE_TYPE (
|
|||||||
IF NOT EXISTS (SELECT * FROM SYS.INDEXES WHERE NAME = 'IDX_DEVICE_TYPE' AND OBJECT_ID = OBJECT_ID('DM_DEVICE_TYPE'))
|
IF NOT EXISTS (SELECT * FROM SYS.INDEXES WHERE NAME = 'IDX_DEVICE_TYPE' AND OBJECT_ID = OBJECT_ID('DM_DEVICE_TYPE'))
|
||||||
CREATE INDEX IDX_DEVICE_TYPE ON DM_DEVICE_TYPE (NAME);
|
CREATE INDEX IDX_DEVICE_TYPE ON DM_DEVICE_TYPE (NAME);
|
||||||
|
|
||||||
|
IF NOT EXISTS(SELECT *
|
||||||
|
FROM SYS.OBJECTS
|
||||||
|
WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[DM_GROUP]') AND TYPE IN (N'U'))
|
||||||
|
CREATE TABLE DM_GROUP (
|
||||||
|
ID INTEGER IDENTITY (1, 1) NOT NULL,
|
||||||
|
GROUP_NAME VARCHAR(100) DEFAULT NULL,
|
||||||
|
DESCRIPTION VARCHAR(MAX) DEFAULT NULL,
|
||||||
|
OWNER VARCHAR(45) DEFAULT NULL,
|
||||||
|
TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
IF NOT EXISTS(SELECT *
|
||||||
|
FROM SYS.OBJECTS
|
||||||
|
WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[DM_ROLE_GROUP_MAP]') AND TYPE IN (N'U'))
|
||||||
|
CREATE TABLE DM_ROLE_GROUP_MAP (
|
||||||
|
ID INTEGER IDENTITY (1, 1) NOT NULL,
|
||||||
|
GROUP_ID INTEGER DEFAULT NULL,
|
||||||
|
ROLE VARCHAR(45) DEFAULT NULL,
|
||||||
|
TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT FK_DM_ROLE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||||
|
REFERENCES DM_GROUP (ID)
|
||||||
|
ON DELETE NO ACTION
|
||||||
|
ON UPDATE NO ACTION
|
||||||
|
);
|
||||||
|
|
||||||
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[DM_DEVICE]') AND TYPE IN (N'U'))
|
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[DM_DEVICE]') AND TYPE IN (N'U'))
|
||||||
CREATE TABLE DM_DEVICE (
|
CREATE TABLE DM_DEVICE (
|
||||||
ID INTEGER IDENTITY(1,1) NOT NULL,
|
ID INTEGER IDENTITY(1,1) NOT NULL,
|
||||||
@ -25,6 +52,25 @@ CREATE TABLE DM_DEVICE (
|
|||||||
REFERENCES DM_DEVICE_TYPE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
REFERENCES DM_DEVICE_TYPE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||||
);
|
);
|
||||||
|
|
||||||
|
IF NOT EXISTS(SELECT *
|
||||||
|
FROM SYS.OBJECTS
|
||||||
|
WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[DM_DEVICE_GROUP_MAP]') AND TYPE IN (N'U'))
|
||||||
|
CREATE TABLE DM_DEVICE_GROUP_MAP (
|
||||||
|
ID INTEGER IDENTITY (1, 1) NOT NULL,
|
||||||
|
DEVICE_ID INTEGER DEFAULT NULL,
|
||||||
|
GROUP_ID INTEGER DEFAULT NULL,
|
||||||
|
TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT FK_DM_DEVICE_GROUP_MAP_DM_DEVICE2 FOREIGN KEY (DEVICE_ID)
|
||||||
|
REFERENCES DM_DEVICE (ID)
|
||||||
|
ON DELETE NO ACTION
|
||||||
|
ON UPDATE NO ACTION,
|
||||||
|
CONSTRAINT FK_DM_DEVICE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||||
|
REFERENCES DM_GROUP (ID)
|
||||||
|
ON DELETE NO ACTION
|
||||||
|
ON UPDATE NO ACTION
|
||||||
|
);
|
||||||
|
|
||||||
IF NOT EXISTS (SELECT * FROM SYS.INDEXES WHERE NAME = 'IDX_DM_DEVICE' AND OBJECT_ID = OBJECT_ID('DM_DEVICE'))
|
IF NOT EXISTS (SELECT * FROM SYS.INDEXES WHERE NAME = 'IDX_DM_DEVICE' AND OBJECT_ID = OBJECT_ID('DM_DEVICE'))
|
||||||
CREATE INDEX IDX_DM_DEVICE ON DM_DEVICE(TENANT_ID, DEVICE_TYPE_ID);
|
CREATE INDEX IDX_DM_DEVICE ON DM_DEVICE(TENANT_ID, DEVICE_TYPE_ID);
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,29 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE (
|
|||||||
|
|
||||||
CREATE INDEX IDX_DEVICE_TYPE ON DM_DEVICE_TYPE (NAME);
|
CREATE INDEX IDX_DEVICE_TYPE ON DM_DEVICE_TYPE (NAME);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS DM_GROUP (
|
||||||
|
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||||
|
GROUP_NAME VARCHAR(100) DEFAULT NULL,
|
||||||
|
DESCRIPTION TEXT DEFAULT NULL,
|
||||||
|
OWNER VARCHAR(45) DEFAULT NULL,
|
||||||
|
TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (ID)
|
||||||
|
)
|
||||||
|
ENGINE = InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS DM_ROLE_GROUP_MAP (
|
||||||
|
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||||
|
GROUP_ID INTEGER DEFAULT NULL,
|
||||||
|
ROLE VARCHAR(45) DEFAULT NULL,
|
||||||
|
TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT DM_ROLE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||||
|
REFERENCES DM_GROUP (ID)
|
||||||
|
ON DELETE NO ACTION
|
||||||
|
ON UPDATE NO ACTION
|
||||||
|
)
|
||||||
|
ENGINE = InnoDB;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS DM_DEVICE (
|
CREATE TABLE IF NOT EXISTS DM_DEVICE (
|
||||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||||
DESCRIPTION TEXT DEFAULT NULL,
|
DESCRIPTION TEXT DEFAULT NULL,
|
||||||
@ -23,6 +46,23 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE (
|
|||||||
|
|
||||||
CREATE INDEX IDX_DM_DEVICE ON DM_DEVICE(TENANT_ID, DEVICE_TYPE_ID);
|
CREATE INDEX IDX_DM_DEVICE ON DM_DEVICE(TENANT_ID, DEVICE_TYPE_ID);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_MAP (
|
||||||
|
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||||
|
DEVICE_ID INTEGER DEFAULT NULL,
|
||||||
|
GROUP_ID INTEGER DEFAULT NULL,
|
||||||
|
TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_DEVICE2 FOREIGN KEY (DEVICE_ID)
|
||||||
|
REFERENCES DM_DEVICE (ID)
|
||||||
|
ON DELETE NO ACTION
|
||||||
|
ON UPDATE NO ACTION,
|
||||||
|
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||||
|
REFERENCES DM_GROUP (ID)
|
||||||
|
ON DELETE NO ACTION
|
||||||
|
ON UPDATE NO ACTION
|
||||||
|
)
|
||||||
|
ENGINE = InnoDB;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS DM_OPERATION (
|
CREATE TABLE IF NOT EXISTS DM_OPERATION (
|
||||||
ID INTEGER AUTO_INCREMENT NOT NULL,
|
ID INTEGER AUTO_INCREMENT NOT NULL,
|
||||||
TYPE VARCHAR(20) NOT NULL,
|
TYPE VARCHAR(20) NOT NULL,
|
||||||
|
|||||||
@ -25,8 +25,6 @@ CREATE TABLE DM_GROUP (
|
|||||||
ID NUMBER(10) NOT NULL,
|
ID NUMBER(10) NOT NULL,
|
||||||
DESCRIPTION CLOB DEFAULT NULL,
|
DESCRIPTION CLOB DEFAULT NULL,
|
||||||
GROUP_NAME VARCHAR2(100) DEFAULT NULL,
|
GROUP_NAME VARCHAR2(100) DEFAULT NULL,
|
||||||
DATE_OF_CREATE TIMESTAMP(0) DEFAULT NULL,
|
|
||||||
DATE_OF_LAST_UPDATE TIMESTAMP(0) DEFAULT NULL,
|
|
||||||
OWNER VARCHAR2(45) DEFAULT NULL,
|
OWNER VARCHAR2(45) DEFAULT NULL,
|
||||||
TENANT_ID NUMBER(10) DEFAULT 0,
|
TENANT_ID NUMBER(10) DEFAULT 0,
|
||||||
CONSTRAINT PK_DM_GROUP PRIMARY KEY (ID)
|
CONSTRAINT PK_DM_GROUP PRIMARY KEY (ID)
|
||||||
@ -46,6 +44,32 @@ WHEN (NEW.ID IS NULL)
|
|||||||
END;
|
END;
|
||||||
/
|
/
|
||||||
|
|
||||||
|
CREATE TABLE DM_ROLE_GROUP_MAP (
|
||||||
|
ID NUMBER(10) NOT NULL,
|
||||||
|
GROUP_ID NUMBER(10) DEFAULT NULL,
|
||||||
|
ROLE VARCHAR2(45) DEFAULT NULL,
|
||||||
|
TENANT_ID NUMBER(10) DEFAULT 0,
|
||||||
|
CONSTRAINT PK_DM_GROUP PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT fk_DM_ROLE_GROUP_MAP_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||||
|
REFERENCES DM_GROUP (ID)
|
||||||
|
)
|
||||||
|
/
|
||||||
|
-- Generate ID using sequence and trigger
|
||||||
|
CREATE SEQUENCE DM_ROLE_GROUP_MAP_seq START WITH 1 INCREMENT BY 1 NOCACHE
|
||||||
|
/
|
||||||
|
CREATE OR REPLACE TRIGGER DM_ROLE_GROUP_MAP_seq_tr
|
||||||
|
BEFORE INSERT
|
||||||
|
ON DM_ROLE_GROUP_MAP
|
||||||
|
REFERENCING NEW AS NEW
|
||||||
|
FOR EACH ROW
|
||||||
|
WHEN (NEW.ID IS NULL)
|
||||||
|
BEGIN
|
||||||
|
SELECT DM_ROLE_GROUP_MAP_seq.NEXTVAL
|
||||||
|
INTO :NEW.ID
|
||||||
|
FROM DUAL;
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
CREATE TABLE DM_DEVICE (
|
CREATE TABLE DM_DEVICE (
|
||||||
ID NUMBER(10) NOT NULL,
|
ID NUMBER(10) NOT NULL,
|
||||||
DESCRIPTION CLOB DEFAULT NULL,
|
DESCRIPTION CLOB DEFAULT NULL,
|
||||||
|
|||||||
@ -8,6 +8,24 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE (
|
|||||||
|
|
||||||
CREATE INDEX IDX_DEVICE_TYPE ON DM_DEVICE_TYPE (NAME);
|
CREATE INDEX IDX_DEVICE_TYPE ON DM_DEVICE_TYPE (NAME);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS DM_GROUP (
|
||||||
|
ID BIGSERIAL NOT NULL PRIMARY KEY,
|
||||||
|
DESCRIPTION TEXT DEFAULT NULL,
|
||||||
|
NAME VARCHAR(100) DEFAULT NULL,
|
||||||
|
OWNER VARCHAR(45) DEFAULT NULL,
|
||||||
|
TENANT_ID INTEGER DEFAULT 0
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS DM_ROLE_GROUP_MAP (
|
||||||
|
ID BIGSERIAL NOT NULL PRIMARY KEY,
|
||||||
|
GROUP_ID INTEGER DEFAULT NULL,
|
||||||
|
ROLE VARCHAR(45) DEFAULT NULL,
|
||||||
|
TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT fk_DM_ROLE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||||
|
REFERENCES DM_GROUP (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||||
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS DM_DEVICE (
|
CREATE TABLE IF NOT EXISTS DM_DEVICE (
|
||||||
ID BIGSERIAL NOT NULL PRIMARY KEY,
|
ID BIGSERIAL NOT NULL PRIMARY KEY,
|
||||||
DESCRIPTION TEXT DEFAULT NULL,
|
DESCRIPTION TEXT DEFAULT NULL,
|
||||||
@ -22,6 +40,18 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE (
|
|||||||
|
|
||||||
CREATE INDEX IDX_DM_DEVICE ON DM_DEVICE(TENANT_ID, DEVICE_TYPE_ID);
|
CREATE INDEX IDX_DM_DEVICE ON DM_DEVICE(TENANT_ID, DEVICE_TYPE_ID);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_MAP (
|
||||||
|
ID BIGSERIAL NOT NULL PRIMARY KEY,
|
||||||
|
DEVICE_ID INTEGER DEFAULT NULL,
|
||||||
|
GROUP_ID INTEGER DEFAULT NULL,
|
||||||
|
TENANT_ID INTEGER DEFAULT 0,
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_DEVICE2 FOREIGN KEY (DEVICE_ID)
|
||||||
|
REFERENCES DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||||
|
CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID)
|
||||||
|
REFERENCES DM_GROUP (ID) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||||
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS DM_OPERATION (
|
CREATE TABLE IF NOT EXISTS DM_OPERATION (
|
||||||
ID BIGSERIAL NOT NULL PRIMARY KEY,
|
ID BIGSERIAL NOT NULL PRIMARY KEY,
|
||||||
TYPE VARCHAR(50) NOT NULL,
|
TYPE VARCHAR(50) NOT NULL,
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>device-mgt-feature</artifactId>
|
<artifactId>device-mgt-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
|
|||||||
@ -24,14 +24,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>dynamic-client-registration-feature</artifactId>
|
<artifactId>dynamic-client-registration-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.dynamic.client.registration.server.feature</artifactId>
|
<artifactId>org.wso2.carbon.dynamic.client.registration.server.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - Dynamic Client Registration Server Feature</name>
|
<name>WSO2 Carbon - Dynamic Client Registration Server Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>This feature contains dynamic client registration features</description>
|
<description>This feature contains dynamic client registration features</description>
|
||||||
|
|||||||
@ -23,14 +23,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>dynamic-client-registration-feature</artifactId>
|
<artifactId>dynamic-client-registration-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>WSO2 Carbon - Dynamic Client Registration Feature</name>
|
<name>WSO2 Carbon - Dynamic Client Registration Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>email-sender-feature</artifactId>
|
<artifactId>email-sender-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.email.sender.feature</artifactId>
|
<artifactId>org.wso2.carbon.email.sender.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - Email Sender Feature</name>
|
<name>WSO2 Carbon - Email Sender Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>This feature contains the core bundles required for email sender related functionality
|
<description>This feature contains the core bundles required for email sender related functionality
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>email-sender-feature</artifactId>
|
<artifactId>email-sender-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>WSO2 Carbon - Email Sender Feature</name>
|
<name>WSO2 Carbon - Email Sender Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
|
|||||||
@ -23,14 +23,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>jwt-client-feature</artifactId>
|
<artifactId>jwt-client-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.identity.jwt.client.extension.feature</artifactId>
|
<artifactId>org.wso2.carbon.identity.jwt.client.extension.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - JWT Client Feature</name>
|
<name>WSO2 Carbon - JWT Client Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>This feature contains jwt client implementation from which we can get a access token using the jwt
|
<description>This feature contains jwt client implementation from which we can get a access token using the jwt
|
||||||
|
|||||||
@ -23,13 +23,13 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>jwt-client-feature</artifactId>
|
<artifactId>jwt-client-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>WSO2 Carbon - Dynamic Client Registration Feature</name>
|
<name>WSO2 Carbon - Dynamic Client Registration Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
|
|||||||
@ -23,14 +23,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>oauth-extensions-feature</artifactId>
|
<artifactId>oauth-extensions-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.device.mgt.oauth.extensions.feature</artifactId>
|
<artifactId>org.wso2.carbon.device.mgt.oauth.extensions.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - Device Mgt OAuth Extensions Feature</name>
|
<name>WSO2 Carbon - Device Mgt OAuth Extensions Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>This feature contains devicemgt related OAuth extensions</description>
|
<description>This feature contains devicemgt related OAuth extensions</description>
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>oauth-extensions-feature</artifactId>
|
<artifactId>oauth-extensions-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>WSO2 Carbon - Device Management OAuth Extensions Feature</name>
|
<name>WSO2 Carbon - Device Management OAuth Extensions Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
|
|||||||
@ -23,14 +23,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>policy-mgt-feature</artifactId>
|
<artifactId>policy-mgt-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.policy.mgt.server.feature</artifactId>
|
<artifactId>org.wso2.carbon.policy.mgt.server.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - Policy Management Server Feature</name>
|
<name>WSO2 Carbon - Policy Management Server Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>This feature contains the core bundles required for Back-end Device Management functionality
|
<description>This feature contains the core bundles required for Back-end Device Management functionality
|
||||||
|
|||||||
@ -23,14 +23,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>carbon-devicemgt</artifactId>
|
<artifactId>carbon-devicemgt</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>policy-mgt-feature</artifactId>
|
<artifactId>policy-mgt-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>WSO2 Carbon - Policy Management Feature</name>
|
<name>WSO2 Carbon - Policy Management Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
|
|||||||
@ -22,14 +22,14 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>webapp-authenticator-framework-feature</artifactId>
|
<artifactId>webapp-authenticator-framework-feature</artifactId>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<relativePath>../pom.xml</relativePath>
|
<relativePath>../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<artifactId>org.wso2.carbon.webapp.authenticator.framework.server.feature</artifactId>
|
<artifactId>org.wso2.carbon.webapp.authenticator.framework.server.feature</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>2.0.1-SNAPSHOT</version>
|
<version>2.0.2-SNAPSHOT</version>
|
||||||
<name>WSO2 Carbon - Webapp Authenticator Framework Server Feature</name>
|
<name>WSO2 Carbon - Webapp Authenticator Framework Server Feature</name>
|
||||||
<url>http://wso2.org</url>
|
<url>http://wso2.org</url>
|
||||||
<description>This feature contains the core bundles required for Back-end Device Management functionality
|
<description>This feature contains the core bundles required for Back-end Device Management functionality
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user