Dissociates user account from email address when deleting service.

This commit is contained in:
Adarnof 2015-12-01 07:56:13 +00:00
parent f6ef741e63
commit ec1b17df25
2 changed files with 18 additions and 5 deletions

View File

@ -245,6 +245,20 @@ class DiscordAPIManager:
r.raise_for_status() r.raise_for_status()
return r.json() return r.json()
@staticmethod
def destroy_user(email, current_password):
data = {
'avatar': None,
'username': os.urandom(8).encode('hex'),
'password': current_password,
'email': os.urandom(8).encode('hex') + '@test.com',
}
path = DISCORD_URL + "/users/@me"
custom_headers = {'content-type':'application/json', 'authorization': DiscordAPIManager.get_token_by_user(email, current_password)}
r = requests.patch(path, headers=custom_headers, data=json.dumps(data))
r.raise_for_status
return r.json()
class DiscordManager: class DiscordManager:
def __init__(self): def __init__(self):
pass pass
@ -272,17 +286,16 @@ class DiscordManager:
return "", "" return "", ""
@staticmethod @staticmethod
def delete_user(username): def delete_user(username, email, password):
try: try:
user_id = DiscordAPIManager.get_user_id(settings.DISCORD_SERVER_ID, username) user_id = DiscordAPIManager.get_user_id(settings.DISCORD_SERVER_ID, username)
DiscordAPIManager.kick_user(settings.DISCORD_SERVER_ID, user_id) DiscordAPIManager.kick_user(settings.DISCORD_SERVER_ID, user_id)
return True DiscordAPIManager.destroy_user(email, password)
except KeyError:
#user does not exist
return True return True
except: except:
#something went wrong #something went wrong
return False return False
return False
@staticmethod @staticmethod
def update_groups(username, groups): def update_groups(username, groups):

View File

@ -337,7 +337,7 @@ def activate_discord(request):
@user_passes_test(service_blue_alliance_test) @user_passes_test(service_blue_alliance_test)
def deactivate_discord(request): def deactivate_discord(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user) authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = DiscordManager.delete_user(authinfo.discord_username) result = DiscordManager.delete_user(authinfo.discord_username, request.user.email, authinfo.discord_password)
remove_all_syncgroups_for_service(request.user, "discord") remove_all_syncgroups_for_service(request.user, "discord")
if result: if result:
AuthServicesInfoManager.update_user_discord_info("", "", request.user) AuthServicesInfoManager.update_user_discord_info("", "", request.user)