From ad151c2cc1d54b281f5edfa32ada72029efaaf71 Mon Sep 17 00:00:00 2001 From: holger krekel Date: Wed, 10 Jul 2024 01:39:11 +0200 Subject: [PATCH] remove last_login --- chatmaild/src/chatmaild/database.py | 11 ++-------- chatmaild/src/chatmaild/doveauth.py | 20 +++++-------------- .../src/chatmaild/tests/test_doveauth.py | 20 ------------------- 3 files changed, 7 insertions(+), 44 deletions(-) diff --git a/chatmaild/src/chatmaild/database.py b/chatmaild/src/chatmaild/database.py index 1e232c1c..aa27c9fa 100644 --- a/chatmaild/src/chatmaild/database.py +++ b/chatmaild/src/chatmaild/database.py @@ -35,16 +35,9 @@ class Connection: def get_user(self, addr: str) -> {}: """Get a row from the users table.""" - q = "SELECT addr, password, last_login from users WHERE addr = ?" + q = "SELECT addr, password from users WHERE addr = ?" row = self._sqlconn.execute(q, (addr,)).fetchone() - result = {} - if row: - result = dict( - user=row[0], - password=row[1], - last_login=row[2], - ) - return result + return dict(user=row[0], password=row[1]) if row else {} class Database: diff --git a/chatmaild/src/chatmaild/doveauth.py b/chatmaild/src/chatmaild/doveauth.py index e4da3b05..594822d9 100644 --- a/chatmaild/src/chatmaild/doveauth.py +++ b/chatmaild/src/chatmaild/doveauth.py @@ -3,7 +3,6 @@ import json import logging import os import sys -import time from pathlib import Path from .config import Config, read_config @@ -82,7 +81,7 @@ def lookup_userdb(db, config: Config, user): return get_user_data(db, config, user) -def lookup_passdb(db, config: Config, user, cleartext_password, last_login=None): +def lookup_passdb(db, config: Config, user, cleartext_password): if user == f"echo@{config.mail_domain}": # Echobot writes password it wants to log in with into /run/echobot/password try: @@ -98,18 +97,9 @@ def lookup_passdb(db, config: Config, user, cleartext_password, last_login=None) password=encrypt_password(password), ) - if last_login is None: - last_login = time.time() - last_login = int(last_login) - - with db.write_transaction() as conn: + with db.read_connection() as conn: userdata = conn.get_user(user) if userdata: - # Update last login time. - conn.execute( - "UPDATE users SET last_login=? WHERE addr=?", (last_login, user) - ) - userdata["home"] = str(config.get_user_maildir(user)) userdata["uid"] = "vmail" userdata["gid"] = "vmail" @@ -117,10 +107,10 @@ def lookup_passdb(db, config: Config, user, cleartext_password, last_login=None) if not is_allowed_to_create(config, user, cleartext_password): return + with db.write_transaction() as conn: encrypted_password = encrypt_password(cleartext_password) - q = """INSERT INTO users (addr, password, last_login) - VALUES (?, ?, ?)""" - conn.execute(q, (user, encrypted_password, last_login)) + q = "INSERT INTO users (addr, password) VALUES (?, ?)" + conn.execute(q, (user, encrypted_password)) print(f"Created address: {user}", file=sys.stderr) return dict( home=str(config.get_user_maildir(user)), diff --git a/chatmaild/src/chatmaild/tests/test_doveauth.py b/chatmaild/src/chatmaild/tests/test_doveauth.py index 702b2133..503a90fd 100644 --- a/chatmaild/src/chatmaild/tests/test_doveauth.py +++ b/chatmaild/src/chatmaild/tests/test_doveauth.py @@ -12,7 +12,6 @@ from chatmaild.doveauth import ( get_user_data, is_allowed_to_create, iter_userdb, - iter_userdb_lastlogin_before, lookup_passdb, ) from chatmaild.newemail import create_newemail_dict @@ -38,25 +37,6 @@ def test_iterate_addresses(db, example_config): assert res == addresses -def test_iterate_addresses_lastlogin_before(db, example_config): - addresses = [] - - cutoff_date = 1000 - for i in range(10): - addr = f"oldold{i:03}@chat.example.org" - lookup_passdb( - db, example_config, addr, "q9mr3faue", last_login=cutoff_date - 10 - ) - addresses.append(addr) - - for i in range(5): - addr = f"newnew{i:03}@chat.example.org" - lookup_passdb(db, example_config, addr, "q9mr3faue", last_login=cutoff_date + i) - - res = iter_userdb_lastlogin_before(db, cutoff_date) - assert sorted(res) == sorted(addresses) - - def test_invalid_username_length(example_config): config = example_config config.username_min_length = 6