mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Adding ability to add deviceType level scopes
This commit is contained in:
parent
f57de670ea
commit
864020f20e
@ -28,6 +28,7 @@ var handlers = function () {
|
||||
var tokenUtil = require("/app/modules/oauth/token-handler-utils.js")["utils"];
|
||||
var constants = require("/app/modules/constants.js");
|
||||
var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"];
|
||||
var utility = require("/app/modules/utility.js")["utility"];
|
||||
|
||||
var publicMethods = {};
|
||||
var privateMethods = {};
|
||||
@ -49,6 +50,7 @@ var handlers = function () {
|
||||
var tokenData;
|
||||
// tokenPair will include current access token as well as current refresh token
|
||||
var arrayOfScopes = devicemgtProps["scopes"];
|
||||
arrayOfScopes = arrayOfScopes.concat(utility.getDeviceTypesScopesList());
|
||||
var stringOfScopes = "";
|
||||
arrayOfScopes.forEach(function (entry) {
|
||||
stringOfScopes += entry + " ";
|
||||
@ -78,19 +80,20 @@ var handlers = function () {
|
||||
publicMethods["setupTokenPairBySamlGrantType"] = function (username, samlToken) {
|
||||
if (!username || !samlToken) {
|
||||
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up access token pair by " +
|
||||
"saml grant type. Either username of logged in user, samlToken or both are missing " +
|
||||
"as input - setupTokenPairByPasswordGrantType(x, y)");
|
||||
"saml grant type. Either username of logged in user, samlToken or both are missing " +
|
||||
"as input - setupTokenPairBySamlGrantType(x, y)");
|
||||
} else {
|
||||
privateMethods.setUpEncodedTenantBasedClientAppCredentials(username);
|
||||
privateMethods.setUpEncodedTenantBasedWebSocketClientAppCredentials(username);
|
||||
var encodedClientAppCredentials = session.get(constants["ENCODED_TENANT_BASED_CLIENT_APP_CREDENTIALS"]);
|
||||
if (!encodedClientAppCredentials) {
|
||||
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up access token pair " +
|
||||
"by saml grant type. Encoded client credentials are " +
|
||||
"missing - setupTokenPairByPasswordGrantType(x, y)");
|
||||
"by saml grant type. Encoded client credentials are " +
|
||||
"missing - setupTokenPairBySamlGrantType(x, y)");
|
||||
} else {
|
||||
var tokenData;
|
||||
var arrayOfScopes = devicemgtProps["scopes"];
|
||||
arrayOfScopes = arrayOfScopes.concat(utility.getDeviceTypesScopesList());
|
||||
var stringOfScopes = "";
|
||||
arrayOfScopes.forEach(function (entry) {
|
||||
stringOfScopes += entry + " ";
|
||||
@ -98,11 +101,11 @@ var handlers = function () {
|
||||
|
||||
// accessTokenPair will include current access token as well as current refresh token
|
||||
tokenData = tokenUtil.
|
||||
getTokenPairAndScopesBySAMLGrantType(samlToken, encodedClientAppCredentials, stringOfScopes);
|
||||
getTokenPairAndScopesBySAMLGrantType(samlToken, encodedClientAppCredentials, stringOfScopes);
|
||||
if (!tokenData) {
|
||||
throw new Error("{/app/modules/oauth/token-handlers.js} Could not set up token " +
|
||||
"pair by password grant type. Error in token " +
|
||||
"retrieval - setupTokenPairByPasswordGrantType(x, y)");
|
||||
"pair by password grant type. Error in token " +
|
||||
"retrieval - setupTokenPairBySamlGrantType(x, y)");
|
||||
} else {
|
||||
var tokenPair = {};
|
||||
tokenPair["accessToken"] = tokenData["accessToken"];
|
||||
|
||||
@ -125,5 +125,33 @@ utility = function () {
|
||||
return null;
|
||||
};
|
||||
|
||||
publicMethods.getDeviceTypesScopesList = function () {
|
||||
var dirs = new File("/app/units/").listFiles();
|
||||
var scopesList = [];
|
||||
for (var i = 0; i < dirs.length; i++) {
|
||||
var unitName = dirs[i].getName();
|
||||
if (unitName.match(/^cdmf\.unit\.device\.type\..*\.type-view$/g)) {
|
||||
var deviceTypeConfigFile = new File("/app/units/" + unitName + "/private/config.json");
|
||||
if (deviceTypeConfigFile.isExists()) {
|
||||
try {
|
||||
deviceTypeConfigFile.open("r");
|
||||
var config = deviceTypeConfigFile.readAll();
|
||||
config = config.replace("%https.ip%", server.address("https"));
|
||||
config = config.replace("%http.ip%", server.address("http"));
|
||||
var deviceTypeConfig = parse(config);
|
||||
if (deviceTypeConfig.deviceType && deviceTypeConfig.deviceType.scopes) {
|
||||
scopesList = scopesList.concat(deviceTypeConfig.deviceType.scopes);
|
||||
}
|
||||
} catch (err) {
|
||||
log.error("Error while reading device config file for `" + deviceType + "`: " + err);
|
||||
} finally {
|
||||
deviceTypeConfigFile.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return scopesList;
|
||||
};
|
||||
|
||||
return publicMethods;
|
||||
}();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user