ulrich
2017-02-02 3cd7fefd7afb5a8a2f70290b9bbeb453c5f9382b
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 /*
ff2dff 138  * BaseLink liefert fuer einfache selects wie die der Nutzerverwaltung 
U 139  * eine simple Listenfunktion, die auf der JSON-Seite wie folgt 
140  * herauskommt.
141  * 
142  * {"List":[{"List":[{"String":"USER_NAME"},{"String":"admin"},{"String":"test"}]}]}
143  * 
144  * Fuer Mustache sieht ein Template dann z.B so aus:
145  * 
146  *    {{#List}}
147  *    {{#List}}
148  *      <option value="{{ String }}">{{ String }}</option>'
149  *    {{/List}}
150  *    {{/List}}
61cf48 151  */
546fbc 152 function um_show_user_list(resp) {
72c5c3 153   $("#nutzerliste").empty();
ff2dff 154   var template = $('#tpl-list').html();
61cf48 155   Mustache.parse(template);   // optional, speeds up future uses
U 156   $("#nutzerliste").append( Mustache.render(template, resp) );
72c5c3 157 }
U 158
159 function um_clear_user_form() {
160   $('#anmeldename').val('');
161   $('#kennwort').val('');
162   $('#kennwortw').val('');
546fbc 163 }
4df887 164
95f415 165 function um_get_first_selected_user_id() {
U 166   var userId = 'none';
167   var userIds = [];
168   $('#nutzerliste :selected').each(function(i, selected){
169     userIds[i] = $(selected).text();
170   });
171   if(userIds.length > 0) {
172     userId = userIds[0];
173   }
174   return userId;
c79c12 175 }
U 176
5e4151 177 function um_get_first_selected_role_id() {
U 178   var roleId = 'none';
179   var roleIds = [];
180   $('#rollen :selected').each(function(i, selected){
e03a3e 181     roleIds[i] = $(selected).text();
U 182   });
183   if(roleIds.length > 0) {
184     roleId = roleIds[0];
185   }
186   return roleId;
187 }
188
189 function um_get_first_selected_userrole_id() {
190   var roleId = 'none';
191   var roleIds = [];
192   $('#nutzerrollen :selected').each(function(i, selected){
5e4151 193     roleIds[i] = $(selected).text();
U 194   });
195   if(roleIds.length > 0) {
196     roleId = roleIds[0];
197   }
198   return roleId;
199 }
200
c79c12 201 function um_show_user_role_list(resp) {
U 202   $("#nutzerrollen").empty();
ff2dff 203   
U 204   var template = $('#tpl-list').html();
205   Mustache.parse(template);   // optional, speeds up future uses
206   $("#nutzerrollen").append( Mustache.render(template, resp) );
207   
c79c12 208   $('#nutzerRolleEntziehen').prop( "disabled", true );
118fec 209   $('#rolleErteilen').prop( "disabled", true );
95f415 210 }
U 211
51edf4 212 function um_show_role_list(resp) {
U 213   $("#rollen").empty();
ff2dff 214   
U 215   var template = $('#tpl-list').html();
216   Mustache.parse(template);   // optional, speeds up future uses
217   $("#rollen").append( Mustache.render(template, resp) );
218   
51edf4 219   $('#rolleErteilen').prop( "disabled", true );
U 220 }
5e4151 221
4df887 222 /* ---- api calls ----- */
f8b605 223
72c5c3 224 function um_apicall_create_user(user) {
f8b605 225   var m = 'createUser';
72c5c3 226   var u = '../svc/' + m;
f8b605 227   $.ajax({
U 228     url: u,
229     data: {
72c5c3 230       p: user
f8b605 231     },
U 232     type: "POST",
233     dataType : "html",
72c5c3 234     success: function( resp ) {
U 235       um_apicall_get_user_list();
4f4b29 236       um_back_from_new_user();
72c5c3 237     },
f8b605 238     error: function( xhr, status, errorThrown ) {
U 239       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
240     },
241     complete: function( xhr, status ) {
242       //alert( "The request is complete!" );
243     }
244   });      
245 }
246
72c5c3 247 function um_apicall_del_user(user) {
U 248   var m = 'deleteUser';
249   var u = '../svc/' + m;
250   $.ajax({
251     url: u,
252     data: {
253       p: user
254     },
255     type: "POST",
256     dataType : "html",
257     success: function( resp ) {
258       um_apicall_get_user_list();
259     },
260     error: function( xhr, status, errorThrown ) {
261       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
262     },
263     complete: function( xhr, status ) {
264       //alert( "The request is complete!" );
265     }
266   });      
267 }
268
269 function um_apicall_get_user_list() {
546fbc 270   var m = 'getUserNameList';
U 271   var u = '../svc/' + m;
272   $.ajax({
273     url: u,
274     type: "GET",
275     dataType : "json",
276     success: function( resp ) {
277       um_show_user_list(resp);
278     },
279     error: function( xhr, status, errorThrown ) {
280       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
281     },
282     complete: function( xhr, status ) {
283       //alert( "The request is complete!" );
284     }
285   });      
286 }
287
ccefc8 288 // http]://example.com/um/api?c=de.uhilger.um.api.UserMgr&m=testmethode
51edf4 289 function um_apicall_grant_role(userId, roleName, isNewRole) {
ccefc8 290   var ur = new UserRole(userId, roleName);
c79c12 291   var m = 'grantRole';
U 292   var u = '../svc/' + m;
293   $.ajax({
294     url: u,
295     data: {
ccefc8 296       p: self.serialisieren(ur)
c79c12 297     },
U 298     type: "POST",
299     dataType : "html",
300     success: function( resp ) {
301       um_apicall_get_user_roles(userId);
51edf4 302       if(isNewRole) {
U 303         um_apicall_get_granted_roles();
304       }
c79c12 305     },
U 306     error: function( xhr, status, errorThrown ) {
307       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
308     },
309     complete: function( xhr, status ) {
310       //alert( "The request is complete!" );
311     }
312   });
313 }
314
e03a3e 315 function um_apicall_revoke_role(userId, roleName) {
ccefc8 316   var ur = new UserRole(userId, roleName);
e03a3e 317   var m = 'revokeRole';
U 318   var u = '../svc/' + m;
319   $.ajax({
320     url: u,
321     data: {
ccefc8 322       p: self.serialisieren(ur)
e03a3e 323     },
U 324     type: "POST",
325     dataType : "html",
326     success: function( resp ) {
327       um_apicall_get_user_roles(userId);
328     },
329     error: function( xhr, status, errorThrown ) {
330       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
331     },
332     complete: function( xhr, status ) {
333       //alert( "The request is complete!" );
334     }
335   });
336 }
337
c79c12 338 function um_apicall_get_user_roles(userId) {
U 339   var m = 'getUserRoleNames';
340   var u = '../svc/' + m + '?p=' + userId;
341   $.ajax({
342     url: u,
343     type: "GET",
344     dataType : "json",
345     success: function( resp ) {
346       um_show_user_role_list(resp);
347     },
348     error: function( xhr, status, errorThrown ) {
349       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
350     },
351     complete: function( xhr, status ) {
352       //alert( "The request is complete!" );
353     }
354   });      
355 }
356
51edf4 357 function um_apicall_get_granted_roles() {
U 358   var m = 'getRoleNamesGranted';
359   var u = '../svc/' + m;
360   $.ajax({
361     url: u,
362     type: "GET",
363     dataType : "json",
364     success: function( resp ) {
365       um_show_role_list(resp);
366     },
367     error: function( xhr, status, errorThrown ) {
368       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
369     },
370     complete: function( xhr, status ) {
371       //alert( "The request is complete!" );
372     }
373   });      
374 }
375
4df887 376 /* ----- Hilfsfunktionen ----- */
f8b605 377
U 378 function serialisieren(obj) {
379   return '{"' + obj.constructor.name + '":' + JSON.stringify(obj) + '}';
380 };
381
4df887 382 /* ----- Objekte ----- */
U 383
f8b605 384 function User(i, p, fn, ln, em) {
U 385   this.id = i;
386   this.pw = p;
387   this.firstName = fn;
388   this.lastName = ln;
389   this.email = em;
ccefc8 390 }
U 391
392 function UserRole(u, r) {
393   this.userId = u;
394   this.role = r;
5bf001 395 }