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