-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreate_admin.py
More file actions
116 lines (95 loc) · 3.61 KB
/
create_admin.py
File metadata and controls
116 lines (95 loc) · 3.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/env python3
"""
Script zum Erstellen eines Admin-Benutzers für das Produktivsystem
Verwendung: python create_admin.py
"""
import getpass
from sqlalchemy.orm import Session
from werkzeug.security import generate_password_hash
# Import der App-Module
from bogan.db.models import User
from bogan.utils import get_db_engine
def create_admin_user():
"""Erstellt einen neuen Admin-Benutzer interaktiv"""
print("=" * 50)
print("BOGAN - Admin-Benutzer erstellen")
print("=" * 50)
# Benutzername eingeben
while True:
username = input("Admin-Benutzername: ").strip()
if username:
break
print("❌ Benutzername darf nicht leer sein!")
# Email eingeben (optional)
email = input("Email (optional): ").strip()
if not email:
email = None
# Passwort eingeben (sicher ohne Echo)
while True:
password = getpass.getpass("Passwort: ")
if len(password) < 6:
print("❌ Passwort muss mindestens 6 Zeichen lang sein!")
continue
password_confirm = getpass.getpass("Passwort bestätigen: ")
if password != password_confirm:
print("❌ Passwörter stimmen nicht überein!")
continue
break
# Datenbank-Verbindung
try:
with Session(get_db_engine()) as session:
# Prüfen ob Benutzer bereits existiert
existing_user = session.query(User).filter(User.name == username).first()
if existing_user:
print(f"❌ Benutzer '{username}' existiert bereits!")
return False
# Neuen Admin-Benutzer erstellen
admin_user = User(
name=username,
email=email,
password=generate_password_hash(password),
role='admin'
)
session.add(admin_user)
session.commit()
print(f"✅ Admin-Benutzer '{username}' erfolgreich erstellt!")
print(f" - Benutzername: {username}")
print(f" - Email: {email or 'Keine'}")
print(" - Rolle: admin")
print(f" - ID: {admin_user.id}")
return True
except Exception as e:
print(f"❌ Fehler beim Erstellen des Admin-Benutzers: {e}")
return False
def list_admins():
"""Zeigt alle existierenden Admin-Benutzer an"""
try:
with Session(get_db_engine()) as session:
admins = session.query(User).filter(User.role == 'admin').all()
if not admins:
print("ℹ️ Keine Admin-Benutzer gefunden.")
return
print("\n📋 Existierende Admin-Benutzer:")
print("-" * 40)
for admin in admins:
print(f" ID: {admin.id} | Name: {admin.name} | Email: {admin.email or 'Keine'}")
except Exception as e:
print(f"❌ Fehler beim Abrufen der Admin-Benutzer: {e}")
if __name__ == "__main__":
print("Was möchten Sie tun?")
print("1. Neuen Admin-Benutzer erstellen")
print("2. Existierende Admin-Benutzer anzeigen")
print("3. Beenden")
while True:
choice = input("\nWählen Sie eine Option (1-3): ").strip()
if choice == "1":
create_admin_user()
break
elif choice == "2":
list_admins()
break
elif choice == "3":
print("👋 Auf Wiedersehen!")
break
else:
print("❌ Ungültige Auswahl! Bitte 1, 2 oder 3 eingeben.")