diff --git a/admin/src/admin/lib/admin.py b/admin/src/admin/lib/admin.py index 20f2a85..0fa3ea5 100644 --- a/admin/src/admin/lib/admin.py +++ b/admin/src/admin/lib/admin.py @@ -114,50 +114,56 @@ class Admin(): try: log.warning('MOODLE: Adding default group admin') - self.moodle.add_system_cohort('admin','system admins') + self.moodle.add_system_cohort('/admin','system admins') log.warning('MOODLE: OK') except: log.warning('MOODLE: Seems to be there already') try: log.warning('MOODLE: Adding default group manager') - self.moodle.add_system_cohort('manager','system managers') + self.moodle.add_system_cohort('/manager','system managers') log.warning('MOODLE: OK') except: log.warning('MOODLE: Seems to be there already') try: log.warning('MOODLE: Adding default group teacher') - self.moodle.add_system_cohort('teacher','system teacher') + self.moodle.add_system_cohort('/teacher','system teacher') log.warning('MOODLE: OK') except: log.warning('MOODLE: Seems to be there already') try: log.warning('MOODLE: Adding default group student') - self.moodle.add_system_cohort('student','system student') + self.moodle.add_system_cohort('/student','system student') log.warning('MOODLE: OK') except: log.warning('MOODLE: Seems to be there already') + try: + log.warning('NEXTCLOUD: Adding default group admin') + self.nextcloud.add_group('/admin') + log.warning('NEXTCLOUD: OK') + except ProviderItemExists: + log.warning('NEXTCLOUD: Seems to be there already') try: log.warning('NEXTCLOUD: Adding default group manager') - self.nextcloud.add_group('manager') + self.nextcloud.add_group('/manager') log.warning('NEXTCLOUD: OK') except ProviderItemExists: log.warning('NEXTCLOUD: Seems to be there already') try: log.warning('NEXTCLOUD: Adding default group teacher') - self.nextcloud.add_group('teacher') + self.nextcloud.add_group('/teacher') log.warning('NEXTCLOUD: OK') except ProviderItemExists: log.warning('NEXTCLOUD: Seems to be there already') try: log.warning('NEXTCLOUD: Adding default group student') - self.nextcloud.add_group('student') + self.nextcloud.add_group('/student') log.warning('NEXTCLOUD: OK') except ProviderItemExists: log.warning('NEXTCLOUD: Seems to be there already') @@ -200,7 +206,7 @@ class Admin(): try: log.warning('NEXTCLOUD: Adding user ddadmin and adding to group admin') - self.nextcloud.add_user(dduser,ddpassword,group='admin',email=ddmail,displayname='DD Admin') + self.nextcloud.add_user(dduser,ddpassword,group='/admin',email=ddmail,displayname='DD Admin') log.warning('NEXTCLOUD: OK') except ProviderItemExists: log.warning('NEXTCLOUD: Seems to be there already') @@ -360,7 +366,7 @@ class Admin(): mgroups=[] if mgroups is None else mgroups ngroups=[] if ngroups is None else ngroups - kgroups_names=[g['name'] for g in kgroups] + kgroups_names=[g['path'] for g in kgroups] mgroups_names=[g['name'] for g in mgroups] ngroups_names=ngroups @@ -369,7 +375,7 @@ class Admin(): groups=[] for name in all_groups_names: thegroup={} - keycloak_exists=[g for g in kgroups if g['name'] == name] + keycloak_exists=[g for g in kgroups if g['path'] == name] if len(keycloak_exists): thegroup=keycloak_exists[0] thegroup['keycloak']=True @@ -784,10 +790,15 @@ class Admin(): def delete_user(self,userid): log.warning('deleting user moodle, nextcloud keycloak') + ev=Events('Deleting user','Deleting from moodle') self.delete_moodle_user(userid) + ev.update_text('Deleting from nextcloud') self.delete_nextcloud_user(userid) + ev.update_text('Deleting from keycloak') self.delete_keycloak_user(userid) + ev.update_text('Syncing data from applications...') self.resync_data() + ev.update_text('User deleted') return True def get_user(self,userid): diff --git a/admin/src/admin/static/js/groups.js b/admin/src/admin/static/js/groups.js index 5ab95d7..23e27af 100644 --- a/admin/src/admin/static/js/groups.js +++ b/admin/src/admin/static/js/groups.js @@ -90,41 +90,10 @@ $(document).ready(function() { "width": "10px", "defaultContent": '' }, - { "data": "id", "width": "10px" }, - { "data": "keycloak", "width": "10px" }, - { "data": "moodle", "width": "10px" }, - { "data": "nextcloud", "width": "10px" }, { "data": "name", "width": "10px" }, { "data": "path", "width": "10px" }, ], - "order": [[3, 'asc']], - "columnDefs": [ { - "targets": 2, - "render": function ( data, type, full, meta ) { - if(full.keycloak){ - return '' - }else{ - return '' - }; - }}, - { - "targets": 3, - "render": function ( data, type, full, meta ) { - if(full.moodle){ - return '' - }else{ - return '' - }; - }}, - { - "targets": 4, - "render": function ( data, type, full, meta ) { - if(full.nextcloud){ - return '' - }else{ - return '' - }; - }}, - ] + "order": [[2, 'asc']], + // "columnDefs": [ ] } ); }) \ No newline at end of file diff --git a/admin/src/admin/static/js/sysadmin/groups.js b/admin/src/admin/static/js/sysadmin/groups.js new file mode 100644 index 0000000..5ab95d7 --- /dev/null +++ b/admin/src/admin/static/js/sysadmin/groups.js @@ -0,0 +1,130 @@ + +$(document).on('shown.bs.modal', '#modalAddDesktop', function () { + modal_add_desktops.columns.adjust().draw(); +}); + +$(document).ready(function() { + + $('.btn-global-resync').on('click', function () { + $.ajax({ + type: "GET", + url:"api/resync", + success: function(data) + { + table.ajax.reload(); + // $("#modalImport").modal('hide'); + // users_table.ajax.reload(); + // groups_table.ajax.reload(); + }, + error: function(data) + { + alert('Something went wrong on our side...') + } + }); + }); + + // Open new group modal + $('.btn-new').on('click', function () { + $('#modalAddGroup').modal({ + backdrop: 'static', + keyboard: false + }).modal('show'); + }); + + // Send new group form + $('#modalAddGroup #send').on('click', function () { + var form = $('#modalAddGroupForm'); + formdata = form.serializeObject() + console.log('NEW GROUP') + console.log(formdata) + // $.ajax({ + // type: "POST", + // "url": "/groups_list", + // success: function(data) + // { + // console.log('SUCCESS') + // // $("#modalAddGroup").modal('hide'); + // }, + // error: function(data) + // { + // alert('Something went wrong on our side...') + // } + // }); + }); + + $('.btn-delete_keycloak').on('click', function () { + $.ajax({ + type: "DELETE", + url:"/api/groups/keycloak", + success: function(data) + { + console.log('SUCCESS') + // $("#modalImport").modal('hide'); + // users_table.ajax.reload(); + // groups_table.ajax.reload(); + }, + error: function(data) + { + alert('Something went wrong on our side...') + } + }); + }); + + //DataTable Main renderer + var table = $('#groups').DataTable({ + "ajax": { + "url": "/api/groups", + "dataSrc": "" + }, + "language": { + "loadingRecords": 'Loading...', + "emptyTable": "

You don't have any group created yet.


Create one using the +Add new button on top right of this page.

" + }, + "rowId": "id", + "deferRender": true, + "columns": [ + { + "className": 'details-control', + "orderable": false, + "data": null, + "width": "10px", + "defaultContent": '' + }, + { "data": "id", "width": "10px" }, + { "data": "keycloak", "width": "10px" }, + { "data": "moodle", "width": "10px" }, + { "data": "nextcloud", "width": "10px" }, + { "data": "name", "width": "10px" }, + { "data": "path", "width": "10px" }, + ], + "order": [[3, 'asc']], + "columnDefs": [ { + "targets": 2, + "render": function ( data, type, full, meta ) { + if(full.keycloak){ + return '' + }else{ + return '' + }; + }}, + { + "targets": 3, + "render": function ( data, type, full, meta ) { + if(full.moodle){ + return '' + }else{ + return '' + }; + }}, + { + "targets": 4, + "render": function ( data, type, full, meta ) { + if(full.nextcloud){ + return '' + }else{ + return '' + }; + }}, + ] +} ); +}) \ No newline at end of file diff --git a/admin/src/admin/static/js/sysadmin/users.js b/admin/src/admin/static/js/sysadmin/users.js index e08f366..eebe59a 100644 --- a/admin/src/admin/static/js/sysadmin/users.js +++ b/admin/src/admin/static/js/sysadmin/users.js @@ -222,7 +222,7 @@ $(document).ready(function() { "columnDefs": [ { "targets": 1, "render": function ( data, type, full, meta ) { - return '' + return '' }}, { "targets": 6, diff --git a/admin/src/admin/static/templates/pages/groups.html b/admin/src/admin/static/templates/pages/groups.html index 36a418a..73446e6 100644 --- a/admin/src/admin/static/templates/pages/groups.html +++ b/admin/src/admin/static/templates/pages/groups.html @@ -27,10 +27,6 @@ - Id - Keycloak - Moodle - Nextcloud Name Path diff --git a/admin/src/admin/static/templates/pages/sysadmin/groups.html b/admin/src/admin/static/templates/pages/sysadmin/groups.html new file mode 100644 index 0000000..a242aa5 --- /dev/null +++ b/admin/src/admin/static/templates/pages/sysadmin/groups.html @@ -0,0 +1,59 @@ + +{% extends "base.html" %} +{% block css %} + + + + +{% endblock %} +{% block content %} + +
+
+
+
+

Groups

+ +
+
+
+

+ + + + + + + + + + + + + + +
IdKeycloakMoodleNextcloudNamePath
+
+
+
+
+ +{% include 'pages/modals/groups_modals.html' %} + +{% endblock %} + +{% block pagescript %} + + + + + + + + +{% endblock %} diff --git a/admin/src/admin/static/templates/sidebar.html b/admin/src/admin/static/templates/sidebar.html index b9707ce..c3efcf7 100644 --- a/admin/src/admin/static/templates/sidebar.html +++ b/admin/src/admin/static/templates/sidebar.html @@ -21,6 +21,7 @@

System Admin

  • SysAdminUsers
  • +
  • SysAdminGroups
  • External
  • {% endif %} diff --git a/admin/src/admin/views/WebViews.py b/admin/src/admin/views/WebViews.py index 805c29c..26565e7 100644 --- a/admin/src/admin/views/WebViews.py +++ b/admin/src/admin/views/WebViews.py @@ -72,7 +72,13 @@ def avatar(userid): @login_required def web_sysadmin_users(): return render_template('pages/sysadmin/users.html', title="SysAdmin Users", nav="SysAdminUsers") + +@app.route('/sysadmin/groups') +@login_required +def web_sysadmin_groups(): + return render_template('pages/sysadmin/groups.html', title="SysAdmin Groups", nav="SysAdminGroups") + @app.route('/sysadmin/external') @login_required ## SysAdmin role