mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge branch 'release-2.0.x' of https://github.com/wso2/carbon-device-mgt into release-2.0.x
This commit is contained in:
commit
f25e82f4ec
@ -27,7 +27,15 @@ import org.wso2.carbon.apimgt.webapp.publisher.config.APIResource;
|
||||
import org.wso2.carbon.apimgt.webapp.publisher.config.APIResourceConfiguration;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.DELETE;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.HttpMethod;
|
||||
import javax.ws.rs.OPTIONS;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.PUT;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.lang.annotation.Annotation;
|
||||
|
||||
@ -21,7 +21,7 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
|
||||
class ExtendedFileProtocolIteratorFactory implements DirectoryIteratorFactory {
|
||||
final class ExtendedFileProtocolIteratorFactory implements DirectoryIteratorFactory {
|
||||
|
||||
private static final String ENCODING_SCHEME = "UTF-8";
|
||||
|
||||
|
||||
@ -21,8 +21,6 @@ import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.bouncycastle.asn1.ASN1Encodable;
|
||||
import org.bouncycastle.asn1.ASN1InputStream;
|
||||
import org.bouncycastle.asn1.ASN1Primitive;
|
||||
import org.bouncycastle.asn1.pkcs.Attribute;
|
||||
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
|
||||
import org.bouncycastle.asn1.x500.RDN;
|
||||
@ -65,13 +63,13 @@ import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
|
||||
import javax.security.auth.x500.X500Principal;
|
||||
import javax.xml.bind.DatatypeConverter;
|
||||
import java.io.*;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.math.BigInteger;
|
||||
import java.security.*;
|
||||
import java.security.cert.Certificate;
|
||||
import java.security.cert.*;
|
||||
import java.security.spec.InvalidKeySpecException;
|
||||
import java.security.spec.PKCS8EncodedKeySpec;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
|
||||
@ -115,6 +115,10 @@
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>maven-scr-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.felix</groupId>
|
||||
<artifactId>maven-bundle-plugin</artifactId>
|
||||
|
||||
@ -201,8 +201,8 @@
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
<groupId>org.json.wso2</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-codec.wso2</groupId>
|
||||
|
||||
@ -29,14 +29,29 @@ import java.util.List;
|
||||
"role or devices the application is associated with.")
|
||||
public class ApplicationWrapper {
|
||||
|
||||
@ApiModelProperty(name = "userNameList", value = "List of user names.", required = true)
|
||||
@ApiModelProperty(
|
||||
name = "userNameList",
|
||||
value = "List of user names.",
|
||||
required = true)
|
||||
private List<String> userNameList;
|
||||
@ApiModelProperty(name = "roleNameList", value = "List of role names.", required = true)
|
||||
|
||||
@ApiModelProperty(
|
||||
name = "roleNameList",
|
||||
value = "List of role names.",
|
||||
required = true)
|
||||
private List<String> roleNameList;
|
||||
@ApiModelProperty(name = "deviceIdentifiers", value = "List of device identifiers.", required = true,
|
||||
|
||||
@ApiModelProperty(
|
||||
name = "deviceIdentifiers",
|
||||
value = "List of device identifiers.",
|
||||
required = true,
|
||||
dataType = "List[org.wso2.carbon.device.mgt.common.DeviceIdentifier]")
|
||||
private List<DeviceIdentifier> deviceIdentifiers;
|
||||
@ApiModelProperty(name = "application", value = "Details of the mobile application.", required = true)
|
||||
|
||||
@ApiModelProperty(
|
||||
name = "application",
|
||||
value = "Details of the mobile application.",
|
||||
required = true)
|
||||
private MobileApp application;
|
||||
|
||||
public MobileApp getApplication() {
|
||||
|
||||
@ -26,7 +26,9 @@ public class BasePaginatedResult {
|
||||
/**
|
||||
* Number of Resources returned.
|
||||
*/
|
||||
@ApiModelProperty(value = "Number of total resources.", example = "2")
|
||||
@ApiModelProperty(
|
||||
value = "Number of total resources.",
|
||||
example = "1")
|
||||
@JsonProperty("count")
|
||||
private int count;
|
||||
|
||||
|
||||
@ -25,9 +25,12 @@ import io.swagger.annotations.ApiModelProperty;
|
||||
public class OldPasswordResetWrapper extends PasswordResetWrapper{
|
||||
|
||||
/*
|
||||
Base64 encoded password
|
||||
*/
|
||||
@ApiModelProperty(name = "oldPassword", value = "Old password of the user.", required = true )
|
||||
Base64 encoded password
|
||||
*/
|
||||
@ApiModelProperty(
|
||||
name = "oldPassword",
|
||||
value = "Old password of the user.",
|
||||
required = true )
|
||||
private String oldPassword;
|
||||
|
||||
public String getOldPassword() {
|
||||
|
||||
@ -27,8 +27,11 @@ public class PasswordResetWrapper {
|
||||
/*
|
||||
Base64 encoded password
|
||||
*/
|
||||
@ApiModelProperty(name = "newPassword", value = "New password of the user.", required = true,
|
||||
example = "JiM&100%pW")
|
||||
@ApiModelProperty(
|
||||
name = "newPassword",
|
||||
value = "New password of the user.",
|
||||
required = true,
|
||||
example = "JiM&100%pW")
|
||||
private String newPassword;
|
||||
|
||||
public String getNewPassword() {
|
||||
|
||||
@ -30,49 +30,71 @@ import java.util.List;
|
||||
+ "Wrappers")
|
||||
public class PolicyWrapper {
|
||||
|
||||
@ApiModelProperty(name = "policyName", value = "The name of the policy", required = true)
|
||||
@ApiModelProperty(
|
||||
name = "policyName",
|
||||
value = "The name of the policy",
|
||||
required = true)
|
||||
@Size(max = 45)
|
||||
private String policyName;
|
||||
|
||||
@ApiModelProperty(name = "description", value = "Gives a description on the policy", required = true)
|
||||
@ApiModelProperty(
|
||||
name = "description",
|
||||
value = "Gives a description on the policy",
|
||||
required = true)
|
||||
@Size(max = 1000)
|
||||
private String description;
|
||||
|
||||
@ApiModelProperty(name = "compliance", value = "Provides the non-compliance rules. WSO2 EMM provides the"
|
||||
+ " following non-compliance rules:\n"
|
||||
@ApiModelProperty(
|
||||
name = "compliance",
|
||||
value = "Provides the non-compliance rules. WSO2 EMM provides the following non-compliance rules:\n"
|
||||
+ "Enforce - Forcefully enforce the policies on the devices\n"
|
||||
+ "Warning - If the device does not adhere to the given policies a warning message will be sent\n"
|
||||
+ "Monitor - If the device does not adhere to the given policies the server is notified of the "
|
||||
+ "violation unknown to the user and the administrator can take the necessary actions with regard"
|
||||
+ " to the reported", required = true)
|
||||
+ " to the reported",
|
||||
required = true)
|
||||
@Size(max = 100)
|
||||
private String compliance;
|
||||
|
||||
@ApiModelProperty(name = "ownershipType", value = "The policy ownership type. It can be any of the "
|
||||
+ "following values:\n"
|
||||
@ApiModelProperty(
|
||||
name = "ownershipType",
|
||||
value = "The policy ownership type. It can be any of the following values:\n"
|
||||
+ "ANY - The policy will be applied on the BYOD and COPE device types\n"
|
||||
+ "BYOD (Bring Your Own Device) - The policy will only be applied on the BYOD device type\n"
|
||||
+ "COPE (Corporate-Owned, Personally-Enabled) - The policy will only be applied on the COPE "
|
||||
+ "device type", required = true)
|
||||
+ "device type",
|
||||
required = true)
|
||||
@Size(max = 45)
|
||||
private String ownershipType;
|
||||
|
||||
@ApiModelProperty(name = "active", value = "If the value is true it indicates that the policy is active. "
|
||||
+ "If the value is false it indicates that the policy is inactive", required = true)
|
||||
@ApiModelProperty(
|
||||
name = "active",
|
||||
value = "If the value is true it indicates that the policy is active. If the value is false it "
|
||||
+ "indicates that the policy is inactive",
|
||||
required = true)
|
||||
private boolean active;
|
||||
|
||||
@ApiModelProperty(name = "profile", value = "Contains the details of the profile that is included in the"
|
||||
+ " policy", required = true)
|
||||
@ApiModelProperty(
|
||||
name = "profile",
|
||||
value = "Contains the details of the profile that is included in the policy",
|
||||
required = true)
|
||||
private Profile profile;
|
||||
|
||||
@ApiModelProperty(name = "roles", value = "The roles to whom the policy is applied on", required = true)
|
||||
@ApiModelProperty(
|
||||
name = "roles",
|
||||
value = "The roles to whom the policy is applied on",
|
||||
required = true)
|
||||
private List<String> roles;
|
||||
|
||||
@ApiModelProperty(name = "deviceIdentifiers", value = "Lists out the devices the policy is enforced on",
|
||||
@ApiModelProperty(
|
||||
name = "deviceIdentifiers",
|
||||
value = "Lists out the devices the policy is enforced on",
|
||||
required = true)
|
||||
private List<DeviceIdentifier> deviceIdentifiers;
|
||||
|
||||
@ApiModelProperty(name = "users", value = "Lists out the users on whose devices the policy is enforced",
|
||||
@ApiModelProperty(
|
||||
name = "users",
|
||||
value = "Lists out the users on whose devices the policy is enforced",
|
||||
required = true)
|
||||
private List<String> users;
|
||||
|
||||
|
||||
@ -29,6 +29,7 @@ import io.swagger.annotations.ApiParam;
|
||||
import io.swagger.annotations.ApiResponse;
|
||||
import io.swagger.annotations.ApiResponses;
|
||||
import io.swagger.annotations.ResponseHeader;
|
||||
import org.json.JSONObject;
|
||||
import org.wso2.carbon.apimgt.annotations.api.Scope;
|
||||
import org.wso2.carbon.apimgt.annotations.api.Scopes;
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
@ -330,20 +331,21 @@ public interface DeviceManagementService {
|
||||
@HeaderParam("If-Modified-Since")
|
||||
String ifModifiedSince);
|
||||
|
||||
//device delete request would looks like follows
|
||||
//DELETE devices/type/virtual_firealarm/id/us06ww93auzp
|
||||
@DELETE
|
||||
@Path("/type/{device-type}/id/{device-id}")
|
||||
//device rename request would looks like follows
|
||||
//POST devices/type/virtual_firealarm/id/us06ww93auzp/rename
|
||||
@POST
|
||||
@Path("/type/{device-type}/id/{device-id}/rename")
|
||||
@ApiOperation(
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "DELETE",
|
||||
value = "Delete the device specified by device id",
|
||||
notes = "Returns the status of the deleted device operation.",
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "POST",
|
||||
value = "Update the device specified by device id",
|
||||
notes = "Returns the status of the updated device operation.",
|
||||
tags = "Device Management",
|
||||
extensions = {
|
||||
@Extension(properties = {
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:devices:delete")
|
||||
})
|
||||
@Extension(properties = {
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:devices:update")
|
||||
})
|
||||
}
|
||||
)
|
||||
@ApiResponses(
|
||||
@ -383,7 +385,81 @@ public interface DeviceManagementService {
|
||||
"Server error occurred while retrieving information requested device.",
|
||||
response = ErrorResponse.class)
|
||||
})
|
||||
//TODO need to introduce delete permission
|
||||
Response renameDevice(
|
||||
@ApiParam(
|
||||
name = "device",
|
||||
value = "The payload containing new name for device with updated name.",
|
||||
required = true)
|
||||
Device device,
|
||||
@ApiParam(
|
||||
name = "device-type",
|
||||
value = "The device type, such as ios, android or windows.",
|
||||
required = true)
|
||||
@PathParam("device-type")
|
||||
@Size(max = 45)
|
||||
String deviceType,
|
||||
@ApiParam(
|
||||
name = "device-id",
|
||||
value = "The device identifier of the device.",
|
||||
required = true)
|
||||
@PathParam("device-id")
|
||||
@Size(max = 45)
|
||||
String deviceId);
|
||||
|
||||
//device remove request would looks like follows
|
||||
//DELETE devices/type/virtual_firealarm/id/us06ww93auzp
|
||||
@DELETE
|
||||
@Path("/type/{device-type}/id/{device-id}")
|
||||
@ApiOperation(
|
||||
produces = MediaType.APPLICATION_JSON,
|
||||
consumes = MediaType.APPLICATION_JSON,
|
||||
httpMethod = "DELETE",
|
||||
value = "Remove the device specified by device id",
|
||||
notes = "Returns the status of the deleted device operation.",
|
||||
tags = "Device Management",
|
||||
extensions = {
|
||||
@Extension(properties = {
|
||||
@ExtensionProperty(name = Constants.SCOPE, value = "perm:devices:delete")
|
||||
})
|
||||
}
|
||||
)
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
code = 200,
|
||||
message = "OK. \n Successfully deleted the device.",
|
||||
response = Device.class,
|
||||
responseHeaders = {
|
||||
@ResponseHeader(
|
||||
name = "Content-Type",
|
||||
description = "The content type of the body"),
|
||||
@ResponseHeader(
|
||||
name = "ETag",
|
||||
description = "Entity Tag of the response resource.\n" +
|
||||
"Used by caches, or in conditional requests."),
|
||||
@ResponseHeader(
|
||||
name = "Last-Modified",
|
||||
description = "Date and time the resource has been modified the last time.\n" +
|
||||
"Used by caches, or in conditional requests."),
|
||||
}),
|
||||
@ApiResponse(
|
||||
code = 304,
|
||||
message = "Not Modified. Empty body because the client already has the latest " +
|
||||
"version of the requested resource."),
|
||||
@ApiResponse(
|
||||
code = 400,
|
||||
message = "Bad Request. \n Invalid request or validation error.",
|
||||
response = ErrorResponse.class),
|
||||
@ApiResponse(
|
||||
code = 404,
|
||||
message = "Not Found. \n No device is found under the provided type and id.",
|
||||
response = ErrorResponse.class),
|
||||
@ApiResponse(
|
||||
code = 500,
|
||||
message = "Internal Server Error. \n " +
|
||||
"Server error occurred while retrieving information requested device.",
|
||||
response = ErrorResponse.class)
|
||||
})
|
||||
Response deleteDevice(
|
||||
@ApiParam(
|
||||
name = "device-type",
|
||||
@ -391,15 +467,14 @@ public interface DeviceManagementService {
|
||||
required = true)
|
||||
@PathParam("device-type")
|
||||
@Size(max = 45)
|
||||
String deviceType,
|
||||
String deviceType,
|
||||
@ApiParam(
|
||||
name = "device-id",
|
||||
value = "The device identifier of the device.",
|
||||
required = true)
|
||||
@PathParam("device-id")
|
||||
@Size(max = 45)
|
||||
String deviceId);
|
||||
|
||||
String deviceId);
|
||||
|
||||
@GET
|
||||
@Path("/{type}/{id}/features")
|
||||
|
||||
@ -21,13 +21,22 @@ package org.wso2.carbon.device.mgt.jaxrs.service.impl;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.context.CarbonContext;
|
||||
import org.wso2.carbon.device.mgt.common.*;
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.Feature;
|
||||
import org.wso2.carbon.device.mgt.common.FeatureManager;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
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.authorization.DeviceAccessAuthorizationException;
|
||||
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService;
|
||||
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.policy.mgt.Policy;
|
||||
import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.NonComplianceData;
|
||||
import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.PolicyComplianceException;
|
||||
import org.wso2.carbon.device.mgt.common.search.SearchContext;
|
||||
import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderService;
|
||||
import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService;
|
||||
@ -40,15 +49,20 @@ import org.wso2.carbon.device.mgt.jaxrs.beans.OperationList;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.DeviceManagementService;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.RequestValidationUtil;
|
||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||
import org.wso2.carbon.device.mgt.common.policy.mgt.Policy;
|
||||
import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.NonComplianceData;
|
||||
import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.PolicyComplianceException;
|
||||
import org.wso2.carbon.policy.mgt.core.PolicyManagerService;
|
||||
import org.wso2.carbon.utils.multitenancy.MultitenantUtils;
|
||||
|
||||
import javax.validation.constraints.Size;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.DELETE;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.HeaderParam;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import java.text.ParseException;
|
||||
@ -225,14 +239,47 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
||||
@Override
|
||||
@Path("/type/{device-type}/id/{device-id}")
|
||||
public Response deleteDevice(@PathParam("device-type") String deviceType, @PathParam("device-id") String deviceId) {
|
||||
|
||||
log.info("Deleting " + deviceType + " " + deviceId + "is not supported");
|
||||
DeviceManagementProviderService deviceManagementProviderService =
|
||||
DeviceMgtAPIUtils.getDeviceManagementService();
|
||||
try {
|
||||
return Response.status(Response.Status.BAD_REQUEST).entity("{Deleting device(s) is not supported}").build();
|
||||
} catch (Exception e) {
|
||||
String msg = "Error occurred while deleting device(s)";
|
||||
log.error(msg, e);
|
||||
return Response.serverError().entity(new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()).build();
|
||||
DeviceIdentifier deviceIdentifier = new DeviceIdentifier(deviceId, deviceType);
|
||||
Device persistedDevice = deviceManagementProviderService.getDevice(deviceIdentifier);
|
||||
if (persistedDevice == null) {
|
||||
return Response.status(Response.Status.NOT_FOUND).build();
|
||||
}
|
||||
|
||||
boolean response = deviceManagementProviderService.disenrollDevice(deviceIdentifier);
|
||||
return Response.status(Response.Status.OK).entity(response).build();
|
||||
|
||||
} catch (DeviceManagementException e) {
|
||||
String msg = "Error encountered while deleting device of type : " + deviceType + " and " +
|
||||
"ID : " + deviceId;
|
||||
log.error(msg);
|
||||
return Response.status(Response.Status.BAD_REQUEST).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setMessage(msg).build()
|
||||
).build();
|
||||
}
|
||||
}
|
||||
|
||||
@POST
|
||||
@Override
|
||||
@Path("/type/{device-type}/id/{device-id}/rename")
|
||||
public Response renameDevice(Device device, @PathParam("device-type") String deviceType,
|
||||
@PathParam("device-id") String deviceId) {
|
||||
DeviceManagementProviderService deviceManagementProviderService = DeviceMgtAPIUtils.getDeviceManagementService();
|
||||
try {
|
||||
Device persistedDevice = deviceManagementProviderService.getDevice(new DeviceIdentifier
|
||||
(deviceId, deviceType));
|
||||
persistedDevice.setName(device.getName());
|
||||
boolean response = deviceManagementProviderService.modifyEnrollment(persistedDevice);
|
||||
return Response.status(Response.Status.CREATED).entity(response).build();
|
||||
|
||||
} catch (DeviceManagementException e) {
|
||||
log.error("Error encountered while updating device of type : " + deviceType + " and " +
|
||||
"ID : " + deviceId);
|
||||
return Response.status(Response.Status.BAD_REQUEST).entity(
|
||||
new ErrorResponse.ErrorResponseBuilder().setMessage("Error while updating " +
|
||||
"device of type " + deviceType + " and ID : " + deviceId).build()).build();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -404,10 +404,15 @@ public class RoleManagementServiceImpl implements RoleManagementService {
|
||||
// Get all role permissions
|
||||
final UIPermissionNode rolePermissions = this.getAllRolePermissions(roleName, userRealm);
|
||||
List<String> permissions = new ArrayList<String>();
|
||||
final UIPermissionNode emmRolePermissions = (UIPermissionNode)this.getRolePermissions(roleName);
|
||||
List<String> emmConsolePermissions = new ArrayList<String>();
|
||||
this.getAuthorizedPermissions(emmRolePermissions, emmConsolePermissions);
|
||||
emmConsolePermissions.removeAll(new ArrayList<String>(Arrays.asList(roleInfo.getPermissions())));
|
||||
this.getAuthorizedPermissions(rolePermissions, permissions);
|
||||
for (String permission : roleInfo.getPermissions()) {
|
||||
permissions.add(permission);
|
||||
}
|
||||
permissions.removeAll(emmConsolePermissions);
|
||||
String [] allApplicablePerms = new String[permissions.size()];
|
||||
allApplicablePerms = permissions.toArray(allApplicablePerms);
|
||||
roleInfo.setPermissions(allApplicablePerms);
|
||||
|
||||
@ -27,7 +27,15 @@ import org.wso2.carbon.apimgt.api.model.Scope;
|
||||
import org.wso2.carbon.device.mgt.common.permission.mgt.Permission;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.DELETE;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.HttpMethod;
|
||||
import javax.ws.rs.OPTIONS;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.PUT;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.Produces;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.lang.annotation.Annotation;
|
||||
@ -332,7 +340,7 @@ public class AnnotationProcessor {
|
||||
* @param servletContext
|
||||
* @return null if cannot determin /WEB-INF/classes
|
||||
*/
|
||||
public static URL findWebInfClassesPath(ServletContext servletContext) {
|
||||
private static URL findWebInfClassesPath(ServletContext servletContext) {
|
||||
String path = servletContext.getRealPath("/WEB-INF/classes");
|
||||
if (path == null) return null;
|
||||
File fp = new File(path);
|
||||
|
||||
@ -26,7 +26,10 @@ import org.wso2.carbon.device.mgt.common.TransactionManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.UnsupportedDatabaseEngineException;
|
||||
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
|
||||
import org.wso2.carbon.device.mgt.core.config.datasource.JNDILookupDefinition;
|
||||
import org.wso2.carbon.device.mgt.core.dao.impl.*;
|
||||
import org.wso2.carbon.device.mgt.core.dao.impl.ApplicationDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.dao.impl.ApplicationMappingDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.dao.impl.DeviceTypeDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.dao.impl.EnrollmentDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.dao.impl.device.GenericDeviceDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.dao.impl.device.OracleDeviceDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.dao.impl.device.PostgreSQLDeviceDAOImpl;
|
||||
@ -34,8 +37,6 @@ import org.wso2.carbon.device.mgt.core.dao.impl.device.SQLServerDeviceDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
|
||||
import org.wso2.carbon.device.mgt.core.device.details.mgt.dao.DeviceDetailsDAO;
|
||||
import org.wso2.carbon.device.mgt.core.device.details.mgt.dao.impl.DeviceDetailsDAOImpl;
|
||||
import org.wso2.carbon.device.mgt.core.search.mgt.dao.SearchDAO;
|
||||
import org.wso2.carbon.device.mgt.core.search.mgt.dao.impl.SearchDAOImpl;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.sql.Connection;
|
||||
@ -135,10 +136,6 @@ public class DeviceManagementDAOFactory {
|
||||
return new DeviceDetailsDAOImpl();
|
||||
}
|
||||
|
||||
public static SearchDAO getSearchDAO() {
|
||||
return new SearchDAOImpl();
|
||||
}
|
||||
|
||||
public static void init(DataSourceConfig config) {
|
||||
dataSource = resolveDataSource(config);
|
||||
try {
|
||||
|
||||
@ -1,29 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
|
||||
package org.wso2.carbon.device.mgt.core.search.mgt.dao;
|
||||
|
||||
|
||||
public interface SearchDAO {
|
||||
|
||||
// List<Device> searchDeviceDetailsTable(String query) throws SearchDAOException;
|
||||
//
|
||||
// List<Device> searchDevicePropertyTable(String query) throws SearchDAOException;
|
||||
|
||||
}
|
||||
@ -1,238 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
*
|
||||
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
|
||||
package org.wso2.carbon.device.mgt.core.search.mgt.dao.impl;
|
||||
|
||||
import org.wso2.carbon.device.mgt.core.search.mgt.dao.SearchDAO;
|
||||
|
||||
|
||||
public class SearchDAOImpl implements SearchDAO {
|
||||
//
|
||||
// private static final Log log = LogFactory.getLog(SearchDAOImpl.class);
|
||||
//
|
||||
// @Override
|
||||
// public List<Device> searchDeviceDetailsTable(String query) throws SearchDAOException {
|
||||
// if (log.isDebugEnabled()) {
|
||||
// log.debug("Query : " + query);
|
||||
// }
|
||||
// Connection conn;
|
||||
// PreparedStatement stmt = null;
|
||||
// ResultSet rs;
|
||||
// List<Device> devices = new ArrayList<>();
|
||||
// Map<Integer, Integer> devs = new HashMap<>();
|
||||
// try {
|
||||
// conn = this.getConnection();
|
||||
// stmt = conn.prepareStatement(query);
|
||||
// rs = stmt.executeQuery();
|
||||
// while (rs.next()) {
|
||||
// if (!devs.containsKey(rs.getInt("ID"))) {
|
||||
// Device device = new Device();
|
||||
// device.setId(rs.getInt("ID"));
|
||||
// device.setDescription(rs.getString("DESCRIPTION"));
|
||||
// device.setName("NAME");
|
||||
// device.setType(rs.getString("DEVICE_TYPE_NAME"));
|
||||
// device.setDeviceIdentifier(rs.getString("DEVICE_IDENTIFICATION"));
|
||||
//
|
||||
// DeviceIdentifier identifier = new DeviceIdentifier();
|
||||
// identifier.setType(rs.getString("DEVICE_TYPE_NAME"));
|
||||
// identifier.setId(rs.getString("DEVICE_IDENTIFICATION"));
|
||||
//
|
||||
// DeviceInfo deviceInfo = new DeviceInfo();
|
||||
// deviceInfo.setAvailableRAMMemory(rs.getDouble("AVAILABLE_RAM_MEMORY"));
|
||||
// deviceInfo.setBatteryLevel(rs.getDouble("BATTERY_LEVEL"));
|
||||
// deviceInfo.setConnectionType(rs.getString("CONNECTION_TYPE"));
|
||||
// deviceInfo.setCpuUsage(rs.getDouble("CPU_USAGE"));
|
||||
// deviceInfo.setDeviceModel(rs.getString("DEVICE_MODEL"));
|
||||
// deviceInfo.setExternalAvailableMemory(rs.getDouble("EXTERNAL_AVAILABLE_MEMORY"));
|
||||
// deviceInfo.setExternalTotalMemory(rs.getDouble("EXTERNAL_TOTAL_MEMORY"));
|
||||
// deviceInfo.setInternalAvailableMemory(rs.getDouble("INTERNAL_AVAILABLE_MEMORY"));
|
||||
// deviceInfo.setInternalTotalMemory(rs.getDouble("EXTERNAL_TOTAL_MEMORY"));
|
||||
// deviceInfo.setOsVersion(rs.getString("OS_VERSION"));
|
||||
// deviceInfo.setOsBuildDate(rs.getString("OS_BUILD_DATE"));
|
||||
// deviceInfo.setPluggedIn(rs.getBoolean("PLUGGED_IN"));
|
||||
// deviceInfo.setSsid(rs.getString("SSID"));
|
||||
// deviceInfo.setTotalRAMMemory(rs.getDouble("TOTAL_RAM_MEMORY"));
|
||||
// deviceInfo.setVendor(rs.getString("VENDOR"));
|
||||
// deviceInfo.setUpdatedTime(new java.util.Date(rs.getLong("UPDATE_TIMESTAMP")));
|
||||
//
|
||||
// DeviceLocation deviceLocation = new DeviceLocation();
|
||||
// deviceLocation.setLatitude(rs.getDouble("LATITUDE"));
|
||||
// deviceLocation.setLongitude(rs.getDouble("LONGITUDE"));
|
||||
// deviceLocation.setStreet1(rs.getString("STREET1"));
|
||||
// deviceLocation.setStreet2(rs.getString("STREET2"));
|
||||
// deviceLocation.setCity(rs.getString("CITY"));
|
||||
// deviceLocation.setState(rs.getString("STATE"));
|
||||
// deviceLocation.setZip(rs.getString("ZIP"));
|
||||
// deviceLocation.setCountry(rs.getString("COUNTRY"));
|
||||
// deviceLocation.setDeviceId(rs.getInt("ID"));
|
||||
// deviceLocation.setUpdatedTime(new java.util.Date(rs.getLong("DL_UPDATED_TIMESTAMP")));
|
||||
//
|
||||
// deviceInfo.setLocation(deviceLocation);
|
||||
// device.setDeviceInfo(deviceInfo);
|
||||
// devices.add(device);
|
||||
// devs.put(device.getId(), device.getId());
|
||||
// }
|
||||
// }
|
||||
// } catch (SQLException e) {
|
||||
// throw new SearchDAOException("Error occurred while acquiring the device details.", e);
|
||||
// } finally {
|
||||
// DeviceManagementDAOUtil.cleanupResources(stmt, null);
|
||||
// }
|
||||
//
|
||||
// this.fillPropertiesOfDevices(devices);
|
||||
//
|
||||
// if (log.isDebugEnabled()) {
|
||||
// log.debug("Number of the device returned from the query : " + devices.size());
|
||||
// }
|
||||
// return devices;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<Device> searchDevicePropertyTable(String query) throws SearchDAOException {
|
||||
// if (log.isDebugEnabled()) {
|
||||
// log.debug("Query : " + query);
|
||||
// }
|
||||
//
|
||||
// Connection conn;
|
||||
// PreparedStatement stmt = null;
|
||||
// ResultSet rs;
|
||||
// List<Device> devices = new ArrayList<>();
|
||||
// Map<Integer, Integer> devs = new HashMap<>();
|
||||
// try {
|
||||
// conn = this.getConnection();
|
||||
// stmt = conn.prepareStatement(query);
|
||||
// rs = stmt.executeQuery();
|
||||
// while (rs.next()) {
|
||||
// if (!devs.containsKey(rs.getInt("ID"))) {
|
||||
// Device device = new Device();
|
||||
// device.setId(rs.getInt("ID"));
|
||||
// device.setDescription(rs.getString("DESCRIPTION"));
|
||||
// device.setName(rs.getString("NAME"));
|
||||
// device.setType(rs.getString("DEVICE_TYPE_NAME"));
|
||||
// device.setDeviceIdentifier(rs.getString("DEVICE_IDENTIFICATION"));
|
||||
//
|
||||
// DeviceIdentifier identifier = new DeviceIdentifier();
|
||||
// identifier.setType(rs.getString("DEVICE_TYPE_NAME"));
|
||||
// identifier.setId(rs.getString("DEVICE_IDENTIFICATION"));
|
||||
//
|
||||
// DeviceInfo deviceInfo = new DeviceInfo();
|
||||
// deviceInfo.setAvailableRAMMemory(rs.getDouble("AVAILABLE_RAM_MEMORY"));
|
||||
// deviceInfo.setBatteryLevel(rs.getDouble("BATTERY_LEVEL"));
|
||||
// deviceInfo.setConnectionType(rs.getString("CONNECTION_TYPE"));
|
||||
// deviceInfo.setCpuUsage(rs.getDouble("CPU_USAGE"));
|
||||
// deviceInfo.setDeviceModel(rs.getString("DEVICE_MODEL"));
|
||||
// deviceInfo.setExternalAvailableMemory(rs.getDouble("EXTERNAL_AVAILABLE_MEMORY"));
|
||||
// deviceInfo.setExternalTotalMemory(rs.getDouble("EXTERNAL_TOTAL_MEMORY"));
|
||||
// deviceInfo.setInternalAvailableMemory(rs.getDouble("INTERNAL_AVAILABLE_MEMORY"));
|
||||
// deviceInfo.setInternalTotalMemory(rs.getDouble("EXTERNAL_TOTAL_MEMORY"));
|
||||
// deviceInfo.setOsVersion(rs.getString("OS_VERSION"));
|
||||
// deviceInfo.setOsBuildDate(rs.getString("OS_BUILD_DATE"));
|
||||
// deviceInfo.setPluggedIn(rs.getBoolean("PLUGGED_IN"));
|
||||
// deviceInfo.setSsid(rs.getString("SSID"));
|
||||
// deviceInfo.setTotalRAMMemory(rs.getDouble("TOTAL_RAM_MEMORY"));
|
||||
// deviceInfo.setVendor(rs.getString("VENDOR"));
|
||||
// deviceInfo.setUpdatedTime(new java.util.Date(rs.getLong("UPDATE_TIMESTAMP")));
|
||||
//
|
||||
// DeviceLocation deviceLocation = new DeviceLocation();
|
||||
// deviceLocation.setLatitude(rs.getDouble("LATITUDE"));
|
||||
// deviceLocation.setLongitude(rs.getDouble("LONGITUDE"));
|
||||
// deviceLocation.setStreet1(rs.getString("STREET1"));
|
||||
// deviceLocation.setStreet2(rs.getString("STREET2"));
|
||||
// deviceLocation.setCity(rs.getString("CITY"));
|
||||
// deviceLocation.setState(rs.getString("STATE"));
|
||||
// deviceLocation.setZip(rs.getString("ZIP"));
|
||||
// deviceLocation.setCountry(rs.getString("COUNTRY"));
|
||||
// deviceLocation.setDeviceId(rs.getInt("ID"));
|
||||
// deviceLocation.setUpdatedTime(new java.util.Date(rs.getLong("DL_UPDATED_TIMESTAMP")));
|
||||
//
|
||||
// deviceInfo.setLocation(deviceLocation);
|
||||
// device.setDeviceInfo(deviceInfo);
|
||||
// devices.add(device);
|
||||
// devs.put(device.getId(), device.getId());
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// } catch (SQLException e) {
|
||||
// throw new SearchDAOException("Error occurred while aquiring the device details.", e);
|
||||
// } finally {
|
||||
// DeviceManagementDAOUtil.cleanupResources(stmt, null);
|
||||
// }
|
||||
//
|
||||
// this.fillPropertiesOfDevices(devices);
|
||||
//
|
||||
// if (log.isDebugEnabled()) {
|
||||
// log.debug("Number of the device returned from the query : " + devices.size());
|
||||
// }
|
||||
//
|
||||
// return devices;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// private Connection getConnection() throws SQLException {
|
||||
// return DeviceManagementDAOFactory.getConnection();
|
||||
// }
|
||||
//
|
||||
// private List<Device> fillPropertiesOfDevices(List<Device> devices) throws SearchDAOException {
|
||||
// if (devices.isEmpty()) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// Connection conn;
|
||||
// PreparedStatement stmt;
|
||||
// ResultSet rs;
|
||||
//
|
||||
// try {
|
||||
// conn = this.getConnection();
|
||||
// String query = "SELECT * FROM DM_DEVICE_INFO WHERE DEVICE_ID IN (?) ORDER BY DEVICE_ID ;";
|
||||
// stmt = conn.prepareStatement(query);
|
||||
// if (conn.getMetaData().getDatabaseProductName().contains("H2") ||
|
||||
// conn.getMetaData().getDatabaseProductName().contains("MySQL")) {
|
||||
// String inData = Utils.getDeviceIdsAsString(devices);
|
||||
// stmt.setString(1, inData);
|
||||
// } else {
|
||||
// Array array = conn.createArrayOf("INT", Utils.getArrayOfDeviceIds(devices));
|
||||
// stmt.setArray(1, array);
|
||||
// }
|
||||
// rs = stmt.executeQuery();
|
||||
//
|
||||
// DeviceInfo dInfo;
|
||||
// while (rs.next()) {
|
||||
// dInfo = this.getDeviceInfo(devices, rs.getInt("DEVICE_ID"));
|
||||
// dInfo.getDeviceDetailsMap().put(rs.getString("KEY_FIELD"), rs.getString("VALUE_FIELD"));
|
||||
// }
|
||||
// } catch (SQLException e) {
|
||||
// throw new SearchDAOException("Error occurred while retrieving the device properties.", e);
|
||||
// }
|
||||
// return devices;
|
||||
// }
|
||||
//
|
||||
// private DeviceInfo getDeviceInfo(List<Device> devices, int deviceId) {
|
||||
// for (Device device : devices) {
|
||||
// if (device.getId() == deviceId) {
|
||||
// if (device.getDeviceInfo() == null) {
|
||||
// device.setDeviceInfo(new DeviceInfo());
|
||||
// }
|
||||
// return device.getDeviceInfo();
|
||||
// }
|
||||
// }
|
||||
// return null;
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@ -23,12 +23,10 @@ import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest;
|
||||
import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager;
|
||||
import org.wso2.carbon.device.mgt.core.device.details.mgt.impl.DeviceInformationManagerImpl;
|
||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||
import org.wso2.carbon.device.mgt.core.search.util.Utils;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl;
|
||||
|
||||
|
||||
@ -39,7 +39,7 @@ import java.util.List;
|
||||
|
||||
public class SearchDevice extends BaseDeviceManagementTest {
|
||||
|
||||
private static final Log log = LogFactory.getLog(DeviceDetails.class);
|
||||
private static final Log log = LogFactory.getLog(SearchDevice.class);
|
||||
|
||||
@BeforeClass
|
||||
@Override
|
||||
|
||||
@ -1,8 +1,7 @@
|
||||
{
|
||||
"appContext": "/devicemgt/",
|
||||
"httpsURL" : "%https.ip%",
|
||||
"httpURL" : "%http.ip%",
|
||||
"httpsWebURL" : "%https.ip%",
|
||||
"httpsURL" : "https://localhost:8243",
|
||||
"httpURL" : "http://localhost:8280",
|
||||
"wssURL" : "https://localhost:9445",
|
||||
"wsURL" : "%http.ip%",
|
||||
"portalURL": "https://%server.ip%:9445",
|
||||
@ -13,7 +12,7 @@
|
||||
"iOSConfigRoot" : "%https.ip%/ios-enrollment/",
|
||||
"iOSAPIRoot" : "%https.ip%/ios/",
|
||||
"adminService": "%https.ip%",
|
||||
"gatewayEnabled": false,
|
||||
"gatewayEnabled": true,
|
||||
"oauthProvider": {
|
||||
"appRegistration": {
|
||||
"appType": "webapp",
|
||||
@ -90,6 +89,7 @@
|
||||
"perm:devices:operations",
|
||||
"perm:devices:search",
|
||||
"perm:devices:details",
|
||||
"perm:devices:update",
|
||||
"perm:devices:view",
|
||||
"perm:view-configuration",
|
||||
"perm:manage-configuration",
|
||||
|
||||
@ -674,6 +674,7 @@ var userModule = function () {
|
||||
*/
|
||||
publicMethods.getSecondaryUserStores = function () {
|
||||
var returnVal = [];
|
||||
// To call the userstore admin service, user needs to have admin permission
|
||||
if (publicMethods.isAuthorized("/permission/admin")) {
|
||||
var endpoint = devicemgtProps["adminService"] + constants["USER_STORE_CONFIG_ADMIN_SERVICE_END_POINT"];
|
||||
var wsPayload = "<xsd:getSecondaryRealmConfigurations xmlns:xsd='http://org.apache.axis2/xsd'/>";
|
||||
@ -682,7 +683,7 @@ var userModule = function () {
|
||||
wsPayload,
|
||||
endpoint,
|
||||
function (wsResponse) {
|
||||
var domainIDs = stringify(wsResponse.*::['return']. *::domainId.text());
|
||||
var domainIDs = stringify(wsResponse. * ::['return']. * ::domainId.text());
|
||||
if (domainIDs != "\"\"") {
|
||||
var regExpForSearch = new RegExp(constants["USER_STORES_NOISY_CHAR"], "g");
|
||||
domainIDs = domainIDs.replace(regExpForSearch, "");
|
||||
@ -692,11 +693,11 @@ var userModule = function () {
|
||||
log.error("Error retrieving secondary user stores", e);
|
||||
},
|
||||
constants["SOAP_VERSION"]);
|
||||
} else {
|
||||
} else {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("User does not have admin permission to get the secondary user store details.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return returnVal;
|
||||
};
|
||||
|
||||
|
||||
@ -730,7 +730,7 @@ function attachDeviceEvents() {
|
||||
var deviceId = $(this).data("deviceid");
|
||||
var deviceType = $(this).data("devicetype");
|
||||
var deviceName = $(this).data("devicename");
|
||||
var serviceURL = "/api/device-mgt/v1.0/devices/type/" + deviceType + "/id/" + deviceId;
|
||||
var serviceURL = "/api/device-mgt/v1.0/devices/type/" + deviceType + "/id/" + deviceId + "/rename";
|
||||
|
||||
$(modalPopupContent).html($('#edit-device-modal-content').html());
|
||||
$('#edit-device-name').val(deviceName);
|
||||
@ -738,7 +738,9 @@ function attachDeviceEvents() {
|
||||
|
||||
$("a#edit-device-yes-link").click(function () {
|
||||
var newDeviceName = $('#edit-device-name').val();
|
||||
invokerUtil.put(serviceURL, {"name": newDeviceName}, function (message) {
|
||||
var request = {};
|
||||
request['name'] = newDeviceName;
|
||||
invokerUtil.post(serviceURL, request, function (message) {
|
||||
$(modalPopupContent).html($('#edit-device-200-content').html());
|
||||
setTimeout(function () {
|
||||
hidePopup();
|
||||
|
||||
@ -68,10 +68,10 @@ $("a#invite-user-link").click(function () {
|
||||
modalDialog.showAsError();
|
||||
} else {
|
||||
modalDialog.header("");
|
||||
modalDialog.content("An invitation mail will be sent to the selected user(s) to initiate an enrolment process." +
|
||||
" Do you wish to continue ?");
|
||||
modalDialog.footer('<div class="buttons"> <a href="#" id="invite-user-yes-link" class="btn-operations">yes</a>' +
|
||||
'<a href="#" id="invite-user-cancel-link" class="btn-operations btn-default">No</a> </div>');
|
||||
modalDialog.content("An invitation mail will be sent to the selected user(s) to initiate an enrolment " +
|
||||
"process. Do you wish to continue ?");
|
||||
modalDialog.footer('<div class="buttons"><a href="#" id="invite-user-yes-link" class="btn-operations">yes</a>' +
|
||||
'<a href="#" id="invite-user-cancel-link" class="btn-operations btn-default">No</a></div>');
|
||||
modalDialog.show();
|
||||
|
||||
}
|
||||
@ -82,18 +82,18 @@ $("a#invite-user-link").click(function () {
|
||||
usernameList,
|
||||
function () {
|
||||
modalDialog.header("User invitation email for enrollment was successfully sent.");
|
||||
modalDialog.footer('<div class="buttons"> <a href="#" id="invite-user-success-link" ' +
|
||||
'class="btn-operations">Ok </a> </div>');
|
||||
modalDialog.footer('<div class="buttons"><a href="#" id="invite-user-success-link" ' +
|
||||
'class="btn-operations">Ok </a></div>');
|
||||
$("a#invite-user-success-link").click(function () {
|
||||
modalDialog.hide();
|
||||
});
|
||||
},
|
||||
function () {
|
||||
modalDialog.header('<span class="fw-stack"> <i class="fw fw-ring fw-stack-2x"></i> <i class="fw ' +
|
||||
'fw-error fw-stack-1x"></i> </span> Unexpected Error !');
|
||||
modalDialog.header('<span class="fw-stack"><i class="fw fw-ring fw-stack-2x"></i> <i class="fw ' +
|
||||
'fw-error fw-stack-1x"></i></span> Unexpected Error !');
|
||||
modalDialog.content('An unexpected error occurred. Try again later.');
|
||||
modalDialog.footer('<div class="buttons"> <a href="#" id="invite-user-error-link" ' +
|
||||
'class="btn-operations">Ok </a> </div>');
|
||||
modalDialog.footer('<div class="buttons"><a href="#" id="invite-user-error-link" ' +
|
||||
'class="btn-operations">Ok </a></div>');
|
||||
$("a#invite-user-error-link").click(function () {
|
||||
modalDialog.hide();
|
||||
});
|
||||
|
||||
@ -502,25 +502,34 @@ var module = {};
|
||||
// This is a logout response.
|
||||
module.logout(response);
|
||||
} else {
|
||||
// This is a login response.
|
||||
var ssoConfigs = getSsoConfigurations();
|
||||
var CarbonUtils = Packages.org.wso2.carbon.utils.CarbonUtils;
|
||||
var keyStorePassword = CarbonUtils.getServerConfiguration().getFirstProperty("Security.TrustStore.Password");
|
||||
var keyStoreName = CarbonUtils.getServerConfiguration().getFirstProperty("Security.TrustStore.Location");
|
||||
var identityAlias = ssoConfigs[constants.APP_CONF_AUTH_MODULE_SSO_IDENTITY_ALIAS];
|
||||
var keyStoreParams = {
|
||||
KEY_STORE_NAME: keyStoreName,
|
||||
KEY_STORE_PASSWORD: keyStorePassword,
|
||||
IDP_ALIAS: identityAlias
|
||||
};
|
||||
|
||||
if (!ssoClient.validateSamlResponse(samlResponseObj, ssoConfigs, keyStoreParams)) {
|
||||
var msg = "Invalid signature found in the SAML response.";
|
||||
log.error(msg);
|
||||
response.sendError(500, msg);
|
||||
return;
|
||||
}
|
||||
// This is a login response.
|
||||
var ssoConfigs = getSsoConfigurations();
|
||||
var CarbonUtils = Packages.org.wso2.carbon.utils.CarbonUtils;
|
||||
var keyStorePassword = CarbonUtils.getServerConfiguration().getFirstProperty("Security.TrustStore.Password");
|
||||
var keyStoreName = CarbonUtils.getServerConfiguration().getFirstProperty("Security.TrustStore.Location");
|
||||
var identityAlias = ssoConfigs[constants.APP_CONF_AUTH_MODULE_SSO_IDENTITY_ALIAS];
|
||||
var keyStoreParams = {
|
||||
KEY_STORE_NAME: keyStoreName,
|
||||
KEY_STORE_PASSWORD: keyStorePassword,
|
||||
IDP_ALIAS: identityAlias
|
||||
};
|
||||
var rsEnabled = ssoConfigs[constants.APP_CONF_AUTH_MODULE_SSO_RESPONSE_SIGNING_ENABLED];
|
||||
if (utils.parseBoolean(rsEnabled)) {
|
||||
if (!ssoClient.validateSignature(samlResponseObj, keyStoreParams)) {
|
||||
var msg = "Invalid signature found in the SAML response.";
|
||||
log.error(msg);
|
||||
response.sendError(500, msg);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!ssoClient.validateSamlResponse(samlResponseObj, ssoConfigs, keyStoreParams)) {
|
||||
var msg = "Invalid SAML response found.";
|
||||
log.error(msg);
|
||||
response.sendError(500, msg);
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* @type {{sessionId: string, loggedInUser: string, sessionIndex: string, samlToken:
|
||||
* string}}
|
||||
@ -531,10 +540,9 @@ var module = {};
|
||||
var ssoSessions = getSsoSessions();
|
||||
ssoSessions[ssoSession.sessionId] = ssoSession;
|
||||
if (ssoSession.sessionIndex) {
|
||||
module.loadTenant(ssoSession.loggedInUser);
|
||||
var carbonUser = (require("carbon")).server.tenantUser(ssoSession.loggedInUser);
|
||||
module.loadTenant(ssoSession.loggedInUser);
|
||||
utils.setCurrentUser(carbonUser.username, carbonUser.domain, carbonUser.tenantId);
|
||||
module.loadTenant(ssoSession.loggedInUser);
|
||||
var scriptArgument = {input: {samlToken: ssoSession.samlToken}, user: module.getCurrentUser()};
|
||||
handleEvent(OPERATION_LOGIN, EVENT_SUCCESS, scriptArgument);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user