ulrich
2017-02-01 ff2dffd34f557edeeee4ff93028717e79f45441a
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   
219   /*
51edf4 220   var rollen = resp.List[0];
U 221   for(var i = 1; i < rollen.List.length; i++) {
222     var rolle = rollen.List[i];
223     $("#rollen").append('<option value=' + rolle.String + '>' + rolle.String + '</option>');
224   }
ff2dff 225   */
U 226   
51edf4 227   $('#rolleErteilen').prop( "disabled", true );
U 228 }
5e4151 229
4df887 230 /* ---- api calls ----- */
f8b605 231
72c5c3 232 function um_apicall_create_user(user) {
f8b605 233   var m = 'createUser';
72c5c3 234   var u = '../svc/' + m;
f8b605 235   $.ajax({
U 236     url: u,
237     data: {
72c5c3 238       p: user
f8b605 239     },
U 240     type: "POST",
241     dataType : "html",
72c5c3 242     success: function( resp ) {
U 243       um_apicall_get_user_list();
4f4b29 244       um_back_from_new_user();
72c5c3 245     },
f8b605 246     error: function( xhr, status, errorThrown ) {
U 247       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
248     },
249     complete: function( xhr, status ) {
250       //alert( "The request is complete!" );
251     }
252   });      
253 }
254
72c5c3 255 function um_apicall_del_user(user) {
U 256   var m = 'deleteUser';
257   var u = '../svc/' + m;
258   $.ajax({
259     url: u,
260     data: {
261       p: user
262     },
263     type: "POST",
264     dataType : "html",
265     success: function( resp ) {
266       um_apicall_get_user_list();
267     },
268     error: function( xhr, status, errorThrown ) {
269       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
270     },
271     complete: function( xhr, status ) {
272       //alert( "The request is complete!" );
273     }
274   });      
275 }
276
277 function um_apicall_get_user_list() {
546fbc 278   var m = 'getUserNameList';
U 279   var u = '../svc/' + m;
280   $.ajax({
281     url: u,
282     type: "GET",
283     dataType : "json",
284     success: function( resp ) {
285       um_show_user_list(resp);
286     },
287     error: function( xhr, status, errorThrown ) {
288       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
289     },
290     complete: function( xhr, status ) {
291       //alert( "The request is complete!" );
292     }
293   });      
294 }
295
ccefc8 296 // http]://example.com/um/api?c=de.uhilger.um.api.UserMgr&m=testmethode
51edf4 297 function um_apicall_grant_role(userId, roleName, isNewRole) {
ccefc8 298   var ur = new UserRole(userId, roleName);
c79c12 299   var m = 'grantRole';
U 300   var u = '../svc/' + m;
301   $.ajax({
302     url: u,
303     data: {
ccefc8 304       p: self.serialisieren(ur)
c79c12 305     },
U 306     type: "POST",
307     dataType : "html",
308     success: function( resp ) {
309       um_apicall_get_user_roles(userId);
51edf4 310       if(isNewRole) {
U 311         um_apicall_get_granted_roles();
312       }
c79c12 313     },
U 314     error: function( xhr, status, errorThrown ) {
315       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
316     },
317     complete: function( xhr, status ) {
318       //alert( "The request is complete!" );
319     }
320   });
321 }
322
e03a3e 323 function um_apicall_revoke_role(userId, roleName) {
ccefc8 324   var ur = new UserRole(userId, roleName);
e03a3e 325   var m = 'revokeRole';
U 326   var u = '../svc/' + m;
327   $.ajax({
328     url: u,
329     data: {
ccefc8 330       p: self.serialisieren(ur)
e03a3e 331     },
U 332     type: "POST",
333     dataType : "html",
334     success: function( resp ) {
335       um_apicall_get_user_roles(userId);
336     },
337     error: function( xhr, status, errorThrown ) {
338       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
339     },
340     complete: function( xhr, status ) {
341       //alert( "The request is complete!" );
342     }
343   });
344 }
345
c79c12 346 function um_apicall_get_user_roles(userId) {
U 347   var m = 'getUserRoleNames';
348   var u = '../svc/' + m + '?p=' + userId;
349   $.ajax({
350     url: u,
351     type: "GET",
352     dataType : "json",
353     success: function( resp ) {
354       um_show_user_role_list(resp);
355     },
356     error: function( xhr, status, errorThrown ) {
357       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
358     },
359     complete: function( xhr, status ) {
360       //alert( "The request is complete!" );
361     }
362   });      
363 }
364
51edf4 365 function um_apicall_get_granted_roles() {
U 366   var m = 'getRoleNamesGranted';
367   var u = '../svc/' + m;
368   $.ajax({
369     url: u,
370     type: "GET",
371     dataType : "json",
372     success: function( resp ) {
373       um_show_role_list(resp);
374     },
375     error: function( xhr, status, errorThrown ) {
376       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
377     },
378     complete: function( xhr, status ) {
379       //alert( "The request is complete!" );
380     }
381   });      
382 }
383
4df887 384 /* ----- Hilfsfunktionen ----- */
f8b605 385
U 386 function serialisieren(obj) {
387   return '{"' + obj.constructor.name + '":' + JSON.stringify(obj) + '}';
388 };
389
4df887 390 /* ----- Objekte ----- */
U 391
f8b605 392 function User(i, p, fn, ln, em) {
U 393   this.id = i;
394   this.pw = p;
395   this.firstName = fn;
396   this.lastName = ln;
397   this.email = em;
ccefc8 398 }
U 399
400 function UserRole(u, r) {
401   this.userId = u;
402   this.role = r;
5bf001 403 }