mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-15 07:20:17 +02:00
Added password change function as reset action.
This commit is contained in:
parent
57b44620cd
commit
f6ef741e63
@ -128,7 +128,7 @@ urlpatterns = patterns('',
|
|||||||
# Discord Service Control
|
# Discord Service Control
|
||||||
url(r'^activate_discord/$', 'services.views.activate_discord', name='auth_activate_discord'),
|
url(r'^activate_discord/$', 'services.views.activate_discord', name='auth_activate_discord'),
|
||||||
url(r'^deactivate_discord/$', 'services.views.deactivate_discord', name='auth_deactivate_discord'),
|
url(r'^deactivate_discord/$', 'services.views.deactivate_discord', name='auth_deactivate_discord'),
|
||||||
# url(r'^reset_discord/$', 'services.views.reset_discord', name='auth_reset_discord'),
|
url(r'^reset_discord/$', 'services.views.reset_discord', name='auth_reset_discord'),
|
||||||
|
|
||||||
# Tools
|
# Tools
|
||||||
url(r'^tool/fleet_formatter_tool/$', 'services.views.fleet_formatter_view',
|
url(r'^tool/fleet_formatter_tool/$', 'services.views.fleet_formatter_view',
|
||||||
|
@ -206,6 +206,45 @@ class DiscordAPIManager:
|
|||||||
return role['id']
|
return role['id']
|
||||||
raise KeyError('Group not found on server: ' + group_name)
|
raise KeyError('Group not found on server: ' + group_name)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_token_by_user(email, password):
|
||||||
|
data = {
|
||||||
|
"email" : email,
|
||||||
|
"password": password,
|
||||||
|
}
|
||||||
|
custom_headers = {'content-type':'application/json'}
|
||||||
|
path = DISCORD_URL + "/auth/login"
|
||||||
|
r = requests.post(path, headers=custom_headers, data=json.dumps(data))
|
||||||
|
r.raise_for_status()
|
||||||
|
return r.json()['token']
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_user_profile(email, password):
|
||||||
|
token = DiscordAPIManager.get_token_by_user(email, password)
|
||||||
|
custom_headers = {'accept': 'application/json', 'authorization': token}
|
||||||
|
path = DISCORD_URL + "/users/@me"
|
||||||
|
r = requests.get(path, headers=custom_headers)
|
||||||
|
r.raise_for_status()
|
||||||
|
return r.json()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def set_user_password(email, current_password, new_password):
|
||||||
|
profile = DiscordAPIManager.get_user_profile(email, current_password)
|
||||||
|
avatar = profile['avatar']
|
||||||
|
username = profile['username']
|
||||||
|
data = {
|
||||||
|
'avatar': avatar,
|
||||||
|
'username': username,
|
||||||
|
'password': current_password,
|
||||||
|
'new_password': new_password,
|
||||||
|
'email': email,
|
||||||
|
}
|
||||||
|
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
|
||||||
@ -281,3 +320,12 @@ class DiscordManager:
|
|||||||
return True
|
return True
|
||||||
except:
|
except:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def update_user_password(email, current_password):
|
||||||
|
new_password = DiscordManager.__generate_random_pass()
|
||||||
|
try:
|
||||||
|
profile = DiscordAPIManager.set_user_password(email, current_password, new_password)
|
||||||
|
return new_password
|
||||||
|
except:
|
||||||
|
return current_password
|
||||||
|
@ -348,14 +348,9 @@ def deactivate_discord(request):
|
|||||||
@user_passes_test(service_blue_alliance_test)
|
@user_passes_test(service_blue_alliance_test)
|
||||||
def reset_discord(request):
|
def reset_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.update_user_password(request.user.email, authinfo.discord_password)
|
||||||
if result:
|
if result:
|
||||||
# ensures succesful deletion
|
AuthServicesInfoManager.update_user_discord_info(authinfo.discord_username, result, request.user)
|
||||||
AuthServicesInfoManager.update_user_discord_info("", "", request.user)
|
update_discord_groups(request.user)
|
||||||
new_result = DiscordManager.add_user(authinfo.discord_username, request.user.email)
|
return HttpResponseRedirect("/services/")
|
||||||
if new_result:
|
|
||||||
# ensures succesful creation
|
|
||||||
AuthServicesInfoManager.update_user_discord_info(new_result[0], new_result[1], request.user)
|
|
||||||
update_discord_groups(request.user)
|
|
||||||
return HttpResponseRedirect("/services/")
|
|
||||||
return HttpResponseRedirect("/services/")
|
return HttpResponseRedirect("/services/")
|
||||||
|
@ -127,6 +127,10 @@
|
|||||||
class="glyphicon glyphicon-ok"></span></button>
|
class="glyphicon glyphicon-ok"></span></button>
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
<a href="{% url 'auth_reset_discord' %}">
|
||||||
|
<button type="button" class="btn btn-primary"><span
|
||||||
|
class="glyphicon glyphicon-refresh"></span></button>
|
||||||
|
</a>
|
||||||
<a href="{% url 'auth_deactivate_discord' %}">
|
<a href="{% url 'auth_deactivate_discord' %}">
|
||||||
<button type="button" class="btn btn-danger"><span
|
<button type="button" class="btn btn-danger"><span
|
||||||
class="glyphicon glyphicon-remove"></span></button>
|
class="glyphicon glyphicon-remove"></span></button>
|
||||||
@ -294,6 +298,10 @@
|
|||||||
class="glyphicon glyphicon-ok"></span></button>
|
class="glyphicon glyphicon-ok"></span></button>
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
<a href="{% url 'auth_reset_discord' %}">
|
||||||
|
<button type="button" class="btn btn-primary"><span
|
||||||
|
class="glyphicon glyphicon-refresh"></span></button>
|
||||||
|
</a>
|
||||||
<a href="{% url 'auth_deactivate_discord' %}">
|
<a href="{% url 'auth_deactivate_discord' %}">
|
||||||
<button type="button" class="btn btn-danger"><span
|
<button type="button" class="btn btn-danger"><span
|
||||||
class="glyphicon glyphicon-remove"></span></button>
|
class="glyphicon glyphicon-remove"></span></button>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user