fix clean start
This commit is contained in:
@@ -47,7 +47,8 @@ def init_db():
|
||||
site TEXT NOT NULL,
|
||||
username TEXT NOT NULL,
|
||||
password TEXT NOT NULL,
|
||||
client_id TEXT NULL,
|
||||
client_id TEXT NOT NULL,
|
||||
topic TEXT NOT NULL,
|
||||
created_at timestamptz DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT site_user_clientid_unique UNIQUE(site, username, client_id)
|
||||
)
|
||||
@@ -92,14 +93,14 @@ def authenticate(master_password):
|
||||
return auth_success
|
||||
|
||||
# Aggiungi una password al database
|
||||
def add_password(site, username, password, client_id, cipher):
|
||||
def add_password(site, username, password, client_id, topic, cipher):
|
||||
conn = get_db_connection()
|
||||
cursor = conn.cursor()
|
||||
encrypted_password = cipher.encrypt(password.encode()).decode()
|
||||
try:
|
||||
cursor.execute(
|
||||
f"INSERT INTO {DB_CONFIG['dbschema']}.{DB_CONFIG['dbtable']} (site, username, password, client_id) VALUES (%s, %s, %s, %s)",
|
||||
(site, username, encrypted_password, client_id))
|
||||
f"INSERT INTO {DB_CONFIG['dbschema']}.{DB_CONFIG['dbtable']} (site, username, password, client_id, topic) VALUES (%s, %s, %s, %s, %s)",
|
||||
(site, username, encrypted_password, client_id, topic))
|
||||
conn.commit()
|
||||
logging.info(f"Password aggiunta per il sito: {site}.")
|
||||
except psycopg2.Error as e:
|
||||
@@ -112,18 +113,18 @@ def get_password(site, cipher):
|
||||
conn = get_db_connection()
|
||||
cursor = conn.cursor()
|
||||
try:
|
||||
cursor.execute(f"SELECT username, password, client_id FROM {DB_CONFIG['dbschema']}.{DB_CONFIG['dbtable']} WHERE site = %s", (site,))
|
||||
cursor.execute(f"SELECT username, password, client_id, topic FROM {DB_CONFIG['dbschema']}.{DB_CONFIG['dbtable']} WHERE site = %s", (site,))
|
||||
row = cursor.fetchone()
|
||||
if row:
|
||||
username, encrypted_password, client_id = row
|
||||
username, encrypted_password, client_id, topic = row
|
||||
decrypted_password = cipher.decrypt(encrypted_password.encode()).decode()
|
||||
logging.info(f"Password recuperata per il sito: {site}.")
|
||||
return username, decrypted_password, client_id
|
||||
return username, decrypted_password, client_id, topic
|
||||
logging.warning(f"Sito non trovato: {site}.")
|
||||
return None, None, None
|
||||
return None, None, None, None
|
||||
except psycopg2.Error as e:
|
||||
logging.error(f"Errore durante il recupero della password: {e}")
|
||||
return None, None, None
|
||||
return None, None, None, None
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
@@ -166,6 +167,7 @@ def add_password_api():
|
||||
username = request.json.get('username')
|
||||
password = request.json.get('password')
|
||||
client_id = request.json.get('client_id')
|
||||
topic = request.json.get('topic')
|
||||
|
||||
if not authenticate(master_password):
|
||||
logging.warning("Tentativo di aggiungere una password con master password errata.")
|
||||
@@ -173,7 +175,7 @@ def add_password_api():
|
||||
|
||||
key = derive_key(master_password)
|
||||
cipher = Fernet(key)
|
||||
add_password(site, username, password, client_id, cipher)
|
||||
add_password(site, username, password, client_id, topic, cipher)
|
||||
return jsonify({"message": "Password aggiunta con successo"})
|
||||
|
||||
# Endpoint per recuperare una password
|
||||
@@ -188,12 +190,12 @@ def get_password_api():
|
||||
|
||||
key = derive_key(master_password)
|
||||
cipher = Fernet(key)
|
||||
username, password, client_id = get_password(site, cipher)
|
||||
username, password, client_id, topic = get_password(site, cipher)
|
||||
|
||||
if username is None:
|
||||
return jsonify({"error": "Sito non trovato"}), 404
|
||||
|
||||
return jsonify({"site": site, "username": username, "password": password, "client_id": client_id})
|
||||
return jsonify({"site": site, "username": username, "password": password, "client_id": client_id, "topic": topic})
|
||||
|
||||
# Endpoint per cancellare una password
|
||||
@app.route('/delete', methods=['POST'])
|
||||
|
||||
Reference in New Issue
Block a user