mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Merge branch 'master' of https://github.com/wso2/carbon-device-mgt
This commit is contained in:
commit
2f2e8f391a
@ -28,7 +28,6 @@ var devicemgtProps = require('/app/conf/devicemgt-props.js').config();
|
|||||||
var userModule = require("/app/modules/user.js").userModule;
|
var userModule = require("/app/modules/user.js").userModule;
|
||||||
var serviceInvokers = require("/app/modules/backend-service-invoker.js").backendServiceInvoker;
|
var serviceInvokers = require("/app/modules/backend-service-invoker.js").backendServiceInvoker;
|
||||||
|
|
||||||
var CarbonUtils = Packages.org.wso2.carbon.utils.CarbonUtils;
|
|
||||||
var user = session.get(constants.USER_SESSION_KEY);
|
var user = session.get(constants.USER_SESSION_KEY);
|
||||||
var result;
|
var result;
|
||||||
|
|
||||||
@ -38,107 +37,41 @@ if (!user) {
|
|||||||
response.sendRedirect("/devicemgt/login?#login-required");
|
response.sendRedirect("/devicemgt/login?#login-required");
|
||||||
exit();
|
exit();
|
||||||
} else {
|
} else {
|
||||||
if (uriMatcher.match("/{context}/api/devices/sketch/download/{downloadId}")) {
|
if (uriMatcher.match("/{context}/api/devices/sketch/download")) {
|
||||||
downloadId = uriMatcher.elements().downloadId;
|
// works as a proxy to pass the relavant query string to back end api.
|
||||||
//Just download the already created zip archive
|
var queryString = request.getQueryString();
|
||||||
var sketchFolder = "repository/resources/sketches";
|
if (!queryString) {
|
||||||
var archivesPath = "file://" + CarbonUtils.getCarbonHome() + "/" + sketchFolder + "/archives/" +
|
queryString = "";
|
||||||
downloadId + ".zip";
|
|
||||||
var zipFile = new File(archivesPath);
|
|
||||||
response.addHeader('Content-type', "application/zip, application/octet-stream");
|
|
||||||
response.addHeader('Cache-Control', 'public,max-age=12960000');
|
|
||||||
response.addHeader("Content-Disposition", "attachment; filename=\"" + downloadId + ".zip\"");
|
|
||||||
|
|
||||||
try {
|
|
||||||
zipFile.open('r');
|
|
||||||
var stream = zipFile.getStream();
|
|
||||||
print(stream);
|
|
||||||
} catch (err) {
|
|
||||||
|
|
||||||
} finally {
|
|
||||||
if (zipFile != null) {
|
|
||||||
zipFile.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (uriMatcher.match("/{context}/api/devices/sketch/download")) {
|
|
||||||
//Create a new zip archive and register user calling endpoint
|
|
||||||
|
|
||||||
/* This should match with $CARBON_HOME/repository/resources/sketches/{sketchType} */
|
|
||||||
sketchType = request.getParameter("sketchType");
|
|
||||||
/* This should be registered device type of the CDMF(Connected Device Management Framework) */
|
|
||||||
deviceType = request.getParameter("deviceType");
|
|
||||||
deviceName = request.getParameter("deviceName");
|
|
||||||
|
|
||||||
if (!sketchType) {
|
|
||||||
log.error("Sketch Type is empty!");
|
|
||||||
// HTTP status code 400 refers to - Bad request.
|
|
||||||
result = 400;
|
|
||||||
} else {
|
} else {
|
||||||
/**
|
queryString = "?" + queryString;
|
||||||
URL: {serverURL}/{deviceType}/{downloadAgentUri}?owner={username}&deviceName={deviceName}
|
}
|
||||||
{serverURL} - devicemgt/app/conf/config.json
|
var deviceType = request.getParameter("deviceType"); // need a better solution here
|
||||||
{deviceType} - from the request
|
|
||||||
{downloadAgentUri} - device_type_specific_unit/private/conf/device-type.json
|
|
||||||
{username} - from request
|
|
||||||
{deviceName} - from request
|
|
||||||
**/
|
|
||||||
|
|
||||||
var sketchDownloadEndPoint = devicemgtProps["httpsURL"] + "/" + deviceType + "/devices/download";
|
|
||||||
deviceTypeConfig = utility.getDeviceTypeConfig(deviceType);
|
deviceTypeConfig = utility.getDeviceTypeConfig(deviceType);
|
||||||
|
|
||||||
if (deviceTypeConfig && deviceTypeConfig.deviceType.downloadAgentUri) {
|
if (deviceTypeConfig && deviceTypeConfig.deviceType.downloadAgentUri) {
|
||||||
sketchDownloadEndPoint = deviceTypeConfig.deviceType.downloadAgentUri;
|
sketchDownloadEndPoint = devicemgtProps["httpsURL"] + "/" + deviceTypeConfig.deviceType.downloadAgentUri;
|
||||||
|
serviceInvokers.HttpClient.get(sketchDownloadEndPoint + queryString, function (responsePayload, responseHeaders) {
|
||||||
|
if (responseHeaders) {
|
||||||
|
for (var i = 0; i < responseHeaders.length; i++) {
|
||||||
|
var header = responseHeaders[i]
|
||||||
|
var headerName = String(header.getName());
|
||||||
|
var headerValue = String(header.getValue());
|
||||||
|
response.addHeader(headerName, headerValue);
|
||||||
}
|
}
|
||||||
var tokenPair = session.get(constants.ACCESS_TOKEN_PAIR_IDENTIFIER);
|
var streamObject = new Stream(responsePayload);
|
||||||
if (tokenPair) {
|
print(streamObject);
|
||||||
response.addHeader(constants.AUTHORIZATION_HEADER, constants.BEARER_PREFIX + tokenPair.accessToken);
|
|
||||||
response.sendRedirect(sketchDownloadEndPoint + "?sketchType=" + sketchType + "&deviceName="
|
|
||||||
+ deviceName);
|
|
||||||
} else {
|
} else {
|
||||||
response.sendRedirect(devicemgtProps["httpsURL"] + "/devicemgt/login");
|
return responsePayload;
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
|
}, function (responsePayload) {
|
||||||
|
log.error(responsePayload)
|
||||||
|
var response = {};
|
||||||
|
response["status"] = "error";
|
||||||
|
return response;
|
||||||
}
|
}
|
||||||
|
);
|
||||||
} else if (uriMatcher.match("/{context}/api/devices/sketch/generate_link")) {
|
} else {
|
||||||
|
|
||||||
var contents = request.getContent();
|
|
||||||
sketchType = contents.sketchType;
|
|
||||||
deviceType = contents.deviceType;
|
|
||||||
deviceName = contents.deviceName;
|
|
||||||
generateLink = contents.generateLink;
|
|
||||||
|
|
||||||
if (!sketchType) {
|
|
||||||
log.error("Sketch Type is empty!");
|
|
||||||
// HTTP status code 400 refers to - Bad request.
|
|
||||||
result = 400;
|
result = 400;
|
||||||
} else {
|
|
||||||
|
|
||||||
/**
|
|
||||||
URL: {serverURL}/{deviceType}/{downloadAgentUri}?owner={username}&deviceName={deviceName}
|
|
||||||
{serverURL} - devicemgt/app/conf/config.json
|
|
||||||
{deviceType} - from the request
|
|
||||||
{downloadAgentUri} - device_type_specific_unit/private/conf/device-type.json
|
|
||||||
{username} - from request
|
|
||||||
{deviceName} - from request
|
|
||||||
**/
|
|
||||||
|
|
||||||
deviceManagerService = devicemgtProps["httpsURL"] + "/" + deviceType + "_mgt" + "/manager";
|
|
||||||
sketchGenerateLinkEndPoint = deviceManagerService + "/device/" + sketchType + "/generate_link";
|
|
||||||
var deviceTypeConfig = utility.getDeviceTypeConfig(deviceType);
|
|
||||||
//replace download endpoint
|
|
||||||
if (deviceTypeConfig && deviceTypeConfig.deviceType.downloadAgentLinkGenUri) {
|
|
||||||
sketchGenerateLinkEndPoint = devicemgtProps["httpsURL"] + "/" + deviceType + "_mgt" +
|
|
||||||
"/" + deviceTypeConfig.deviceType.downloadAgentLinkGenUri;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileId = get(sketchGenerateLinkEndPoint + "?owner=" + user.username + "&deviceName=" +
|
|
||||||
deviceName, null, "text");
|
|
||||||
result = "curl -k " + devicemgtProps["httpsURL"] + constants.WEB_APP_CONTEXT +
|
|
||||||
"/api/devices/sketch/download/" + fileId.data;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (uriMatcher.match("/{context}/api/devices/all")) {
|
} else if (uriMatcher.match("/{context}/api/devices/all")) {
|
||||||
result = deviceModule.getOwnDevices();
|
result = deviceModule.getOwnDevices();
|
||||||
|
|
||||||
|
|||||||
@ -162,21 +162,28 @@ var backendServiceInvoker = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if (payload) {
|
||||||
var stringRequestEntity = new StringRequestEntity(stringify(payload));
|
var stringRequestEntity = new StringRequestEntity(stringify(payload));
|
||||||
httpMethodObject.setRequestEntity(stringRequestEntity);
|
httpMethodObject.setRequestEntity(stringRequestEntity);
|
||||||
|
}
|
||||||
var client = new HttpClient();
|
var client = new HttpClient();
|
||||||
try {
|
try {
|
||||||
client.executeMethod(httpMethodObject);
|
client.executeMethod(httpMethodObject);
|
||||||
var status = httpMethodObject.getStatusCode();
|
var status = httpMethodObject.getStatusCode();
|
||||||
if (status == 200) {
|
if (status == 200) {
|
||||||
|
var responseContentTypeHeader = httpMethodObject.getResponseHeader(constants.CONTENT_TYPE_IDENTIFIER);
|
||||||
|
if (responseContentTypeHeader && responseContentTypeHeader.getValue() == constants.APPLICATION_ZIP) {
|
||||||
|
return successCallback(httpMethodObject.getResponseBodyAsStream(), httpMethodObject.getResponseHeaders());
|
||||||
|
} else {
|
||||||
return successCallback(httpMethodObject.getResponseBody());
|
return successCallback(httpMethodObject.getResponseBody());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return errorCallback(httpMethodObject.getResponseBody());
|
return errorCallback(httpMethodObject.getResponseBody());
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return errorCallback(response);
|
return errorCallback(response);
|
||||||
} finally {
|
} finally {
|
||||||
method.releaseConnection();
|
httpMethodObject.releaseConnection();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -62,6 +62,7 @@ var ACCESS_TOKEN_PAIR_IDENTIFIER = "accessTokenPair";
|
|||||||
var ENCODED_CLIENT_KEYS_IDENTIFIER = "encodedClientKey";
|
var ENCODED_CLIENT_KEYS_IDENTIFIER = "encodedClientKey";
|
||||||
var CONTENT_TYPE_IDENTIFIER = "Content-Type";
|
var CONTENT_TYPE_IDENTIFIER = "Content-Type";
|
||||||
var APPLICATION_JSON = "application/json";
|
var APPLICATION_JSON = "application/json";
|
||||||
|
var APPLICATION_ZIP = "application/zip";
|
||||||
var ACCEPT_IDENTIFIER = "Accept";
|
var ACCEPT_IDENTIFIER = "Accept";
|
||||||
var AUTHORIZATION_HEADER= "Authorization";
|
var AUTHORIZATION_HEADER= "Authorization";
|
||||||
var BEARER_PREFIX = "Bearer ";
|
var BEARER_PREFIX = "Bearer ";
|
||||||
|
|||||||
@ -85,9 +85,14 @@ public class PermissionBasedScopeValidator extends OAuth2ScopeValidator {
|
|||||||
int tenantId = OAuthExtUtils.getTenantId(authzUser.getTenantDomain());
|
int tenantId = OAuthExtUtils.getTenantId(authzUser.getTenantDomain());
|
||||||
UserRealm userRealm = OAuthExtensionsDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId);
|
UserRealm userRealm = OAuthExtensionsDataHolder.getInstance().getRealmService().getTenantUserRealm(tenantId);
|
||||||
if (userRealm != null && userRealm.getAuthorizationManager() != null) {
|
if (userRealm != null && userRealm.getAuthorizationManager() != null) {
|
||||||
|
if (userStore != null) {
|
||||||
status = userRealm.getAuthorizationManager()
|
status = userRealm.getAuthorizationManager()
|
||||||
.isUserAuthorized(userStore + "/" + username, permission.getPath(),
|
.isUserAuthorized(userStore + "/" + username, permission.getPath(),
|
||||||
PermissionMethod.UI_EXECUTE);
|
PermissionMethod.UI_EXECUTE);
|
||||||
|
} else {
|
||||||
|
status = userRealm.getAuthorizationManager()
|
||||||
|
.isUserAuthorized(username, permission.getPath(), PermissionMethod.UI_EXECUTE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (PermissionManagementException e) {
|
} catch (PermissionManagementException e) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user