Adding role add/update/delete related changes

revert-70aa11f8
Ace 8 years ago
parent 6a580994fb
commit e5a4c0f795

@ -47,7 +47,7 @@
<div id="role-create-error-msg" class="alert alert-danger hidden" role="alert"> <div id="role-create-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>
<label class="wr-input-label">Domain *</label> <label class="wr-input-label">User Store Domain</label>
<div class="wr-input-control"> <div class="wr-input-control">
<select id="domain" class="form-control select"> <select id="domain" class="form-control select">
@ -106,6 +106,7 @@
</div> </div>
</div> </div>
<!-- /content --> <!-- /content -->
<div id="app-context" data-app-context="{{@app.context}}" class="hidden"></div>
</div> </div>
</div> </div>
<!-- /content/body --> <!-- /content/body -->

@ -31,6 +31,8 @@ function inputIsValid(regExp, inputString) {
var validateInline = {}; var validateInline = {};
var clearInline = {}; var clearInline = {};
var apiBasePath = "/api/device-mgt/v1.0";
var enableInlineError = function (inputField, errorMsg, errorSign) { var enableInlineError = function (inputField, errorMsg, errorSign) {
var fieldIdentifier = "#" + inputField; var fieldIdentifier = "#" + inputField;
var errorMsgIdentifier = "#" + inputField + " ." + errorMsg; var errorMsgIdentifier = "#" + inputField + " ." + errorMsg;
@ -113,12 +115,12 @@ function formatRepoSelection (user) {
} }
$(document).ready(function () { $(document).ready(function () {
var appContext = $("#app-context").data("app-context");
$("#users").select2({ $("#users").select2({
multiple:true, multiple:true,
tags: false, tags: false,
ajax: { ajax: {
url: window.location.origin + "/devicemgt/api/invoker/execute/", url: appContext + "/api/invoker/execute/",
method: "POST", method: "POST",
dataType: 'json', dataType: 'json',
delay: 250, delay: 250,
@ -128,15 +130,17 @@ $(document).ready(function () {
data: function (params) { data: function (params) {
var postData = {}; var postData = {};
postData.actionMethod = "GET"; postData.actionMethod = "GET";
postData.actionUrl = "/devicemgt_admin/users/view-users?username=" + params.term; postData.actionUrl = apiBasePath + "/users/search/usernames?filter=" + params.term;
postData.actionPayload = null; postData.actionPayload = null;
return JSON.stringify(postData); return JSON.stringify(postData);
}, },
processResults: function (data, page) { processResults: function (data, page) {
var newData = []; var newData = [];
$.each(data.responseContent, function (index, value) { $.each(data, function (index, value) {
value.id = value.username; var user = {};
newData.push(value); user.username = value.username;
user.id = value.username;
newData.push(user);
}); });
return { return {
results: newData results: newData
@ -153,7 +157,7 @@ $(document).ready(function () {
/** /**
* Following click function would execute * Following click function would execute
* when a user clicks on "Add Role" button * when a user clicks on "Add Role" button
* on Add Role page in WSO2 Devicemgt Console. * on Add Role page in WSO2 MDM Console.
*/ */
$("button#add-role-btn").click(function() { $("button#add-role-btn").click(function() {
var rolenameInput = $("input#rolename"); var rolenameInput = $("input#rolename");
@ -188,7 +192,7 @@ $(document).ready(function () {
} }
addRoleFormData.users = users; addRoleFormData.users = users;
var addRoleAPI = "/devicemgt_admin/roles"; var addRoleAPI = apiBasePath + "/roles";
invokerUtil.post( invokerUtil.post(
addRoleAPI, addRoleAPI,
@ -205,10 +209,10 @@ $(document).ready(function () {
//// Refreshing with success message //// Refreshing with success message
//$("#role-create-form").addClass("hidden"); //$("#role-create-form").addClass("hidden");
//$("#role-created-msg").removeClass("hidden"); //$("#role-created-msg").removeClass("hidden");
window.location.href = '/devicemgt/role/edit-permission/' + roleName + '?wizard=true'; window.location.href = appContext + '/role/edit-permission/' + roleName;
} }
}, function (data) { }, function (data) {
if (JSON.parse(data.responseText).errorMessage.indexOf("RoleExisting") > -1) { if (JSON.parse(data).errorMessage.indexOf("RoleExisting") > -1) {
$(errorMsg).text("Role name : " + roleName + " already exists. Pick another role name."); $(errorMsg).text("Role name : " + roleName + " already exists. Pick another role name.");
} else { } else {
$(errorMsg).text(JSON.parse(data.responseText).errorMessage); $(errorMsg).text(JSON.parse(data.responseText).errorMessage);

@ -78,6 +78,20 @@
</a> </a>
</div> </div>
</div> </div>
<div id="child-deselect-error-content" class="hide">
<div class="content">
<div class="row">
<div class="col-lg-5 col-md-6 col-centered">
<h3>Can't deselect child permissions when parent permission is selected.</h3>
<div class="buttons">
<a href="#" id="child-deselect-error-link" class="btn-operations">
Ok
</a>
</div>
</div>
</div>
</div>
</div>
<!-- /content --> <!-- /content -->
</div> </div>
</div> </div>

@ -26,7 +26,7 @@ function onRequest(context) {
var userModule = require("/app/modules/business-controllers/user.js")["userModule"]; var userModule = require("/app/modules/business-controllers/user.js")["userModule"];
var uri = request.getRequestURI(); var uri = request.getRequestURI();
var uriMatcher = new URIMatcher(String(uri)); var uriMatcher = new URIMatcher(String(uri));
var isMatched = uriMatcher.match("/{context}/roles/edit-role-permission/{rolename}"); var isMatched = uriMatcher.match("/{context}/role/edit-permission/{rolename}");
if (isMatched) { if (isMatched) {
var matchedElements = uriMatcher.elements(); var matchedElements = uriMatcher.elements();

@ -31,6 +31,8 @@
var modalPopup = ".wr-modalpopup"; var modalPopup = ".wr-modalpopup";
var modalPopupContent = modalPopup + " .modalpopup-content"; var modalPopupContent = modalPopup + " .modalpopup-content";
var apiBasePath = "/api/device-mgt/v1.0";
/* /*
* hide popup function. * hide popup function.
*/ */
@ -96,29 +98,33 @@ $(document).ready(function () {
var listPartialSrc = $("#list-partial").attr("src"); var listPartialSrc = $("#list-partial").attr("src");
var treeTemplateSrc = $("#tree-template").attr("src"); var treeTemplateSrc = $("#tree-template").attr("src");
var roleName = $("#permissionList").data("currentrole"); var roleName = $("#permissionList").data("currentrole");
var serviceUrl = "/devicemgt_admin/roles/permissions?rolename=" + encodeURIComponent(roleName); var serviceUrl = apiBasePath + "/roles/" +encodeURIComponent(roleName)+"/permissions";
$.registerPartial("list", listPartialSrc, function(){ $.registerPartial("list", listPartialSrc, function(){
$.template("treeTemplate", treeTemplateSrc, function (template) { $.template("treeTemplate", treeTemplateSrc, function (template) {
invokerUtil.get(serviceUrl, invokerUtil.get(serviceUrl,
function(data){ function(data){
data = JSON.parse(data); data = JSON.parse(data);
var treeData = data.responseContent; var treeData = data;
if(treeData.nodeList.length > 0){ if(treeData.nodeList.length > 0){
treeData = { nodeList: treeData.nodeList }; treeData = { nodeList: treeData.nodeList };
var content = template(treeData); var content = template(treeData);
$("#permissionList").html(content); $("#permissionList").html(content);
$("#permissionList").on("click", ".permissionTree .permissionItem", function() { $("#permissionList").on("click", ".permissionTree .permissionItem", function(){
var parentValue = $(this).prop('checked'); var parentValue = $(this).prop('checked');
$(this).closest("li").find("li input").each(function () { $(this).closest("li").find("li input").each(function () {
$(this).prop('checked',parentValue); $(this).prop('checked',parentValue);
}); });
}); });
} }
$("#permissionList li input").click(function() { $("#permissionList li input").click(function(){
var parentInput = $(this).parents("ul:eq(1) > li").find('input:eq(0)'); var parentInput = $(this).parents("ul:eq(1) > li").find('input:eq(0)');
if(parentInput && parentInput.is(':checked')){ if(parentInput && parentInput.is(':checked')){
parentInput.prop('checked', false); $(modalPopupContent).html($('#child-deselect-error-content').html());
return true; showPopup();
$("a#child-deselect-error-link").click(function () {
hidePopup();
});
return false;
} }
}); });
$('#permissionList').tree_view(); $('#permissionList').tree_view();
@ -135,24 +141,25 @@ $(document).ready(function () {
*/ */
$("button#update-permissions-btn").click(function() { $("button#update-permissions-btn").click(function() {
var roleName = $("#permissionList").data("currentrole"); var roleName = $("#permissionList").data("currentrole");
var updateRolePermissionAPI = "/devicemgt_admin/roles?rolename=" + roleName; var updateRolePermissionAPI = apiBasePath + "/roles/" + roleName;
var updateRolePermissionData = {}; var updateRolePermissionData = {};
var perms = []; var perms = [];
$("#permissionList li input:checked").each(function(){ $("#permissionList li input:checked").each(function(){
perms.push($(this).data("resourcepath")); perms.push($(this).data("resourcepath"));
}); })
updateRolePermissionData.permissions = perms; updateRolePermissionData.permissions = perms;
invokerUtil.put( invokerUtil.put(
updateRolePermissionAPI, updateRolePermissionAPI,
updateRolePermissionData, updateRolePermissionData,
function (jqXHR) { function (data, textStatus, jqXHR) {
if (JSON.parse(jqXHR).status == 200 || jqXHR.status == 200) { if (jqXHR.status == 200) {
// Refreshing with success message // Refreshing with success message
$("#role-create-form").addClass("hidden"); $("#role-create-form").addClass("hidden");
$("#role-created-msg").removeClass("hidden"); $("#role-created-msg").removeClass("hidden");
} }
}, function (data) { }, function (data) {
$(errorMsg).text(JSON.parse(data.responseText).errorMessage); var payload = JSON.parse(data.responseText);
$(errorMsg).text(payload.message);
$(errorMsgWrapper).removeClass("hidden"); $(errorMsgWrapper).removeClass("hidden");
} }
); );
@ -162,4 +169,4 @@ $(document).ready(function () {
function get(name){ function get(name){
if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search)) if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search))
return decodeURIComponent(name[1]); return decodeURIComponent(name[1]);
} }

@ -29,7 +29,7 @@
<div id="role-create-error-msg" class="alert alert-danger hidden" role="alert"> <div id="role-create-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>
<label class="wr-input-label">Domain *</label> <label class="wr-input-label">Domain</label>
<div class="wr-input-control"> <div class="wr-input-control">
<select id="domain" class="form-control select"> <select id="domain" class="form-control select">
<option>PRIMARY</option> <option>PRIMARY</option>
@ -81,6 +81,7 @@
</div> </div>
</div> </div>
<!-- /content --> <!-- /content -->
<div id="app-context" data-app-context="{{@app.context}}" class="hidden"></div>
</div> </div>
</div> </div>
<!-- /content/body --> <!-- /content/body -->

@ -1,21 +1,3 @@
/*
* 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.
*/
/** /**
* Checks if provided input is valid against RegEx input. * Checks if provided input is valid against RegEx input.
* *
@ -31,6 +13,8 @@ function inputIsValid(regExp, inputString) {
var validateInline = {}; var validateInline = {};
var clearInline = {}; var clearInline = {};
var apiBasePath = "/api/device-mgt/v1.0";
var enableInlineError = function (inputField, errorMsg, errorSign) { var enableInlineError = function (inputField, errorMsg, errorSign) {
var fieldIdentifier = "#" + inputField; var fieldIdentifier = "#" + inputField;
var errorMsgIdentifier = "#" + inputField + " ." + errorMsg; var errorMsgIdentifier = "#" + inputField + " ." + errorMsg;
@ -113,12 +97,12 @@ function formatRepoSelection (user) {
} }
$(document).ready(function () { $(document).ready(function () {
var appContext = $("#app-context").data("app-context");
$("#users").select2({ $("#users").select2({
multiple:true, multiple:true,
tags: false, tags: false,
ajax: { ajax: {
url: window.location.origin + "/devicemgt/api/invoker/execute/", url: appContext + "/api/invoker/execute/",
method: "POST", method: "POST",
dataType: 'json', dataType: 'json',
delay: 250, delay: 250,
@ -128,7 +112,7 @@ $(document).ready(function () {
data: function (params) { data: function (params) {
var postData = {}; var postData = {};
postData.actionMethod = "GET"; postData.actionMethod = "GET";
postData.actionUrl = "/devicemgt_admin/users/view-users?username=" + params.term; postData.actionUrl = apiBasePath + "/users/search/usernames?filter=" + params.term;
postData.actionPayload = null; postData.actionPayload = null;
return JSON.stringify(postData); return JSON.stringify(postData);
}, },
@ -155,7 +139,7 @@ $(document).ready(function () {
/** /**
* Following click function would execute * Following click function would execute
* when a user clicks on "Add Role" button * when a user clicks on "Add Role" button
* on Add Role page in WSO2 Devicemgt Console. * on Add Role page in WSO2 MDM Console.
*/ */
$("button#add-role-btn").click(function() { $("button#add-role-btn").click(function() {
var rolenameInput = $("input#rolename"); var rolenameInput = $("input#rolename");
@ -183,12 +167,12 @@ $(document).ready(function () {
addRoleFormData.roleName = domain + "/" + roleName; addRoleFormData.roleName = domain + "/" + roleName;
} }
var addRoleAPI = "/devicemgt_admin/roles?rolename=" + encodeURIComponent(currentRoleName); var addRoleAPI = apiBasePath + "/roles/" + currentRoleName;
invokerUtil.put( invokerUtil.put(
addRoleAPI, addRoleAPI,
addRoleFormData, addRoleFormData,
function (jqXHR) { function (data, textStatus, jqXHR) {
if (JSON.parse(jqXHR).status == 200 || jqXHR.status == 200) { if (jqXHR.status == 200) {
// Clearing user input fields. // Clearing user input fields.
$("input#rolename").val(""); $("input#rolename").val("");
$("#domain").val(""); $("#domain").val("");
@ -197,7 +181,8 @@ $(document).ready(function () {
$("#role-created-msg").removeClass("hidden"); $("#role-created-msg").removeClass("hidden");
} }
}, function (data) { }, function (data) {
$(errorMsg).text(JSON.parse(data.responseText).errorMessage); var payload = JSON.parse(data.responseText);
$(errorMsg).text(payload.message);
$(errorMsgWrapper).removeClass("hidden"); $(errorMsgWrapper).removeClass("hidden");
} }
); );

@ -16,7 +16,7 @@
* under the License. * under the License.
*/ */
var loadRoleBasedActionURL = function (action, rolename) { var loadRoleBasedActionURL = function (action, rolename) {
var href = $("#ast-container").data("app-context") + "roles/" + action + "?rolename=" + rolename; var href = $("#ast-container").data("app-context") + "role/" + action + "/" + rolename;
$(location).attr('href', href); $(location).attr('href', href);
}; };
@ -113,13 +113,13 @@ function loadRoles(searchQuery) {
class: "text-right content-fill text-left-on-grid-view no-wrap", class: "text-right content-fill text-left-on-grid-view no-wrap",
data: null, data: null,
render: function ( data, type, row, meta ) { render: function ( data, type, row, meta ) {
return '<a onclick="javascript:loadRoleBasedActionURL(\'edit-role\', \'' + data.name + '\')" data-role="' + data.name + return '<a onclick="javascript:loadRoleBasedActionURL(\'edit\', \'' + data.name + '\')" data-role="' + data.name +
'" data-click-event="edit-form" class="btn padding-reduce-on-grid-view edit-role-link"><span class="fw-stack fw-lg">' + '" data-click-event="edit-form" class="btn padding-reduce-on-grid-view edit-role-link"><span class="fw-stack fw-lg">' +
'<i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-user fw-stack-1x"></i>' + '<i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-user fw-stack-1x"></i>' +
'<span class="fw-stack fw-move-right fw-move-bottom"><i class="fw fw-circle fw-stack-2x fw-stroke fw-inverse"></i>' + '<span class="fw-stack fw-move-right fw-move-bottom"><i class="fw fw-circle fw-stack-2x fw-stroke fw-inverse"></i>' +
'<i class="fw fw-circle fw-stack-2x"></i><i class="fw fw-edit fw-stack-1x fw-inverse"></i></span></span>' + '<i class="fw fw-circle fw-stack-2x"></i><i class="fw fw-edit fw-stack-1x fw-inverse"></i></span></span>' +
'<span class="hidden-xs hidden-on-grid-view">Edit</span></a>' + '<span class="hidden-xs hidden-on-grid-view">Edit</span></a>' +
'<a onclick="javascript:loadRoleBasedActionURL(\'edit-role-permission\', \'' + data.name + '<a onclick="javascript:loadRoleBasedActionURL(\'edit-permission\', \'' + data.name +
'\')" data-role="' + data.name + '" data-click-event="edit-form" class="btn padding-reduce-on-grid-view edit-permission-link">' + '\')" data-role="' + data.name + '" data-click-event="edit-form" class="btn padding-reduce-on-grid-view edit-permission-link">' +
'<span class="fw-stack fw-lg"><i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-security-policy fw-stack-1x"></i>' + '<span class="fw-stack fw-lg"><i class="fw fw-ring fw-stack-2x"></i><i class="fw fw-security-policy fw-stack-1x"></i>' +
'<span class="fw-stack fw-move-right fw-move-bottom"><i class="fw fw-circle fw-stack-2x fw-stroke fw-inverse"></i>' + '<span class="fw-stack fw-move-right fw-move-bottom"><i class="fw fw-circle fw-stack-2x fw-stroke fw-inverse"></i>' +

Loading…
Cancel
Save