fixed keycloak timeout session
parent
6a0e2f145a
commit
7a8f47157c
|
@ -156,4 +156,20 @@ class Admin():
|
|||
return self.external['groups']
|
||||
|
||||
def get_external_roles(self):
|
||||
return self.external['roles']
|
||||
return self.external['roles']
|
||||
|
||||
def upload_json(self,data):
|
||||
pass
|
||||
# with open(os.path.join(app.root_path, "../custom/jsons/google_all_imported_espinalt.json"),"r") as crt:
|
||||
# pprint(data)
|
||||
|
||||
# 'email': 'email',
|
||||
# 'firstname': 'users',
|
||||
# 'format': 'json',
|
||||
# 'groupid': 'users',
|
||||
# 'groupname': 'users',
|
||||
# 'lastname': 'users',
|
||||
# 'provider': 'asdfsad',
|
||||
# 'usergroup': 'users',
|
||||
# 'userid': 'users',
|
||||
# 'username': 'users'}
|
||||
|
|
|
@ -23,14 +23,18 @@ class Keycloak():
|
|||
password=os.environ['KEYCLOAK_PASSWORD'],
|
||||
realm='master',
|
||||
verify=True):
|
||||
self.keycloak_admin = KeycloakAdmin(server_url=url,
|
||||
username=username,
|
||||
password=password,
|
||||
realm_name=realm,
|
||||
verify=verify)
|
||||
|
||||
from pprint import pprint
|
||||
self.url=url
|
||||
self.username=username
|
||||
self.password=password
|
||||
self.realm=realm
|
||||
self.verify=verify
|
||||
|
||||
def connect(self):
|
||||
self.keycloak_admin = KeycloakAdmin(server_url=self.url,
|
||||
username=self.username,
|
||||
password=self.password,
|
||||
realm_name=self.realm,
|
||||
verify=self.verify)
|
||||
|
||||
######## Example create group and subgroup
|
||||
|
||||
|
@ -53,13 +57,16 @@ class Keycloak():
|
|||
## USERS
|
||||
|
||||
def get_user_id(self,username):
|
||||
self.connect()
|
||||
return self.keycloak_admin.get_user_id(username)
|
||||
|
||||
def get_users(self):
|
||||
self.connect()
|
||||
return self.keycloak_admin.get_users({})
|
||||
|
||||
def add_user(self,username,first,last,email,password):
|
||||
# Returns user id
|
||||
self.connect()
|
||||
return self.keycloak_admin.create_user({"email": email,
|
||||
"username": username,
|
||||
"enabled": True,
|
||||
|
@ -70,13 +77,16 @@ class Keycloak():
|
|||
"temporary":False}]})
|
||||
|
||||
def add_user_role(self,client_id,user_id,role_id,role_name):
|
||||
self.connect()
|
||||
return self.keycloak_admin.assign_client_role(client_id="client_id", user_id="user_id", role_id="role_id", role_name="test")
|
||||
|
||||
def delete_user(self,userid):
|
||||
self.connect()
|
||||
return self.keycloak_admin.delete_user(user_id=userid)
|
||||
|
||||
## GROUPS
|
||||
def get_groups(self,with_subgroups=True):
|
||||
self.connect()
|
||||
groups = self.keycloak_admin.get_groups()
|
||||
subgroups=[]
|
||||
if with_subgroups:
|
||||
|
@ -88,31 +98,39 @@ class Keycloak():
|
|||
# return groups+subgroups
|
||||
|
||||
def get_group(self,path,recursive=True):
|
||||
self.connect()
|
||||
return self.keycloak_admin.get_group_by_path(path=path,search_in_subgroups=recursive)
|
||||
|
||||
def add_group(self,name,parent=None):
|
||||
self.connect()
|
||||
return self.keycloak_admin.create_group({"name":name}, parent=parent)
|
||||
|
||||
def delete_group(self,group_id):
|
||||
self.connect()
|
||||
return self.keycloak_admin.delete_group(group_id=group_id)
|
||||
|
||||
## ROLES
|
||||
def get_roles(self):
|
||||
self.connect()
|
||||
return self.keycloak_admin.get_realm_roles()
|
||||
|
||||
def get_role(self,name):
|
||||
self.connect()
|
||||
return self.keycloak_admin.get_realm_role(name=name)
|
||||
|
||||
def add_role(self,name):
|
||||
self.connect()
|
||||
return self.keycloak_admin.create_realm_role({"name":name})
|
||||
|
||||
def delete_role(self,name):
|
||||
self.connect()
|
||||
return self.keycloak_admin.delete_realm_role(name)
|
||||
|
||||
|
||||
## CLIENTS
|
||||
|
||||
def get_client_roles(self,client_id):
|
||||
self.connect()
|
||||
return self.keycloak_admin.get_client_roles(client_id=client_id)
|
||||
|
||||
# def add_client_role(self,client_id,roleName):
|
||||
|
@ -121,17 +139,21 @@ class Keycloak():
|
|||
|
||||
## SYSTEM
|
||||
def get_server_info(self):
|
||||
self.connect()
|
||||
return self.keycloak_admin.get_server_info()
|
||||
|
||||
def get_server_clients(self):
|
||||
self.connect()
|
||||
return self.keycloak_admin.get_clients()
|
||||
|
||||
def get_server_rsa_key(self):
|
||||
self.connect()
|
||||
rsa_key = [k for k in self.keycloak_admin.get_keys()['keys'] if k['type']=='RSA'][0]
|
||||
return {'name':rsa_key['kid'],'certificate':rsa_key['certificate']}
|
||||
|
||||
## CLIENTS
|
||||
def add_moodle_client(self):
|
||||
self.connect()
|
||||
demo={
|
||||
"id" : "a92d5417-92b6-4678-9cb9-51bc0edcee8c",
|
||||
"clientId" : "https://moodle."+app.config['DOMAIN']+"/auth/saml2/sp/metadata.php",
|
||||
|
|
|
@ -14,14 +14,23 @@ $(document).ready(function() {
|
|||
|
||||
$("#modalImport #send").on('click', function(e){
|
||||
var form = $('#modalImportForm');
|
||||
//
|
||||
form.parsley().validate();
|
||||
if (form.parsley().isValid()){ // || 'unlimited' in formdata){
|
||||
uploaded=JSON.parse(filecontents)
|
||||
if (form.parsley().isValid()){
|
||||
formdata = form.serializeObject()
|
||||
console.log(formdata)
|
||||
//socket.emit('bulkusers_add',{'data':data,'users':users})
|
||||
//$('#modalImport #send').prop('disabled', true);
|
||||
formdata['data']=JSON.parse(filecontents)
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url:"/isard-sso-admin/external",
|
||||
data: formdata,
|
||||
success: function(data)
|
||||
{
|
||||
console.log(data)
|
||||
},
|
||||
error: function(data)
|
||||
{
|
||||
console.log(data)
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -95,7 +104,6 @@ function readFile (evt) {
|
|||
reader.onload = function(event) {
|
||||
filecontents=event.target.result;
|
||||
$.each(JSON.parse(filecontents), walker);
|
||||
console.log(path)
|
||||
populate_path(items)
|
||||
}
|
||||
reader.readAsText(file, 'UTF-8')
|
||||
|
@ -111,8 +119,7 @@ function readFile (evt) {
|
|||
|
||||
function walker(key, value) {
|
||||
var savepath = path;
|
||||
path = path ? (path + "." + key) : key;
|
||||
console.log("Visiting " + path);
|
||||
path = path ? (path + "/" + key) : key;
|
||||
items.push({path:path})
|
||||
|
||||
if (typeof value === "object") {
|
||||
|
@ -129,9 +136,7 @@ function walker(key, value) {
|
|||
}
|
||||
|
||||
function populate_path(){
|
||||
console.log(items)
|
||||
$.each(items, function(key, value) {
|
||||
$(".populate").append('<option value=' + value['path']+ '>' + value['path'] + '</option>');
|
||||
// $("#users_group_dd").append('<option value=' + value['path'] + '>' + value['path'] + '</option>');
|
||||
})
|
||||
}
|
|
@ -23,11 +23,9 @@
|
|||
-->
|
||||
|
||||
<div class="item form-group">
|
||||
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="provider">Provider: <span class="required">*</span></label>
|
||||
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="provider">Provider name: <span class="required">*</span></label>
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
<select id="provider" name="provider" class="form-control provider" data-quota="provider" required>
|
||||
<option value="google">Google</option>
|
||||
</select>
|
||||
<input id="provider" name="provider" placeholder="" type="text" style="width:100%">
|
||||
</div>
|
||||
</div>
|
||||
<div class="item form-group">
|
||||
|
@ -43,25 +41,24 @@
|
|||
</label>
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
<input type="file" id="file-upload" name="file-upload" enctype="multipart/form-data" />
|
||||
<button id="btn-map" type="button" class="btn btn-success" data-dismiss="modal">Map fields</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="x_panela" id="bulkusers-quota" style="padding: 5px;">
|
||||
<p style="font-size: 18px;margin-bottom:0px;">Map keys</p>
|
||||
<p style="font-size: 18px;margin-bottom:0px;">Map User keys</p>
|
||||
|
||||
<div class="item form-group">
|
||||
<div class="item form-group">
|
||||
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="users">Users dict: <span class="required">*</span></label>
|
||||
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="userid">id: <span class="required">*</span></label>
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
<select id="users" name="users" class="form-control users populate" required>
|
||||
<select id="userid" name="userid" class="form-control userid populate" required>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item form-group">
|
||||
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="username">user name: <span class="required">*</span></label>
|
||||
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="username">username: <span class="required">*</span></label>
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
<select id="username" name="username" class="form-control username populate" required>
|
||||
</select>
|
||||
|
@ -82,22 +79,42 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="item form-group">
|
||||
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="usergroup">user group:<span class="required">*</span></label>
|
||||
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="email">email: <span class="required">*</span></label>
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
<select id="usergroup" name="usergroup" class="form-control usergroup populate" required>
|
||||
<select id="email" name="email" class="form-control email populate" required>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item form-group">
|
||||
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="groups">Group dict:<span class="required">*</span></label>
|
||||
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="usergroup">group:<span class="required">*</span></label>
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
<select id="groups" name="groups" class="form-control groups populate" required>
|
||||
<select id="usergroup" name="usergroup" class="form-control usergroup populate" required>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="x_panela" id="bulkusers-quota" style="padding: 5px;">
|
||||
<p style="font-size: 18px;margin-bottom:0px;">Map Group keys</p>
|
||||
|
||||
<div class="item form-group">
|
||||
<div class="item form-group">
|
||||
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="groupid">id:<span class="required">*</span></label>
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
<select id="groupid" name="groupid" class="form-control groupid populate" required>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item form-group">
|
||||
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="groupname">name:<span class="required">*</span></label>
|
||||
<div class="col-md-6 col-sm-6 col-xs-12">
|
||||
<select id="groupname" name="groupname" class="form-control groupname populate" required>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal Footer -->
|
||||
|
|
|
@ -42,9 +42,12 @@ def groups_list():
|
|||
return json.dumps(app.admin.get_groups()), 200, {'Content-Type': 'application/json'}
|
||||
|
||||
|
||||
@app.route('/isard-sso-admin/external')
|
||||
@app.route('/isard-sso-admin/external', methods=['POST', 'GET'])
|
||||
# @login_required
|
||||
def external():
|
||||
if request.method == 'POST':
|
||||
app.admin.upload_json(request.form)
|
||||
return json.dumps({}), 200, {'Content-Type': 'application/json'}
|
||||
return render_template('pages/external.html', title="External", nav="External")
|
||||
|
||||
@app.route('/isard-sso-admin/external_users_list')
|
||||
|
|
Loading…
Reference in New Issue