diff --git a/authserver/auth_functions.py b/authserver/auth_functions.py index 5d75340..875b2ab 100644 --- a/authserver/auth_functions.py +++ b/authserver/auth_functions.py @@ -211,9 +211,11 @@ def set_discourse_password(username, password, first_name, email): 'email': email, 'active': True, 'approved': True, + 'user_fields[10]': 'Spaceport auth' } response = discourse_api_post('https://forum.protospace.ca/users.json', data) response = response.json() + logger.info('Response: %s', response) if response['success']: logger.info('Skipping set password') @@ -309,10 +311,27 @@ def remove_discourse_group_members(group_name, usernames): discourse_api_delete(url, data) return True +def change_discourse_username(username, new_username): + if not username: + logger.error('Empty username, aborting') + abort(400) + if not new_username: + logger.error('Empty new_username, aborting') + abort(400) + + logger.info('Changing username %s to %s...', username, new_username) + + url = 'https://forum.protospace.ca/users/{}/preferences/username'.format(username) + data = { + 'new_username': new_username, + } + discourse_api_put(url, data) + return True if __name__ == '__main__': #set_wiki_password('tanner.collin', 'protospace1') - #set_discourse_password('test8a', 'protospace1', 'testie', 'test8@example.com') - print(get_discourse_usernames()) - pass + set_discourse_password('test8a', 'protospace1', 'testie', 'test8@example.com') + #for u in get_discourse_usernames(): + # print(u) + #pass diff --git a/authserver/server.py b/authserver/server.py index 8282104..8143c83 100644 --- a/authserver/server.py +++ b/authserver/server.py @@ -11,6 +11,7 @@ HTTP_UNAUTHORIZED = 401 def check_auth(): auth_header = request.headers.get('Authorization', '') if auth_header != 'Token ' + secrets.AUTH_TOKEN: + logger.info('Bad auth token, aborting.') abort(HTTP_UNAUTHORIZED) @app.route('/') @@ -67,5 +68,15 @@ def remove_discourse_group_members(): auth_functions.remove_discourse_group_members(group_name, usernames) return '' +@app.route('/change-discourse-username', methods=['POST']) +def change_discourse_username(): + check_auth() + + username = request.form['username'] + new_username = request.form['new_username'] + + auth_functions.change_discourse_username(username, new_username) + return '' + if __name__ == '__main__': app.run(debug=True, host='0.0.0.0')