harshnarayan12's picture
Upload 32 files
073bb25 verified
raw
history blame
1.59 kB
import os
import psycopg2
import bcrypt
from psycopg2.extras import RealDictCursor
from dotenv import load_dotenv
from backend.scripts.db.session import DATABASE_URL
import traceback
def get_db_connection():
return psycopg2.connect(DATABASE_URL, cursor_factory=RealDictCursor)
def hash_unencrypted_passwords():
conn = cursor = None
try:
conn = get_db_connection()
cursor = conn.cursor()
# Find rows with non-bcrypt passwords (e.g. not starting with $2)
cursor.execute("""
SELECT id, user_password
FROM user_profiles
WHERE user_password NOT LIKE '$2%';
""")
users = cursor.fetchall()
print(f"Found {len(users)} users with unencrypted passwords.")
for user in users:
user_id = user['id']
raw_password = user['user_password']
# Hash the plaintext password
hashed_pw = bcrypt.hashpw(raw_password.encode(), bcrypt.gensalt()).decode()
# Update the row with the hashed password
cursor.execute("""
UPDATE user_profiles
SET user_password = %s
WHERE id = %s
""", (hashed_pw, user_id))
conn.commit()
print("Password hashing complete.")
except Exception as e:
print("[ERROR]", e)
traceback.print_exc()
if conn:
conn.rollback()
finally:
if cursor:
cursor.close()
if conn:
conn.close()
if __name__ == "__main__":
hash_unencrypted_passwords()