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 ------ */
function um_user_save() {
var user = um_user_form_lesen();
var kww = $('#kennwortw').val();
if(user.pw != kww) {
alert('Kennworte stimmen nicht ueberein.');
} else {
um_apicall_create_user(self.serialisieren(user));
}
}
function um_del_user() {
var userId = um_get_first_selected_user_id();
if(userId !== 'none') {
var antwort = confirm("Wollen Sie den Nutzer " + userId + " loeschen?");
if (antwort === true) {
var user = new User(userId, '-', '-', '-', '-');
um_apicall_del_user(self.serialisieren(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.');
} else {
var answer = prompt("Name der Rolle", "");
if (answer === null) {
alert("Es wurde Cancel betaetigt.");
} else if(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 ------ */
function um_user_form_lesen() {
var userId = $('#anmeldename').val();
var kw = $('#kennwort').val();
var user = new User(userId, kw, '-', '-', '-');
return user;
}
function um_show_user_list(resp) {
$("#nutzerliste").empty();
var users = resp.List[0];
for(var i = 1; i < users.List.length; i++) {
var user = users.List[i];
$("#nutzerliste").append('');
}
$('#nutzerLoeschen').prop( "disabled", true );
}
function um_clear_user_form() {
$('#anmeldename').val('');
$('#kennwort').val('');
$('#kennwortw').val('');
}
function um_get_first_selected_user_id() {
var userId = 'none';
var userIds = [];
$('#nutzerliste :selected').each(function(i, selected){
userIds[i] = $(selected).text();
});
if(userIds.length > 0) {
userId = userIds[0];
}
return userId;
}
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];
for(var i = 1; i < rollen.List.length; i++) {
var rolle = rollen.List[i];
$("#nutzerrollen").append('');
}
$('#nutzerRolleEntziehen').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('');
}
$('#rolleErteilen').prop( "disabled", true );
}
/* ---- api calls ----- */
function um_apicall_create_user(user) {
var m = 'createUser';
var u = '../svc/' + m;
$.ajax({
url: u,
data: {
p: user
},
type: "POST",
dataType : "html",
success: function( resp ) {
um_apicall_get_user_list();
um_back_from_new_user();
},
error: function( xhr, status, errorThrown ) {
$('#fehler').html("Error: " + errorThrown + " Status: " + status);
},
complete: function( xhr, status ) {
//alert( "The request is complete!" );
}
});
}
function um_apicall_del_user(user) {
var m = 'deleteUser';
var u = '../svc/' + m;
$.ajax({
url: u,
data: {
p: user
},
type: "POST",
dataType : "html",
success: function( resp ) {
um_apicall_get_user_list();
},
error: function( xhr, status, errorThrown ) {
$('#fehler').html("Error: " + errorThrown + " Status: " + status);
},
complete: function( xhr, status ) {
//alert( "The request is complete!" );
}
});
}
function um_apicall_get_user_list() {
var m = 'getUserNameList';
var u = '../svc/' + m;
$.ajax({
url: u,
type: "GET",
dataType : "json",
success: function( resp ) {
um_show_user_list(resp);
},
error: function( xhr, status, errorThrown ) {
$('#fehler').html("Error: " + errorThrown + " Status: " + status);
},
complete: function( xhr, status ) {
//alert( "The request is complete!" );
}
});
}
// 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: {
p: self.serialisieren(ur)
},
type: "POST",
dataType : "html",
success: function( resp ) {
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 ) {
$('#fehler').html("Error: " + errorThrown + " Status: " + status);
},
complete: function( xhr, status ) {
//alert( "The request is complete!" );
}
});
}
function um_apicall_get_user_roles(userId) {
var m = 'getUserRoleNames';
var u = '../svc/' + m + '?p=' + userId;
$.ajax({
url: u,
type: "GET",
dataType : "json",
success: function( resp ) {
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);
},
complete: function( xhr, status ) {
//alert( "The request is complete!" );
}
});
}
/* ----- Hilfsfunktionen ----- */
function serialisieren(obj) {
return '{"' + obj.constructor.name + '":' + JSON.stringify(obj) + '}';
};
/* ----- Objekte ----- */
function User(i, p, fn, ln, em) {
this.id = i;
this.pw = p;
this.firstName = fn;
this.lastName = ln;
this.email = em;
}
function UserRole(u, r) {
this.userId = u;
this.role = r;
}