В моей системе я хочу отслеживать все действия пользователей по входу / выходу из системы, но я застрял, пока веду журнал действий по сбросу пароля пользователя.
Как я могу сохранить эту активность пользователя в моей модели UserActivity?
Есть ли какие-нибудь предложения?
Как я могу получить адрес электронной почты пользователя при успешном сбросе пароля посмотреть?
модели
class UserActivity(models.Model):
change_message = models.CharField(max_length=255)
ip = models.GenericIPAddressField(null=True)
user = models.CharField(max_length=255, blank=True, null=True)
action_time = models.DateTimeField(auto_now_add=True)
@receiver(user_logged_in)
def user_logged_in_callback(sender, request, user, **kwargs):
ip = request.META.get('REMOTE_ADDR')
UserActivity.objects.create(change_message='User Logged in', ip=ip, user=user.email)
@receiver(user_logged_out)
def user_logged_out_callback(sender, request, user, **kwargs):
ip = request.META.get('REMOTE_ADDR')
UserActivity.objects.create(change_message='User Logged out', ip=ip, user=user.email)
@receiver(user_login_failed)
def user_login_failed_callback(sender, request, credentials, **kwargs):
ip = request.META.get('REMOTE_ADDR')
UserActivity.objects.create(change_message='User Login Failed', ip=ip, user=credentials.get('email', None))
URL-адреса для сброса пароля
path('password-reset/confirm/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(template_name='users/password_reset_confirm.html',
success_url=reverse_lazy('users:password_reset_complete'),
form_class=PasswordResetConfirmForm),
name='password_reset_confirm'),
path('password-reset/complete/', views.PasswordResetSuccessView.as_view(), name='password_reset_complete')
просмотр
class PasswordResetSuccessView(View):
template_name = 'users/password_reset_complete.html',
def get(self, request):
ip = request.META.get('REMOTE_ADDR')
UserActivity.objects.create(change_message='An user resets the password', ip=ip, user = ? )