mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-14 14:52:15 +00:00
Update delete to CBV, add in support for soft deletes.
This commit is contained in:
@@ -148,7 +148,11 @@ GARGOYLE_SWITCH_DEFAULTS = {
|
|||||||
'label': 'Disable API Backend Processing',
|
'label': 'Disable API Backend Processing',
|
||||||
'description': 'Disables backend processing for the EVE API, stops Auth hammering the API during outages',
|
'description': 'Disables backend processing for the EVE API, stops Auth hammering the API during outages',
|
||||||
}
|
}
|
||||||
|
'eve-softkeydelete': {
|
||||||
|
'is_active': False,
|
||||||
|
'label': 'Soft API Key Deletions',
|
||||||
|
'description': 'API Keys are not deleted from the database, only removed from the user.',
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
LOGGING = {
|
LOGGING = {
|
||||||
|
|||||||
16
app/eve_api/templates/eve_api/eveaccount_confirm_delete.html
Normal file
16
app/eve_api/templates/eve_api/eveaccount_confirm_delete.html
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}Delete EVE API Key {{ object.pk }}{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="page-header">
|
||||||
|
<h1>Confirm EVE API Key deletion</h1>
|
||||||
|
</div>
|
||||||
|
<p>You are about to remove EVE API Key {{ object.pk }} from Auth, once deleted Auth with recheck your permissions and make modifications to your account as required. <b>You may lose access to TEST services if this API key is the only one providing permissions for your account</b>.</p>
|
||||||
|
|
||||||
|
<form action="{% url eveapi-delete object.pk %}" method="post">
|
||||||
|
<input type="submit" value="Confirm Deletion" class="btn error"/>
|
||||||
|
{% csrf_token %}
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
||||||
@@ -7,8 +7,8 @@ from eve_api import views
|
|||||||
urlpatterns = patterns('',
|
urlpatterns = patterns('',
|
||||||
url(r'^eveapi/add/$', views.eveapi_add, name="eveapi-add"),
|
url(r'^eveapi/add/$', views.eveapi_add, name="eveapi-add"),
|
||||||
url(r'^eveapi/update/(?P<userid>\d+)/$', views.eveapi_update, name="eveapi-update"),
|
url(r'^eveapi/update/(?P<userid>\d+)/$', views.eveapi_update, name="eveapi-update"),
|
||||||
url(r'^eveapi/delete/(?P<userid>\d+)/$', views.eveapi_del, name="eveapi-delete"),
|
url(r'^eveapi/delete/(?P<pk>\d+)/$', login_required(views.EVEAPIDeleteView.as_view()), name="eveapi-delete"),
|
||||||
url(r'^eveapi/refresh/(?P<pk>\d+)/$', login_required(views.EVEAPIRefresh.as_view()), name="eveapi-refresh"),
|
url(r'^eveapi/refresh/(?P<pk>\d+)/$', login_required(views.EVEAPIRefreshView.as_view()), name="eveapi-refresh"),
|
||||||
url(r'^eveapi/log/(?P<userid>\d+)/$', login_required(views.EVEAPILogView.as_view()), name="eveapi-log"),
|
url(r'^eveapi/log/(?P<userid>\d+)/$', login_required(views.EVEAPILogView.as_view()), name="eveapi-log"),
|
||||||
url(r'^eveapi/access/(?P<slug>\d+)/$', login_required(views.EVEAPIAccessView.as_view()), name="eveapi-accessview"),
|
url(r'^eveapi/access/(?P<slug>\d+)/$', login_required(views.EVEAPIAccessView.as_view()), name="eveapi-accessview"),
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import csv
|
import csv
|
||||||
|
|
||||||
from django.core import serializers
|
from django.core import serializers
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse, reverse_lazy
|
||||||
from django.http import HttpResponse, Http404, HttpResponseForbidden, HttpResponseRedirect
|
from django.http import HttpResponse, Http404, HttpResponseForbidden, HttpResponseRedirect
|
||||||
from django.shortcuts import render_to_response, get_object_or_404, redirect
|
from django.shortcuts import render_to_response, get_object_or_404, redirect
|
||||||
from django.template import RequestContext
|
from django.template import RequestContext
|
||||||
from django.views.generic import TemplateView, DetailView, ListView, View
|
from django.views.generic import TemplateView, DetailView, ListView, DeleteView, View
|
||||||
from django.views.generic.detail import SingleObjectMixin
|
from django.views.generic.detail import SingleObjectMixin
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
@@ -95,23 +95,30 @@ def eveapi_update(request, userid, post_save_redirect='/', template='eve_api/upd
|
|||||||
return render_to_response(template, context, context_instance=RequestContext(request))
|
return render_to_response(template, context, context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
class EVEAPIDeleteView(DeleteView):
|
||||||
def eveapi_del(request, userid, post_save_redirect='/'):
|
"""Deletes a EVE API key that exists within the system after confirmation"""
|
||||||
""" Delete a EVE API key from a account """
|
|
||||||
|
|
||||||
if gargoyle.is_active('eve-keydelete', request):
|
model = EVEAccount
|
||||||
try:
|
success_url = reverse_lazy('sso-profile')
|
||||||
acc = EVEAccount.objects.get(pk=userid)
|
|
||||||
except EVEAccount.DoesNotExist:
|
|
||||||
return redirect(post_save_redirect)
|
|
||||||
if acc.user == request.user:
|
|
||||||
acc.delete()
|
|
||||||
messages.success(request, "EVE API key successfully deleted.", fail_silently=True)
|
|
||||||
|
|
||||||
return redirect(post_save_redirect)
|
def dispatch(self, request, *args, **kwargs):
|
||||||
|
if not gargoyle.is_active('eve-keydelete', request):
|
||||||
|
return HttpResponseForbidden()
|
||||||
|
return super(EVEAPIDeleteView, self).dispatch(request, *args, **kwargs)
|
||||||
|
|
||||||
|
def delete(self, request, *args, **kwargs):
|
||||||
|
self.object = self.get_object()
|
||||||
|
keyid = self.object.pk
|
||||||
|
if not gargoyle.is_active('eve-softkeydelete', request)
|
||||||
|
self.object.delete()
|
||||||
|
else:
|
||||||
|
self.object.user = None
|
||||||
|
self.object.save()
|
||||||
|
messages.success(self.request, 'EVE API key %s successfully deleted.' % keyid, fail_silently=True)
|
||||||
|
return HttpResponseRedirect(self.get_success_url())
|
||||||
|
|
||||||
|
|
||||||
class EVEAPIRefresh(SingleObjectMixin, View):
|
class EVEAPIRefreshView(SingleObjectMixin, View):
|
||||||
"""Force a refresh of a EVE API key, accepts requests via AJAX or normal requests"""
|
"""Force a refresh of a EVE API key, accepts requests via AJAX or normal requests"""
|
||||||
|
|
||||||
model = EVEAccount
|
model = EVEAccount
|
||||||
@@ -131,7 +138,7 @@ class EVEAPIRefresh(SingleObjectMixin, View):
|
|||||||
ret = [acc]
|
ret = [acc]
|
||||||
return HttpResponse(serializers.serialize('json', ret), mimetype='application/javascript')
|
return HttpResponse(serializers.serialize('json', ret), mimetype='application/javascript')
|
||||||
else:
|
else:
|
||||||
messages.add_message(request, messages.INFO, "Key %s has been queued to be refreshed from the API" % acc.api_user_id)
|
messages.add_message(self.request, messages.INFO, "Key %s has been queued to be refreshed from the API" % acc.api_user_id)
|
||||||
return HttpResponseRedirect('/')
|
return HttpResponseRedirect('/')
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -101,7 +101,7 @@
|
|||||||
<td>{% ifswitch api-disableprocessing %}{% else %}<a href="{% url eveapi-refresh acc.api_user_id %}" onclick="javascript:refresh_apikey({{ acc.api_user_id }}); return false;">Refresh</a>,
|
<td>{% ifswitch api-disableprocessing %}{% else %}<a href="{% url eveapi-refresh acc.api_user_id %}" onclick="javascript:refresh_apikey({{ acc.api_user_id }}); return false;">Refresh</a>,
|
||||||
<a href="{% url eve_api.views.eveapi_update acc.api_user_id %}">Update Key</a>, {% endifswitch %}
|
<a href="{% url eve_api.views.eveapi_update acc.api_user_id %}">Update Key</a>, {% endifswitch %}
|
||||||
<a href="{% url eveapi-log acc.api_user_id %}">Logs</a>{% ifswitch eve-keydelete %},
|
<a href="{% url eveapi-log acc.api_user_id %}">Logs</a>{% ifswitch eve-keydelete %},
|
||||||
<a href="{% url eve_api.views.eveapi_del acc.api_user_id %}">Delete</a>{% endifswitch %}</td>
|
<a href="{% url eveapi-delete acc.api_user_id %}">Delete</a>{% endifswitch %}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
Reference in New Issue
Block a user