mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge branch 'rest-api-improvements' of https://github.com/wso2/carbon-device-mgt into rest-api-improvements
This commit is contained in:
commit
aeec472805
@ -103,6 +103,10 @@
|
|||||||
<groupId>org.wso2.carbon.governance</groupId>
|
<groupId>org.wso2.carbon.governance</groupId>
|
||||||
<artifactId>org.wso2.carbon.governance.lcm</artifactId>
|
<artifactId>org.wso2.carbon.governance.lcm</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.ws.rs</groupId>
|
||||||
|
<artifactId>javax.ws.rs-api</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|
||||||
@ -150,6 +154,7 @@
|
|||||||
org.wso2.carbon.registry.core.*
|
org.wso2.carbon.registry.core.*
|
||||||
</Import-Package>
|
</Import-Package>
|
||||||
<Embed-Dependency>
|
<Embed-Dependency>
|
||||||
|
javax.ws.rs-api,
|
||||||
scribe;scope=compile|runtime;inline=false;
|
scribe;scope=compile|runtime;inline=false;
|
||||||
</Embed-Dependency>
|
</Embed-Dependency>
|
||||||
<DynamicImport-Package>*</DynamicImport-Package>
|
<DynamicImport-Package>*</DynamicImport-Package>
|
||||||
|
|||||||
@ -99,8 +99,8 @@ public interface GadgetDataService {
|
|||||||
* @param startIndex Starting index of the data set to be retrieved.
|
* @param startIndex Starting index of the data set to be retrieved.
|
||||||
* @param resultCount Total count of the result set retrieved.
|
* @param resultCount Total count of the result set retrieved.
|
||||||
* @return An object of type PaginationResult.
|
* @return An object of type PaginationResult.
|
||||||
* @throws InvalidStartIndexValueException This can occur if startIndex value is lesser than its minimum.
|
* @throws InvalidStartIndexValueException This can occur if startIndex value is lesser than its minimum (0).
|
||||||
* @throws InvalidResultCountValueException This can occur if resultCount value is lesser than its minimum.
|
* @throws InvalidResultCountValueException This can occur if resultCount value is lesser than its minimum (5).
|
||||||
* @throws DataAccessLayerException This can occur due to errors connecting to database,
|
* @throws DataAccessLayerException This can occur due to errors connecting to database,
|
||||||
* executing SQL query and retrieving data.
|
* executing SQL query and retrieving data.
|
||||||
*/
|
*/
|
||||||
@ -146,8 +146,8 @@ public interface GadgetDataService {
|
|||||||
* This method is used to get device counts classified by ownership types.
|
* This method is used to get device counts classified by ownership types.
|
||||||
* @param extendedFilterSet An abstract representation of possible filtering options.
|
* @param extendedFilterSet An abstract representation of possible filtering options.
|
||||||
* if this value is simply "null" or no values are set for the defined filtering
|
* if this value is simply "null" or no values are set for the defined filtering
|
||||||
* options, this method would return total device counts per each ownership type in
|
* options, this method would return total device counts per each ownership
|
||||||
* the system, wrapped by the defined return format.
|
* type in the system, wrapped by the defined return format.
|
||||||
* @return A list of objects of type DeviceCountByGroup.
|
* @return A list of objects of type DeviceCountByGroup.
|
||||||
* @throws InvalidPotentialVulnerabilityValueException This can occur if potentialVulnerability
|
* @throws InvalidPotentialVulnerabilityValueException This can occur if potentialVulnerability
|
||||||
* value of extendedFilterSet is set with some
|
* value of extendedFilterSet is set with some
|
||||||
@ -160,7 +160,8 @@ public interface GadgetDataService {
|
|||||||
throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException;
|
throws InvalidPotentialVulnerabilityValueException, DataAccessLayerException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is used to get device counts non-compliant upon a particular feature classified by ownership types.
|
* This method is used to get device counts non-compliant upon a particular feature
|
||||||
|
* classified by ownership types.
|
||||||
* @param featureCode Code name of the non-compliant feature.
|
* @param featureCode Code name of the non-compliant feature.
|
||||||
* @param basicFilterSet An abstract representation of possible filtering options.
|
* @param basicFilterSet An abstract representation of possible filtering options.
|
||||||
* if this value is simply "null" or no values are set for the defined filtering
|
* if this value is simply "null" or no values are set for the defined filtering
|
||||||
@ -191,8 +192,8 @@ public interface GadgetDataService {
|
|||||||
* value other than "NON_COMPLIANT" or "UNMONITORED".
|
* value other than "NON_COMPLIANT" or "UNMONITORED".
|
||||||
* @throws DataAccessLayerException This can occur due to errors connecting to database,
|
* @throws DataAccessLayerException This can occur due to errors connecting to database,
|
||||||
* executing SQL query and retrieving data.
|
* executing SQL query and retrieving data.
|
||||||
* @throws InvalidStartIndexValueException This can occur if startIndex value is lesser than its minimum.
|
* @throws InvalidStartIndexValueException This can occur if startIndex value is lesser than its minimum (0).
|
||||||
* @throws InvalidResultCountValueException This can occur if resultCount value is lesser than its minimum.
|
* @throws InvalidResultCountValueException This can occur if resultCount value is lesser than its minimum (5).
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount)
|
PaginationResult getDevicesWithDetails(ExtendedFilterSet extendedFilterSet, int startIndex, int resultCount)
|
||||||
@ -200,7 +201,8 @@ public interface GadgetDataService {
|
|||||||
InvalidStartIndexValueException, InvalidResultCountValueException;
|
InvalidStartIndexValueException, InvalidResultCountValueException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is used to get a paginated list of non-compliant devices with details, upon a particular feature.
|
* This method is used to get a paginated list of non-compliant devices with details,
|
||||||
|
* upon a particular feature.
|
||||||
* @param featureCode Code name of the non-compliant feature.
|
* @param featureCode Code name of the non-compliant feature.
|
||||||
* @param basicFilterSet An abstract representation of possible filtering options.
|
* @param basicFilterSet An abstract representation of possible filtering options.
|
||||||
* if this value is simply "null" or no values are set for the defined filtering
|
* if this value is simply "null" or no values are set for the defined filtering
|
||||||
@ -213,8 +215,8 @@ public interface GadgetDataService {
|
|||||||
* @throws InvalidFeatureCodeValueException This can occur if featureCode is set to null or empty.
|
* @throws InvalidFeatureCodeValueException This can occur if featureCode is set to null or empty.
|
||||||
* @throws DataAccessLayerException This can occur due to errors connecting to database,
|
* @throws DataAccessLayerException This can occur due to errors connecting to database,
|
||||||
* executing SQL query and retrieving data.
|
* executing SQL query and retrieving data.
|
||||||
* @throws InvalidStartIndexValueException This can occur if startIndex value is lesser than its minimum.
|
* @throws InvalidStartIndexValueException This can occur if startIndex value is lesser than its minimum (0).
|
||||||
* @throws InvalidResultCountValueException This can occur if resultCount value is lesser than its minimum.
|
* @throws InvalidResultCountValueException This can occur if resultCount value is lesser than its minimum (5).
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, BasicFilterSet basicFilterSet,
|
PaginationResult getFeatureNonCompliantDevicesWithDetails(String featureCode, BasicFilterSet basicFilterSet,
|
||||||
|
|||||||
@ -238,6 +238,11 @@
|
|||||||
<groupId>org.wso2.carbon.devicemgt</groupId>
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
<artifactId>org.wso2.carbon.apimgt.annotations</artifactId>
|
<artifactId>org.wso2.carbon.apimgt.annotations</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.wso2.carbon.devicemgt</groupId>
|
||||||
|
<artifactId>org.wso2.carbon.device.mgt.analytics.dashboard</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* 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 java.util.List;
|
||||||
|
|
||||||
|
public class DashboardGadgetDataWrapper {
|
||||||
|
|
||||||
|
private String context;
|
||||||
|
private String groupingAttribute;
|
||||||
|
private List<?> data;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public String getContext() {
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContext(String context) {
|
||||||
|
this.context = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public String getGroupingAttribute() {
|
||||||
|
return groupingAttribute;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGroupingAttribute(String groupingAttribute) {
|
||||||
|
this.groupingAttribute = groupingAttribute;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public List<?> getData() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setData(List<?> data) {
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
|
||||||
|
public class DashboardPaginationGadgetDataWrapper extends DashboardGadgetDataWrapper {
|
||||||
|
|
||||||
|
private int totalRecordCount;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public int getTotalRecordCount() {
|
||||||
|
return totalRecordCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTotalRecordCount(int totalRecordCount) {
|
||||||
|
this.totalRecordCount = totalRecordCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,81 @@
|
|||||||
|
package org.wso2.carbon.device.mgt.jaxrs.service.api;
|
||||||
|
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.QueryParam;
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
|
|
||||||
|
@Path("/dashboard")
|
||||||
|
@Api(value = "Dashboard", description = "Dashboard related operations are described here.")
|
||||||
|
@SuppressWarnings("NonJaxWsWebServices")
|
||||||
|
public interface Dashboard {
|
||||||
|
|
||||||
|
String CONNECTIVITY_STATUS = "connectivity-status";
|
||||||
|
String POTENTIAL_VULNERABILITY = "potential-vulnerability";
|
||||||
|
String NON_COMPLIANT_FEATURE_CODE = "non-compliant-feature-code";
|
||||||
|
String PLATFORM = "platform";
|
||||||
|
String OWNERSHIP = "ownership";
|
||||||
|
// Constants related to pagination
|
||||||
|
String PAGINATION_ENABLED = "pagination-enabled";
|
||||||
|
String START_INDEX = "start";
|
||||||
|
String RESULT_COUNT = "length";
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("device-count-overview")
|
||||||
|
Response getOverviewDeviceCounts();
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("device-counts-by-potential-vulnerabilities")
|
||||||
|
Response getDeviceCountsByPotentialVulnerabilities();
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("non-compliant-device-counts-by-features")
|
||||||
|
Response getNonCompliantDeviceCountsByFeatures(@QueryParam(START_INDEX) int startIndex,
|
||||||
|
@QueryParam(RESULT_COUNT) int resultCount);
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("device-counts-by-groups")
|
||||||
|
Response getDeviceCountsByGroups(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus,
|
||||||
|
@QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability,
|
||||||
|
@QueryParam(PLATFORM) String platform,
|
||||||
|
@QueryParam(OWNERSHIP) String ownership);
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("feature-non-compliant-device-counts-by-groups")
|
||||||
|
Response getFeatureNonCompliantDeviceCountsByGroups(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode,
|
||||||
|
@QueryParam(PLATFORM) String platform,
|
||||||
|
@QueryParam(OWNERSHIP) String ownership);
|
||||||
|
@GET
|
||||||
|
@Path("filtered-device-count-over-total")
|
||||||
|
Response getFilteredDeviceCountOverTotal(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus,
|
||||||
|
@QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability,
|
||||||
|
@QueryParam(PLATFORM) String platform,
|
||||||
|
@QueryParam(OWNERSHIP) String ownership);
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("feature-non-compliant-device-count-over-total")
|
||||||
|
Response getFeatureNonCompliantDeviceCountOverTotal(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode,
|
||||||
|
@QueryParam(PLATFORM) String platform,
|
||||||
|
@QueryParam(OWNERSHIP) String ownership);
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("devices-with-details")
|
||||||
|
Response getDevicesWithDetails(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus,
|
||||||
|
@QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability,
|
||||||
|
@QueryParam(PLATFORM) String platform,
|
||||||
|
@QueryParam(OWNERSHIP) String ownership,
|
||||||
|
@QueryParam(PAGINATION_ENABLED) String paginationEnabled,
|
||||||
|
@QueryParam(START_INDEX) int startIndex,
|
||||||
|
@QueryParam(RESULT_COUNT) int resultCount);
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("feature-non-compliant-devices-with-details")
|
||||||
|
Response getFeatureNonCompliantDevicesWithDetails(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode,
|
||||||
|
@QueryParam(PLATFORM) String platform,
|
||||||
|
@QueryParam(OWNERSHIP) String ownership,
|
||||||
|
@QueryParam(PAGINATION_ENABLED) String paginationEnabled,
|
||||||
|
@QueryParam(START_INDEX) int startIndex,
|
||||||
|
@QueryParam(RESULT_COUNT) int resultCount);
|
||||||
|
}
|
||||||
@ -29,12 +29,12 @@ import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
|||||||
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.device.details.DeviceWrapper;
|
import org.wso2.carbon.device.mgt.common.device.details.DeviceWrapper;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
|
||||||
import org.wso2.carbon.device.mgt.common.search.SearchContext;
|
import org.wso2.carbon.device.mgt.common.search.SearchContext;
|
||||||
|
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.*;
|
||||||
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.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,6 +67,9 @@ public interface DeviceManagementService {
|
|||||||
"index.", required = true)
|
"index.", required = true)
|
||||||
@QueryParam("limit") int limit);
|
@QueryParam("limit") int limit);
|
||||||
|
|
||||||
|
Response getDevices(@HeaderParam("If-Modified-Since") Date timestamp, @QueryParam("offset") int offset,
|
||||||
|
@QueryParam("limit") int limit);
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@ApiOperation(
|
@ApiOperation(
|
||||||
produces = MediaType.APPLICATION_JSON,
|
produces = MediaType.APPLICATION_JSON,
|
||||||
|
|||||||
@ -97,4 +97,7 @@ public interface GroupManagementService {
|
|||||||
Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type,
|
Response removeDeviceFromGroup(@PathParam("groupName") String groupName, @QueryParam("type") String type,
|
||||||
@QueryParam("id") String id);
|
@QueryParam("id") String id);
|
||||||
|
|
||||||
|
@GET
|
||||||
|
Response getGroupsByUser(@QueryParam("user") String user);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,688 @@
|
|||||||
|
/*
|
||||||
|
* 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.service.impl;
|
||||||
|
|
||||||
|
import org.apache.commons.httpclient.HttpStatus;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.wso2.carbon.device.mgt.analytics.dashboard.GadgetDataService;
|
||||||
|
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.BasicFilterSet;
|
||||||
|
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceCountByGroup;
|
||||||
|
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.DeviceWithDetails;
|
||||||
|
import org.wso2.carbon.device.mgt.analytics.dashboard.bean.ExtendedFilterSet;
|
||||||
|
import org.wso2.carbon.device.mgt.analytics.dashboard.exception.*;
|
||||||
|
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DashboardGadgetDataWrapper;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DashboardPaginationGadgetDataWrapper;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.service.api.Dashboard;
|
||||||
|
|
||||||
|
import javax.ws.rs.*;
|
||||||
|
import javax.ws.rs.core.Response;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class consists of dashboard related REST APIs
|
||||||
|
* to be consumed by individual client gadgets such as
|
||||||
|
* [1] Overview of Devices,
|
||||||
|
* [2] Potential Vulnerabilities,
|
||||||
|
* [3] Non-compliant Devices by Features,
|
||||||
|
* [4] Device Groupings and etc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Consumes({"application/json"})
|
||||||
|
@Produces({"application/json"})
|
||||||
|
|
||||||
|
@SuppressWarnings("NonJaxWsWebServices")
|
||||||
|
public class DashboardImpl implements Dashboard {
|
||||||
|
|
||||||
|
private static Log log = LogFactory.getLog(DashboardImpl.class);
|
||||||
|
|
||||||
|
private static final String FLAG_TRUE = "true";
|
||||||
|
private static final String FLAG_FALSE = "false";
|
||||||
|
// Constants related to common error-response messages
|
||||||
|
private static final String INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY = "Received an invalid value for " +
|
||||||
|
"query parameter : " + POTENTIAL_VULNERABILITY + ", Should be either NON_COMPLIANT or UNMONITORED.";
|
||||||
|
private static final String INVALID_QUERY_PARAM_VALUE_START_INDEX = "Received an invalid value for " +
|
||||||
|
"query parameter : " + START_INDEX + ", Should not be lesser than 0.";
|
||||||
|
private static final String INVALID_QUERY_PARAM_VALUE_RESULT_COUNT = "Received an invalid value for " +
|
||||||
|
"query parameter : " + RESULT_COUNT + ", Should not be lesser than 5.";
|
||||||
|
private static final String INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED = "Received an invalid value for " +
|
||||||
|
"query parameter : " + PAGINATION_ENABLED + ", Should be either true or false.";
|
||||||
|
private static final String REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE = "Missing required query " +
|
||||||
|
"parameter : " + NON_COMPLIANT_FEATURE_CODE;
|
||||||
|
private static final String REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED = "Missing required query " +
|
||||||
|
"parameter : " + PAGINATION_ENABLED;
|
||||||
|
private static final String ERROR_IN_RETRIEVING_REQUESTED_DATA = "Error in retrieving requested data.";
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("device-count-overview")
|
||||||
|
public Response getOverviewDeviceCounts() {
|
||||||
|
GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService();
|
||||||
|
|
||||||
|
DashboardGadgetDataWrapper dashboardGadgetDataWrapper1 = new DashboardGadgetDataWrapper();
|
||||||
|
|
||||||
|
// getting total device count
|
||||||
|
DeviceCountByGroup totalDeviceCount;
|
||||||
|
try {
|
||||||
|
totalDeviceCount = gadgetDataService.getTotalDeviceCount();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve total device count.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<DeviceCountByGroup> totalDeviceCountInListEntry = new ArrayList<>();
|
||||||
|
totalDeviceCountInListEntry.add(totalDeviceCount);
|
||||||
|
|
||||||
|
dashboardGadgetDataWrapper1.setContext("Total-device-count");
|
||||||
|
dashboardGadgetDataWrapper1.setGroupingAttribute(null);
|
||||||
|
dashboardGadgetDataWrapper1.setData(totalDeviceCountInListEntry);
|
||||||
|
|
||||||
|
// getting device counts by connectivity statuses
|
||||||
|
List<DeviceCountByGroup> deviceCountsByConnectivityStatuses;
|
||||||
|
try {
|
||||||
|
deviceCountsByConnectivityStatuses = gadgetDataService.getDeviceCountsByConnectivityStatuses();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve device counts by connectivity statuses.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
DashboardGadgetDataWrapper dashboardGadgetDataWrapper2 = new DashboardGadgetDataWrapper();
|
||||||
|
|
||||||
|
dashboardGadgetDataWrapper2.setContext("Device-counts-by-connectivity-statuses");
|
||||||
|
dashboardGadgetDataWrapper2.setGroupingAttribute(CONNECTIVITY_STATUS);
|
||||||
|
dashboardGadgetDataWrapper2.setData(deviceCountsByConnectivityStatuses);
|
||||||
|
|
||||||
|
List<DashboardGadgetDataWrapper> responsePayload = new ArrayList<>();
|
||||||
|
responsePayload.add(dashboardGadgetDataWrapper1);
|
||||||
|
responsePayload.add(dashboardGadgetDataWrapper2);
|
||||||
|
|
||||||
|
return Response.status(HttpStatus.SC_OK).entity(responsePayload).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("device-counts-by-potential-vulnerabilities")
|
||||||
|
public Response getDeviceCountsByPotentialVulnerabilities() {
|
||||||
|
GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService();
|
||||||
|
|
||||||
|
List<DeviceCountByGroup> deviceCountsByPotentialVulnerabilities;
|
||||||
|
try {
|
||||||
|
deviceCountsByPotentialVulnerabilities = gadgetDataService.getDeviceCountsByPotentialVulnerabilities();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve device counts by potential vulnerabilities.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper();
|
||||||
|
dashboardGadgetDataWrapper.setContext("Device-counts-by-potential-vulnerabilities");
|
||||||
|
dashboardGadgetDataWrapper.setGroupingAttribute(POTENTIAL_VULNERABILITY);
|
||||||
|
dashboardGadgetDataWrapper.setData(deviceCountsByPotentialVulnerabilities);
|
||||||
|
|
||||||
|
List<DashboardGadgetDataWrapper> responsePayload = new ArrayList<>();
|
||||||
|
responsePayload.add(dashboardGadgetDataWrapper);
|
||||||
|
|
||||||
|
return Response.status(HttpStatus.SC_OK).entity(responsePayload).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("non-compliant-device-counts-by-features")
|
||||||
|
public Response getNonCompliantDeviceCountsByFeatures(@QueryParam(START_INDEX) int startIndex,
|
||||||
|
@QueryParam(RESULT_COUNT) int resultCount) {
|
||||||
|
|
||||||
|
GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService();
|
||||||
|
DashboardPaginationGadgetDataWrapper
|
||||||
|
dashboardPaginationGadgetDataWrapper = new DashboardPaginationGadgetDataWrapper();
|
||||||
|
|
||||||
|
PaginationResult paginationResult;
|
||||||
|
try {
|
||||||
|
paginationResult = gadgetDataService.
|
||||||
|
getNonCompliantDeviceCountsByFeatures(startIndex, resultCount);
|
||||||
|
} catch (InvalidStartIndexValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a non-compliant set " +
|
||||||
|
"of device counts by features.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).entity(INVALID_QUERY_PARAM_VALUE_START_INDEX).build();
|
||||||
|
} catch (InvalidResultCountValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a non-compliant set " +
|
||||||
|
"of device counts by features.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).entity(INVALID_QUERY_PARAM_VALUE_RESULT_COUNT).build();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve a non-compliant set of device counts by features.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
dashboardPaginationGadgetDataWrapper.setContext("Non-compliant-device-counts-by-features");
|
||||||
|
dashboardPaginationGadgetDataWrapper.setGroupingAttribute(NON_COMPLIANT_FEATURE_CODE);
|
||||||
|
dashboardPaginationGadgetDataWrapper.setData(paginationResult.getData());
|
||||||
|
dashboardPaginationGadgetDataWrapper.setTotalRecordCount(paginationResult.getRecordsTotal());
|
||||||
|
|
||||||
|
List<DashboardPaginationGadgetDataWrapper> responsePayload = new ArrayList<>();
|
||||||
|
responsePayload.add(dashboardPaginationGadgetDataWrapper);
|
||||||
|
|
||||||
|
return Response.status(HttpStatus.SC_OK).entity(responsePayload).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("device-counts-by-groups")
|
||||||
|
public Response getDeviceCountsByGroups(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus,
|
||||||
|
@QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability,
|
||||||
|
@QueryParam(PLATFORM) String platform,
|
||||||
|
@QueryParam(OWNERSHIP) String ownership) {
|
||||||
|
|
||||||
|
// getting gadget data service
|
||||||
|
GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService();
|
||||||
|
|
||||||
|
// constructing filter set
|
||||||
|
ExtendedFilterSet filterSet = new ExtendedFilterSet();
|
||||||
|
filterSet.setConnectivityStatus(connectivityStatus);
|
||||||
|
filterSet.setPotentialVulnerability(potentialVulnerability);
|
||||||
|
filterSet.setPlatform(platform);
|
||||||
|
filterSet.setOwnership(ownership);
|
||||||
|
|
||||||
|
// creating device-Counts-by-platforms Data Wrapper
|
||||||
|
List<DeviceCountByGroup> deviceCountsByPlatforms;
|
||||||
|
try {
|
||||||
|
deviceCountsByPlatforms = gadgetDataService.getDeviceCountsByPlatforms(filterSet);
|
||||||
|
} catch (InvalidPotentialVulnerabilityValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a filtered set of device counts by platforms.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve a filtered set of device counts by platforms.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
DashboardGadgetDataWrapper dashboardGadgetDataWrapper1 = new DashboardGadgetDataWrapper();
|
||||||
|
dashboardGadgetDataWrapper1.setContext("Device-counts-by-platforms");
|
||||||
|
dashboardGadgetDataWrapper1.setGroupingAttribute(PLATFORM);
|
||||||
|
dashboardGadgetDataWrapper1.setData(deviceCountsByPlatforms);
|
||||||
|
|
||||||
|
// creating device-Counts-by-ownership-types Data Wrapper
|
||||||
|
List<DeviceCountByGroup> deviceCountsByOwnerships;
|
||||||
|
try {
|
||||||
|
deviceCountsByOwnerships = gadgetDataService.getDeviceCountsByOwnershipTypes(filterSet);
|
||||||
|
} catch (InvalidPotentialVulnerabilityValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a filtered set of device counts by ownerships.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve a filtered set of device counts by ownerships.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
DashboardGadgetDataWrapper dashboardGadgetDataWrapper2 = new DashboardGadgetDataWrapper();
|
||||||
|
dashboardGadgetDataWrapper2.setContext("Device-counts-by-ownerships");
|
||||||
|
dashboardGadgetDataWrapper2.setGroupingAttribute(OWNERSHIP);
|
||||||
|
dashboardGadgetDataWrapper2.setData(deviceCountsByOwnerships);
|
||||||
|
|
||||||
|
List<DashboardGadgetDataWrapper> responsePayload = new ArrayList<>();
|
||||||
|
responsePayload.add(dashboardGadgetDataWrapper1);
|
||||||
|
responsePayload.add(dashboardGadgetDataWrapper2);
|
||||||
|
|
||||||
|
return Response.status(HttpStatus.SC_OK).entity(responsePayload).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("feature-non-compliant-device-counts-by-groups")
|
||||||
|
public Response getFeatureNonCompliantDeviceCountsByGroups(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode,
|
||||||
|
@QueryParam(PLATFORM) String platform,
|
||||||
|
@QueryParam(OWNERSHIP) String ownership) {
|
||||||
|
// getting gadget data service
|
||||||
|
GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService();
|
||||||
|
|
||||||
|
// constructing filter set
|
||||||
|
BasicFilterSet filterSet = new BasicFilterSet();
|
||||||
|
filterSet.setPlatform(platform);
|
||||||
|
filterSet.setOwnership(ownership);
|
||||||
|
|
||||||
|
// creating feature-non-compliant-device-Counts-by-platforms Data Wrapper
|
||||||
|
List<DeviceCountByGroup> featureNonCompliantDeviceCountsByPlatforms;
|
||||||
|
try {
|
||||||
|
featureNonCompliantDeviceCountsByPlatforms = gadgetDataService.
|
||||||
|
getFeatureNonCompliantDeviceCountsByPlatforms(nonCompliantFeatureCode, filterSet);
|
||||||
|
} catch (InvalidFeatureCodeValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a filtered set of feature " +
|
||||||
|
"non-compliant device counts by platforms.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve a filtered set of feature non-compliant " +
|
||||||
|
"device counts by platforms.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
DashboardGadgetDataWrapper dashboardGadgetDataWrapper1 = new DashboardGadgetDataWrapper();
|
||||||
|
dashboardGadgetDataWrapper1.setContext("Feature-non-compliant-device-counts-by-platforms");
|
||||||
|
dashboardGadgetDataWrapper1.setGroupingAttribute(PLATFORM);
|
||||||
|
dashboardGadgetDataWrapper1.setData(featureNonCompliantDeviceCountsByPlatforms);
|
||||||
|
|
||||||
|
// creating feature-non-compliant-device-Counts-by-ownership-types Data Wrapper
|
||||||
|
List<DeviceCountByGroup> featureNonCompliantDeviceCountsByOwnerships;
|
||||||
|
try {
|
||||||
|
featureNonCompliantDeviceCountsByOwnerships = gadgetDataService.
|
||||||
|
getFeatureNonCompliantDeviceCountsByOwnershipTypes(nonCompliantFeatureCode, filterSet);
|
||||||
|
} catch (InvalidFeatureCodeValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve a filtered set of feature " +
|
||||||
|
"non-compliant device counts by ownerships.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve a filtered set of feature non-compliant " +
|
||||||
|
"device counts by ownerships.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
DashboardGadgetDataWrapper dashboardGadgetDataWrapper2 = new DashboardGadgetDataWrapper();
|
||||||
|
dashboardGadgetDataWrapper2.setContext("Feature-non-compliant-device-counts-by-ownerships");
|
||||||
|
dashboardGadgetDataWrapper2.setGroupingAttribute(OWNERSHIP);
|
||||||
|
dashboardGadgetDataWrapper2.setData(featureNonCompliantDeviceCountsByOwnerships);
|
||||||
|
|
||||||
|
List<DashboardGadgetDataWrapper> responsePayload = new ArrayList<>();
|
||||||
|
responsePayload.add(dashboardGadgetDataWrapper1);
|
||||||
|
responsePayload.add(dashboardGadgetDataWrapper2);
|
||||||
|
|
||||||
|
return Response.status(HttpStatus.SC_OK).entity(responsePayload).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("filtered-device-count-over-total")
|
||||||
|
public Response getFilteredDeviceCountOverTotal(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus,
|
||||||
|
@QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability,
|
||||||
|
@QueryParam(PLATFORM) String platform,
|
||||||
|
@QueryParam(OWNERSHIP) String ownership) {
|
||||||
|
|
||||||
|
// getting gadget data service
|
||||||
|
GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService();
|
||||||
|
|
||||||
|
// constructing filter set
|
||||||
|
ExtendedFilterSet filterSet = new ExtendedFilterSet();
|
||||||
|
filterSet.setConnectivityStatus(connectivityStatus);
|
||||||
|
filterSet.setPotentialVulnerability(potentialVulnerability);
|
||||||
|
filterSet.setPlatform(platform);
|
||||||
|
filterSet.setOwnership(ownership);
|
||||||
|
|
||||||
|
// creating filteredDeviceCount Data Wrapper
|
||||||
|
DeviceCountByGroup filteredDeviceCount;
|
||||||
|
try {
|
||||||
|
filteredDeviceCount = gadgetDataService.getDeviceCount(filterSet);
|
||||||
|
} catch (InvalidPotentialVulnerabilityValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a filtered device count over the total.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve a filtered device count over the total.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
// creating TotalDeviceCount Data Wrapper
|
||||||
|
DeviceCountByGroup totalDeviceCount;
|
||||||
|
try {
|
||||||
|
totalDeviceCount = gadgetDataService.getTotalDeviceCount();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve the total device count over filtered.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Object> filteredDeviceCountOverTotalDataWrapper = new ArrayList<>();
|
||||||
|
filteredDeviceCountOverTotalDataWrapper.add(filteredDeviceCount);
|
||||||
|
filteredDeviceCountOverTotalDataWrapper.add(totalDeviceCount);
|
||||||
|
|
||||||
|
DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper();
|
||||||
|
dashboardGadgetDataWrapper.setContext("Filtered-device-count-over-total");
|
||||||
|
dashboardGadgetDataWrapper.setGroupingAttribute(null);
|
||||||
|
dashboardGadgetDataWrapper.setData(filteredDeviceCountOverTotalDataWrapper);
|
||||||
|
|
||||||
|
List<DashboardGadgetDataWrapper> responsePayload = new ArrayList<>();
|
||||||
|
responsePayload.add(dashboardGadgetDataWrapper);
|
||||||
|
|
||||||
|
return Response.status(HttpStatus.SC_OK).entity(responsePayload).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("feature-non-compliant-device-count-over-total")
|
||||||
|
public Response getFeatureNonCompliantDeviceCountOverTotal(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode,
|
||||||
|
@QueryParam(PLATFORM) String platform,
|
||||||
|
@QueryParam(OWNERSHIP) String ownership) {
|
||||||
|
|
||||||
|
// getting gadget data service
|
||||||
|
GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService();
|
||||||
|
|
||||||
|
// constructing filter set
|
||||||
|
BasicFilterSet filterSet = new BasicFilterSet();
|
||||||
|
filterSet.setPlatform(platform);
|
||||||
|
filterSet.setOwnership(ownership);
|
||||||
|
|
||||||
|
// creating featureNonCompliantDeviceCount Data Wrapper
|
||||||
|
DeviceCountByGroup featureNonCompliantDeviceCount;
|
||||||
|
try {
|
||||||
|
featureNonCompliantDeviceCount = gadgetDataService.
|
||||||
|
getFeatureNonCompliantDeviceCount(nonCompliantFeatureCode, filterSet);
|
||||||
|
} catch (InvalidFeatureCodeValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve a feature non-compliant device count over the total.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve a feature non-compliant device count over the total.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
// creating TotalDeviceCount Data Wrapper
|
||||||
|
DeviceCountByGroup totalDeviceCount;
|
||||||
|
try {
|
||||||
|
totalDeviceCount = gadgetDataService.getTotalDeviceCount();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve the total device count over filtered feature non-compliant.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Object> featureNonCompliantDeviceCountOverTotalDataWrapper = new ArrayList<>();
|
||||||
|
featureNonCompliantDeviceCountOverTotalDataWrapper.add(featureNonCompliantDeviceCount);
|
||||||
|
featureNonCompliantDeviceCountOverTotalDataWrapper.add(totalDeviceCount);
|
||||||
|
|
||||||
|
DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper();
|
||||||
|
dashboardGadgetDataWrapper.setContext("Feature-non-compliant-device-count-over-total");
|
||||||
|
dashboardGadgetDataWrapper.setGroupingAttribute(null);
|
||||||
|
dashboardGadgetDataWrapper.setData(featureNonCompliantDeviceCountOverTotalDataWrapper);
|
||||||
|
|
||||||
|
List<DashboardGadgetDataWrapper> responsePayload = new ArrayList<>();
|
||||||
|
responsePayload.add(dashboardGadgetDataWrapper);
|
||||||
|
|
||||||
|
return Response.status(HttpStatus.SC_OK).entity(responsePayload).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("devices-with-details")
|
||||||
|
public Response getDevicesWithDetails(@QueryParam(CONNECTIVITY_STATUS) String connectivityStatus,
|
||||||
|
@QueryParam(POTENTIAL_VULNERABILITY) String potentialVulnerability,
|
||||||
|
@QueryParam(PLATFORM) String platform,
|
||||||
|
@QueryParam(OWNERSHIP) String ownership,
|
||||||
|
@QueryParam(PAGINATION_ENABLED) String paginationEnabled,
|
||||||
|
@QueryParam(START_INDEX) int startIndex,
|
||||||
|
@QueryParam(RESULT_COUNT) int resultCount) {
|
||||||
|
|
||||||
|
if (paginationEnabled == null) {
|
||||||
|
|
||||||
|
log.error("Bad request on retrieving a filtered set of devices with details @ " +
|
||||||
|
"Dashboard API layer. " + REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED).build();
|
||||||
|
|
||||||
|
} else if (FLAG_TRUE.equals(paginationEnabled)) {
|
||||||
|
|
||||||
|
// getting gadget data service
|
||||||
|
GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService();
|
||||||
|
|
||||||
|
// constructing filter set
|
||||||
|
ExtendedFilterSet filterSet = new ExtendedFilterSet();
|
||||||
|
filterSet.setConnectivityStatus(connectivityStatus);
|
||||||
|
filterSet.setPotentialVulnerability(potentialVulnerability);
|
||||||
|
filterSet.setPlatform(platform);
|
||||||
|
filterSet.setOwnership(ownership);
|
||||||
|
|
||||||
|
PaginationResult paginationResult;
|
||||||
|
try {
|
||||||
|
paginationResult = gadgetDataService.
|
||||||
|
getDevicesWithDetails(filterSet, startIndex, resultCount);
|
||||||
|
} catch (InvalidPotentialVulnerabilityValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a filtered set of devices with details.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build();
|
||||||
|
} catch (InvalidStartIndexValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a filtered set of devices with details.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(INVALID_QUERY_PARAM_VALUE_START_INDEX).build();
|
||||||
|
} catch (InvalidResultCountValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a filtered set of devices with details.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(INVALID_QUERY_PARAM_VALUE_RESULT_COUNT).build();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve a filtered set of devices with details.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
DashboardPaginationGadgetDataWrapper
|
||||||
|
dashboardPaginationGadgetDataWrapper = new DashboardPaginationGadgetDataWrapper();
|
||||||
|
dashboardPaginationGadgetDataWrapper.setContext("Filtered-and-paginated-devices-with-details");
|
||||||
|
dashboardPaginationGadgetDataWrapper.setGroupingAttribute(null);
|
||||||
|
dashboardPaginationGadgetDataWrapper.setData(paginationResult.getData());
|
||||||
|
dashboardPaginationGadgetDataWrapper.setTotalRecordCount(paginationResult.getRecordsTotal());
|
||||||
|
|
||||||
|
List<DashboardPaginationGadgetDataWrapper> responsePayload = new ArrayList<>();
|
||||||
|
responsePayload.add(dashboardPaginationGadgetDataWrapper);
|
||||||
|
|
||||||
|
return Response.status(HttpStatus.SC_OK).entity(responsePayload).build();
|
||||||
|
|
||||||
|
} else if (FLAG_FALSE.equals(paginationEnabled)) {
|
||||||
|
|
||||||
|
// getting gadget data service
|
||||||
|
GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService();
|
||||||
|
|
||||||
|
// constructing filter set
|
||||||
|
ExtendedFilterSet filterSet = new ExtendedFilterSet();
|
||||||
|
filterSet.setConnectivityStatus(connectivityStatus);
|
||||||
|
filterSet.setPotentialVulnerability(potentialVulnerability);
|
||||||
|
filterSet.setPlatform(platform);
|
||||||
|
filterSet.setOwnership(ownership);
|
||||||
|
|
||||||
|
List<DeviceWithDetails> devicesWithDetails;
|
||||||
|
try {
|
||||||
|
devicesWithDetails = gadgetDataService.getDevicesWithDetails(filterSet);
|
||||||
|
} catch (InvalidPotentialVulnerabilityValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a filtered set of devices with details.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(INVALID_QUERY_PARAM_VALUE_POTENTIAL_VULNERABILITY).build();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve a filtered set of devices with details.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper();
|
||||||
|
dashboardGadgetDataWrapper.setContext("Filtered-devices-with-details");
|
||||||
|
dashboardGadgetDataWrapper.setGroupingAttribute(null);
|
||||||
|
dashboardGadgetDataWrapper.setData(devicesWithDetails);
|
||||||
|
|
||||||
|
List<DashboardGadgetDataWrapper> responsePayload = new ArrayList<>();
|
||||||
|
responsePayload.add(dashboardGadgetDataWrapper);
|
||||||
|
|
||||||
|
return Response.status(HttpStatus.SC_OK).entity(responsePayload).build();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
log.error("Bad request on retrieving a filtered set of devices with details @ " +
|
||||||
|
"Dashboard API layer. " + INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED).build();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("feature-non-compliant-devices-with-details")
|
||||||
|
public Response getFeatureNonCompliantDevicesWithDetails(@QueryParam(NON_COMPLIANT_FEATURE_CODE) String nonCompliantFeatureCode,
|
||||||
|
@QueryParam(PLATFORM) String platform,
|
||||||
|
@QueryParam(OWNERSHIP) String ownership,
|
||||||
|
@QueryParam(PAGINATION_ENABLED) String paginationEnabled,
|
||||||
|
@QueryParam(START_INDEX) int startIndex,
|
||||||
|
@QueryParam(RESULT_COUNT) int resultCount) {
|
||||||
|
if (paginationEnabled == null) {
|
||||||
|
|
||||||
|
log.error("Bad request on retrieving a filtered set of feature non-compliant devices with " +
|
||||||
|
"details @ Dashboard API layer. " + REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(REQUIRED_QUERY_PARAM_VALUE_PAGINATION_ENABLED).build();
|
||||||
|
|
||||||
|
} else if (FLAG_TRUE.equals(paginationEnabled)) {
|
||||||
|
|
||||||
|
// getting gadget data service
|
||||||
|
GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService();
|
||||||
|
|
||||||
|
// constructing filter set
|
||||||
|
BasicFilterSet filterSet = new BasicFilterSet();
|
||||||
|
filterSet.setPlatform(platform);
|
||||||
|
filterSet.setOwnership(ownership);
|
||||||
|
|
||||||
|
PaginationResult paginationResult;
|
||||||
|
try {
|
||||||
|
paginationResult = gadgetDataService.
|
||||||
|
getFeatureNonCompliantDevicesWithDetails(nonCompliantFeatureCode,
|
||||||
|
filterSet, startIndex, resultCount);
|
||||||
|
} catch (InvalidFeatureCodeValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a filtered set of " +
|
||||||
|
"feature non-compliant devices with details.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build();
|
||||||
|
} catch (InvalidStartIndexValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a filtered set of " +
|
||||||
|
"feature non-compliant devices with details.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(INVALID_QUERY_PARAM_VALUE_START_INDEX).build();
|
||||||
|
} catch (InvalidResultCountValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a filtered set of " +
|
||||||
|
"feature non-compliant devices with details.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(INVALID_QUERY_PARAM_VALUE_RESULT_COUNT).build();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve a filtered set of feature " +
|
||||||
|
"non-compliant devices with details.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
DashboardPaginationGadgetDataWrapper
|
||||||
|
dashboardPaginationGadgetDataWrapper = new DashboardPaginationGadgetDataWrapper();
|
||||||
|
dashboardPaginationGadgetDataWrapper.
|
||||||
|
setContext("Filtered-and-paginated-feature-non-compliant-devices-with-details");
|
||||||
|
dashboardPaginationGadgetDataWrapper.setGroupingAttribute(null);
|
||||||
|
dashboardPaginationGadgetDataWrapper.setData(paginationResult.getData());
|
||||||
|
dashboardPaginationGadgetDataWrapper.setTotalRecordCount(paginationResult.getRecordsTotal());
|
||||||
|
|
||||||
|
List<DashboardPaginationGadgetDataWrapper> responsePayload = new ArrayList<>();
|
||||||
|
responsePayload.add(dashboardPaginationGadgetDataWrapper);
|
||||||
|
|
||||||
|
return Response.status(HttpStatus.SC_OK).entity(responsePayload).build();
|
||||||
|
|
||||||
|
} else if (FLAG_FALSE.equals(paginationEnabled)) {
|
||||||
|
|
||||||
|
// getting gadget data service
|
||||||
|
GadgetDataService gadgetDataService = DeviceMgtAPIUtils.getGadgetDataService();
|
||||||
|
|
||||||
|
// constructing filter set
|
||||||
|
BasicFilterSet filterSet = new BasicFilterSet();
|
||||||
|
filterSet.setPlatform(platform);
|
||||||
|
filterSet.setOwnership(ownership);
|
||||||
|
|
||||||
|
List<DeviceWithDetails> featureNonCompliantDevicesWithDetails;
|
||||||
|
try {
|
||||||
|
featureNonCompliantDevicesWithDetails = gadgetDataService.
|
||||||
|
getFeatureNonCompliantDevicesWithDetails(nonCompliantFeatureCode, filterSet);
|
||||||
|
} catch (InvalidFeatureCodeValueException e) {
|
||||||
|
log.error("Bad request and error occurred @ Gadget Data Service layer due to " +
|
||||||
|
"invalid (query) parameter value. This was while trying to execute relevant data service " +
|
||||||
|
"function @ Dashboard API layer to retrieve a filtered set of " +
|
||||||
|
"feature non-compliant devices with details.", e);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(REQUIRED_QUERY_PARAM_VALUE_NON_COMPLIANT_FEATURE_CODE).build();
|
||||||
|
} catch (DataAccessLayerException e) {
|
||||||
|
log.error("An internal error occurred while trying to execute relevant data service function " +
|
||||||
|
"@ Dashboard API layer to retrieve a filtered set of feature " +
|
||||||
|
"non-compliant devices with details.", e);
|
||||||
|
return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).
|
||||||
|
entity(ERROR_IN_RETRIEVING_REQUESTED_DATA).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
DashboardGadgetDataWrapper dashboardGadgetDataWrapper = new DashboardGadgetDataWrapper();
|
||||||
|
dashboardGadgetDataWrapper.setContext("Filtered-feature-non-compliant-devices-with-details");
|
||||||
|
dashboardGadgetDataWrapper.setGroupingAttribute(null);
|
||||||
|
dashboardGadgetDataWrapper.setData(featureNonCompliantDevicesWithDetails);
|
||||||
|
|
||||||
|
List<DashboardGadgetDataWrapper> responsePayload = new ArrayList<>();
|
||||||
|
responsePayload.add(dashboardGadgetDataWrapper);
|
||||||
|
|
||||||
|
return Response.status(HttpStatus.SC_OK).entity(responsePayload).build();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
log.error("Bad request on retrieving a filtered set of feature non-compliant devices with " +
|
||||||
|
"details @ Dashboard API layer. " + INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED);
|
||||||
|
return Response.status(HttpStatus.SC_BAD_REQUEST).
|
||||||
|
entity(INVALID_QUERY_PARAM_VALUE_PAGINATION_ENABLED).build();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -40,6 +40,7 @@ import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
|||||||
|
|
||||||
import javax.ws.rs.*;
|
import javax.ws.rs.*;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Path("/devices")
|
@Path("/devices")
|
||||||
@ -67,6 +68,23 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response getDevices(@HeaderParam("If-Modified-Since") Date timestamp,
|
||||||
|
@QueryParam("offset") int offset, @QueryParam("limit") int limit) {
|
||||||
|
SearchManagerService searchManagerService;
|
||||||
|
List<DeviceWrapper> devices;
|
||||||
|
try {
|
||||||
|
searchManagerService = DeviceMgtAPIUtils.getSearchManagerService();
|
||||||
|
devices = searchManagerService.getUpdated(timestamp.getTime());
|
||||||
|
|
||||||
|
} catch (SearchMgtException e) {
|
||||||
|
String msg = "Error occurred while retrieving the updated device information after the given time.";
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
||||||
|
}
|
||||||
|
return Response.status(Response.Status.OK).entity(devices).build();
|
||||||
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@Override
|
@Override
|
||||||
public Response getDevices(@QueryParam("type") String type, @QueryParam("offset") int offset,
|
public Response getDevices(@QueryParam("type") String type, @QueryParam("offset") int offset,
|
||||||
|
|||||||
@ -21,13 +21,28 @@ package org.wso2.carbon.device.mgt.jaxrs.service.impl;
|
|||||||
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.service.api.GroupManagementService;
|
import org.wso2.carbon.device.mgt.jaxrs.service.api.GroupManagementService;
|
||||||
|
import org.apache.commons.httpclient.HttpStatus;
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
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.GroupManagementException;
|
||||||
|
import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.service.api.GroupManagementService;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||||
|
import org.wso2.carbon.policy.mgt.common.DeviceGroupWrapper;
|
||||||
|
|
||||||
import javax.ws.rs.PathParam;
|
import javax.ws.rs.PathParam;
|
||||||
import javax.ws.rs.QueryParam;
|
import javax.ws.rs.QueryParam;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class GroupManagementServiceImpl implements GroupManagementService {
|
public class GroupManagementServiceImpl implements GroupManagementService {
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(GroupManagementServiceImpl.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getGroups(@QueryParam("offset") int offset, @QueryParam("limit") int limit) {
|
public Response getGroups(@QueryParam("offset") int offset, @QueryParam("limit") int limit) {
|
||||||
return null;
|
return null;
|
||||||
@ -97,4 +112,27 @@ public class GroupManagementServiceImpl implements GroupManagementService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Response getGroupsByUser(@QueryParam("user") String user) {
|
||||||
|
try {
|
||||||
|
List<DeviceGroupWrapper> groupWrappers = new ArrayList<>();
|
||||||
|
GroupManagementProviderService service = DeviceMgtAPIUtils.getGroupManagementProviderService();
|
||||||
|
List<DeviceGroup> deviceGroups = service.getGroups(user);
|
||||||
|
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||||
|
for (DeviceGroup dg : deviceGroups) {
|
||||||
|
DeviceGroupWrapper gw = new DeviceGroupWrapper();
|
||||||
|
gw.setId(dg.getId());
|
||||||
|
gw.setOwner(dg.getOwner());
|
||||||
|
gw.setName(dg.getName());
|
||||||
|
gw.setTenantId(tenantId);
|
||||||
|
groupWrappers.add(gw);
|
||||||
|
}
|
||||||
|
return Response.status(Response.Status.OK).entity(groupWrappers).build();
|
||||||
|
} catch (GroupManagementException e) {
|
||||||
|
String error = "Error occurred while getting the groups related to users for policy.";
|
||||||
|
log.error(error, e);
|
||||||
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,6 +22,8 @@ import org.apache.commons.logging.Log;
|
|||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.wso2.carbon.certificate.mgt.core.service.CertificateManagementService;
|
import org.wso2.carbon.certificate.mgt.core.service.CertificateManagementService;
|
||||||
import org.wso2.carbon.context.CarbonContext;
|
import org.wso2.carbon.context.CarbonContext;
|
||||||
|
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||||
|
import org.wso2.carbon.device.mgt.analytics.dashboard.GadgetDataService;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry;
|
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry;
|
||||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
|
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
|
||||||
@ -243,5 +245,14 @@ public class DeviceMgtAPIUtils {
|
|||||||
}
|
}
|
||||||
return searchManagerService;
|
return searchManagerService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static GadgetDataService getGadgetDataService() {
|
||||||
|
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
||||||
|
GadgetDataService gadgetDataService = (GadgetDataService) ctx.getOSGiService(GadgetDataService.class, null);
|
||||||
|
if (gadgetDataService == null) {
|
||||||
|
throw new IllegalStateException("Gadget Data Service has not been initialized.");
|
||||||
|
}
|
||||||
|
return gadgetDataService;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -886,10 +886,16 @@
|
|||||||
<Permission>
|
<Permission>
|
||||||
<name>Device Search</name>
|
<name>Device Search</name>
|
||||||
<path>/device-mgt/admin/search</path>
|
<path>/device-mgt/admin/search</path>
|
||||||
<url>/information/*</url>
|
<url>/search</url>
|
||||||
<method>GET</method>
|
<method>POST</method>
|
||||||
</Permission>
|
</Permission>
|
||||||
|
|
||||||
|
<Permission>
|
||||||
|
<name>Device Updated</name>
|
||||||
|
<path>/device-mgt/admin/search/after</path>
|
||||||
|
<url>/search/after/*</url>
|
||||||
|
<method>GET</method>
|
||||||
|
</Permission>
|
||||||
<!--End of the device search and information -->
|
<!--End of the device search and information -->
|
||||||
|
|
||||||
|
|
||||||
@ -937,19 +943,25 @@
|
|||||||
<!-- Certificate related APIs -->
|
<!-- Certificate related APIs -->
|
||||||
<Permission>
|
<Permission>
|
||||||
<name>Save certificate in the database</name>
|
<name>Save certificate in the database</name>
|
||||||
<path>/device-mgt/android/certificate/save</path>
|
<path>/device-mgt/admin/certificate/save</path>
|
||||||
<url>/certificates/saveCertificate</url>
|
<url>/certificates</url>
|
||||||
<method>POST</method>
|
<method>POST</method>
|
||||||
</Permission>
|
</Permission>
|
||||||
<Permission>
|
<Permission>
|
||||||
<name>get certificate in the database</name>
|
<name>get certificate in the database</name>
|
||||||
<path>/device-mgt/android/certificate/view</path>
|
<path>/device-mgt/admin/certificate/Get</path>
|
||||||
<url>/certificates/*</url>
|
<url>/certificates/*</url>
|
||||||
<method>GET</method>
|
<method>GET</method>
|
||||||
</Permission>
|
</Permission>
|
||||||
<Permission>
|
<Permission>
|
||||||
<name>Remove certificate in the database</name>
|
<name>get certificate in the database</name>
|
||||||
<path>/device-mgt/android/certificate/remove</path>
|
<path>/device-mgt/admin/certificate/GetAll</path>
|
||||||
|
<url>/certificates</url>
|
||||||
|
<method>GET</method>
|
||||||
|
</Permission>
|
||||||
|
<Permission>
|
||||||
|
<name>get certificate in the database</name>
|
||||||
|
<path>/device-mgt/admin/certificate/Get</path>
|
||||||
<url>/certificates/*</url>
|
<url>/certificates/*</url>
|
||||||
<method>DELETE</method>
|
<method>DELETE</method>
|
||||||
</Permission>
|
</Permission>
|
||||||
@ -1152,5 +1164,61 @@
|
|||||||
<method>DELETE</method>
|
<method>DELETE</method>
|
||||||
</Permission>
|
</Permission>
|
||||||
<!-- End of Group related APIs -->
|
<!-- End of Group related APIs -->
|
||||||
|
<!-- Dashboard related APIs -->
|
||||||
|
<Permission>
|
||||||
|
<name>get device count overview</name>
|
||||||
|
<path>/device-mgt/admin/dashboard/device-count-overview</path>
|
||||||
|
<url>/dashboard/device-count-overview</url>
|
||||||
|
<method>GET</method>
|
||||||
|
</Permission>
|
||||||
|
<Permission>
|
||||||
|
<name>get device counts by potential vulnerabilities</name>
|
||||||
|
<path>/device-mgt/admin/dashboard/device-counts-by-potential-vulnerabilities</path>
|
||||||
|
<url>/dashboard/device-counts-by-potential-vulnerabilities</url>
|
||||||
|
<method>GET</method>
|
||||||
|
</Permission>
|
||||||
|
<Permission>
|
||||||
|
<name>get non-compliant device counts by features</name>
|
||||||
|
<path>/device-mgt/admin/dashboard/non-compliant-device-counts-by-features</path>
|
||||||
|
<url>/dashboard/non-compliant-device-counts-by-features</url>
|
||||||
|
<method>GET</method>
|
||||||
|
</Permission>
|
||||||
|
<Permission>
|
||||||
|
<name>get device counts by groups</name>
|
||||||
|
<path>/device-mgt/admin/dashboard/device-counts-by-groups</path>
|
||||||
|
<url>/dashboard/device-counts-by-groups</url>
|
||||||
|
<method>GET</method>
|
||||||
|
</Permission>
|
||||||
|
<Permission>
|
||||||
|
<name>get feature-non-compliant device counts by groups</name>
|
||||||
|
<path>/device-mgt/admin/dashboard/feature-non-compliant-device-counts-by-groups</path>
|
||||||
|
<url>/dashboard/feature-non-compliant-device-counts-by-groups</url>
|
||||||
|
<method>GET</method>
|
||||||
|
</Permission>
|
||||||
|
<Permission>
|
||||||
|
<name>get filtered device count over total</name>
|
||||||
|
<path>/device-mgt/admin/dashboard/filtered-device-count-over-total</path>
|
||||||
|
<url>/dashboard/filtered-device-count-over-total</url>
|
||||||
|
<method>GET</method>
|
||||||
|
</Permission>
|
||||||
|
<Permission>
|
||||||
|
<name>get feature-non-compliant device count over total</name>
|
||||||
|
<path>/device-mgt/admin/dashboard/feature-non-compliant-device-count-over-total</path>
|
||||||
|
<url>/dashboard/feature-non-compliant-device-count-over-total</url>
|
||||||
|
<method>GET</method>
|
||||||
|
</Permission>
|
||||||
|
<Permission>
|
||||||
|
<name>get devices with details</name>
|
||||||
|
<path>/device-mgt/admin/dashboard/devices-with-details</path>
|
||||||
|
<url>/dashboard/devices-with-details</url>
|
||||||
|
<method>GET</method>
|
||||||
|
</Permission>
|
||||||
|
<Permission>
|
||||||
|
<name>get feature-non-compliant devices with details</name>
|
||||||
|
<path>/device-mgt/admin/dashboard/feature-non-compliant-devices-with-details</path>
|
||||||
|
<url>/dashboard/feature-non-compliant-devices-with-details</url>
|
||||||
|
<method>GET</method>
|
||||||
|
</Permission>
|
||||||
|
<!-- End of Dashboard related APIs -->
|
||||||
|
|
||||||
</PermissionConfiguration>
|
</PermissionConfiguration>
|
||||||
|
|||||||
@ -38,6 +38,7 @@
|
|||||||
<ref bean="groupManagementService"/>
|
<ref bean="groupManagementService"/>
|
||||||
<ref bean="groupManagementAdminService"/>
|
<ref bean="groupManagementAdminService"/>
|
||||||
<ref bean="applicationManagementAdminService"/>
|
<ref bean="applicationManagementAdminService"/>
|
||||||
|
<ref bean="dashboardServiceBean"/>
|
||||||
<ref bean="swaggerResource"/>
|
<ref bean="swaggerResource"/>
|
||||||
</jaxrs:serviceBeans>
|
</jaxrs:serviceBeans>
|
||||||
<jaxrs:providers>
|
<jaxrs:providers>
|
||||||
@ -74,6 +75,7 @@
|
|||||||
<bean id="applicationManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.ApplicationManagementAdminServiceImpl"/>
|
<bean id="applicationManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.ApplicationManagementAdminServiceImpl"/>
|
||||||
<bean id="groupManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.GroupManagementAdminServiceImpl"/>
|
<bean id="groupManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.GroupManagementAdminServiceImpl"/>
|
||||||
<bean id="userManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.UserManagementAdminServiceImpl"/>
|
<bean id="userManagementAdminService" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.admin.UserManagementAdminServiceImpl"/>
|
||||||
|
<bean id="dashboardServiceBean" class="org.wso2.carbon.device.mgt.jaxrs.service.impl.DashboardImpl"/>
|
||||||
<bean id="jsonProvider" class="org.wso2.carbon.device.mgt.jaxrs.common.GsonMessageBodyHandler"/>
|
<bean id="jsonProvider" class="org.wso2.carbon.device.mgt.jaxrs.common.GsonMessageBodyHandler"/>
|
||||||
<bean id="errorHandler" class="org.wso2.carbon.device.mgt.jaxrs.common.ErrorHandler"/>
|
<bean id="errorHandler" class="org.wso2.carbon.device.mgt.jaxrs.common.ErrorHandler"/>
|
||||||
|
|
||||||
|
|||||||
@ -20,6 +20,7 @@
|
|||||||
package org.wso2.carbon.device.mgt.common.app.mgt;
|
package org.wso2.carbon.device.mgt.common.app.mgt;
|
||||||
|
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||||
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -66,12 +67,12 @@ public interface ApplicationManager {
|
|||||||
throws ApplicationManagementException;
|
throws ApplicationManagementException;
|
||||||
|
|
||||||
|
|
||||||
void installApplicationForDevices(Operation operation, List<DeviceIdentifier> deviceIdentifiers)
|
Activity installApplicationForDevices(Operation operation, List<DeviceIdentifier> deviceIdentifiers)
|
||||||
throws ApplicationManagementException;
|
throws ApplicationManagementException;
|
||||||
|
|
||||||
void installApplicationForUsers(Operation operation, List<String> userNameList)
|
Activity installApplicationForUsers(Operation operation, List<String> userNameList)
|
||||||
throws ApplicationManagementException;
|
throws ApplicationManagementException;
|
||||||
|
|
||||||
void installApplicationForUserRoles(Operation operation, List<String> userRoleList)
|
Activity installApplicationForUserRoles(Operation operation, List<String> userRoleList)
|
||||||
throws ApplicationManagementException;
|
throws ApplicationManagementException;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* 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.common.operation.mgt;
|
||||||
|
|
||||||
|
public class Activity {
|
||||||
|
|
||||||
|
public enum Type {
|
||||||
|
CONFIG, MESSAGE, INFO, COMMAND, PROFILE, POLICY
|
||||||
|
}
|
||||||
|
|
||||||
|
private String activityId;
|
||||||
|
private String code;
|
||||||
|
private Type type;
|
||||||
|
private String createdTimeStamp;
|
||||||
|
|
||||||
|
public String getActivityId() {
|
||||||
|
return activityId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setActivityId(String activityId) {
|
||||||
|
this.activityId = activityId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(String code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Type getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(Type type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCreatedTimeStamp() {
|
||||||
|
return createdTimeStamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreatedTimeStamp(String createdTimeStamp) {
|
||||||
|
this.createdTimeStamp = createdTimeStamp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* 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.common.operation.mgt;
|
||||||
|
|
||||||
|
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ActivityStatus {
|
||||||
|
|
||||||
|
public enum Status {
|
||||||
|
IN_PROGRESS, PENDING, COMPLETED, ERROR, REPEATED
|
||||||
|
}
|
||||||
|
private DeviceIdentifier deviceIdentifier;
|
||||||
|
private Status status;
|
||||||
|
private List<OperationResponse> responses;
|
||||||
|
private String updatedTimestamp;
|
||||||
|
|
||||||
|
public DeviceIdentifier getDeviceIdentifier() {
|
||||||
|
return deviceIdentifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeviceIdentifier(DeviceIdentifier deviceIdentifier) {
|
||||||
|
this.deviceIdentifier = deviceIdentifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Status getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(Status status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<OperationResponse> getResponses() {
|
||||||
|
return responses;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setResponses(List<OperationResponse> responses) {
|
||||||
|
this.responses = responses;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUpdatedTimestamp() {
|
||||||
|
return updatedTimestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpdatedTimestamp(String updatedTimestamp) {
|
||||||
|
this.updatedTimestamp = updatedTimestamp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ public interface OperationManager {
|
|||||||
* @throws OperationManagementException If some unusual behaviour is observed while adding the
|
* @throws OperationManagementException If some unusual behaviour is observed while adding the
|
||||||
* operation
|
* operation
|
||||||
*/
|
*/
|
||||||
int addOperation(Operation operation, List<DeviceIdentifier> devices) throws OperationManagementException;
|
Activity addOperation(Operation operation, List<DeviceIdentifier> devices) throws OperationManagementException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to retrieve the list of all operations to a device.
|
* Method to retrieve the list of all operations to a device.
|
||||||
|
|||||||
@ -30,6 +30,7 @@ import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
|||||||
import org.wso2.carbon.device.mgt.common.TransactionManagementException;
|
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.app.mgt.ApplicationManagementException;
|
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
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.core.DeviceManagementConstants;
|
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
|
||||||
@ -91,7 +92,7 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void installApplicationForDevices(Operation operation, List<DeviceIdentifier> deviceIds)
|
public Activity installApplicationForDevices(Operation operation, List<DeviceIdentifier> deviceIds)
|
||||||
throws ApplicationManagementException {
|
throws ApplicationManagementException {
|
||||||
try {
|
try {
|
||||||
//TODO: Fix this properly later adding device type to be passed in when the task manage executes "addOperations()"
|
//TODO: Fix this properly later adding device type to be passed in when the task manage executes "addOperations()"
|
||||||
@ -99,10 +100,11 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
if (deviceIds.size() > 0) {
|
if (deviceIds.size() > 0) {
|
||||||
type = deviceIds.get(0).getType();
|
type = deviceIds.get(0).getType();
|
||||||
}
|
}
|
||||||
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().addOperation(type, operation,
|
Activity activity = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().
|
||||||
deviceIds);
|
addOperation(type, operation, deviceIds);
|
||||||
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().notifyOperationToDevices
|
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().notifyOperationToDevices
|
||||||
(operation, deviceIds);
|
(operation, deviceIds);
|
||||||
|
return activity;
|
||||||
} catch (OperationManagementException e) {
|
} catch (OperationManagementException e) {
|
||||||
throw new ApplicationManagementException("Error in add operation at app installation", e);
|
throw new ApplicationManagementException("Error in add operation at app installation", e);
|
||||||
} catch (DeviceManagementException e) {
|
} catch (DeviceManagementException e) {
|
||||||
@ -111,7 +113,7 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void installApplicationForUsers(Operation operation, List<String> userNameList)
|
public Activity installApplicationForUsers(Operation operation, List<String> userNameList)
|
||||||
throws ApplicationManagementException {
|
throws ApplicationManagementException {
|
||||||
|
|
||||||
String userName = null;
|
String userName = null;
|
||||||
@ -138,9 +140,10 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
if (deviceIdentifierList.size() > 0) {
|
if (deviceIdentifierList.size() > 0) {
|
||||||
type = deviceIdentifierList.get(0).getType();
|
type = deviceIdentifierList.get(0).getType();
|
||||||
}
|
}
|
||||||
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider()
|
Activity activity = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider()
|
||||||
.addOperation(type, operation, deviceIdentifierList);
|
.addOperation(type, operation, deviceIdentifierList);
|
||||||
|
|
||||||
|
return activity;
|
||||||
} catch (DeviceManagementException e) {
|
} catch (DeviceManagementException e) {
|
||||||
throw new ApplicationManagementException("Error in get devices for user: " + userName +
|
throw new ApplicationManagementException("Error in get devices for user: " + userName +
|
||||||
" in app installation", e);
|
" in app installation", e);
|
||||||
@ -152,7 +155,7 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void installApplicationForUserRoles(Operation operation, List<String> userRoleList)
|
public Activity installApplicationForUserRoles(Operation operation, List<String> userRoleList)
|
||||||
throws ApplicationManagementException {
|
throws ApplicationManagementException {
|
||||||
|
|
||||||
String userRole = null;
|
String userRole = null;
|
||||||
@ -178,9 +181,9 @@ public class ApplicationManagerProviderServiceImpl implements ApplicationManagem
|
|||||||
if (deviceIdentifierList.size() > 0) {
|
if (deviceIdentifierList.size() > 0) {
|
||||||
type = deviceIdentifierList.get(0).getType();
|
type = deviceIdentifierList.get(0).getType();
|
||||||
}
|
}
|
||||||
DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().addOperation(type, operation,
|
Activity activity = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().addOperation(type, operation,
|
||||||
deviceIdentifierList);
|
deviceIdentifierList);
|
||||||
|
return activity;
|
||||||
} catch (DeviceManagementException e) {
|
} catch (DeviceManagementException e) {
|
||||||
throw new ApplicationManagementException("Error in get devices for user role " + userRole +
|
throw new ApplicationManagementException("Error in get devices for user role " + userRole +
|
||||||
" in app installation", e);
|
" in app installation", e);
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import org.wso2.carbon.context.CarbonContext;
|
|||||||
import org.wso2.carbon.device.mgt.common.*;
|
import org.wso2.carbon.device.mgt.common.*;
|
||||||
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException;
|
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException;
|
||||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroupConstants;
|
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroupConstants;
|
||||||
|
import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
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.operation.mgt.OperationManager;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager;
|
||||||
@ -47,6 +48,7 @@ import org.wso2.carbon.device.mgt.core.task.impl.DeviceTaskManagerImpl;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -83,8 +85,8 @@ public class OperationManagerImpl implements OperationManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int addOperation(Operation operation,
|
public Activity addOperation(Operation operation,
|
||||||
List<DeviceIdentifier> deviceIds) throws OperationManagementException {
|
List<DeviceIdentifier> deviceIds) throws OperationManagementException {
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
log.debug("operation:[" + operation.toString() + "]");
|
log.debug("operation:[" + operation.toString() + "]");
|
||||||
for (DeviceIdentifier deviceIdentifier : deviceIds) {
|
for (DeviceIdentifier deviceIdentifier : deviceIds) {
|
||||||
@ -96,7 +98,7 @@ public class OperationManagerImpl implements OperationManager {
|
|||||||
List<DeviceIdentifier> authorizedDeviceList = this.getAuthorizedDevices(operation, deviceIds);
|
List<DeviceIdentifier> authorizedDeviceList = this.getAuthorizedDevices(operation, deviceIds);
|
||||||
if (authorizedDeviceList.size() <= 0) {
|
if (authorizedDeviceList.size() <= 0) {
|
||||||
log.info("User : " + getUser() + " is not authorized to perform operations on given device-list.");
|
log.info("User : " + getUser() + " is not authorized to perform operations on given device-list.");
|
||||||
return -1;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<EnrolmentInfo> enrolments = this.getEnrollmentsByStatus(deviceIds);
|
List<EnrolmentInfo> enrolments = this.getEnrollmentsByStatus(deviceIds);
|
||||||
@ -128,7 +130,12 @@ public class OperationManagerImpl implements OperationManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
OperationManagementDAOFactory.commitTransaction();
|
OperationManagementDAOFactory.commitTransaction();
|
||||||
return operationId;
|
Activity activity = new Activity();
|
||||||
|
activity.setActivityId(DeviceManagementConstants.OperationAttributes.ACTIVITY + operationId);
|
||||||
|
activity.setCode(operationDto.getCode());
|
||||||
|
activity.setCreatedTimeStamp(new Date().toString());
|
||||||
|
activity.setType(Activity.Type.valueOf(operationDto.getType().toString()));
|
||||||
|
return activity;
|
||||||
} catch (OperationManagementDAOException e) {
|
} catch (OperationManagementDAOException e) {
|
||||||
OperationManagementDAOFactory.rollbackTransaction();
|
OperationManagementDAOFactory.rollbackTransaction();
|
||||||
throw new OperationManagementException("Error occurred while adding operation", e);
|
throw new OperationManagementException("Error occurred while adding operation", e);
|
||||||
|
|||||||
@ -22,6 +22,7 @@ import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
|||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
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.operation.mgt.Activity;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
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.operation.mgt.OperationManager;
|
import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager;
|
||||||
@ -43,9 +44,9 @@ public class PushNotificationBasedOperationManager implements OperationManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int addOperation(Operation operation,
|
public Activity addOperation(Operation operation,
|
||||||
List<DeviceIdentifier> devices) throws OperationManagementException {
|
List<DeviceIdentifier> devices) throws OperationManagementException {
|
||||||
int operationId = this.operationManager.addOperation(operation, devices);
|
Activity activity = this.operationManager.addOperation(operation, devices);
|
||||||
for (DeviceIdentifier deviceId : devices) {
|
for (DeviceIdentifier deviceId : devices) {
|
||||||
try {
|
try {
|
||||||
this.notificationProvider.execute(new NotificationContext(deviceId));
|
this.notificationProvider.execute(new NotificationContext(deviceId));
|
||||||
@ -53,7 +54,7 @@ public class PushNotificationBasedOperationManager implements OperationManager {
|
|||||||
throw new OperationManagementException("Error occurred while sending push notification to device", e);
|
throw new OperationManagementException("Error occurred while sending push notification to device", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return operationId;
|
return activity;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -26,6 +26,7 @@ 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.configuration.mgt.PlatformConfiguration;
|
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
|
||||||
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.operation.mgt.Activity;
|
||||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
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.core.dto.DeviceType;
|
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||||
@ -215,8 +216,8 @@ public interface DeviceManagementProviderService {
|
|||||||
void notifyOperationToDevices(Operation operation,
|
void notifyOperationToDevices(Operation operation,
|
||||||
List<DeviceIdentifier> deviceIds) throws DeviceManagementException;
|
List<DeviceIdentifier> deviceIds) throws DeviceManagementException;
|
||||||
|
|
||||||
int addOperation(String type, Operation operation,
|
Activity addOperation(String type, Operation operation,
|
||||||
List<DeviceIdentifier> devices) throws OperationManagementException;
|
List<DeviceIdentifier> devices) throws OperationManagementException;
|
||||||
|
|
||||||
List<? extends Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementException;
|
List<? extends Operation> getOperations(DeviceIdentifier deviceId) throws OperationManagementException;
|
||||||
|
|
||||||
|
|||||||
@ -33,6 +33,7 @@ import org.wso2.carbon.device.mgt.common.TransactionManagementException;
|
|||||||
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.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.Operation;
|
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.push.notification.NotificationStrategy;
|
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
|
||||||
@ -816,8 +817,8 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int addOperation(String type, Operation operation,
|
public Activity addOperation(String type, Operation operation,
|
||||||
List<DeviceIdentifier> devices) throws OperationManagementException {
|
List<DeviceIdentifier> devices) throws OperationManagementException {
|
||||||
return DeviceManagementDataHolder.getInstance().getOperationManager().addOperation(operation, devices);
|
return DeviceManagementDataHolder.getInstance().getOperationManager().addOperation(operation, devices);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,8 @@
|
|||||||
"apiContext" : "api",
|
"apiContext" : "api",
|
||||||
"httpsURL" : "%https.ip%",
|
"httpsURL" : "%https.ip%",
|
||||||
"httpURL" : "%http.ip%",
|
"httpURL" : "%http.ip%",
|
||||||
|
"wssURL" : "%https.ip%",
|
||||||
|
"wsURL" : "%http.ip%",
|
||||||
"enrollmentDir": "/emm-web-agent/enrollment",
|
"enrollmentDir": "/emm-web-agent/enrollment",
|
||||||
"iOSConfigRoot" : "%https.ip%/ios-enrollment/",
|
"iOSConfigRoot" : "%https.ip%/ios-enrollment/",
|
||||||
"iOSAPIRoot" : "%https.ip%/ios/",
|
"iOSAPIRoot" : "%https.ip%/ios/",
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Dashboard"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Dashboard"}}
|
||||||
{{unit "cdmf.unit.ui.content.title" pageHeader="Dashboard"}}
|
{{unit "cdmf.unit.ui.content.title" pageHeader="Dashboard"}}
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "topCss"}}
|
{{#zone "topCss"}}
|
||||||
{{css "css/analytics.css"}}
|
{{css "css/analytics.css"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Device Types"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Device Types"}}
|
||||||
{{unit "cdmf.unit.ui.content.title" pageHeader="Device List"}}
|
{{unit "cdmf.unit.ui.content.title" pageHeader="Device List"}}
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Device"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Device"}}
|
||||||
{{! unit "cdmf.unit.ui.content.title" pageHeader="Device Download"}}
|
{{! unit "cdmf.unit.ui.content.title" pageHeader="Device Download"}}
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Device Details"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Device Details"}}
|
||||||
{{unit "cdmf.unit.lib.service-invoker-utility"}}
|
{{unit "cdmf.unit.lib.service-invoker-utility"}}
|
||||||
{{unit "cdmf.unit.lib.handlebars"}}
|
{{unit "cdmf.unit.lib.handlebars"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Device Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Device Management"}}
|
||||||
|
|
||||||
{{unit "cdmf.unit.data-tables-extended"}}
|
{{unit "cdmf.unit.data-tables-extended"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "title"}}Error | {{@app.conf.appName}}{{/zone}}
|
{{#zone "title"}}Error | {{@app.conf.appName}}{{/zone}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "topCss"}}
|
{{#zone "topCss"}}
|
||||||
{{css "css/analytics.css"}}
|
{{css "css/analytics.css"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Group Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Group Management"}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Group Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Group Management"}}
|
||||||
{{unit "cdmf.unit.ui.content.title" pageHeader="Groups"}}
|
{{unit "cdmf.unit.ui.content.title" pageHeader="Groups"}}
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Notification Listing"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Notification Listing"}}
|
||||||
|
|
||||||
{{#zone "content"}}
|
{{#zone "content"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Platform Configuration"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Platform Configuration"}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
||||||
{{unit "cdmf.unit.data-tables-extended"}}
|
{{unit "cdmf.unit.data-tables-extended"}}
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Policy Management"}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Role Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Role Management"}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Role Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Role Management"}}
|
||||||
|
|
||||||
{{unit "cdmf.unit.lib.service-invoker-utility"}}
|
{{unit "cdmf.unit.lib.service-invoker-utility"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Role Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Role Management"}}
|
||||||
|
|
||||||
{{unit "cdmf.unit.lib.select2"}}
|
{{unit "cdmf.unit.lib.select2"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Role Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Role Management"}}
|
||||||
|
|
||||||
{{unit "cdmf.unit.data-tables-extended"}}
|
{{unit "cdmf.unit.data-tables-extended"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "title"}}{{! to override parent page title }}{{/zone}}
|
{{#zone "title"}}{{! to override parent page title }}{{/zone}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="Login"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="Login"}}
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="User Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="User Management"}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="User Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="User Management"}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="User Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="User Management"}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{unit "cdmf.unit.ui.title" pageTitle="User Management"}}
|
{{unit "cdmf.unit.ui.title" pageTitle="User Management"}}
|
||||||
|
|
||||||
{{unit "cdmf.unit.data-tables-extended"}}
|
{{unit "cdmf.unit.data-tables-extended"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "topCss"}}
|
{{#zone "topCss"}}
|
||||||
{{css "css/daterangepicker.css"}}
|
{{css "css/daterangepicker.css"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "topCss"}}
|
{{#zone "topCss"}}
|
||||||
{{~css "css/dataTables.bootstrap.css"}}
|
{{~css "css/dataTables.bootstrap.css"}}
|
||||||
{{~css "css/dataTables.responsive.css"}}
|
{{~css "css/dataTables.responsive.css"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
<div class="panel-heading">Device Details</div>
|
<div class="panel-heading">Device Details</div>
|
||||||
<div id="loading-content" class="col-centered">
|
<div id="loading-content" class="col-centered">
|
||||||
<br>
|
<br>
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
<div class="wr-operations" style="height: 87px;"></div>
|
<div class="wr-operations" style="height: 87px;"></div>
|
||||||
|
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
{{js "js/operation-mod.js"}}
|
{{js "js/operation-mod.js"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
<table class="table table-responsive table-striped" id="members">
|
<table class="table table-responsive table-striped" id="members">
|
||||||
<tbody>
|
<tbody>
|
||||||
{{#if device.viewModel.vendor}}
|
{{#if device.viewModel.vendor}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#defineZone "contentTitle"}}
|
{{#defineZone "contentTitle"}}
|
||||||
<div class="row wr-device-board">
|
<div class="row wr-device-board">
|
||||||
<div class="col-lg-12 wr-secondary-bar">
|
<div class="col-lg-12 wr-secondary-bar">
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<span id="device-listing-status-msg"></span>
|
<span id="device-listing-status-msg"></span>
|
||||||
<table class="table table-striped table-hover list-table no-operations display responsive nowrap data-table grid-view"
|
<table class="table table-striped table-hover list-table no-operations display responsive nowrap data-table grid-view"
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "contentTitle"}}
|
{{#zone "contentTitle"}}
|
||||||
<div class="row wr-device-board">
|
<div class="row wr-device-board">
|
||||||
<div class="col-lg-12 wr-secondary-bar">
|
<div class="col-lg-12 wr-secondary-bar">
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "footer"}}
|
{{#zone "footer"}}
|
||||||
<p>
|
<p>
|
||||||
WSO2 Carbon Device Management Framework v.1.0.0 | © 2015, <a href="http://wso2.com/" target="_blank"><i class="icon fw fw-wso2"></i> Inc</a>. (<a href="http://wso2.com/" target="_blank">http://www.wso2.org</a>) All Rights Reserved.
|
WSO2 Carbon Device Management Framework v.1.0.0 | © 2015, <a href="http://wso2.com/" target="_blank"><i class="icon fw fw-wso2"></i> Inc</a>. (<a href="http://wso2.com/" target="_blank">http://www.wso2.org</a>) All Rights Reserved.
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
{{js "js/handlebars-v2.0.0.js"}}
|
{{js "js/handlebars-v2.0.0.js"}}
|
||||||
{{js "js/utils.js"}}
|
{{js "js/utils.js"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
{{js "js/jquery.qrcode.min.js"}}
|
{{js "js/jquery.qrcode.min.js"}}
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "topCss"}}
|
{{#zone "topCss"}}
|
||||||
{{css "css/graph.css"}}
|
{{css "css/graph.css"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
{{js "js/js.cookie.js"}}
|
{{js "js/js.cookie.js"}}
|
||||||
{{js "js/invoker-lib.js"}}
|
{{js "js/invoker-lib.js"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
{{js "js/tinymce.min.js" combine=false}}
|
{{js "js/tinymce.min.js" combine=false}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
@ -1,41 +1,61 @@
|
|||||||
<span id="permission" data-permission="{{permissions}}"></span>
|
{{!
|
||||||
<div class="row">
|
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
<div class="col-md-12">
|
|
||||||
<!-- content -->
|
WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
<div id="config-save-form" class="container col-centered wr-content">
|
Version 2.0 (the "License"); you may not use this file except
|
||||||
<br>
|
in compliance with the License.
|
||||||
Device Notifications
|
You may obtain a copy of the License at
|
||||||
<br>
|
|
||||||
<br>
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
<div class="wr-advance-operations">
|
|
||||||
<div class="row no-gutter">
|
Unless required by applicable law or agreed to in writing,
|
||||||
<div class="wr-hidden-operations-nav col-lg-4">
|
software distributed under the License is distributed on an
|
||||||
<a id="unReadNotifications" href="javascript:void(0)" onclick="showAdvanceOperation('unread', this)" class="selected">
|
"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.
|
||||||
|
}}
|
||||||
|
<span id="permission" data-permission="{{permissions}}"></span>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<!-- content -->
|
||||||
|
<div id="config-save-form" class="container col-centered wr-content">
|
||||||
|
<br>
|
||||||
|
Device Notifications
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<div class="wr-advance-operations">
|
||||||
|
<div class="row no-gutter">
|
||||||
|
<div class="wr-hidden-operations-nav col-lg-4">
|
||||||
|
<a id="unReadNotifications" href="javascript:void(0)"
|
||||||
|
onclick="showAdvanceOperation('unread', this)" class="selected">
|
||||||
<span class="wr-hidden-operations-icon fw-stack">
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
<i class="fw fw-mail fw-stack-2x"></i>
|
<i class="fw fw-mail fw-stack-2x"></i>
|
||||||
</span>
|
</span>
|
||||||
Unread
|
Unread
|
||||||
</a>
|
</a>
|
||||||
<a id="allNotifications" href="javascript:void(0)" onclick="showAdvanceOperation('all', this)">
|
<a id="allNotifications" href="javascript:void(0)" onclick="showAdvanceOperation('all', this)">
|
||||||
<span class="wr-hidden-operations-icon fw-stack">
|
<span class="wr-hidden-operations-icon fw-stack">
|
||||||
<i class="fw fw-forum fw-stack-2x"></i>
|
<i class="fw fw-forum fw-stack-2x"></i>
|
||||||
</span>
|
</span>
|
||||||
All Notifications
|
All Notifications
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="wr-hidden-operations-content col-lg-8" id="ast-container">
|
<div class="wr-hidden-operations-content col-lg-8" id="ast-container">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
No unread messages
|
No unread messages
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /content -->
|
|
||||||
</div>
|
</div>
|
||||||
|
<!-- /content -->
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
<script id="notification-listing" data-current-user="{{currentUser.username}}" data-image-resource="{{self.publicURL}}/images/" src="{{self.publicURL}}/templates/notification-listing.hbs" type="text/x-handlebars-template" ></script>
|
<script id="notification-listing" data-current-user="{{currentUser.username}}"
|
||||||
|
data-image-resource="{{self.publicURL}}/images/" src="{{self.publicURL}}/templates/notification-listing.hbs"
|
||||||
|
type="text/x-handlebars-template"></script>
|
||||||
{{js "js/notification-listing.js"}}
|
{{js "js/notification-listing.js"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<!-- content -->
|
<!-- content -->
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="container col-centered wr-content policy-platform">
|
<div class="container col-centered wr-content policy-platform">
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
<div class="row wr-device-board">
|
<div class="row wr-device-board">
|
||||||
<div class="col-lg-12 wr-secondary-bar">
|
<div class="col-lg-12 wr-secondary-bar">
|
||||||
<span class="page-sub-title">
|
<span class="page-sub-title">
|
||||||
|
|||||||
@ -1,94 +1,114 @@
|
|||||||
<!-- content/body -->
|
{{!
|
||||||
<div class="row">
|
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
<div class="col-md-12">
|
|
||||||
|
|
||||||
<!-- content -->
|
WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
<div id="role-create-form" class="container col-centered wr-content">
|
Version 2.0 (the "License"); you may not use this file except
|
||||||
<div class="wr-form">
|
in compliance with the License.
|
||||||
<p class="page-sub-title">Add Role</p>
|
You may obtain a copy of the License at
|
||||||
<hr/>
|
|
||||||
<div class="row">
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
<div class="col-lg-8">
|
|
||||||
<div class="wr-steps">
|
Unless required by applicable law or agreed to in writing,
|
||||||
<div class="col-md-6 col-xs-6">
|
software distributed under the License is distributed on an
|
||||||
<div class="itm-wiz itm-wiz-current" data-step="policy-platform">
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
<div class="wiz-no">1</div>
|
KIND, either express or implied. See the License for the
|
||||||
<div class="wiz-lbl hidden-xs"><span>Add a role</span></div>
|
specific language governing permissions and limitations
|
||||||
</div>
|
under the License.
|
||||||
<br class="c-both"/>
|
}}
|
||||||
|
<!-- content/body -->
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
|
||||||
|
<!-- content -->
|
||||||
|
<div id="role-create-form" class="container col-centered wr-content">
|
||||||
|
<div class="wr-form">
|
||||||
|
<p class="page-sub-title">Add Role</p>
|
||||||
|
<hr />
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<div class="wr-steps">
|
||||||
|
<div class="col-md-6 col-xs-6">
|
||||||
|
<div class="itm-wiz itm-wiz-current" data-step="policy-platform">
|
||||||
|
<div class="wiz-no">1</div>
|
||||||
|
<div class="wiz-lbl hidden-xs"><span>Add a role</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 col-xs-6">
|
<br class="c-both" />
|
||||||
<div class="itm-wiz" data-step="policy-profile">
|
</div>
|
||||||
<div class="wiz-no">2</div>
|
<div class="col-md-6 col-xs-6">
|
||||||
<div class="wiz-lbl hidden-xs"><span>Assign permissions</span></div>
|
<div class="itm-wiz" data-step="policy-profile">
|
||||||
</div>
|
<div class="wiz-no">2</div>
|
||||||
<br class="c-both"/>
|
<div class="wiz-lbl hidden-xs"><span>Assign permissions</span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<br class="c-both" />
|
||||||
<br/><br/><hr/>
|
|
||||||
<div id="role-create-error-msg" class="alert alert-danger hidden" role="alert">
|
|
||||||
<i class="icon fw fw-error"></i><span></span>
|
|
||||||
</div>
|
|
||||||
<label class="wr-input-label">Domain *</label>
|
|
||||||
|
|
||||||
<div class="wr-input-control">
|
|
||||||
<select id="domain" class="form-control select">
|
|
||||||
<option>PRIMARY</option>
|
|
||||||
{{#each userStores}}
|
|
||||||
<option>{{this}}</option>
|
|
||||||
{{/each}}
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<label class="wr-input-label">
|
|
||||||
Role Name *
|
|
||||||
</label>
|
|
||||||
<br>
|
|
||||||
<label class="wr-input-label">
|
|
||||||
( {{roleNameHelpText}} )
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<div id="roleNameField" class="form-group wr-input-control">
|
|
||||||
<input type="text" id="rolename" data-regex="{{roleNameJSRegEx}}"
|
|
||||||
data-errormsg="{{roleNameRegExViolationErrorMsg}}" class="form-control"/>
|
|
||||||
<span class=" rolenameError hidden glyphicon glyphicon-remove form-control-feedback"></span>
|
|
||||||
<label class="error rolenameEmpty hidden" for="summary">Role name is required & Should be in minimum 3 characters long and do not include any whitespaces. </label>
|
|
||||||
</div>
|
|
||||||
<label class="wr-input-label">
|
|
||||||
User list
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<div class="wr-input-control">
|
|
||||||
<select id="users" class="form-control select2" multiple="multiple">
|
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<br /><br />
|
||||||
|
<hr />
|
||||||
|
<div id="role-create-error-msg" class="alert alert-danger hidden" role="alert">
|
||||||
|
<i class="icon fw fw-error"></i><span></span>
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label">Domain *</label>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<select id="domain" class="form-control select">
|
||||||
|
<option>PRIMARY</option>
|
||||||
|
{{#each userStores}}
|
||||||
|
<option>{{this}}</option>
|
||||||
|
{{/each}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label">
|
||||||
|
Role Name *
|
||||||
|
</label>
|
||||||
|
<br>
|
||||||
|
<label class="wr-input-label">
|
||||||
|
( {{roleNameHelpText}} )
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<div id="roleNameField" class="form-group wr-input-control">
|
||||||
|
<input type="text" id="rolename" data-regex="{{roleNameJSRegEx}}"
|
||||||
|
data-errormsg="{{roleNameRegExViolationErrorMsg}}" class="form-control" />
|
||||||
|
<span class=" rolenameError hidden glyphicon glyphicon-remove form-control-feedback"></span>
|
||||||
|
<label class="error rolenameEmpty hidden" for="summary">Role name is required & Should be in
|
||||||
|
minimum 3 characters long and do not
|
||||||
|
include any whitespaces. </label>
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label">
|
||||||
|
User list
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<div class="wr-input-control">
|
||||||
|
<select id="users" class="form-control select2" multiple="multiple">
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
|
||||||
<button id="add-role-btn" class="wr-btn">Add Role</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
<br>
|
||||||
|
<button id="add-role-btn" class="wr-btn">Add Role</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="role-created-msg" class="container col-centered wr-content hidden">
|
</div>
|
||||||
<div class="wr-form">
|
<div id="role-created-msg" class="container col-centered wr-content hidden">
|
||||||
<p class="page-sub-title">Role was added successfully.</p>
|
<div class="wr-form">
|
||||||
<br>Please click <b>"Add Another Role"</b>, if you wish to add another role or click
|
<p class="page-sub-title">Role was added successfully.</p>
|
||||||
<b>"View Role List"</b> to complete the process and go back to the role list.
|
<br>Please click <b>"Add Another Role"</b>, if you wish to add another role or click
|
||||||
<hr />
|
<b>"View Role List"</b> to complete the process and go back to the role list.
|
||||||
<button class="wr-btn" onclick="window.location.href='{{@app.context}}/roles'">
|
<hr />
|
||||||
View Role List
|
<button class="wr-btn" onclick="window.location.href='{{@app.context}}/roles'">
|
||||||
</button>
|
View Role List
|
||||||
<a href="{{@app.context}}/roles/add-role" class="cu-btn-inner">
|
</button>
|
||||||
|
<a href="{{@app.context}}/roles/add-role" class="cu-btn-inner">
|
||||||
<span class="fw-stack">
|
<span class="fw-stack">
|
||||||
<i class="fw fw-ring fw-stack-2x"></i>
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
<i class="fw fw-add fw-stack-1x"></i>
|
<i class="fw fw-add fw-stack-1x"></i>
|
||||||
</span>
|
</span>
|
||||||
Add Another Role
|
Add Another Role
|
||||||
</a>
|
</a>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- /content -->
|
|
||||||
</div>
|
</div>
|
||||||
|
<!-- /content -->
|
||||||
</div>
|
</div>
|
||||||
<!-- /content/body -->
|
</div>
|
||||||
|
<!-- /content/body -->
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
{{js "js/bottomJs.js"}}
|
{{js "js/bottomJs.js"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|||||||
@ -1,73 +1,92 @@
|
|||||||
<!-- content/body -->
|
{{!
|
||||||
<div class="row">
|
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
<div class="col-md-12">
|
|
||||||
<!-- content -->
|
WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
<div id="role-create-form" class="container col-centered wr-content">
|
Version 2.0 (the "License"); you may not use this file except
|
||||||
<div class="wr-form">
|
in compliance with the License.
|
||||||
<p class="page-sub-title">Change Role permissions</p>
|
You may obtain a copy of the License at
|
||||||
<p>Please note that * sign represents required fields of data.</p>
|
|
||||||
<div class="wr-steps hidden" id="role_wizard_header">
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
<hr/>
|
|
||||||
<div class="col-md-4 col-xs-6">
|
Unless required by applicable law or agreed to in writing,
|
||||||
<div class="itm-wiz" data-step="policy-platform">
|
software distributed under the License is distributed on an
|
||||||
<div class="wiz-no">1</div>
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
<div class="wiz-lbl hidden-xs"><span>Add a role</span></div>
|
KIND, either express or implied. See the License for the
|
||||||
</div>
|
specific language governing permissions and limitations
|
||||||
<br class="c-both"/>
|
under the License.
|
||||||
</div>
|
}}
|
||||||
<div class="col-md-4 col-xs-6">
|
<!-- content/body -->
|
||||||
<div class="itm-wiz itm-wiz-current" data-step="policy-profile">
|
<div class="row">
|
||||||
<div class="wiz-no">2</div>
|
<div class="col-md-12">
|
||||||
<div class="wiz-lbl hidden-xs"><span>Assign permissions</span></div>
|
<!-- content -->
|
||||||
</div>
|
<div id="role-create-form" class="container col-centered wr-content">
|
||||||
<br class="c-both"/>
|
<div class="wr-form">
|
||||||
</div>
|
<p class="page-sub-title">Change Role permissions</p>
|
||||||
<br/><br/>
|
<p>Please note that * sign represents required fields of data.</p>
|
||||||
</div>
|
<div class="wr-steps hidden" id="role_wizard_header">
|
||||||
<hr/>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-8">
|
|
||||||
<div id="role-create-error-msg" class="alert alert-danger hidden" role="alert">
|
|
||||||
<i class="icon fw fw-error"></i><span></span>
|
|
||||||
</div>
|
|
||||||
<div id="permissionList" class="well" data-currentrole="{{roleName}}">
|
|
||||||
<div id="loading-content" class="col-centered">
|
|
||||||
<i class="fw fw-settings fw-spin fw-2x"></i>
|
|
||||||
Loading permissions list . . .
|
|
||||||
<br>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<br>
|
|
||||||
<button id="update-permissions-btn" class="wr-btn">Update Role Permissions</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="role-created-msg" class="container col-centered wr-content hidden">
|
|
||||||
<div class="wr-form">
|
|
||||||
<p class="page-sub-title">Permissions were assigned to the role successfully.</p>
|
|
||||||
<br>Please click <b>"Add Another Role"</b>, if you wish to add another role or click
|
|
||||||
<b>"View Role List"</b> to complete the process and go back to the role list.
|
|
||||||
<hr />
|
<hr />
|
||||||
<button class="wr-btn" onclick="window.location.href='{{@app.context}}/roles'">
|
<div class="col-md-4 col-xs-6">
|
||||||
View Role List
|
<div class="itm-wiz" data-step="policy-platform">
|
||||||
</button>
|
<div class="wiz-no">1</div>
|
||||||
<a href="{{@app.context}}/roles/add-role" class="cu-btn-inner">
|
<div class="wiz-lbl hidden-xs"><span>Add a role</span></div>
|
||||||
|
</div>
|
||||||
|
<br class="c-both" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-xs-6">
|
||||||
|
<div class="itm-wiz itm-wiz-current" data-step="policy-profile">
|
||||||
|
<div class="wiz-no">2</div>
|
||||||
|
<div class="wiz-lbl hidden-xs"><span>Assign permissions</span></div>
|
||||||
|
</div>
|
||||||
|
<br class="c-both" />
|
||||||
|
</div>
|
||||||
|
<br /><br />
|
||||||
|
</div>
|
||||||
|
<hr />
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<div id="role-create-error-msg" class="alert alert-danger hidden" role="alert">
|
||||||
|
<i class="icon fw fw-error"></i><span></span>
|
||||||
|
</div>
|
||||||
|
<div id="permissionList" class="well" data-currentrole="{{roleName}}">
|
||||||
|
<div id="loading-content" class="col-centered">
|
||||||
|
<i class="fw fw-settings fw-spin fw-2x"></i>
|
||||||
|
Loading permissions list . . .
|
||||||
|
<br>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<button id="update-permissions-btn" class="wr-btn">Update Role Permissions</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="role-created-msg" class="container col-centered wr-content hidden">
|
||||||
|
<div class="wr-form">
|
||||||
|
<p class="page-sub-title">Permissions were assigned to the role successfully.</p>
|
||||||
|
<br>Please click <b>"Add Another Role"</b>, if you wish to add another role or click
|
||||||
|
<b>"View Role List"</b> to complete the process and go back to the role list.
|
||||||
|
<hr />
|
||||||
|
<button class="wr-btn" onclick="window.location.href='{{@app.context}}/roles'">
|
||||||
|
View Role List
|
||||||
|
</button>
|
||||||
|
<a href="{{@app.context}}/roles/add-role" class="cu-btn-inner">
|
||||||
<span class="fw-stack">
|
<span class="fw-stack">
|
||||||
<i class="fw fw-ring fw-stack-2x"></i>
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
<i class="fw fw-add fw-stack-1x"></i>
|
<i class="fw fw-add fw-stack-1x"></i>
|
||||||
</span>
|
</span>
|
||||||
Add Another Role
|
Add Another Role
|
||||||
</a>
|
</a>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- /content -->
|
|
||||||
</div>
|
</div>
|
||||||
|
<!-- /content -->
|
||||||
</div>
|
</div>
|
||||||
<!-- /content/body -->
|
</div>
|
||||||
|
<!-- /content/body -->
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
<script id="list-partial" src="{{@unit.publicUri}}/templates/list-partial.hbs" type="text/x-handlebars-template" ></script>
|
<script id="list-partial" src="{{@unit.publicUri}}/templates/list-partial.hbs"
|
||||||
<script id="tree-template" src="{{@unit.publicUri}}/templates/tree-template.hbs" type="text/x-handlebars-template" ></script>
|
type="text/x-handlebars-template"></script>
|
||||||
|
<script id="tree-template" src="{{@unit.publicUri}}/templates/tree-template.hbs"
|
||||||
|
type="text/x-handlebars-template"></script>
|
||||||
{{js "js/bottomJs.js"}}
|
{{js "js/bottomJs.js"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|
||||||
|
|||||||
@ -1,68 +1,89 @@
|
|||||||
<!-- content/body -->
|
{{!
|
||||||
<div class="row">
|
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
<div class="col-md-12">
|
|
||||||
<!-- content -->
|
WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
<div id="role-create-form" class="container col-centered wr-content">
|
Version 2.0 (the "License"); you may not use this file except
|
||||||
<div class="wr-form">
|
in compliance with the License.
|
||||||
<p class="page-sub-title">Edit Role</p>
|
You may obtain a copy of the License at
|
||||||
<p>Please note that * sign represents required fields of data.</p>
|
|
||||||
<hr />
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-8">
|
Unless required by applicable law or agreed to in writing,
|
||||||
<div id="role-create-error-msg" class="alert alert-danger hidden" role="alert">
|
software distributed under the License is distributed on an
|
||||||
<i class="icon fw fw-error"></i><span></span>
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
</div>
|
KIND, either express or implied. See the License for the
|
||||||
<label class="wr-input-label">Domain *</label>
|
specific language governing permissions and limitations
|
||||||
<div class="wr-input-control">
|
under the License.
|
||||||
<select id="domain" class="form-control select">
|
}}
|
||||||
<option>PRIMARY</option>
|
<!-- content/body -->
|
||||||
{{#each userStores}}
|
<div class="row">
|
||||||
<option>{{this}}</option>
|
<div class="col-md-12">
|
||||||
{{/each}}
|
<!-- content -->
|
||||||
</select>
|
<div id="role-create-form" class="container col-centered wr-content">
|
||||||
</div>
|
<div class="wr-form">
|
||||||
<label class="wr-input-label">
|
<p class="page-sub-title">Edit Role</p>
|
||||||
Role Name *
|
<p>Please note that * sign represents required fields of data.</p>
|
||||||
</label>
|
<hr />
|
||||||
<br>
|
<div class="row">
|
||||||
<label class="wr-input-label" id="roleNameValidationText">
|
<div class="col-lg-8">
|
||||||
( {{roleNameHelpText}} )
|
<div id="role-create-error-msg" class="alert alert-danger hidden" role="alert">
|
||||||
</label>
|
<i class="icon fw fw-error"></i><span></span>
|
||||||
<div id="roleNameField" class="form-group wr-input-control">
|
</div>
|
||||||
<input type="text" id="rolename" data-regex="{{roleNameJSRegEx}}" data-errormsg="{{roleNameRegExViolationErrorMsg}}" class="form-control" data-currentrole="{{role.roleName}}"
|
<label class="wr-input-label">Domain *</label>
|
||||||
value="{{role.roleName}}"/>
|
<div class="wr-input-control">
|
||||||
<span class=" rolenameError hidden glyphicon glyphicon-remove form-control-feedback"></span>
|
<select id="domain" class="form-control select">
|
||||||
<label class="error rolenameEmpty hidden" for="summary">Role name is required & Should be in minimum 3 characters long and do not include any whitespaces. </label>
|
<option>PRIMARY</option>
|
||||||
</div>
|
{{#each userStores}}
|
||||||
|
<option>{{this}}</option>
|
||||||
|
{{/each}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<label class="wr-input-label">
|
||||||
|
Role Name *
|
||||||
|
</label>
|
||||||
|
<br>
|
||||||
|
<label class="wr-input-label" id="roleNameValidationText">
|
||||||
|
( {{roleNameHelpText}} )
|
||||||
|
</label>
|
||||||
|
<div id="roleNameField" class="form-group wr-input-control">
|
||||||
|
<input type="text" id="rolename" data-regex="{{roleNameJSRegEx}}"
|
||||||
|
data-errormsg="{{roleNameRegExViolationErrorMsg}}" class="form-control"
|
||||||
|
data-currentrole="{{role.roleName}}"
|
||||||
|
value="{{role.roleName}}" />
|
||||||
|
<span class=" rolenameError hidden glyphicon glyphicon-remove form-control-feedback"></span>
|
||||||
|
<label class="error rolenameEmpty hidden" for="summary">Role name is required & Should be in
|
||||||
|
minimum 3 characters long and do not
|
||||||
|
include any whitespaces. </label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
|
||||||
<button id="add-role-btn" class="wr-btn">Update Role</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
<br>
|
||||||
|
<button id="add-role-btn" class="wr-btn">Update Role</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="role-created-msg" class="container col-centered wr-content hidden">
|
</div>
|
||||||
<div class="wr-form">
|
<div id="role-created-msg" class="container col-centered wr-content hidden">
|
||||||
<p class="page-sub-title">Role was updated successfully.</p>
|
<div class="wr-form">
|
||||||
<br>Please click <b>"View Updated Role"</b>, if you wish to view the updated role or click
|
<p class="page-sub-title">Role was updated successfully.</p>
|
||||||
<b>"View Role List"</b> to complete the process and go back to the role list.
|
<br>Please click <b>"View Updated Role"</b>, if you wish to view the updated role or click
|
||||||
<hr />
|
<b>"View Role List"</b> to complete the process and go back to the role list.
|
||||||
<button class="wr-btn" onclick="window.location.href='{{@app.context}}/roles'">
|
<hr />
|
||||||
View Role List
|
<button class="wr-btn" onclick="window.location.href='{{@app.context}}/roles'">
|
||||||
</button>
|
View Role List
|
||||||
<a href="{{@app.context}}/roles/edit-role/{{role.roleName}}"
|
</button>
|
||||||
class="cu-btn-inner">
|
<a href="{{@app.context}}/roles/edit-role/{{role.roleName}}"
|
||||||
|
class="cu-btn-inner">
|
||||||
<span class="fw-stack">
|
<span class="fw-stack">
|
||||||
<i class="fw fw-ring fw-stack-2x"></i>
|
<i class="fw fw-ring fw-stack-2x"></i>
|
||||||
<i class="fw fw-add fw-stack-1x"></i>
|
<i class="fw fw-add fw-stack-1x"></i>
|
||||||
</span>
|
</span>
|
||||||
View Updated Role
|
View Updated Role
|
||||||
</a>
|
</a>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- /content -->
|
|
||||||
</div>
|
</div>
|
||||||
|
<!-- /content -->
|
||||||
</div>
|
</div>
|
||||||
<!-- /content/body -->
|
</div>
|
||||||
|
<!-- /content/body -->
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
{{js "js/bottomJs.js"}}
|
{{js "js/bottomJs.js"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|||||||
@ -1,122 +1,140 @@
|
|||||||
<div id="loading-content" class="col-centered">
|
{{!
|
||||||
{{#if removePermitted}}
|
Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
<input type="hidden" id="can-remove" value="true"/>
|
|
||||||
{{/if}}
|
WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
{{#if editPermitted}}
|
Version 2.0 (the "License"); you may not use this file except
|
||||||
<input type="hidden" id="can-edit" value="true"/>
|
in compliance with the License.
|
||||||
{{/if}}
|
You may obtain a copy of the License at
|
||||||
<i class="fw fw-settings fw-spin fw-2x"></i>
|
|
||||||
Loading roles . . .
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
<br>
|
|
||||||
</div>
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
<div id="role-listing-status" class="raw">
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
<ul style="list-style-type: none;">
|
KIND, either express or implied. See the License for the
|
||||||
<li class="message message-info" >
|
specific language governing permissions and limitations
|
||||||
<h4>
|
under the License.
|
||||||
<i class="icon fw fw-info"></i>
|
}}
|
||||||
<a id="role-listing-status-msg"></a>
|
<div id="loading-content" class="col-centered">
|
||||||
</h4>
|
{{#if removePermitted}}
|
||||||
</li>
|
<input type="hidden" id="can-remove" value="true" />
|
||||||
</ul>
|
{{/if}}
|
||||||
</div>
|
{{#if editPermitted}}
|
||||||
|
<input type="hidden" id="can-edit" value="true" />
|
||||||
<div id="role-table" data-role={{adminRole}}>
|
{{/if}}
|
||||||
<table class="table table-striped table-hover list-table display responsive nowrap data-table row-view"
|
<i class="fw fw-settings fw-spin fw-2x"></i>
|
||||||
id="role-grid">
|
Loading roles . . .
|
||||||
<thead>
|
<br>
|
||||||
<tr class="sort-row">
|
</div>
|
||||||
<th class="no-sort"></th>
|
|
||||||
<th>By Role Name</th>
|
<div id="role-listing-status" class="raw">
|
||||||
<th class="no-sort"></th>
|
<ul style="list-style-type: none;">
|
||||||
</tr>
|
<li class="message message-info">
|
||||||
<tr class="filter-row filter-box">
|
<h4>
|
||||||
<th colspan="2">
|
<i class="icon fw fw-info"></i>
|
||||||
<label class="wr-input-label" for="search-by-name">
|
<a id="role-listing-status-msg"></a>
|
||||||
By Role Name
|
</h4>
|
||||||
</label>
|
</li>
|
||||||
<input id="search-by-name" type="text" class="form-control" placeholder="Search By Role Name">
|
</ul>
|
||||||
</th>
|
</div>
|
||||||
<th style="vertical-align:bottom;">
|
|
||||||
<button id="search-btn" class="wr-btn">
|
<div id="role-table" data-role={{adminRole}}>
|
||||||
Search
|
<table class="table table-striped table-hover list-table display responsive nowrap data-table row-view"
|
||||||
</button>
|
id="role-grid">
|
||||||
</th>
|
<thead>
|
||||||
</tr>
|
<tr class="sort-row">
|
||||||
<tr class="bulk-action-row">
|
<th class="no-sort"></th>
|
||||||
<th colspan="3"></th>
|
<th>By Role Name</th>
|
||||||
</tr>
|
<th class="no-sort"></th>
|
||||||
</thead>
|
</tr>
|
||||||
<tbody id="ast-container" data-app-context="{{appContext}}">
|
<tr class="filter-row filter-box">
|
||||||
<br class="c-both"/>
|
<th colspan="2">
|
||||||
</tbody>
|
<label class="wr-input-label" for="search-by-name">
|
||||||
</table>
|
By Role Name
|
||||||
</div>
|
</label>
|
||||||
<br class="c-both"/>
|
<input id="search-by-name" type="text" class="form-control" placeholder="Search By Role Name">
|
||||||
<div id="content-filter-types" style="display: none">
|
</th>
|
||||||
<div class="sort-title">Sort By</div>
|
<th style="vertical-align:bottom;">
|
||||||
<div class="sort-options">
|
<button id="search-btn" class="wr-btn">
|
||||||
<th>By Role name</th>
|
Search
|
||||||
</div>
|
</button>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr class="bulk-action-row">
|
||||||
|
<th colspan="3"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="ast-container" data-app-context="{{appContext}}">
|
||||||
|
<br class="c-both" />
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<br class="c-both" />
|
||||||
|
<div id="content-filter-types" style="display: none">
|
||||||
|
<div class="sort-title">Sort By</div>
|
||||||
|
<div class="sort-options">
|
||||||
|
<th>By Role name</th>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="remove-role-modal-content" class="hide">
|
<div id="remove-role-modal-content" class="hide">
|
||||||
<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>Do you really want to remove this role ?</h3>
|
<h3>Do you really want to remove this role ?</h3>
|
||||||
|
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="#" id="remove-role-yes-link" class="btn-operations">
|
<a href="#" id="remove-role-yes-link" class="btn-operations">
|
||||||
Remove
|
Remove
|
||||||
</a>
|
</a>
|
||||||
<a href="#" id="remove-role-cancel-link" class="btn-operations">
|
<a href="#" id="remove-role-cancel-link" class="btn-operations">
|
||||||
Cancel
|
Cancel
|
||||||
</a>
|
</a>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="remove-role-success-content" class="hide">
|
<div id="remove-role-success-content" class="hide">
|
||||||
<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>Done. Role was successfully removed.</h3>
|
<h3>Done. Role was successfully removed.</h3>
|
||||||
|
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="#" id="remove-role-success-link" class="btn-operations">
|
<a href="#" id="remove-role-success-link" class="btn-operations">
|
||||||
Ok
|
Ok
|
||||||
</a>
|
</a>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="remove-role-error-content" class="hide">
|
<div id="remove-role-error-content" class="hide">
|
||||||
<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>An unexpected error occurred. Please try again later.</h3>
|
<h3>An unexpected error occurred. Please try again later.</h3>
|
||||||
|
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a href="#" id="remove-role-error-link" class="btn-operations">
|
<a href="#" id="remove-role-error-link" class="btn-operations">
|
||||||
Ok
|
Ok
|
||||||
</a>
|
</a>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
{{#zone "common-navigation"}}
|
{{#zone "common-navigation"}}
|
||||||
<!--Later add the navigation menu from here-->
|
<!--Later add the navigation menu from here-->
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
<script id="role-listing" data-current-user="{{currentUser.username}}" src="{{@unit.publicUri}}/templates/role-listing.hbs" type="text/x-handlebars-template" ></script>
|
<script id="role-listing" data-current-user="{{currentUser.username}}"
|
||||||
|
src="{{@unit.publicUri}}/templates/role-listing.hbs" type="text/x-handlebars-template"></script>
|
||||||
{{js "js/role-listing.js"}}
|
{{js "js/role-listing.js"}}
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var clientJsAppContext = "{{{@app.context}}}";
|
var clientJsAppContext = "{{{@app.context}}}";
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "contentTitle"}}
|
{{#zone "contentTitle"}}
|
||||||
<div class="row wr-device-board">
|
<div class="row wr-device-board">
|
||||||
<div class="col-lg-12 wr-secondary-bar">
|
<div class="col-lg-12 wr-secondary-bar">
|
||||||
|
|||||||
@ -1 +1,18 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "productName"}}CDMF BASE APP{{/zone}}
|
{{#zone "productName"}}CDMF BASE APP{{/zone}}
|
||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "userMenu-items"}}
|
{{#zone "userMenu-items"}}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{@app.context}}/logout">Logout</a>
|
<a href="{{@app.context}}/logout">Logout</a>
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "navMenu-icon"}}
|
{{#zone "navMenu-icon"}}
|
||||||
<span class="icon fw-stack"><i class="fw fw-tiles fw-stack-1x"></i></span>
|
<span class="icon fw-stack"><i class="fw fw-tiles fw-stack-1x"></i></span>
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "topCss" override=false}}
|
{{#zone "topCss" override=false}}
|
||||||
{{css "css/custom-theme.css"}}
|
{{css "css/custom-theme.css"}}
|
||||||
{{css "css/custom-common.css"}}
|
{{css "css/custom-common.css"}}
|
||||||
|
|||||||
@ -1 +1,18 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "title"}}{{@unit.params.pageTitle}} | {{@app.conf.appName}}{{/zone}}
|
{{#zone "title"}}{{@unit.params.pageTitle}} | {{@app.conf.appName}}{{/zone}}
|
||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "title"}}Error | {{@app.conf.appName}}{{/zone}}
|
{{#zone "title"}}Error | {{@app.conf.appName}}{{/zone}}
|
||||||
|
|
||||||
{{#zone "breadcrumbs"}}
|
{{#zone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "title"}}Sign In | {{@app.conf.appName}}{{/zone}}
|
{{#zone "title"}}Sign In | {{@app.conf.appName}}{{/zone}}
|
||||||
|
|
||||||
{{~#zone "content"}}
|
{{~#zone "content"}}
|
||||||
|
|||||||
@ -1 +1,18 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{! This template won't be rendered. So nothing is here }}
|
{{! This template won't be rendered. So nothing is here }}
|
||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "title"}}Sign In | {{@app.conf.appName}}{{/zone}}
|
{{#zone "title"}}Sign In | {{@app.conf.appName}}{{/zone}}
|
||||||
|
|
||||||
{{unit "uuf.unit.theme"}}
|
{{unit "uuf.unit.theme"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
<div {{#if @unit.params.id}}id="{{@unit.params.id}}" {{/if~}}
|
<div {{#if @unit.params.id}}id="{{@unit.params.id}}" {{/if~}}
|
||||||
class="alert alert-{{@unit.params.type}}" role="alert">
|
class="alert alert-{{@unit.params.type}}" role="alert">
|
||||||
<i class="icon fw fw-{{icon}}"></i>
|
<i class="icon fw fw-{{icon}}"></i>
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "favicon"}}
|
{{#zone "favicon"}}
|
||||||
<link rel="shortcut icon" href="{{@unit.publicUri}}/img/favicon.png" />
|
<link rel="shortcut icon" href="{{@unit.publicUri}}/img/favicon.png" />
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "footer"}}
|
{{#zone "footer"}}
|
||||||
<p>
|
<p>
|
||||||
WSO2 | © 2015
|
WSO2 | © 2015
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "brand"}}
|
{{#zone "brand"}}
|
||||||
<a href="{{#defineZone "productUri"}}{{@app.context}}/{{/defineZone}}">
|
<a href="{{#defineZone "productUri"}}{{@app.context}}/{{/defineZone}}">
|
||||||
<img src="{{@unit.publicUri}}/img/logo.png" alt="{{defineZone "productName"}}"
|
<img src="{{@unit.publicUri}}/img/logo.png" alt="{{defineZone "productName"}}"
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "userMenu"}}
|
{{#zone "userMenu"}}
|
||||||
<a href="#" class="dropdown" data-toggle="dropdown">
|
<a href="#" class="dropdown" data-toggle="dropdown">
|
||||||
<span class="hidden-xs add-padding-left-3x">
|
<span class="hidden-xs add-padding-left-3x">
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "header"}}
|
{{#zone "header"}}
|
||||||
<header class="header header-default">
|
<header class="header header-default">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "topCss"}}
|
{{#zone "topCss"}}
|
||||||
{{~css "data-tables_1.10.7/extensions/Bootstrap/css/dataTables.bootstrap.css"}}
|
{{~css "data-tables_1.10.7/extensions/Bootstrap/css/dataTables.bootstrap.css"}}
|
||||||
{{~css "data-tables_1.10.7/extensions/Responsive/css/dataTables.responsive.css"}}
|
{{~css "data-tables_1.10.7/extensions/Responsive/css/dataTables.responsive.css"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "topCss"}}
|
{{#zone "topCss"}}
|
||||||
<!-- Select2 CSS -->
|
<!-- Select2 CSS -->
|
||||||
{{~css "select2_4.0.0/css/select2.min.css"}}
|
{{~css "select2_4.0.0/css/select2.min.css"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "topCss"}}
|
{{#zone "topCss"}}
|
||||||
{{~css "css/validation-style.css"}}
|
{{~css "css/validation-style.css"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "topCss"}}
|
{{#zone "topCss"}}
|
||||||
{{~css "select2_4.0.0/css/select2.min.css"}}
|
{{~css "select2_4.0.0/css/select2.min.css"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "bottomJs"}}
|
{{#zone "bottomJs"}}
|
||||||
<!-- Jquery Resize JS -->
|
<!-- Jquery Resize JS -->
|
||||||
{{~js "jquery-resize_0.5.3/jquery.resize.js"}}
|
{{~js "jquery-resize_0.5.3/jquery.resize.js"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
<li {{#if @unit.params.id}}id="{{@unit.params.id}}" {{/if~}}
|
<li {{#if @unit.params.id}}id="{{@unit.params.id}}" {{/if~}}
|
||||||
class="message message-{{@unit.params.type}}">
|
class="message message-{{@unit.params.type}}">
|
||||||
<h4><i class="icon fw fw-{{icon}}"></i> {{@unit.params.title}}</h4>
|
<h4><i class="icon fw fw-{{icon}}"></i> {{@unit.params.title}}</h4>
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
<div {{#if @unit.params.id}}id="{{@unit.params.id}}" {{/if~}}
|
<div {{#if @unit.params.id}}id="{{@unit.params.id}}" {{/if~}}
|
||||||
class="message message-{{@unit.params.type}}">
|
class="message message-{{@unit.params.type}}">
|
||||||
<h4><i class="icon fw fw-{{icon}}"></i>{{@unit.params.title}}</h4>
|
<h4><i class="icon fw fw-{{icon}}"></i>{{@unit.params.title}}</h4>
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "navbarCollapsableLeftItems"}}
|
{{#zone "navbarCollapsableLeftItems"}}
|
||||||
{{defineZone "navbarActions"}}
|
{{defineZone "navbarActions"}}
|
||||||
{{/zone}}
|
{{/zone}}
|
||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "navbarHeader"}}
|
{{#zone "navbarHeader"}}
|
||||||
<ol id="_uuf-breadcrumbs" class="breadcrumb navbar-brand {{defineZone "breadcrumbs-class" scope="protected"}}" style="{{defineZone "breadcrumbs-style" scope="protected"}}">
|
<ol id="_uuf-breadcrumbs" class="breadcrumb navbar-brand {{defineZone "breadcrumbs-class" scope="protected"}}" style="{{defineZone "breadcrumbs-style" scope="protected"}}">
|
||||||
{{defineZone "breadcrumbs"}}
|
{{defineZone "breadcrumbs"}}
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
{{!
|
||||||
|
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.
|
||||||
|
}}
|
||||||
{{#zone "navbarHeader"}}
|
{{#zone "navbarHeader"}}
|
||||||
<a id="_uuf-navmenu-button" class="navbar-menu-toggle" data-toggle="collapse"
|
<a id="_uuf-navmenu-button" class="navbar-menu-toggle" data-toggle="collapse"
|
||||||
data-target="#_uuf-navmenu-items" aria-expanded="false" aria-controls="_uuf-navmenu-items">
|
data-target="#_uuf-navmenu-items" aria-expanded="false" aria-controls="_uuf-navmenu-items">
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user