Merging with upstream

merge-requests/7/head
Ace 8 years ago
commit 872bd88c6e

@ -65,7 +65,8 @@ public class ApiApplicationRegistrationServiceImpl implements ApiApplicationRegi
APIManagementProviderService apiManagementProviderService = APIUtil.getAPIManagementProviderService(); APIManagementProviderService apiManagementProviderService = APIUtil.getAPIManagementProviderService();
ApiApplicationKey apiApplicationKey = apiManagementProviderService.generateAndRetrieveApplicationKeys( ApiApplicationKey apiApplicationKey = apiManagementProviderService.generateAndRetrieveApplicationKeys(
applicationName, APIUtil.getAllowedApisTags().toArray(new String[APIUtil.getAllowedApisTags().size()]), applicationName, APIUtil.getAllowedApisTags().toArray(new String[APIUtil.getAllowedApisTags().size()]),
ApiApplicationConstants.DEFAULT_TOKEN_TYPE, username, false); ApiApplicationConstants.DEFAULT_TOKEN_TYPE, username, false,
ApiApplicationConstants.DEFAULT_VALIDITY_PERIOD);
return Response.status(Response.Status.CREATED).entity(apiApplicationKey.toString()).build(); return Response.status(Response.Status.CREATED).entity(apiApplicationKey.toString()).build();
} catch (APIManagerException e) { } catch (APIManagerException e) {
String msg = "Error occurred while registering an application '" + applicationName + "'"; String msg = "Error occurred while registering an application '" + applicationName + "'";
@ -97,6 +98,12 @@ public class ApiApplicationRegistrationServiceImpl implements ApiApplicationRegi
} }
String username = APIUtil.getAuthenticatedUser() + "@" + APIUtil.getTenantDomainOftheUser(); String username = APIUtil.getAuthenticatedUser() + "@" + APIUtil.getTenantDomainOftheUser();
APIManagementProviderService apiManagementProviderService = APIUtil.getAPIManagementProviderService(); APIManagementProviderService apiManagementProviderService = APIUtil.getAPIManagementProviderService();
String validityPeriod;
if (registrationProfile.getValidityPeriod() == null) {
validityPeriod = ApiApplicationConstants.DEFAULT_VALIDITY_PERIOD;
} else {
validityPeriod = registrationProfile.getValidityPeriod();
}
if (registrationProfile.isMappingAnExistingOAuthApp()) { if (registrationProfile.isMappingAnExistingOAuthApp()) {
JSONObject jsonStringObject = new JSONObject(); JSONObject jsonStringObject = new JSONObject();
jsonStringObject.put(ApiApplicationConstants.JSONSTRING_USERNAME_TAG, username); jsonStringObject.put(ApiApplicationConstants.JSONSTRING_USERNAME_TAG, username);
@ -105,13 +112,7 @@ public class ApiApplicationRegistrationServiceImpl implements ApiApplicationRegi
jsonStringObject.put(ApiApplicationConstants.OAUTH_CLIENT_ID, registrationProfile.getConsumerKey()); jsonStringObject.put(ApiApplicationConstants.OAUTH_CLIENT_ID, registrationProfile.getConsumerKey());
jsonStringObject.put(ApiApplicationConstants.OAUTH_CLIENT_SECRET, jsonStringObject.put(ApiApplicationConstants.OAUTH_CLIENT_SECRET,
registrationProfile.getConsumerSecret()); registrationProfile.getConsumerSecret());
if (registrationProfile.getValidityPeriod() == 0) { jsonStringObject.put(ApiApplicationConstants.JSONSTRING_VALIDITY_PERIOD_TAG, validityPeriod);
jsonStringObject.put(ApiApplicationConstants.JSONSTRING_VALIDITY_PERIOD_TAG,
ApiApplicationConstants.DEFAULT_VALIDITY_PERIOD);
} else {
jsonStringObject.put(ApiApplicationConstants.JSONSTRING_VALIDITY_PERIOD_TAG,
registrationProfile.getValidityPeriod());
}
apiManagementProviderService.registerExistingOAuthApplicationToAPIApplication( apiManagementProviderService.registerExistingOAuthApplicationToAPIApplication(
jsonStringObject.toJSONString(), registrationProfile.getApplicationName(), jsonStringObject.toJSONString(), registrationProfile.getApplicationName(),
registrationProfile.getConsumerKey(), username, registrationProfile.isAllowedToAllDomains(), registrationProfile.getConsumerKey(), username, registrationProfile.isAllowedToAllDomains(),
@ -120,7 +121,8 @@ public class ApiApplicationRegistrationServiceImpl implements ApiApplicationRegi
} else { } else {
ApiApplicationKey apiApplicationKey = apiManagementProviderService.generateAndRetrieveApplicationKeys( ApiApplicationKey apiApplicationKey = apiManagementProviderService.generateAndRetrieveApplicationKeys(
registrationProfile.getApplicationName(), registrationProfile.getTags(), registrationProfile.getApplicationName(), registrationProfile.getTags(),
ApiApplicationConstants.DEFAULT_TOKEN_TYPE, username, false); ApiApplicationConstants.DEFAULT_TOKEN_TYPE, username,
registrationProfile.isAllowedToAllDomains(), validityPeriod);
return Response.status(Response.Status.CREATED).entity(apiApplicationKey.toString()).build(); return Response.status(Response.Status.CREATED).entity(apiApplicationKey.toString()).build();
} }
} catch (APIManagerException e) { } catch (APIManagerException e) {

@ -42,7 +42,7 @@ public class RegistrationProfile {
private String consumerKey; private String consumerKey;
private String consumerSecret; private String consumerSecret;
@XmlElement(required = false) @XmlElement(required = false)
private int validityPeriod; private String validityPeriod;
public String getApplicationName() { public String getApplicationName() {
return applicationName; return applicationName;
@ -92,11 +92,11 @@ public class RegistrationProfile {
this.consumerSecret = consumerSecret; this.consumerSecret = consumerSecret;
} }
public int getValidityPeriod() { public String getValidityPeriod() {
return validityPeriod; return validityPeriod;
} }
public void setValidityPeriod(int validityPeriod) { public void setValidityPeriod(String validityPeriod) {
this.validityPeriod = validityPeriod; this.validityPeriod = validityPeriod;
} }
} }

@ -34,11 +34,14 @@ public interface APIManagementProviderService {
* @param tags tags of the apis that application needs to be subscribed. * @param tags tags of the apis that application needs to be subscribed.
* @param keyType of the application. * @param keyType of the application.
* @param username to whom the application is created * @param username to whom the application is created
* @param isAllowedAllDomains application is allowed to all the tenants
* @param validityTime validity period of the application
* @return consumerkey and secrete of the created application. * @return consumerkey and secrete of the created application.
* @throws APIManagerException * @throws APIManagerException
*/ */
ApiApplicationKey generateAndRetrieveApplicationKeys(String apiApplicationName, String tags[], ApiApplicationKey generateAndRetrieveApplicationKeys(String apiApplicationName, String tags[],
String keyType, String username, boolean isAllowedAllDomains) String keyType, String username, boolean isAllowedAllDomains,
String validityTime)
throws APIManagerException; throws APIManagerException;
/** /**

@ -133,7 +133,7 @@ public class APIManagementProviderServiceImpl implements APIManagementProviderSe
@Override @Override
public ApiApplicationKey generateAndRetrieveApplicationKeys(String apiApplicationName, String tags[], public ApiApplicationKey generateAndRetrieveApplicationKeys(String apiApplicationName, String tags[],
String keyType, String username, String keyType, String username,
boolean isAllowedAllDomains) boolean isAllowedAllDomains, String validityTime)
throws APIManagerException { throws APIManagerException {
try { try {
APIManagerUtil.loadTenantRegistry(); APIManagerUtil.loadTenantRegistry();
@ -172,7 +172,6 @@ public class APIManagementProviderServiceImpl implements APIManagementProviderSe
} else { } else {
allowedDomains[0] = APIManagerUtil.getTenantDomain(); allowedDomains[0] = APIManagerUtil.getTenantDomain();
} }
String validityTime = "3600";
String ownerJsonString = "{\"username\":\"" + username + "\"}"; String ownerJsonString = "{\"username\":\"" + username + "\"}";
Map<String, Object> keyDetails = apiConsumer.requestApprovalForApplicationRegistration(username, Map<String, Object> keyDetails = apiConsumer.requestApprovalForApplicationRegistration(username,
apiApplicationName, apiApplicationName,

@ -167,14 +167,14 @@ var utils = function () {
// register a tenant based app at API Manager // register a tenant based app at API Manager
var applicationName = "websocket_webapp_" + tenantDomain; var applicationName = "websocket_webapp_" + tenantDomain;
var requestURL = deviceMgtProps["oauthProvider"]["appRegistration"] var requestURL = (deviceMgtProps["oauthProvider"]["appRegistration"]
["apiManagerClientAppRegistrationServiceURL"] + ["apiManagerClientAppRegistrationServiceURL"]).replace("/tenants","");
"?tenantDomain=" + tenantDomain + "&applicationName=" + applicationName;
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
xhr.open("POST", requestURL, false); xhr.open("POST", requestURL, false);
xhr.setRequestHeader("Content-Type", "application/json"); xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("X-JWT-Assertion", "" + jwtToken); xhr.setRequestHeader("X-JWT-Assertion", "" + jwtToken);
xhr.send(); xhr.send(stringify({applicationName:applicationName, tags:["device_management"],
isAllowedToAllDomains:false, isMappingAnExistingOAuthApp:false, validityPeriod: 3600}));
if (xhr["status"] == 201 && xhr["responseText"]) { if (xhr["status"] == 201 && xhr["responseText"]) {
var responsePayload = parse(xhr["responseText"]); var responsePayload = parse(xhr["responseText"]);
var tenantTenantBasedWebsocketClientAppCredentials = {}; var tenantTenantBasedWebsocketClientAppCredentials = {};

@ -6,9 +6,9 @@
<i class="square-element text fw fw-document"></i> <i class="square-element text fw fw-document"></i>
</div> </div>
</td> </td>
<td class="fade-edge remove-padding-top" data-search="{{serialNumber}}" data-display="{{serialNumber}}"><i <td class="remove-padding-top" data-search="{{serialNumber}}" data-display="{{serialNumber}}"><i
class="fw-mobile"></i> {{serialNumber}}</td> class="fw-mobile"></i> {{serialNumber}}</td>
<td class="fade-edge remove-padding-top" data-search="{{subject}}" data-display="{{subject}}"><i <td class="remove-padding-top" data-search="{{subject}}" data-display="{{subject}}"><i
class="fw-policy"></i> {{subject}}</td> class="fw-policy"></i> {{subject}}</td>
<td class="text-right content-fill text-left-on-grid-view no-wrap"> <td class="text-right content-fill text-left-on-grid-view no-wrap">
{{#unequal adminUser serialNumber }} {{#unequal adminUser serialNumber }}

@ -12,21 +12,21 @@
<i class="square-element text fw fw-mobile"></i> <i class="square-element text fw fw-mobile"></i>
</div> </div>
</td> </td>
<td class="fade-edge" data-search="{{properties.DEVICE_MODEL}},{{properties.VENDOR}}" data-display="{{properties.DEVICE_MODEL}}"> <td data-search="{{properties.DEVICE_MODEL}},{{properties.VENDOR}}" data-display="{{properties.DEVICE_MODEL}}">
<h4>Device {{name}}</h4> <h4>Device {{name}}</h4>
{{#if properties.DEVICE_MODEL}} {{#if properties.DEVICE_MODEL}}
<div>({{properties.VENDOR}} - {{properties.DEVICE_MODEL}})</div> <div>({{properties.VENDOR}} - {{properties.DEVICE_MODEL}})</div>
{{/if}} {{/if}}
</td> </td>
<td class="fade-edge remove-padding-top" data-search="{{enrolmentInfo.owner}}" data-display="{{enrolmentInfo.owner}}" data-grid-label="Owner">{{enrolmentInfo.owner}}</td> <td class="remove-padding-top" data-search="{{enrolmentInfo.owner}}" data-display="{{enrolmentInfo.owner}}" data-grid-label="Owner">{{enrolmentInfo.owner}}</td>
<td class="fade-edge remove-padding-top" data-search="{{enrolmentInfo.status}}" data-display="{{enrolmentInfo.status}}" data-grid-label="Status"> <td class="remove-padding-top" data-search="{{enrolmentInfo.status}}" data-display="{{enrolmentInfo.status}}" data-grid-label="Status">
{{#equal enrolmentInfo.status "ACTIVE"}}<span><i class="fw fw-ok icon-success"></i> Active</span>{{/equal}} {{#equal enrolmentInfo.status "ACTIVE"}}<span><i class="fw fw-ok icon-success"></i> Active</span>{{/equal}}
{{#equal enrolmentInfo.status "INACTIVE"}}<span><i class="fw fw-warning icon-warning"></i> Inactive</span>{{/equal}} {{#equal enrolmentInfo.status "INACTIVE"}}<span><i class="fw fw-warning icon-warning"></i> Inactive</span>{{/equal}}
{{#equal enrolmentInfo.status "BLOCKED"}}<span><i class="fw fw-remove icon-danger"></i> Blocked</span>{{/equal}} {{#equal enrolmentInfo.status "BLOCKED"}}<span><i class="fw fw-remove icon-danger"></i> Blocked</span>{{/equal}}
{{#equal enrolmentInfo.status "REMOVED"}}<span><i class="fw fw-delete icon-danger"></i> Removed</span>{{/equal}} {{#equal enrolmentInfo.status "REMOVED"}}<span><i class="fw fw-delete icon-danger"></i> Removed</span>{{/equal}}
</td> </td>
<td class="fade-edge remove-padding-top" data-search="{{type}}" data-display="{{type}}" data-grid-label="Type">{{type}}</td> <td class="remove-padding-top" data-search="{{type}}" data-display="{{type}}" data-grid-label="Type">{{type}}</td>
<td class="fade-edge remove-padding-top" data-search="{{enrolmentInfo.ownership}}" data-display="{{enrolmentInfo.ownership}}" data-grid-label="Ownership">{{enrolmentInfo.ownership}}</td> <td class="remove-padding-top" data-search="{{enrolmentInfo.ownership}}" data-display="{{enrolmentInfo.ownership}}" data-grid-label="Ownership">{{enrolmentInfo.ownership}}</td>
<td class="text-right content-fill text-left-on-grid-view no-wrap"> <td class="text-right content-fill text-left-on-grid-view no-wrap">
<!--{{#equal type "TemperatureController"}} <!--{{#equal type "TemperatureController"}}
{{#equal status "INACTIVE"}} {{#equal status "INACTIVE"}}

@ -265,7 +265,7 @@ function loadDevices(searchType, searchParam) {
{ {
targets: 1, targets: 1,
data: 'name', data: 'name',
class: 'fade-edge', class: '',
render: function (name, type, row, meta) { render: function (name, type, row, meta) {
var model = getPropertyValue(row.properties, 'DEVICE_MODEL'); var model = getPropertyValue(row.properties, 'DEVICE_MODEL');
var vendor = getPropertyValue(row.properties, 'VENDOR'); var vendor = getPropertyValue(row.properties, 'VENDOR');
@ -279,12 +279,12 @@ function loadDevices(searchType, searchParam) {
{ {
targets: 2, targets: 2,
data: 'user', data: 'user',
class: 'fade-edge remove-padding-top', class: 'remove-padding-top',
}, },
{ {
targets: 3, targets: 3,
data: 'status', data: 'status',
class: 'fade-edge remove-padding-top', class: 'remove-padding-top',
render: function (status, type, row, meta) { render: function (status, type, row, meta) {
var html; var html;
switch (status) { switch (status) {
@ -307,7 +307,7 @@ function loadDevices(searchType, searchParam) {
{ {
targets: 4, targets: 4,
data: 'deviceType', data: 'deviceType',
class: 'fade-edge remove-padding-top', class: 'remove-padding-top',
render: function (status, type, row, meta) { render: function (status, type, row, meta) {
return getDeviceTypeLabel(row.deviceType); return getDeviceTypeLabel(row.deviceType);
} }
@ -315,7 +315,7 @@ function loadDevices(searchType, searchParam) {
{ {
targets: 5, targets: 5,
data: 'ownership', data: 'ownership',
class: 'fade-edge remove-padding-top', class: 'remove-padding-top',
render: function (status, type, row, meta) { render: function (status, type, row, meta) {
if (getDeviceTypeCategory(row.deviceType) == 'mobile') { if (getDeviceTypeCategory(row.deviceType) == 'mobile') {
return row.ownership; return row.ownership;

@ -135,17 +135,17 @@ function loadGroups() {
{ {
targets: 1, targets: 1,
data: 'name', data: 'name',
class: 'fade-edge' class: ''
}, },
{ {
targets: 2, targets: 2,
data: 'owner', data: 'owner',
class: 'fade-edge remove-padding-top', class: 'remove-padding-top',
}, },
{ {
targets: 3, targets: 3,
data: 'description', data: 'description',
class: 'fade-edge remove-padding-top', class: 'remove-padding-top',
}, },
{ {
targets: 4, targets: 4,

@ -187,7 +187,7 @@
<i class="fw fw-{{deviceTypeIcon}}" style="font-size: 59px"></i> <i class="fw fw-{{deviceTypeIcon}}" style="font-size: 59px"></i>
</div> </div>
</td> </td>
<td class="fade-edge" <td
data-search="{{name}}" data-search="{{name}}"
data-display="{{name}}"> data-display="{{name}}">
<h4>{{name}}</h4> <h4>{{name}}</h4>
@ -205,35 +205,35 @@
<span><i class="fw fw-error icon-danger"></i> Inactive</span> <span><i class="fw fw-error icon-danger"></i> Inactive</span>
{{/equal}} {{/equal}}
</td> </td>
<td class="fade-edge remove-padding-top" <td class="remove-padding-top"
data-search="{{platform}}" data-search="{{platform}}"
data-display="{{platform}}"> data-display="{{platform}}">
</td> </td>
<td class="fade-edge remove-padding-top" <td class="remove-padding-top"
data-search="{{ownershipType}}" data-search="{{ownershipType}}"
data-display="{{ownershipType}}" data-display="{{ownershipType}}"
data-grid-label="Ownership"> data-grid-label="Ownership">
{{ownershipType}} {{ownershipType}}
</td> </td>
<td id="policy-roles" class="fade-edge remove-padding-top" <td id="policy-roles" class="remove-padding-top"
data-search="{{roles}}" data-search="{{roles}}"
data-display="{{roles}}" data-display="{{roles}}"
data-grid-label="Role(s)"> data-grid-label="Role(s)">
{{roles}} {{roles}}
</td> </td>
<td id="policy-users" class="fade-edge remove-padding-top" <td id="policy-users" class="remove-padding-top"
data-search="{{users}}" data-search="{{users}}"
data-display="{{users}}" data-display="{{users}}"
data-grid-label="User(s)"> data-grid-label="User(s)">
{{users}} {{users}}
</td> </td>
<td class="fade-edge remove-padding-top" <td class="remove-padding-top"
data-search="{{compliance}}" data-search="{{compliance}}"
data-display="{{compliance}}" data-display="{{compliance}}"
data-grid-label="Compliance"> data-grid-label="Compliance">
{{compliance}} {{compliance}}
</td> </td>
<td id="policy-status" class="fade-edge remove-padding-top" <td id="policy-status" class="remove-padding-top"
data-search="{{status}}" data-search="{{status}}"
data-display="{{status}}"> data-display="{{status}}">
</td> </td>

@ -128,7 +128,7 @@ function loadRoles() {
"</div>" "</div>"
}, },
{ {
class: "fade-edge", class: "",
data: "name", data: "name",
render: function (name, type, row, meta) { render: function (name, type, row, meta) {
return '<h4>' + name + '</h4>'; return '<h4>' + name + '</h4>';

@ -5,7 +5,7 @@
<i class="square-element text fw fw-user"></i> <i class="square-element text fw fw-user"></i>
</div> </div>
</td> </td>
<td class="fade-edge remove-padding-top">{{roleName}}</td> <td class="remove-padding-top">{{roleName}}</td>
<td class="text-right content-fill text-left-on-grid-view no-wrap"> <td class="text-right content-fill text-left-on-grid-view no-wrap">
{{#unequal adminRole roleName }} {{#unequal adminRole roleName }}

@ -31,7 +31,7 @@
{{/if}} {{/if}}
<div class="panel-body"> <div class="panel-body">
<form id="signInForm" method="POST" action="{{@app.context}}/uuf/login"> <form id="signInForm" method="POST" action="{{loginActionUrl}}">
<div class="form-group"> <div class="form-group">
<label for="username">Username *</label> <label for="username">Username *</label>
<input type="text" name="username" class="form-control" placeholder="Enter your username" <input type="text" name="username" class="form-control" placeholder="Enter your username"
@ -42,6 +42,9 @@
<input type="password" name="password" class="form-control" placeholder="Enter your password" <input type="password" name="password" class="form-control" placeholder="Enter your password"
required="required" /> required="required" />
</div> </div>
{{#if sessionDataKey}}
<input type="hidden" name="sessionDataKey" value="{{sessionDataKey}}" />
{{/if}}
{{#if referer}} {{#if referer}}
<input type="hidden" name="referer" value="{{referer}}" /> <input type="hidden" name="referer" value="{{referer}}" />
{{/if}} {{/if}}

@ -0,0 +1,28 @@
function onRequest(context) {
var devicemgtProps = require("/app/modules/conf-reader/main.js")["conf"];
var authModuleConfigs = context.app.conf["authModule"];
var sessionDataKey = request.getParameter("sessionDataKey");
//if sso enabled and sessionDataKey is empty redirect
var ssoConfigs = authModuleConfigs["sso"];
if (ssoConfigs && (ssoConfigs["enabled"].toString() == "true") && !sessionDataKey) {
// SSO is enabled in Auth module.
var redirectUri = context.app.context + "/uuf/login";
var queryString = request.getQueryString();
if (queryString && (queryString.length > 0)) {
redirectUri = redirectUri + "?" + queryString;
}
response.sendRedirect(encodeURI(redirectUri));
exit();
}
var viewModel = {};
var loginActionUrl = context.app.context + "/uuf/login";
if (sessionDataKey) {
loginActionUrl = devicemgtProps["httpsURL"] + "/commonauth";
}
viewModel.sessionDataKey = sessionDataKey;
viewModel.loginActionUrl = loginActionUrl;
return viewModel;
}

@ -1,5 +1,6 @@
{ {
"version": "1.0.0", "version": "1.0.0",
"layout": "uuf.layout.sign-in",
"uri": "/login", "uri": "/login",
"extends": "uuf.page.sign-in" "isAnonymous": true
} }

@ -304,7 +304,7 @@ function loadUsers() {
} }
}, },
{ {
class: "fade-edge", class: "",
data: null, data: null,
render: function (data, type, row, meta) { render: function (data, type, row, meta) {
if (!data.firstname && !data.lastname) { if (!data.firstname && !data.lastname) {
@ -315,14 +315,14 @@ function loadUsers() {
} }
}, },
{ {
class: "fade-edge remove-padding-top", class: "remove-padding-top",
data: 'filter', data: 'filter',
render: function (filter, type, row, meta) { render: function (filter, type, row, meta) {
return '<i class="fw-user"></i>' + filter; return '<i class="fw-user"></i>' + filter;
} }
}, },
{ {
class: "fade-edge remove-padding-top", class: "remove-padding-top",
data: null, data: null,
render: function (data, type, row, meta) { render: function (data, type, row, meta) {
if (!data.emailAddress) { if (!data.emailAddress) {

@ -6,12 +6,12 @@
<i class="square-element text fw fw-user"></i> <i class="square-element text fw fw-user"></i>
</div> </div>
</td> </td>
<td class="fade-edge" data-search="{{firstname}},{{lastname}}" data-display="{{firstname}} {{lastname}}"> <td data-search="{{firstname}},{{lastname}}" data-display="{{firstname}} {{lastname}}">
<h4>{{firstname}} {{lastname}}</h4> <h4>{{firstname}} {{lastname}}</h4>
</td> </td>
<td class="fade-edge remove-padding-top" data-search="{{username}}" data-display="{{username}}"><i <td class="remove-padding-top" data-search="{{username}}" data-display="{{username}}"><i
class="fw-user"></i> {{username}}</td> class="fw-user"></i> {{username}}</td>
<td class="fade-edge remove-padding-top" data-search="{{emailAddress}}" data-display="{{emailAddress}}"> <td class="remove-padding-top" data-search="{{emailAddress}}" data-display="{{emailAddress}}">
<a href="mailto:{{emailAddress}}" class="wr-list-email"> <a href="mailto:{{emailAddress}}" class="wr-list-email">
<i class="fw-mail"></i> {{emailAddress}} <i class="fw-mail"></i> {{emailAddress}}
</a> </a>

@ -21,7 +21,7 @@
<span class="page-sub-title">Device Types</span> <span class="page-sub-title">Device Types</span>
</div> </div>
</div> </div>
<span id="device-listing-status-msg"></span>
<div class="container-fluid"> <div class="container-fluid">
<table class="table table-striped table-hover list-table no-operations display responsive nowrap data-table grid-view no-toolbar" <table class="table table-striped table-hover list-table no-operations display responsive nowrap data-table grid-view no-toolbar"
id="device-type-grid"> id="device-type-grid">

@ -283,23 +283,29 @@
<div id="policy-platform-main-error-msg" class="alert alert-danger hidden" role="alert"> <div id="policy-platform-main-error-msg" class="alert alert-danger hidden" role="alert">
<i class="icon fw fw-error"></i><span></span> <i class="icon fw fw-error"></i><span></span>
</div> </div>
{{#unless types}}
<h3><i class="icon fw fw-warning"></i> No compatible device types have been installed.
Install device types to add policies.</h3>
{{/unless}}
<div class="row wr-tile-buttons-list"> <div class="row wr-tile-buttons-list">
<div class="wr-input-control"> <div class="wr-input-control">
<ul class="tile-buttons row"> <ul class="tile-buttons row">
{{#each types}} {{#if types}}
<li class="col-xs-12 col-sm-12 col-md-4 col-lg-4" {{#each types}}
style="margin-top: 5px; margin-bottom: 5px;"> <li class="col-xs-12 col-sm-12 col-md-4 col-lg-4"
<a href="javascript:void(0)" style="margin-top: 5px; margin-bottom: 5px;">
class="{{name}}-platform wizard-stepper" <a href="javascript:void(0)"
data-current="policy-platform" class="{{name}}-platform wizard-stepper"
data-next="policy-profile" data-current="policy-platform"
data-platform="{{name}}" data-next="policy-profile"
data-validate="false"> data-platform="{{name}}"
<img src="{{icon}}" width="50px" height="50px"><br><br> data-validate="false">
<b>{{label}}</b> <img src="{{icon}}" width="50px" height="50px"><br><br>
</a> <b>{{label}}</b>
</li> </a>
{{/each}} </li>
{{/each}}
{{/if}}
</ul> </ul>
</div> </div>
</div> </div>

@ -55,5 +55,52 @@
"url": "/api/operation/*", "url": "/api/operation/*",
"path": "/api/operation-api.jag" "path": "/api/operation-api.jag"
} }
] ],
"filters": [
{
"name": "URLBasedCachePreventionFilter",
"class": "org.wso2.carbon.ui.filters.cache.URLBasedCachePreventionFilter"
},
{
"name":"HttpHeaderSecurityFilter",
"class":"org.apache.catalina.filters.HttpHeaderSecurityFilter",
"params" : [{"name" : "hstsEnabled", "value" : "false"}]
}
],
"filterMappings": [
{
"name": "URLBasedCachePreventionFilter",
"url": "/api/*"
},
{
"name":"HttpHeaderSecurityFilter",
"url":"*"
}
],
"listeners" : [
{
"class" : "org.owasp.csrfguard.CsrfGuardServletContextListener"
},
{
"class" : "org.owasp.csrfguard.CsrfGuardHttpSessionListener"
}
],
"servlets" : [
{
"name" : "JavaScriptServlet",
"class" : "org.owasp.csrfguard.servlet.JavaScriptServlet"
}
],
"servletMappings" : [
{
"name" : "JavaScriptServlet",
"url" : "/csrf.js"
}
],
"contextParams" : [
{
"name" : "Owasp.CsrfGuard.Config",
"value" : "/repository/conf/security/Owasp.CsrfGuard.Carbon.properties"
}
]
} }

@ -1808,7 +1808,7 @@
<tomcat.jdbc.pooling.version>7.0.34.wso2v2</tomcat.jdbc.pooling.version> <tomcat.jdbc.pooling.version>7.0.34.wso2v2</tomcat.jdbc.pooling.version>
<!-- Carbon Deployment --> <!-- Carbon Deployment -->
<carbon.deployment.version>4.7.0</carbon.deployment.version> <carbon.deployment.version>4.7.2</carbon.deployment.version>
<!-- Carbon Identity --> <!-- Carbon Identity -->
<carbon.identity.framework.version>5.2.2</carbon.identity.framework.version> <carbon.identity.framework.version>5.2.2</carbon.identity.framework.version>
@ -1816,10 +1816,10 @@
<identity.inbound.auth.saml.version>5.1.1</identity.inbound.auth.saml.version> <identity.inbound.auth.saml.version>5.1.1</identity.inbound.auth.saml.version>
<!-- Carbon Multi-tenancy --> <!-- Carbon Multi-tenancy -->
<carbon.multitenancy.version>4.6.0</carbon.multitenancy.version> <carbon.multitenancy.version>4.6.1</carbon.multitenancy.version>
<!-- Carbon Governance --> <!-- Carbon Governance -->
<carbon.governance.version>4.6.4</carbon.governance.version> <carbon.governance.version>4.6.5</carbon.governance.version>
<!-- Axiom --> <!-- Axiom -->
<axiom.version>1.2.11-wso2v10</axiom.version> <axiom.version>1.2.11-wso2v10</axiom.version>
@ -1845,7 +1845,7 @@
<carbon.analytics.common.version.range>[5.1.3,6.0.0)</carbon.analytics.common.version.range> <carbon.analytics.common.version.range>[5.1.3,6.0.0)</carbon.analytics.common.version.range>
<!-- Carbon Registry --> <!-- Carbon Registry -->
<carbon.registry.version>4.5.6</carbon.registry.version> <carbon.registry.version>4.5.8</carbon.registry.version>
<carbon.registry.imp.pkg.version.range>[4.4.8, 5.0.0)</carbon.registry.imp.pkg.version.range> <carbon.registry.imp.pkg.version.range>[4.4.8, 5.0.0)</carbon.registry.imp.pkg.version.range>
<!--CXF properties--> <!--CXF properties-->

Loading…
Cancel
Save