Implementado Logs de Pagos de Stripe y Historial de conexiones de seguridad
This commit is contained in:
+30
-10
@@ -8,7 +8,8 @@ from django.contrib.auth import logout
|
||||
from django import forms
|
||||
import stripe
|
||||
from .pagos_stripe import create_checkout_session
|
||||
from .models import Noticia, ClienteCategoria, ServerSelection, RecruitAFriend, DownloadClientPage, ContentCreator, RecruitReward, ClaimedReward, AccountActivation, SecurityToken, GuildRenameSettings, VoteSite, VoteLog, HomeApiPoints, UnstuckHistory, ReviveHistory, RenamePrice, CustomizePrice, ChangeRacePrice, ChangeFactionPrice, LevelUpPrice, GoldPrice, TransferPrice, Category, Item, StripeLog
|
||||
from .models import Noticia, ClienteCategoria, ServerSelection, RecruitAFriend, DownloadClientPage, ContentCreator, RecruitReward, ClaimedReward, AccountActivation, SecurityToken, GuildRenameSettings, VoteSite, VoteLog, HomeApiPoints, UnstuckHistory, ReviveHistory, RenamePrice, CustomizePrice, ChangeRacePrice, ChangeFactionPrice, LevelUpPrice, GoldPrice, TransferPrice, Category, Item, StripeLog, LoginAttempt
|
||||
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from datetime import datetime, timedelta
|
||||
from .zone_definitions import get_zone_name
|
||||
@@ -196,20 +197,26 @@ def login_view(request):
|
||||
if form.is_valid():
|
||||
username = form.cleaned_data['username']
|
||||
password = form.cleaned_data['password']
|
||||
ip_address = request.META.get('REMOTE_ADDR') # Obtener la IP del cliente
|
||||
|
||||
# Llamar a la función de autenticación
|
||||
# Llamar a la funci¨®n de autenticaci¨®n
|
||||
if authenticate(username, password):
|
||||
# Guardar el nombre de usuario en mayúsculas en la sesión
|
||||
# Guardar el intento exitoso
|
||||
log_login_attempt(username, "Exito", ip_address)
|
||||
|
||||
# Guardar el nombre de usuario en may¨²sculas en la sesi¨®n
|
||||
request.session['username'] = username.upper()
|
||||
return JsonResponse({'success': True})
|
||||
else:
|
||||
return JsonResponse({'success': False, 'error': "Usuario o contraseña incorrectos"})
|
||||
# Guardar el intento fallido
|
||||
log_login_attempt(username, "Fracaso", ip_address)
|
||||
|
||||
return JsonResponse({'success': False, 'error': "Usuario o contrase?a incorrectos"})
|
||||
else:
|
||||
return JsonResponse({'success': False, 'error': "Formulario no válido"})
|
||||
return JsonResponse({'success': False, 'error': "Formulario no valido"})
|
||||
|
||||
form = LoginForm()
|
||||
return render(request, 'auth/login.html', {'form': form})
|
||||
|
||||
# Función para contar los personajes en lÃnea
|
||||
def get_online_characters_count():
|
||||
with connections['acore_characters'].cursor() as cursor:
|
||||
@@ -2320,10 +2327,23 @@ def ban_history_view(request):
|
||||
return render(request, 'account/ban_history.html')
|
||||
|
||||
def security_history_view(request):
|
||||
"""
|
||||
Vista para mostrar el historial de seguridad del usuario.
|
||||
"""
|
||||
return render(request, 'account/security_history.html')
|
||||
username = request.session.get('username')
|
||||
if not username:
|
||||
return redirect('login') # Si no est¨¢ autenticado, redirigir al login
|
||||
|
||||
# Obtener los ¨²ltimos 20 intentos de inicio de sesi¨®n
|
||||
login_attempts = LoginAttempt.objects.filter(username=username).order_by('-timestamp')[:20]
|
||||
|
||||
return render(request, 'account/security_history.html', {'login_attempts': login_attempts})
|
||||
|
||||
def log_login_attempt(username, status, ip_address):
|
||||
# Registrar intento de inicio de sesi¨®n en el historial
|
||||
LoginAttempt.objects.create(
|
||||
username=username,
|
||||
status=status,
|
||||
ip_address=ip_address,
|
||||
timestamp=timezone.now()
|
||||
)
|
||||
|
||||
|
||||
def trade_points_view(request):
|
||||
|
||||
Reference in New Issue
Block a user