ulrich
2017-02-01 61cf4822e1f4080e0625610470f232dd32cb4dd6
commit | author | age
5bf001 1
U 2 function um_init() {
5e4151 3   $('#user-form').hide();
7f8a03 4   $('#nav').hide();
U 5   $('#role-form').hide();
6   $('#user-role-form').hide();
5bf001 7   $('.user-save-btn').click(um_user_save);
50ed23 8   $('.user-cancel-btn').click(um_back_from_new_user);
4df887 9   $('#nutzerliste').click(um_user_list_click);
U 10   $('#nutzerLoeschen').click(um_del_user);
11   $('#nutzerNeu').click(um_new_user);
12   $('#nutzerLoeschen').prop( "disabled", true );
c79c12 13   $('#nutzerRolleEntziehen').prop( "disabled", true );
51edf4 14   $('#rolleErteilen').prop( "disabled", true );
5e4151 15   $('#rolleErteilen').click(um_grant_role);
e03a3e 16   $('#nutzerRolleEntziehen').click(um_revoke_role);
95f415 17   $('#neueRolle').click(um_new_role);
51edf4 18   $('#rollen').click(um_role_list_click);
U 19   $('#nutzerrollen').click(um_user_role_list_click);
72c5c3 20   um_clear_user_form();
U 21   um_apicall_get_user_list();
51edf4 22   um_apicall_get_granted_roles();
5bf001 23 }
4df887 24
U 25 /* ----- user functions ------ */
5bf001 26
U 27 function um_user_save() {
f8b605 28   var user = um_user_form_lesen();
U 29   var kww = $('#kennwortw').val();
30   if(user.pw != kww) {
31     alert('Kennworte stimmen nicht ueberein.');
32   } else {
72c5c3 33     um_apicall_create_user(self.serialisieren(user));
f8b605 34   }
U 35 }
4df887 36
72c5c3 37 function um_del_user() {
95f415 38   var userId = um_get_first_selected_user_id();
U 39   if(userId !== 'none') {
c79c12 40     var antwort = confirm("Wollen Sie den Nutzer " + userId + " loeschen?"); 
95f415 41     if (antwort === true) {
U 42       var user = new User(userId, '-', '-', '-', '-');
43       um_apicall_del_user(self.serialisieren(user));
44     }  
45   }
4df887 46 }
U 47
95f415 48 /* ----------- role functions ------------ */
U 49
50 function um_new_role() {
51edf4 51   var roleIsNew = true;
95f415 52   var userId = um_get_first_selected_user_id();
U 53   if(userId === 'none') {
54     alert('Es wurde kein Benutzer ausgewaehlt.');
55   } else {
56     var answer = prompt("Name der Rolle", "");
57     if (answer === null) {
58       alert("Es wurde Cancel betaetigt.");
59     } else if(answer !== "") {
51edf4 60       um_apicall_grant_role(userId, answer, roleIsNew);
95f415 61     } else {
U 62       alert("OK betaetigt, aber Keine Rolle angegeben.");
63     }
64   }
4df887 65 }
U 66
5e4151 67 function um_grant_role() {
U 68   var roleIsNew = false;
69   var userId = um_get_first_selected_user_id();
70   var roleId = um_get_first_selected_role_id();
71   if(roleId !== 'none' && userId !== 'none') {
72     um_apicall_grant_role(userId, roleId, roleIsNew);
73   }
74 }
75
e03a3e 76 function um_revoke_role() {
U 77   var userId = um_get_first_selected_user_id();
78   var roleId = um_get_first_selected_userrole_id();
79   if(roleId !== 'none' && userId !== 'none') {
80     um_apicall_revoke_role(userId, roleId);
81   }
82 }
83
4df887 84 /* ----------- ui interaction ------------ */
U 85
86 function um_user_list_click() {
7f8a03 87   $('#nav-back-btn').click(um_back_from_roles);
72c5c3 88   $('#nutzerLoeschen').prop( "disabled", false );
5e4151 89   $('#rollen :selected').prop("selected", false);
c79c12 90   var userId = um_get_first_selected_user_id();
7f8a03 91   $('#userid').html(userId);
c79c12 92   um_apicall_get_user_roles(userId);
7f8a03 93   $('#user-list-form').hide();
U 94   $('#nav').show();
95   $('#role-form').show();
96   $('#user-role-form').show();
51edf4 97 }
U 98
4f4b29 99 function um_new_user() {
U 100   $('#nav-back-btn').click(um_back_from_new_user);
101   $('#user-list-form').hide();
102   $('#user-form').show();
103   $('#nav').show();
104 }
105
51edf4 106 function um_role_list_click() {
U 107   $('#rolleErteilen').prop( "disabled", false );
108 }
109
110 function um_user_role_list_click() {
111   $('#nutzerRolleEntziehen').prop( "disabled", false );
4df887 112 }
U 113
7f8a03 114 function um_back_from_roles() {
U 115   $('#user-list-form').show();
116   $('#nav').hide();
117   $('#role-form').hide();
118   $('#user-role-form').hide();
4f4b29 119 }
U 120
121 function um_back_from_new_user() {
122   $('#user-list-form').show();
123   $('#nav').hide();
124   $('#user-form').hide();
125   um_clear_user_form();
7f8a03 126 }
4df887 127
U 128 /* ------- ui i/o ------ */
129
130 function um_user_form_lesen() {
131   var userId = $('#anmeldename').val();
132   var kw = $('#kennwort').val();
133   var user = new User(userId, kw, '-', '-', '-');
134   return user;
135 }
136
61cf48 137 /*
U 138  * {"List":[{"List":[{"String":"USER_NAME"},{"String":"admin"},{"String":"ulli"}]}]}
139  */
546fbc 140 function um_show_user_list(resp) {
72c5c3 141   $("#nutzerliste").empty();
61cf48 142   var template = $('#tpl-user-list').html();
U 143   Mustache.parse(template);   // optional, speeds up future uses
144   $("#nutzerliste").append( Mustache.render(template, resp) );
72c5c3 145 }
U 146
147 function um_clear_user_form() {
148   $('#anmeldename').val('');
149   $('#kennwort').val('');
150   $('#kennwortw').val('');
546fbc 151 }
4df887 152
95f415 153 function um_get_first_selected_user_id() {
U 154   var userId = 'none';
155   var userIds = [];
156   $('#nutzerliste :selected').each(function(i, selected){
157     userIds[i] = $(selected).text();
158   });
159   if(userIds.length > 0) {
160     userId = userIds[0];
161   }
162   return userId;
c79c12 163 }
U 164
5e4151 165 function um_get_first_selected_role_id() {
U 166   var roleId = 'none';
167   var roleIds = [];
168   $('#rollen :selected').each(function(i, selected){
e03a3e 169     roleIds[i] = $(selected).text();
U 170   });
171   if(roleIds.length > 0) {
172     roleId = roleIds[0];
173   }
174   return roleId;
175 }
176
177 function um_get_first_selected_userrole_id() {
178   var roleId = 'none';
179   var roleIds = [];
180   $('#nutzerrollen :selected').each(function(i, selected){
5e4151 181     roleIds[i] = $(selected).text();
U 182   });
183   if(roleIds.length > 0) {
184     roleId = roleIds[0];
185   }
186   return roleId;
187 }
188
c79c12 189 function um_show_user_role_list(resp) {
U 190   $("#nutzerrollen").empty();
191   var rollen = resp.List[0];
192   for(var i = 1; i < rollen.List.length; i++) {
193     var rolle = rollen.List[i];
194     $("#nutzerrollen").append('<option value=' + rolle.String + '>' + rolle.String + '</option>');
195   }
196   $('#nutzerRolleEntziehen').prop( "disabled", true );
118fec 197   $('#rolleErteilen').prop( "disabled", true );
95f415 198 }
U 199
51edf4 200 function um_show_role_list(resp) {
U 201   $("#rollen").empty();
202   var rollen = resp.List[0];
203   for(var i = 1; i < rollen.List.length; i++) {
204     var rolle = rollen.List[i];
205     $("#rollen").append('<option value=' + rolle.String + '>' + rolle.String + '</option>');
206   }
207   $('#rolleErteilen').prop( "disabled", true );
208 }
5e4151 209
4df887 210 /* ---- api calls ----- */
f8b605 211
72c5c3 212 function um_apicall_create_user(user) {
f8b605 213   var m = 'createUser';
72c5c3 214   var u = '../svc/' + m;
f8b605 215   $.ajax({
U 216     url: u,
217     data: {
72c5c3 218       p: user
f8b605 219     },
U 220     type: "POST",
221     dataType : "html",
72c5c3 222     success: function( resp ) {
U 223       um_apicall_get_user_list();
4f4b29 224       um_back_from_new_user();
72c5c3 225     },
f8b605 226     error: function( xhr, status, errorThrown ) {
U 227       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
228     },
229     complete: function( xhr, status ) {
230       //alert( "The request is complete!" );
231     }
232   });      
233 }
234
72c5c3 235 function um_apicall_del_user(user) {
U 236   var m = 'deleteUser';
237   var u = '../svc/' + m;
238   $.ajax({
239     url: u,
240     data: {
241       p: user
242     },
243     type: "POST",
244     dataType : "html",
245     success: function( resp ) {
246       um_apicall_get_user_list();
247     },
248     error: function( xhr, status, errorThrown ) {
249       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
250     },
251     complete: function( xhr, status ) {
252       //alert( "The request is complete!" );
253     }
254   });      
255 }
256
257 function um_apicall_get_user_list() {
546fbc 258   var m = 'getUserNameList';
U 259   var u = '../svc/' + m;
260   $.ajax({
261     url: u,
262     type: "GET",
263     dataType : "json",
264     success: function( resp ) {
265       um_show_user_list(resp);
266     },
267     error: function( xhr, status, errorThrown ) {
268       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
269     },
270     complete: function( xhr, status ) {
271       //alert( "The request is complete!" );
272     }
273   });      
274 }
275
ccefc8 276 // http]://example.com/um/api?c=de.uhilger.um.api.UserMgr&m=testmethode
51edf4 277 function um_apicall_grant_role(userId, roleName, isNewRole) {
ccefc8 278   var ur = new UserRole(userId, roleName);
c79c12 279   var m = 'grantRole';
U 280   var u = '../svc/' + m;
281   $.ajax({
282     url: u,
283     data: {
ccefc8 284       p: self.serialisieren(ur)
c79c12 285     },
U 286     type: "POST",
287     dataType : "html",
288     success: function( resp ) {
289       um_apicall_get_user_roles(userId);
51edf4 290       if(isNewRole) {
U 291         um_apicall_get_granted_roles();
292       }
c79c12 293     },
U 294     error: function( xhr, status, errorThrown ) {
295       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
296     },
297     complete: function( xhr, status ) {
298       //alert( "The request is complete!" );
299     }
300   });
301 }
302
e03a3e 303 function um_apicall_revoke_role(userId, roleName) {
ccefc8 304   var ur = new UserRole(userId, roleName);
e03a3e 305   var m = 'revokeRole';
U 306   var u = '../svc/' + m;
307   $.ajax({
308     url: u,
309     data: {
ccefc8 310       p: self.serialisieren(ur)
e03a3e 311     },
U 312     type: "POST",
313     dataType : "html",
314     success: function( resp ) {
315       um_apicall_get_user_roles(userId);
316     },
317     error: function( xhr, status, errorThrown ) {
318       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
319     },
320     complete: function( xhr, status ) {
321       //alert( "The request is complete!" );
322     }
323   });
324 }
325
c79c12 326 function um_apicall_get_user_roles(userId) {
U 327   var m = 'getUserRoleNames';
328   var u = '../svc/' + m + '?p=' + userId;
329   $.ajax({
330     url: u,
331     type: "GET",
332     dataType : "json",
333     success: function( resp ) {
334       um_show_user_role_list(resp);
335     },
336     error: function( xhr, status, errorThrown ) {
337       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
338     },
339     complete: function( xhr, status ) {
340       //alert( "The request is complete!" );
341     }
342   });      
343 }
344
51edf4 345 function um_apicall_get_granted_roles() {
U 346   var m = 'getRoleNamesGranted';
347   var u = '../svc/' + m;
348   $.ajax({
349     url: u,
350     type: "GET",
351     dataType : "json",
352     success: function( resp ) {
353       um_show_role_list(resp);
354     },
355     error: function( xhr, status, errorThrown ) {
356       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
357     },
358     complete: function( xhr, status ) {
359       //alert( "The request is complete!" );
360     }
361   });      
362 }
363
4df887 364 /* ----- Hilfsfunktionen ----- */
f8b605 365
U 366 function serialisieren(obj) {
367   return '{"' + obj.constructor.name + '":' + JSON.stringify(obj) + '}';
368 };
369
4df887 370 /* ----- Objekte ----- */
U 371
f8b605 372 function User(i, p, fn, ln, em) {
U 373   this.id = i;
374   this.pw = p;
375   this.firstName = fn;
376   this.lastName = ln;
377   this.email = em;
ccefc8 378 }
U 379
380 function UserRole(u, r) {
381   this.userId = u;
382   this.role = r;
5bf001 383 }