-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreate_admin_user.py
More file actions
48 lines (35 loc) · 1.55 KB
/
Copy pathcreate_admin_user.py
File metadata and controls
48 lines (35 loc) · 1.55 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
from __future__ import annotations
import argparse
import os
import sys
from pathlib import Path
import django
PROJECT_ROOT = Path(__file__).resolve().parent
BACKEND_ROOT = PROJECT_ROOT / "pentest_platform"
if (BACKEND_ROOT / "manage.py").exists():
sys.path.insert(0, str(BACKEND_ROOT))
def _parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Create or update an admin user.")
parser.add_argument("--username", default=os.getenv("TRUSTOPS_ADMIN_USERNAME", "admin"))
parser.add_argument("--email", default=os.getenv("TRUSTOPS_ADMIN_EMAIL", "admin@trustops.local"))
parser.add_argument("--password", default=os.getenv("TRUSTOPS_ADMIN_PASSWORD", ""))
args, _ = parser.parse_known_args()
return args
def main() -> None:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pentest_platform.settings.prod")
django.setup()
from django.contrib.auth import get_user_model
args = _parse_args()
if not args.password:
raise SystemExit("Missing --password or TRUSTOPS_ADMIN_PASSWORD; refusing to create an admin with a hardcoded password.")
user_model = get_user_model()
user, created = user_model.objects.get_or_create(username=args.username, defaults={"email": args.email})
user.email = args.email
user.is_staff = True
user.is_superuser = True
user.is_active = True
user.set_password(args.password)
user.save()
print({"created": created, "username": user.username, "is_staff": user.is_staff, "is_superuser": user.is_superuser})
if __name__ == "__main__":
main()