forked from community/device-mgt-core
Merge branch 'master' of https://github.com/wso2/carbon-device-mgt
commit
596dfcc26c
6
components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/DeviceTypeManagementServiceImpl.java → components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceTypeManagementServiceImpl.java
6
components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/admin/DeviceTypeManagementServiceImpl.java → components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceTypeManagementServiceImpl.java
@ -0,0 +1,101 @@
|
||||
{{!
|
||||
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="Add Certificate"}}
|
||||
|
||||
{{#zone "breadcrumbs"}}
|
||||
<li>
|
||||
<a href="{{@app.context}}/">
|
||||
<i class="icon fw fw-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{@app.context}}/certificates/add">
|
||||
<span class="fw-stack">
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
<i class="fw fw-document fw-stack-1x"></i>
|
||||
</span>
|
||||
Add Certificate
|
||||
</a>
|
||||
</li>
|
||||
{{/zone}}
|
||||
|
||||
{{#zone "content"}}
|
||||
<!-- content/body -->
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<!-- content -->
|
||||
<div id="certificate-create-form" class="container col-centered wr-content">
|
||||
<div class="wr-form">
|
||||
<p class="page-sub-title">Add Certificate</p>
|
||||
<p>Please note that * sign represents required fields of data.</p>
|
||||
<hr/>
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<div id="certificate-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 ">
|
||||
Serial Number *
|
||||
</label>
|
||||
<br>
|
||||
<div id="serialNoInputField" class="form-group wr-input-control">
|
||||
<input type="text" id="serialNo" class="form-control"/>
|
||||
</div>
|
||||
<label class="wr-input-label">Certificate *</label>
|
||||
<div id="certificateField" class="form-group wr-input-control">
|
||||
<input type="file" id="certificate" class="form-control"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<button id="add-certificate-btn" class="wr-btn">Add Certificate</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="certificate-created-msg" class="container col-centered wr-content hidden">
|
||||
<div class="wr-form">
|
||||
<p class="page-sub-title">Certificate was added successfully.</p>
|
||||
<br>
|
||||
<br>Please click <b>"Add Another Certificate"</b>, if you wish to add another certificate or
|
||||
click
|
||||
<b>"View Certificate List"</b> to complete the process and go back to the certificate list.
|
||||
<hr/>
|
||||
<button class="wr-btn" onclick="window.location.href='/emm/certificates'">View Certificate List
|
||||
</button>
|
||||
<a href="/emm/certificates/add" class="cu-btn-inner">
|
||||
<span class="fw-stack">
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
<i class="fw fw-add fw-stack-1x"></i>
|
||||
</span>
|
||||
Add Another Certificate
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /content -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- /content/body -->
|
||||
{{/zone}}
|
||||
|
||||
{{#zone "bottomJs"}}
|
||||
{{js "/js/certificate-create.js"}}
|
||||
{{/zone}}
|
@ -0,0 +1,45 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Returns the dynamic state to be populated by add-user page.
|
||||
*
|
||||
* @param context Object that gets updated with the dynamic state of this page to be presented
|
||||
* @returns {*} A context object that returns the dynamic state of this page to be presented
|
||||
*/
|
||||
function onRequest(context) {
|
||||
// var log = new Log("units/user-create/create.js");
|
||||
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
||||
var mdmProps = require("/app/modules/conf-reader/main.js")["conf"];
|
||||
|
||||
var response = userModule.getRolesByUserStore();
|
||||
if (response["status"] == "success") {
|
||||
context["roles"] = response["content"];
|
||||
}
|
||||
|
||||
context["charLimit"] = mdmProps["usernameLength"];
|
||||
context["usernameJSRegEx"] = mdmProps["userValidationConfig"]["usernameJSRegEx"];
|
||||
context["usernameHelpText"] = mdmProps["userValidationConfig"]["usernameHelpMsg"];
|
||||
context["usernameRegExViolationErrorMsg"] = mdmProps["userValidationConfig"]["usernameRegExViolationErrorMsg"];
|
||||
context["firstnameJSRegEx"] = mdmProps["userValidationConfig"]["firstnameJSRegEx"];
|
||||
context["firstnameRegExViolationErrorMsg"] = mdmProps["userValidationConfig"]["firstnameRegExViolationErrorMsg"];
|
||||
context["lastnameJSRegEx"] = mdmProps["userValidationConfig"]["lastnameJSRegEx"];
|
||||
context["lastnameRegExViolationErrorMsg"] = mdmProps["userValidationConfig"]["lastnameRegExViolationErrorMsg"];
|
||||
|
||||
return context;
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"uri": "/certificates/add",
|
||||
"layout": "cdmf.layout.default"
|
||||
}
|
@ -0,0 +1,129 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
var pemContent = "";
|
||||
var errorMsgWrapper = "#certificate-create-error-msg";
|
||||
var errorMsg = "#certificate-create-error-msg span";
|
||||
var validateInline = {};
|
||||
var clearInline = {};
|
||||
|
||||
var base_api_url = "/api/certificate-mgt/v1.0";
|
||||
|
||||
var enableInlineError = function (inputField, errorMsg, errorSign) {
|
||||
var fieldIdentifier = "#" + inputField;
|
||||
var errorMsgIdentifier = "#" + inputField + " ." + errorMsg;
|
||||
var errorSignIdentifier = "#" + inputField + " ." + errorSign;
|
||||
|
||||
if (inputField) {
|
||||
$(fieldIdentifier).addClass(" has-error has-feedback");
|
||||
}
|
||||
|
||||
if (errorMsg) {
|
||||
$(errorMsgIdentifier).removeClass(" hidden");
|
||||
}
|
||||
|
||||
if (errorSign) {
|
||||
$(errorSignIdentifier).removeClass(" hidden");
|
||||
}
|
||||
};
|
||||
|
||||
var disableInlineError = function (inputField, errorMsg, errorSign) {
|
||||
var fieldIdentifier = "#" + inputField;
|
||||
var errorMsgIdentifier = "#" + inputField + " ." + errorMsg;
|
||||
var errorSignIdentifier = "#" + inputField + " ." + errorSign;
|
||||
|
||||
if (inputField) {
|
||||
$(fieldIdentifier).removeClass(" has-error has-feedback");
|
||||
}
|
||||
|
||||
if (errorMsg) {
|
||||
$(errorMsgIdentifier).addClass(" hidden");
|
||||
}
|
||||
|
||||
if (errorSign) {
|
||||
$(errorSignIdentifier).addClass(" hidden");
|
||||
}
|
||||
};
|
||||
|
||||
function readSingleFile(evt) {
|
||||
var f = evt.target.files[0];
|
||||
if (f) {
|
||||
var r = new FileReader();
|
||||
r.onload = function (e) {
|
||||
var contents = e.target.result;
|
||||
if (f.type == "application/x-x509-ca-cert") {
|
||||
pemContent = contents;
|
||||
console.log(contents);
|
||||
console.log(pemContent);
|
||||
pemContent = pemContent.substring(28, pemContent.length - 27);
|
||||
console.log(pemContent);
|
||||
$(errorMsgWrapper).addClass("hidden");
|
||||
} else {
|
||||
$(errorMsg).text("Certificate must be a .pem file containing a valid certificate data.");
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
}
|
||||
}
|
||||
r.readAsText(f);
|
||||
} else {
|
||||
//inline error
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
pemContent = "";
|
||||
document.getElementById('certificate').addEventListener('change', readSingleFile, false);
|
||||
|
||||
/**
|
||||
* Following click function would execute
|
||||
* when a user clicks on "Add Certificate" button.
|
||||
*/
|
||||
$("button#add-certificate-btn").click(function () {
|
||||
var serialNoInput = $("input#serialNo");
|
||||
var serialNo = serialNoInput.val();
|
||||
if (!serialNo) {
|
||||
$(errorMsg).text("Serial Number is a required field. It cannot be empty.");
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
} else if (!pemContent) {
|
||||
$(errorMsg).text(" .pem file must contains certificate information.");
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
} else {
|
||||
var addCertificateFormData = {};
|
||||
addCertificateFormData.serial = serialNo;
|
||||
addCertificateFormData.pem = pemContent;
|
||||
var certificateList = [];
|
||||
certificateList.push(addCertificateFormData);
|
||||
|
||||
var serviceUrl = base_api_url + "/admin/certificates";
|
||||
invokerUtil.post(
|
||||
serviceUrl,
|
||||
certificateList,
|
||||
function (data) {
|
||||
// Refreshing with success message
|
||||
$("#certificate-create-form").addClass("hidden");
|
||||
$("#certificate-created-msg").removeClass("hidden");
|
||||
}, function (data) {
|
||||
if (data["status"] == 500) {
|
||||
$(errorMsg).text("An unexpected error occurred at backend server. Please try again later.");
|
||||
} else {
|
||||
$(errorMsg).text(data);
|
||||
}
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
@ -0,0 +1,177 @@
|
||||
{{!
|
||||
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="Add Certificate"}}
|
||||
|
||||
{{#zone "breadcrumbs"}}
|
||||
<li>
|
||||
<a href="{{@app.context}}/">
|
||||
<i class="icon fw fw-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{@app.context}}/certificates/add">
|
||||
<span class="fw-stack">
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
<i class="fw fw-document fw-stack-1x"></i>
|
||||
</span>
|
||||
Add Certificate
|
||||
</a>
|
||||
</li>
|
||||
{{/zone}}
|
||||
|
||||
{{#zone "content"}}
|
||||
{{unit "cdmf.unit.data-tables-extended"}}
|
||||
|
||||
<!-- content -->
|
||||
<div id="loading-content" class="col-centered">
|
||||
{{#if removePermitted}}
|
||||
<input type="hidden" id="can-remove" value="true"/>
|
||||
{{/if}}
|
||||
{{#if viewPermitted}}
|
||||
<input type="hidden" id="can-view" value="true"/>
|
||||
{{/if}}
|
||||
<i class="fw fw-settings fw-spin fw-2x"></i>
|
||||
Loading Certificates . . .
|
||||
<br>
|
||||
</div>
|
||||
|
||||
<div id="certificate-listing-status" class="raw hidden">
|
||||
<ul style="list-style-type: none;">
|
||||
<li class="message message-info" >
|
||||
<h4>
|
||||
<i class="icon fw fw-info"></i>
|
||||
<a id="certificate-listing-status-msg"></a>
|
||||
</h4>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="certificate-table" data-user={{adminUser}}>
|
||||
<table class="table table-striped table-hover list-table display responsive nowrap data-table grid-view"
|
||||
id="certificate-grid">
|
||||
<thead>
|
||||
<tr class="sort-row">
|
||||
<th class="no-sort"></th>
|
||||
<th>By Serial Number</th>
|
||||
<th class="no-sort"></th>
|
||||
<th class="no-sort"></th>
|
||||
</tr>
|
||||
<tr class="filter-row filter-box">
|
||||
<th colspan="3">
|
||||
<label class="wr-input-label" for="search-by-certificate">
|
||||
By Serial Number
|
||||
</label>
|
||||
<input id="search-by-certificate" type="text" class="form-control"
|
||||
placeholder="Search By Serial Number">
|
||||
</th>
|
||||
<th style="vertical-align:bottom;">
|
||||
<button id="search-btn" class="wr-btn">
|
||||
Search
|
||||
</button>
|
||||
</th>
|
||||
</tr>
|
||||
|
||||
</thead>
|
||||
<tbody id="ast-container">
|
||||
|
||||
<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">
|
||||
<a href="#">By Serial Number</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="remove-certificate-modal-content" class="hide">
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>Do you really want to remove this certificate ?</h3>
|
||||
|
||||
<div class="buttons">
|
||||
<a href="#" id="remove-certificate-yes-link" class="btn-operations">
|
||||
Remove
|
||||
</a>
|
||||
<a href="#" id="remove-certificate-cancel-link" class="btn-operations">
|
||||
Cancel
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="remove-certificate-success-content" class="hide">
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>Done. Certificate was successfully removed.</h3>
|
||||
<div class="buttons">
|
||||
<a href="#" id="remove-certificate-success-link" class="btn-operations">
|
||||
Ok
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="remove-certificate-error-content" class="hide">
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>An unexpected error occurred. Please try again later.</h3>
|
||||
|
||||
<div class="buttons">
|
||||
<a href="#" id="remove-certificate-error-link" class="btn-operations">
|
||||
Ok
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="errorCertificateView" class="hide">
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-lg-5 col-md-6 col-centered">
|
||||
<h3>
|
||||
<span class="fw-stack">
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
<i class="fw fw-error fw-stack-1x"></i>
|
||||
</span>
|
||||
Unauthorized action!
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/zone}}
|
||||
|
||||
{{#zone "bottomJs"}}
|
||||
<script id="certificate-listing" data-current-user="{{@user.username}}"
|
||||
src="{{@page.publicUri}}/templates/certificate-listing.hbs"
|
||||
type="text/x-handlebars-template"></script>
|
||||
|
||||
{{js "/js/certificate-listing.js"}}
|
||||
{{/zone}}
|
@ -0,0 +1,15 @@
|
||||
function onRequest(context) {
|
||||
var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
|
||||
var mdmProps = require("/app/modules/conf-reader/main.js")["conf"];
|
||||
|
||||
context["permissions"] = userModule.getUIPermissions();
|
||||
|
||||
if (userModule.isAuthorized("/permission/admin/device-mgt/emm-admin/certificate/Get")) {
|
||||
context["removePermitted"] = true;
|
||||
}
|
||||
if (userModule.isAuthorized("/permission/admin/device-mgt/emm-admin/certificate/Get")) {
|
||||
context["viewPermitted"] = true;
|
||||
}
|
||||
context["adminUser"] = mdmProps.adminUser;
|
||||
return context;
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"uri": "/certificates",
|
||||
"layout": "cdmf.layout.default"
|
||||
}
|
@ -0,0 +1,171 @@
|
||||
/*
|
||||
* Sorting function of certificates
|
||||
* listed on Certificate Management page in WSO2 MDM Console.
|
||||
*/
|
||||
$(function () {
|
||||
var sortableElem = '.wr-sortable';
|
||||
$(sortableElem).sortable({
|
||||
beforeStop: function () {
|
||||
var sortedIDs = $(this).sortable('toArray');
|
||||
}
|
||||
});
|
||||
$(sortableElem).disableSelection();
|
||||
});
|
||||
|
||||
var modalPopup = ".wr-modalpopup";
|
||||
var modalPopupContainer = modalPopup + " .modalpopup-container";
|
||||
var modalPopupContent = modalPopup + " .modalpopup-content";
|
||||
var body = "body";
|
||||
var isInit = true;
|
||||
|
||||
var base_api_url = "/api/certificate-mgt/v1.0";
|
||||
|
||||
$(".icon .text").res_text(0.2);
|
||||
|
||||
/*
|
||||
* set popup maximum height function.
|
||||
*/
|
||||
function setPopupMaxHeight() {
|
||||
$(modalPopupContent).css('max-height', ($(body).height() - ($(body).height() / 100 * 30)));
|
||||
$(modalPopupContainer).css('margin-top', (-($(modalPopupContainer).height() / 2)));
|
||||
}
|
||||
|
||||
/*
|
||||
* show popup function.
|
||||
*/
|
||||
function showPopup() {
|
||||
$(modalPopup).show();
|
||||
setPopupMaxHeight();
|
||||
}
|
||||
|
||||
/*
|
||||
* hide popup function.
|
||||
*/
|
||||
function hidePopup() {
|
||||
$(modalPopupContent).html('');
|
||||
$(modalPopup).hide();
|
||||
}
|
||||
|
||||
/**
|
||||
* Following click function would execute
|
||||
* when a user clicks on "Remove" link
|
||||
* on Certificate Listing page in WSO2 MDM Console.
|
||||
*/
|
||||
function removeCertificate(serialNumber) {
|
||||
var serviceUrl = base_api_url + "/admin/certificates/" + serialNumber;
|
||||
$(modalPopupContent).html($('#remove-certificate-modal-content').html());
|
||||
showPopup();
|
||||
|
||||
$("a#remove-certificate-yes-link").click(function () {
|
||||
invokerUtil.delete(
|
||||
serviceUrl,
|
||||
function () {
|
||||
$("#" + serialNumber).remove();
|
||||
var newCertificateListCount = $(".user-list > span").length;
|
||||
$("#certificate-listing-status-msg").text("Total number of Certificates found : " + newCertificateListCount);
|
||||
$(modalPopupContent).html($('#remove-certificate-success-content').html());
|
||||
$("a#remove-certificate-success-link").click(function () {
|
||||
hidePopup();
|
||||
});
|
||||
},
|
||||
function () {
|
||||
$(modalPopupContent).html($('#remove-certificate-error-content').html());
|
||||
$("a#remove-certificate-error-link").click(function () {
|
||||
hidePopup();
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
$("a#remove-certificate-cancel-link").click(function () {
|
||||
hidePopup();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Following on click function would execute
|
||||
* when a user type on the search field on certificate Listing page in
|
||||
* WSO2 MDM Console then click on the search button.
|
||||
*/
|
||||
$("#search-btn").click(function () {
|
||||
var searchQuery = $("#search-by-certificate").val();
|
||||
$("#ast-container").empty();
|
||||
loadCertificates(searchQuery);
|
||||
});
|
||||
|
||||
/**
|
||||
* Following function would execute
|
||||
* when a user clicks on the list item
|
||||
* initial mode and with out select mode.
|
||||
*/
|
||||
function InitiateViewOption() {
|
||||
if ($("#can-view").val()) {
|
||||
$(location).attr('href', $(this).data("url"));
|
||||
} else {
|
||||
$(modalPopupContent).html($('#errorCertificateView').html());
|
||||
showPopup();
|
||||
}
|
||||
}
|
||||
|
||||
function loadCertificates(searchParam) {
|
||||
$("#loading-content").show();
|
||||
var certificateListing = $("#certificate-listing");
|
||||
var certificateListingSrc = certificateListing.attr("src");
|
||||
$.template("certificate-listing", certificateListingSrc, function (template) {
|
||||
var serviceURL = base_api_url + "/admin/certificates";
|
||||
|
||||
if (searchParam != null && searchParam != undefined && searchParam.trim() != '') {
|
||||
serviceURL = base_api_url + "/admin/certificates?" + searchParam;
|
||||
}
|
||||
|
||||
var successCallback = function (data, textStatus, jqXHR) {
|
||||
if (jqXHR.status == 200 && data) {
|
||||
data = JSON.parse(data);
|
||||
|
||||
var viewModel = {};
|
||||
viewModel.certificates = data.certificates;
|
||||
|
||||
for (var i = 0; i < viewModel.certificates.length; i++) {
|
||||
viewModel.certificates[i].removePermitted = true;
|
||||
viewModel.certificates[i].viewPermitted = true;
|
||||
}
|
||||
|
||||
if (viewModel.certificates.length > 0) {
|
||||
$('#ast-container').removeClass('hidden');
|
||||
$('#certificate-listing-status-msg').text("");
|
||||
var content = template(viewModel);
|
||||
$("#ast-container").html(content);
|
||||
} else {
|
||||
$('#ast-container').addClass('hidden');
|
||||
$('#certificate-listing-status-msg').text('No certificate is available to be displayed.');
|
||||
$('#certificate-listing-status').removeClass('hidden');
|
||||
}
|
||||
|
||||
$("#loading-content").hide();
|
||||
|
||||
if (isInit) {
|
||||
$('#certificate-grid').datatables_extended();
|
||||
isInit = false;
|
||||
}
|
||||
|
||||
$(".icon .text").res_text(0.2);
|
||||
}
|
||||
};
|
||||
invokerUtil.get(serviceURL,
|
||||
successCallback,
|
||||
function (message) {
|
||||
$('#ast-container').addClass('hidden');
|
||||
$('#certificate-listing-status-msg').
|
||||
text('Invalid search query. Try again with a valid search query');
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
loadCertificates();
|
||||
|
||||
$(".viewEnabledIcon").click(function () {
|
||||
InitiateViewOption();
|
||||
});
|
||||
});
|
@ -0,0 +1,30 @@
|
||||
{{#each certificates}}
|
||||
|
||||
<tr data-type="selectable" id="{{serialNumber}}" data-username="{{serialNumber}}">
|
||||
<td class="remove-padding icon-only content-fill viewEnabledIcon" data-username="{{serialNumber}}">
|
||||
<div class="thumbnail icon">
|
||||
<i class="square-element text fw fw-document"></i>
|
||||
</div>
|
||||
</td>
|
||||
<td class="fade-edge remove-padding-top" data-search="{{serialNumber}}" data-display="{{serialNumber}}"><i
|
||||
class="fw-mobile"></i> {{serialNumber}}</td>
|
||||
<td class="fade-edge remove-padding-top" data-search="{{subject}}" data-display="{{subject}}"><i
|
||||
class="fw-policy"></i> {{subject}}</td>
|
||||
<td class="text-right content-fill text-left-on-grid-view no-wrap">
|
||||
{{#unequal adminUser serialNumber }}
|
||||
{{#if removePermitted}}
|
||||
<a href="#" data-username="{{serialNumber}}" data-userid="{{userid}}"
|
||||
data-click-event="remove-form" onclick="javascript:removeCertificate('{{serialNumber}}')"
|
||||
class="btn padding-reduce-on-grid-view remove-user-link">
|
||||
<span class="fw-stack">
|
||||
<i class="fw fw-ring fw-stack-2x"></i>
|
||||
<i class="fw fw-delete fw-stack-1x"></i>
|
||||
</span>
|
||||
<span class="hidden-xs hidden-on-grid-view">Remove</span>
|
||||
</a>
|
||||
{{/if}}
|
||||
{{/unequal}}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{{/each}}
|
@ -0,0 +1,83 @@
|
||||
/**
|
||||
* Checks if provided input is valid against RegEx input.
|
||||
*
|
||||
* @param regExp Regular expression
|
||||
* @param inputString Input string to check
|
||||
* @returns {boolean} Returns true if input matches RegEx
|
||||
*/
|
||||
function inputIsValid(regExp, inputString) {
|
||||
regExp = new RegExp(regExp);
|
||||
return regExp.test(inputString);
|
||||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
var modalPopup = ".wr-modalpopup";
|
||||
// var modalPopupContainer = modalPopup + " .modalpopup-container";
|
||||
var modalPopupContent = modalPopup + " .modalpopup-content";
|
||||
|
||||
$("#change-password").click(function () {
|
||||
|
||||
$(modalPopupContent).html($('#change-password-window').html());
|
||||
showPopup();
|
||||
|
||||
$("a#change-password-yes-link").click(function () {
|
||||
var oldPassword = $("#old-password").val();
|
||||
var newPassword = $("#new-password").val();
|
||||
var confirmedPassword = $("#confirmed-password").val();
|
||||
var user = $("#user").val();
|
||||
|
||||
var errorMsgWrapper = "#notification-error-msg";
|
||||
var errorMsg = "#notification-error-msg span";
|
||||
if (!oldPassword) {
|
||||
$(errorMsg).text("Old password is a required field. It cannot be empty.");
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
} else if (!newPassword) {
|
||||
$(errorMsg).text("New password is a required field. It cannot be empty.");
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
} else if (!confirmedPassword) {
|
||||
$(errorMsg).text("Retyping the new password is required.");
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
} else if (confirmedPassword != newPassword) {
|
||||
$(errorMsg).text("New password doesn't match the confirmation.");
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
} else if (!inputIsValid(/^[\S]{5,30}$/, confirmedPassword)) {
|
||||
$(errorMsg).text("Password should be minimum 5 characters long, should not include any whitespaces.");
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
} else {
|
||||
var changePasswordFormData = {};
|
||||
//changePasswordFormData.username = user;
|
||||
changePasswordFormData.newPassword = unescape((confirmedPassword));
|
||||
changePasswordFormData.oldPassword = unescape((oldPassword));
|
||||
|
||||
|
||||
var changePasswordAPI = "/api/device-mgt/v1.0/users" + user + "/credentials";
|
||||
|
||||
invokerUtil.put(
|
||||
changePasswordAPI,
|
||||
changePasswordFormData,
|
||||
function (data, textStatus, jqXHR) {
|
||||
if (jqXHR.status == 200 && data) {
|
||||
$(modalPopupContent).html($('#change-password-success-content').html());
|
||||
$("#change-password-success-link").click(function () {
|
||||
hidePopup();
|
||||
});
|
||||
}
|
||||
}, function (jqXHR) {
|
||||
if (jqXHR.status == 400) {
|
||||
$(errorMsg).text("Old password does not match with the provided value.");
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
} else {
|
||||
$(errorMsg).text("An unexpected error occurred. Please try again later.");
|
||||
$(errorMsgWrapper).removeClass("hidden");
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$("a#change-password-cancel-link").click(function () {
|
||||
hidePopup();
|
||||
});
|
||||
});
|
||||
});
|
@ -0,0 +1,4 @@
|
||||
function onRequest() {
|
||||
var constants = require("/app/modules/constants.js");
|
||||
return session.get(constants["USER_SESSION_KEY"]);
|
||||
}
|
Loading…
Reference in new issue