last_ip
This commit is contained in:
parent
a925d2f623
commit
6ad4e0d46f
18
apps/account/migrations/0030_user_last_ip.py
Normal file
18
apps/account/migrations/0030_user_last_ip.py
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 2.2.7 on 2020-01-10 11:25
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('account', '0029_auto_20200109_1354'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='user',
|
||||||
|
name='last_ip',
|
||||||
|
field=models.GenericIPAddressField(blank=True, default=None, null=True, verbose_name='last IP address'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -136,6 +136,7 @@ class User(AbstractUser):
|
||||||
verbose_name=_('User last used locale'))
|
verbose_name=_('User last used locale'))
|
||||||
city = models.TextField(default=None, blank=True, null=True,
|
city = models.TextField(default=None, blank=True, null=True,
|
||||||
verbose_name=_('User last visited from city'))
|
verbose_name=_('User last visited from city'))
|
||||||
|
last_ip = models.GenericIPAddressField(_('last IP address'), blank=True, null=True, default=None)
|
||||||
|
|
||||||
EMAIL_FIELD = 'email'
|
EMAIL_FIELD = 'email'
|
||||||
USERNAME_FIELD = 'username'
|
USERNAME_FIELD = 'username'
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,10 @@ def get_locale(cookie_dict):
|
||||||
def get_country_code(cookie_dict):
|
def get_country_code(cookie_dict):
|
||||||
return cookie_dict.get('country_code')
|
return cookie_dict.get('country_code')
|
||||||
|
|
||||||
|
|
||||||
def user_last_visit(get_response):
|
def user_last_visit(get_response):
|
||||||
"""Updates user last visit w/ current"""
|
"""Updates user last visit w/ current"""
|
||||||
|
|
||||||
def middleware(request):
|
def middleware(request):
|
||||||
response = get_response(request)
|
response = get_response(request)
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
|
|
@ -25,10 +27,13 @@ def user_last_visit(get_response):
|
||||||
'city': determine_user_city(request),
|
'city': determine_user_city(request),
|
||||||
})
|
})
|
||||||
return response
|
return response
|
||||||
|
|
||||||
return middleware
|
return middleware
|
||||||
|
|
||||||
|
|
||||||
def parse_cookies(get_response):
|
def parse_cookies(get_response):
|
||||||
"""Parse cookies."""
|
"""Parse cookies."""
|
||||||
|
|
||||||
def middleware(request):
|
def middleware(request):
|
||||||
cookie_dict = request.COOKIES
|
cookie_dict = request.COOKIES
|
||||||
# processing locale cookie
|
# processing locale cookie
|
||||||
|
|
@ -45,4 +50,28 @@ def parse_cookies(get_response):
|
||||||
|
|
||||||
response = get_response(request)
|
response = get_response(request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
return middleware
|
||||||
|
|
||||||
|
|
||||||
|
def get_client_ip(request):
|
||||||
|
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
|
||||||
|
if x_forwarded_for:
|
||||||
|
ip = x_forwarded_for.split(',')[0]
|
||||||
|
else:
|
||||||
|
ip = request.META.get('REMOTE_ADDR')
|
||||||
|
return ip
|
||||||
|
|
||||||
|
|
||||||
|
def user_last_ip(get_response):
|
||||||
|
"""Update user last ip address"""
|
||||||
|
|
||||||
|
def middleware(request):
|
||||||
|
response = get_response(request)
|
||||||
|
if request.user.is_authenticated:
|
||||||
|
User.objects.filter(pk=request.user.pk).update(**{
|
||||||
|
'last_ip': get_client_ip(request),
|
||||||
|
})
|
||||||
|
return response
|
||||||
|
|
||||||
return middleware
|
return middleware
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user