root 2021-05-26 18:17:50 +02:00
parent dc9804973f
commit cf50f2b839
4 changed files with 77 additions and 15 deletions

View File

@ -173,18 +173,30 @@ class Admin():
return self.external['roles']
def upload_json(self,data):
groups=[]
for g in data['data']['groups']:
# for m in data['data']['d_members']:
groups.append({'provider':data['provider'],
"id": g['id'],
"name": g['name'],
"description": g['description']})
self.external['groups']=groups
users=[]
for u in data['data']['users']:
users.append({'provider':data['provider'],
'id':u['id'],
'email': u['primaryEmail'],
'firstname': u['name']['givenName'],
'lastname': u['name']['givenName'],
'username': u['customerId'],
'first': u['name']['givenName'],
'last': u['name']['familyName'],
'username': u['primaryEmail'].split('@')[0],
'groups':[u['orgUnitPath']],
'roles':[]})
self.external['users']=set(self.external['users']+users)
return self.external['users']
self.external['users']=users
return True
# with open(os.path.join(app.root_path, "../custom/jsons/google_all_imported_espinalt.json"),"r") as crt:

View File

@ -24,18 +24,20 @@ $(document).ready(function() {
data: JSON.stringify(formdata),
success: function(data)
{
console.log(data)
$("#modalImport").modal('hide');
users_table.ajax.reload();
groups_table.ajax.reload();
},
error: function(data)
{
console.log(data)
alert('Something went wrong on our side...')
}
});
}
});
//DataTable Main renderer
var table = $('#users').DataTable({
var users_table = $('#users').DataTable({
"ajax": {
"url": "/isard-sso-admin/external_users_list",
"dataSrc": ""
@ -63,9 +65,37 @@ $(document).ready(function() {
{ "data": "groups", "width": "10px"},
{ "data": "roles", "width": "10px"},
],
"order": [[4, 'asc']],
"order": [[3, 'asc']],
"columnDefs": [ ]
} );
} );
var groups_table = $('#groups').DataTable({
"ajax": {
"url": "/isard-sso-admin/external_groups_list",
"dataSrc": ""
},
"language": {
"loadingRecords": '<i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i><span class="sr-only">Loading...</span>',
"emptyTable": "<h1>You don't have any user created yet.</h1><br><h2>Create one using the +Add new button on top right of this page.</h2>"
},
"rowId": "id",
"deferRender": true,
"columns": [
{
"className": 'details-control',
"orderable": false,
"data": null,
"width": "10px",
"defaultContent": '<button class="btn btn-xs btn-info" type="button" data-placement="top" ><i class="fa fa-plus"></i></button>'
},
{ "data": "id", "width": "10px" },
{ "data": "provider", "width": "10px" },
{ "data": "name", "width": "10px" },
{ "data": "description", "width": "10px"},
],
"order": [[2, 'asc']],
"columnDefs": [ ]
} );
});
function readFile (evt) {

View File

@ -18,8 +18,8 @@
<a class="btn-upload"><span style="color: #5499c7; "><i class="fa fa-upload"></i> Upload</span></a>
<a class="btn-download"><span style="color: #5499c7; "><i class="fa fa-download"></i> Download</span></a>
</li>
</ul>
<div class="clearfix"></div>
</ul>
<div class="clearfix"></div>
</div>
<div class="x_content">
<p class="text-muted font-13 m-b-30"></p>
@ -41,6 +41,22 @@
</tbody>
</table>
</div>
<div class="x_content">
<p class="text-muted font-13 m-b-30"></p>
<table id="groups" class="table" width="100%">
<thead>
<tr>
<th></th>
<th>Id</th>
<th>Provider</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>

View File

@ -48,11 +48,15 @@ def groups_list():
# @login_required
def external():
if request.method == 'POST':
pprint(request.get_json(force=True))
return json.dumps(app.admin.upload_json(request.get_json(force=True))), 200, {'Content-Type': 'application/json'}
return render_template('pages/external.html', title="External", nav="External")
@app.route('/isard-sso-admin/external_users_list')
# @login_required
def external_list():
return json.dumps(app.admin.get_external_users()), 200, {'Content-Type': 'application/json'}
def external_users_list():
return json.dumps(app.admin.get_external_users()), 200, {'Content-Type': 'application/json'}
@app.route('/isard-sso-admin/external_groups_list')
# @login_required
def external_groups_list():
return json.dumps(app.admin.get_external_groups()), 200, {'Content-Type': 'application/json'}