def reenviar_email_confirmacion(request, usuario_id): # Se determina el usuario al que hay que volver a enviar el email de confirmación usuario = Usuario.objects.get(id=usuario_id) # Se llama al proceso que envía el mail Email.enviar_correo_registro_usuario(usuario=usuario) # Se recarga la página donde se encuentra el usuario return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def login_view(request): if request.user.is_authenticated(): return redirect('website:index') if request.method == 'POST': # Caso en que el POST venga del formulario de Login de usuario if 'login' in request.POST: # Esto debe aparecer en el name del submit login_form = Login_Form(request.POST) register_form = Registro_Usuario() if login_form.is_valid(): username = login_form.cleaned_data['username'] password = login_form.cleaned_data['password'] # Comprueba que existe un usuario con ese username o con ese email if User.objects.filter(username=username): user = authenticate(username=username, password=password) elif User.objects.filter(email=username): usuario = User.objects.get(email=username) user = authenticate(username=usuario.username, password=password) else: # Si no existe ningún usuario registrado con un username o un email igual al valor pasado por el usuario, user = None user = None # Realiza las acciones correspondientes si se ha encontrado un usuario con las credenciales adquiridas if user: # Comprueba que el usuario no está desactivado if user.is_active: # Realiza el login del usuario login(request, user) # Redirecciona a la página que se desee return redirect('/index/') else: class_alert = 'alert alert-danger' message = 'Este usuario se encuentra inactivo' login_form = Login_Form(request.POST) else: class_alert = 'alert alert-danger' message = 'El usuario o password introducido es incorrecto' login_form = Login_Form(request.POST) else: class_alert = 'alert alert-danger' message = 'Hay errores en el formulario' login_form = Login_Form(request.POST) # Caso en que el POST venga del formulario de Registro de nuevo usuario elif 'register' in request.POST: # Esto debe aparecer en el name del submit register_form = Registro_Usuario(request.POST) login_form = Login_Form() if register_form.is_valid(): username = register_form.cleaned_data['username'] email = register_form.cleaned_data['email'] password = register_form.cleaned_data['password'] password2 = register_form.cleaned_data['password2'] # Comprueba que el username no exista en la BD if register_form.check_username(username): # Comprueba que el email no exista en la BD if register_form.check_email(email): # Comprueba que los dos passwords introducidos coinciden if register_form.check_password(password, password2): # Crea el nuevo usuario user_model = User.objects.create( username=username, email=email, ) # Se le asigna el password user_model.set_password(password) user_model.save() # Intentamos determinar el País a partir de la IP para añadir el dato en la creación del Usuario pais, provincia = None, None if 'user_data' in request.session: user_data = request.session['user_data'] if 'country_code' in user_data: country_code = user_data['country_code'] if Pais.objects.filter( codigo_iso_alfa2__exact=country_code ): pais = Pais.objects.get( codigo_iso_alfa2=country_code) else: pais = None if 'region_name' in user_data: provincia_name = user_data['region_name'] provincia = Provincia.get_provincia_from_name( provincia_name) # Crea el objeto Usuario asociado al Usuario creado. n_usuario = Usuario.nuevo_usuario( user=user_model, raw_password=password, pais=pais, provincia=provincia, ) # Se envía el email con el link de Activación del Usuario # 1 - Se crea el Email de Registro de Usuario Email.enviar_correo_registro_usuario( n_usuario, request.get_host()) # Se define el mensaje a mostrar en la página # TODO: Definir mensaje a mostrar en el Index que indique al usuario que se ha creado la cuenta y que se ha enviado un mail para su validación # Realiza el login del usuario # login(request, user_model) # Se definen los parámetros a pasar en el template context = { 'login_form': Login_Form(), 'register_form': Registro_Usuario(), } # Se añade el mensaje de acción exitosa context['class_alert'] = 'alert alert-success' context[ 'message'] = 'Hemos enviado un email con un enlcace de confirmación a la dirección que nos ha indicado. Por favor, siga las instrucciones para poder validar su cuenta' # Se renderiza el template con la información correspondiente context.update(custom_context(request)) return render(request, 'usuarios/login.html', context) else: class_alert = 'alert alert-danger' message = 'Las contraseñas no coinciden' register_form = Registro_Usuario(request.POST) else: class_alert = 'alert alert-danger' message = 'Ya existe un usuario registrado con este E-Mail' register_form = Registro_Usuario(request.POST) else: class_alert = 'alert alert-danger' message = 'Ya existe un usuario registrado con este username(%s)' % ( username) register_form = Registro_Usuario(request.POST) else: class_alert = 'alert alert-danger' message = 'El formulario de registro contiene errores' register_form = Registro_Usuario(request.POST) else: print( 'Se ha recibido un POST que no viene ni de Login ni de Registro' ) class_alert = None message = None login_form = Login_Form() register_form = Registro_Usuario() else: class_alert = None message = None login_form = Login_Form() register_form = Registro_Usuario() # Se definen los parámetros a pasar en el template context = { 'login_form': login_form, 'register_form': register_form, } # Se añade un mensaje si es necesario if class_alert and message: context['class_alert'] = class_alert context['message'] = message # Se renderiza el template con la información correspondiente context.update(custom_context(request)) return render(request, 'usuarios/login.html', context)