From d313b339687630874483310afa0119c09cd1cff1 Mon Sep 17 00:00:00 2001 From: ulrich Date: Tue, 31 Jan 2017 22:14:27 +0000 Subject: [PATCH] Rollen des admin-Benutzers geaendert und Doku nochmals ergaenzt --- web/ui/ui.js | 181 ++++++++++++++++++++++++++++++++++++++------ 1 files changed, 155 insertions(+), 26 deletions(-) diff --git a/web/ui/ui.js b/web/ui/ui.js index 4a7daf9..0e7b427 100644 --- a/web/ui/ui.js +++ b/web/ui/ui.js @@ -1,14 +1,25 @@ function um_init() { + $('#user-form').hide(); + $('#nav').hide(); + $('#role-form').hide(); + $('#user-role-form').hide(); $('.user-save-btn').click(um_user_save); + $('.user-cancel-btn').click(um_back_from_new_user); $('#nutzerliste').click(um_user_list_click); $('#nutzerLoeschen').click(um_del_user); $('#nutzerNeu').click(um_new_user); $('#nutzerLoeschen').prop( "disabled", true ); $('#nutzerRolleEntziehen').prop( "disabled", true ); + $('#rolleErteilen').prop( "disabled", true ); + $('#rolleErteilen').click(um_grant_role); + $('#nutzerRolleEntziehen').click(um_revoke_role); $('#neueRolle').click(um_new_role); + $('#rollen').click(um_role_list_click); + $('#nutzerrollen').click(um_user_role_list_click); um_clear_user_form(); um_apicall_get_user_list(); + um_apicall_get_granted_roles(); } /* ----- user functions ------ */ @@ -19,18 +30,11 @@ if(user.pw != kww) { alert('Kennworte stimmen nicht ueberein.'); } else { - //alert('user-save ' + user.id); um_apicall_create_user(self.serialisieren(user)); } } function um_del_user() { - /*var users = []; - $('#nutzerliste :selected').each(function(i, selected){ - users[i] = $(selected).text(); - });*/ - - //alert('delete user ' + users[0]); var userId = um_get_first_selected_user_id(); if(userId !== 'none') { var antwort = confirm("Wollen Sie den Nutzer " + userId + " loeschen?"); @@ -41,13 +45,10 @@ } } -function um_new_user() { - alert('show form to enter new user'); -} - /* ----------- role functions ------------ */ function um_new_role() { + var roleIsNew = true; var userId = um_get_first_selected_user_id(); if(userId === 'none') { alert('Es wurde kein Benutzer ausgewaehlt.'); @@ -56,22 +57,73 @@ if (answer === null) { alert("Es wurde Cancel betaetigt."); } else if(answer !== "") { - //alert("Rolle fuer Benutzer " + userId + " anlegen: " + answer); - um_apicall_grant_role(userId, answer); + um_apicall_grant_role(userId, answer, roleIsNew); } else { alert("OK betaetigt, aber Keine Rolle angegeben."); } } } +function um_grant_role() { + var roleIsNew = false; + var userId = um_get_first_selected_user_id(); + var roleId = um_get_first_selected_role_id(); + if(roleId !== 'none' && userId !== 'none') { + um_apicall_grant_role(userId, roleId, roleIsNew); + } +} + +function um_revoke_role() { + var userId = um_get_first_selected_user_id(); + var roleId = um_get_first_selected_userrole_id(); + if(roleId !== 'none' && userId !== 'none') { + um_apicall_revoke_role(userId, roleId); + } +} + /* ----------- ui interaction ------------ */ function um_user_list_click() { + $('#nav-back-btn').click(um_back_from_roles); $('#nutzerLoeschen').prop( "disabled", false ); + $('#rollen :selected').prop("selected", false); var userId = um_get_first_selected_user_id(); + $('#userid').html(userId); um_apicall_get_user_roles(userId); + $('#user-list-form').hide(); + $('#nav').show(); + $('#role-form').show(); + $('#user-role-form').show(); } +function um_new_user() { + $('#nav-back-btn').click(um_back_from_new_user); + $('#user-list-form').hide(); + $('#user-form').show(); + $('#nav').show(); +} + +function um_role_list_click() { + $('#rolleErteilen').prop( "disabled", false ); +} + +function um_user_role_list_click() { + $('#nutzerRolleEntziehen').prop( "disabled", false ); +} + +function um_back_from_roles() { + $('#user-list-form').show(); + $('#nav').hide(); + $('#role-form').hide(); + $('#user-role-form').hide(); +} + +function um_back_from_new_user() { + $('#user-list-form').show(); + $('#nav').hide(); + $('#user-form').hide(); + um_clear_user_form(); +} /* ------- ui i/o ------ */ @@ -90,9 +142,6 @@ $("#nutzerliste").append('<option value=' + user.String + '>' + user.String + '</option>'); } $('#nutzerLoeschen').prop( "disabled", true ); - //var user1 = users.List[1]; - //var username = user1.String; - //alert(username); } function um_clear_user_form() { @@ -113,7 +162,30 @@ return userId; } -// {"List":[{"List":[{"String":"ROLE_NAME"},{"String":"testrolle1"}]}]} +function um_get_first_selected_role_id() { + var roleId = 'none'; + var roleIds = []; + $('#rollen :selected').each(function(i, selected){ + roleIds[i] = $(selected).text(); + }); + if(roleIds.length > 0) { + roleId = roleIds[0]; + } + return roleId; +} + +function um_get_first_selected_userrole_id() { + var roleId = 'none'; + var roleIds = []; + $('#nutzerrollen :selected').each(function(i, selected){ + roleIds[i] = $(selected).text(); + }); + if(roleIds.length > 0) { + roleId = roleIds[0]; + } + return roleId; +} + function um_show_user_role_list(resp) { $("#nutzerrollen").empty(); var rollen = resp.List[0]; @@ -122,6 +194,17 @@ $("#nutzerrollen").append('<option value=' + rolle.String + '>' + rolle.String + '</option>'); } $('#nutzerRolleEntziehen').prop( "disabled", true ); + $('#rolleErteilen').prop( "disabled", true ); +} + +function um_show_role_list(resp) { + $("#rollen").empty(); + var rollen = resp.List[0]; + for(var i = 1; i < rollen.List.length; i++) { + var rolle = rollen.List[i]; + $("#rollen").append('<option value=' + rolle.String + '>' + rolle.String + '</option>'); + } + $('#rolleErteilen').prop( "disabled", true ); } /* ---- api calls ----- */ @@ -137,9 +220,8 @@ type: "POST", dataType : "html", success: function( resp ) { - //$('#fehler').html('Antwort: ' + resp); um_apicall_get_user_list(); - um_clear_user_form(); + um_back_from_new_user(); }, error: function( xhr, status, errorThrown ) { $('#fehler').html("Error: " + errorThrown + " Status: " + status); @@ -191,20 +273,45 @@ }); } -// public UserRole grantRole(String userId, String roleName) -function um_apicall_grant_role(userId, roleName) { +// http]://example.com/um/api?c=de.uhilger.um.api.UserMgr&m=testmethode +function um_apicall_grant_role(userId, roleName, isNewRole) { + var ur = new UserRole(userId, roleName); var m = 'grantRole'; var u = '../svc/' + m; $.ajax({ url: u, data: { - p1: userId, - p2: roleName + p: self.serialisieren(ur) }, type: "POST", dataType : "html", success: function( resp ) { - // Liste der Rollen des Benutzers neu anzeigen bzw. die neue Rolle dort hinzufuegen + um_apicall_get_user_roles(userId); + if(isNewRole) { + um_apicall_get_granted_roles(); + } + }, + error: function( xhr, status, errorThrown ) { + $('#fehler').html("Error: " + errorThrown + " Status: " + status); + }, + complete: function( xhr, status ) { + //alert( "The request is complete!" ); + } + }); +} + +function um_apicall_revoke_role(userId, roleName) { + var ur = new UserRole(userId, roleName); + var m = 'revokeRole'; + var u = '../svc/' + m; + $.ajax({ + url: u, + data: { + p: self.serialisieren(ur) + }, + type: "POST", + dataType : "html", + success: function( resp ) { um_apicall_get_user_roles(userId); }, error: function( xhr, status, errorThrown ) { @@ -216,7 +323,6 @@ }); } -//public List getUserRoleNames(String userId) function um_apicall_get_user_roles(userId) { var m = 'getUserRoleNames'; var u = '../svc/' + m + '?p=' + userId; @@ -225,8 +331,26 @@ type: "GET", dataType : "json", success: function( resp ) { - // Antwort in Liste anzeigen um_show_user_role_list(resp); + }, + error: function( xhr, status, errorThrown ) { + $('#fehler').html("Error: " + errorThrown + " Status: " + status); + }, + complete: function( xhr, status ) { + //alert( "The request is complete!" ); + } + }); +} + +function um_apicall_get_granted_roles() { + var m = 'getRoleNamesGranted'; + var u = '../svc/' + m; + $.ajax({ + url: u, + type: "GET", + dataType : "json", + success: function( resp ) { + um_show_role_list(resp); }, error: function( xhr, status, errorThrown ) { $('#fehler').html("Error: " + errorThrown + " Status: " + status); @@ -251,4 +375,9 @@ this.firstName = fn; this.lastName = ln; this.email = em; +} + +function UserRole(u, r) { + this.userId = u; + this.role = r; } \ No newline at end of file -- Gitblit v1.9.3