main.py: finish app group syncing
This commit is contained in:
parent
3bd5f39d9c
commit
9f4d911a5d
1 changed files with 21 additions and 15 deletions
36
main.py
36
main.py
|
@ -25,12 +25,12 @@ def authentik_get_users():
|
|||
json_object = json.loads(resp._content)
|
||||
return(json_object['results'])
|
||||
|
||||
def authentik_get_app_used_by(slug):
|
||||
url = authentik_api_url + '/core/applications/' + slug + '/used_by/'
|
||||
def authentik_get_user_consent(id):
|
||||
url = authentik_api_url + '/core/user_consent/?user=' + str(id)
|
||||
headers = {'accept': 'application/json', 'Authorization': "Bearer " + authentik_api_key}
|
||||
resp = requests.get(url, headers=headers)
|
||||
json_object = json.loads(resp._content)
|
||||
return(json_object)
|
||||
return(json_object['results'])
|
||||
|
||||
def authentik_get_groups():
|
||||
url = authentik_api_url + '/core/groups/'
|
||||
|
@ -109,6 +109,18 @@ for group_info in authentik_get_groups():
|
|||
print(create_resp)
|
||||
continue
|
||||
|
||||
# sync that apps exists as lists
|
||||
for app_info in authentik_get_apps():
|
||||
print(app_info)
|
||||
try:
|
||||
list_info = listmonk_get_list('app-' + app_info['slug'])
|
||||
|
||||
except Exception as e:
|
||||
print('> Failed to find app as list, creating app-' + app_info['slug'])
|
||||
create_resp = listmonk_create_list('app-' + app_info['slug'])
|
||||
print(create_resp)
|
||||
continue
|
||||
|
||||
# ensure that users are synced
|
||||
for user_info in authentik_get_users():
|
||||
print('>>> Checking user ' + user_info['username'])
|
||||
|
@ -154,6 +166,12 @@ for user_info in authentik_get_users():
|
|||
list_info = listmonk_get_list('group-' + group_info['name'])
|
||||
groups_id.append(list_info['id'])
|
||||
|
||||
# matches apps to list_id
|
||||
for consent_info in authentik_get_user_consent(user_info['pk']):
|
||||
print(consent_info['application']['slug'])
|
||||
list_info = listmonk_get_list('app-' + consent_info['application']['slug'])
|
||||
groups_id.append(list_info['id'])
|
||||
|
||||
# checks if groups_id is in list of actual lists_id
|
||||
# this will fail if user is in a group, but subscriber is not in the respective list
|
||||
for id in groups_id:
|
||||
|
@ -170,16 +188,4 @@ for user_info in authentik_get_users():
|
|||
print('> User groups check failed, updating')
|
||||
set_resp = listmonk_set_list([subscriber_info['id']], "remove", [id], status="")
|
||||
|
||||
# sync used_by with users
|
||||
for app_info in authentik_get_apps():
|
||||
try:
|
||||
list_info = listmonk_get_list('app-' + app_info['slug'])
|
||||
|
||||
except Exception as e:
|
||||
print('> Failed to find app as list, creating app-' + app_info['slug'])
|
||||
create_resp = listmonk_create_list('app-' + app_info['slug'])
|
||||
print(create_resp)
|
||||
continue
|
||||
|
||||
for used_by in authentik_get_app_used_by(app_info['slug']):
|
||||
print(used_by)
|
||||
|
|
Loading…
Reference in a new issue