Nye-TeeOff/kode_eksport_3/backend_create_admin_py.txt

64 lines
2.3 KiB
Text
Raw Normal View History

2026-04-10 09:52:34 +02:00
"""
TEE OFF ADMIN GENERATOR v1.9 (DEBUG & BULLETPROOF)
---------------------------------------------------------------------------
FUNKSJON: Genererer SQL-kommando for administrator.
STATUS: Beholder TRUNCATE for feilsøking, men sikrer SQL-innsendingen.
---------------------------------------------------------------------------
"""
import pyotp
from passlib.hash import pbkdf2_sha256
import getpass
import sys
def generate_admin():
print("\n" + "="*50)
print(" TEE OFF ADMIN GENERATOR v1.9 (DEBUG MODE)")
print("="*50)
username = input("Brukernavn (f.eks Envide Webutvikling): ").strip()
email = input("E-post: ").strip()
# Sikre mot SQL-feil hvis navnet/eposten inneholder apostrof
safe_username = username.replace("'", "''")
safe_email = email.replace("'", "''")
# Passord-verifisering
while True:
password = getpass.getpass("Skriv inn passord: ")
password_confirm = getpass.getpass("Gjenta passord: ")
if password == password_confirm:
if len(password) < 8:
print("⚠️ Advarsel: Passordet bør være minst 8 tegn.")
print(f"\n[DEBUG] Passord akseptert. Lengde: {len(password)} tegn.")
break
else:
print("❌ Passordene er ikke like. Prøv igjen.\n")
otp_secret = pyotp.random_base32()
print("⏳ Genererer PBKDF2-hash...")
password_hash = pbkdf2_sha256.hash(password)
print(f"[DEBUG] Hash generert. Lengde: {len(password_hash)} tegn.")
print("\n✅ GENERERING VELLYKKET!")
print("-" * 50)
print("SLIK LEGGER DU INN BRUKEREN TRYGT:")
print("-" * 50)
print("1. Gå inn i databasen:")
print(" docker exec -it teeoff_db psql -U teeoff_admin -d teeoff")
print("\n2. Lim inn disse to linjene nøyaktig slik de står:")
print("TRUNCATE admins;")
print(f"INSERT INTO admins (username, email, password_hash, otp_secret) VALUES ('{safe_username}', '{safe_email}', '{password_hash}', '{otp_secret}');")
print("\n3. Skriv 'exit' for å gå ut.")
print("-" * 50)
print("4. KONFIGURER 2FA I GOOGLE AUTHENTICATOR:")
print(f"Bruk denne nøkkelen: {otp_secret}")
print("-" * 50 + "\n")
if __name__ == "__main__":
try:
generate_admin()
except KeyboardInterrupt:
print("\nAvbrutt.")
sys.exit(0)