def update_login_data(self, user: IUser): """Update last_login_at and last_login_ip on User object. If this is the User first login, trigger FirstLogin event. :param user: User object. """ request = self.request if not user.last_login_at: e = events.FirstLogin(request, user) request.registry.notify(e) # Update user security details user.last_login_at = now() user.last_login_ip = request.client_addr