Skip to content

Commit 5547938

Browse files
committed
create-admin
1 parent 58764f6 commit 5547938

3 files changed

Lines changed: 36 additions & 26 deletions

File tree

Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ help:
88
quickstart:
99
@python cli.py --quickstart --env-file $(env)
1010

11-
# create-user ----------------------------------------------------------------------------------------------------------------------------------------
12-
create-user:
13-
@python scripts/create_first_user.py
11+
# create-admon ----------------------------------------------------------------------------------------------------------------------------------------
12+
create-admin:
13+
@python scripts/create_admin.py
1414

1515
# dev ------------------------------------------------------------------------------------------------------------------------------------------------
1616
dev:
@@ -36,4 +36,4 @@ test-integ:
3636
%:
3737
@:
3838

39-
.PHONY: help quickstart dev lint test-unit test-integ
39+
.PHONY: help quickstart dev lint test-unit test-integ create-admin

cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def display_make_help(console: Console) -> None:
6161
commands.add_column("Description")
6262
commands.add_row("quickstart [env=.env]", "Start services in docker environment")
6363
commands.add_row("dev [env=.env]", "Start services in local development mode")
64-
commands.add_row("create-user", "Create a first user")
64+
commands.add_row("create-admin", "Create a first admin user")
6565
commands.add_row("lint", "Run linter")
6666
commands.add_row("test-unit", "Run unit tests")
6767
commands.add_row("test-integ", "Run integration tests")
Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
import argparse
22

33
import requests
4+
from rich import box
5+
from rich.console import Console
6+
from rich.panel import Panel
7+
from rich.table import Table
48

59
parser = argparse.ArgumentParser()
610
parser.add_argument("--api_url", type=str, default="http://localhost:8000")
711
parser.add_argument("--master_key", type=str, default="changeme")
8-
parser.add_argument("--first_email", type=str, default="my-first-user")
9-
parser.add_argument("--first_password", type=str, default="changeme")
12+
parser.add_argument("--email", type=str, default="admin")
13+
parser.add_argument("--password", type=str, default="changeme")
1014

1115

1216
if __name__ == "__main__":
17+
console = Console()
1318
args = parser.parse_args()
1419

1520
headers = {"Authorization": f"Bearer {args.master_key}"}
@@ -19,7 +24,7 @@
1924
assert response.status_code == 200, response.text
2025
routers = response.json()["data"]
2126

22-
role_name = "my-first-role"
27+
role_name = "admin"
2328
role_permissions = ["admin"]
2429
role_limits = []
2530

@@ -40,7 +45,7 @@
4045
assert response.status_code == 200, response.text
4146
roles = response.json()["data"]
4247
for role in roles:
43-
if role["name"] == "my-first-role":
48+
if role["name"] == role_name:
4449
role_id = role["id"]
4550
break
4651
else:
@@ -51,14 +56,14 @@
5156
response = requests.post(
5257
url=f"{args.api_url}/v1/admin/users",
5358
headers=headers,
54-
json={"email": args.first_email, "name": args.first_email, "password": args.first_password, "role": role_id},
59+
json={"email": args.email, "name": args.email, "password": args.password, "role": role_id},
5560
)
5661
if response.status_code == 409:
5762
response = requests.get(f"{args.api_url}/v1/admin/users", headers=headers)
5863
assert response.status_code == 200, response.text
5964
users = response.json()["data"]
6065
for user in users:
61-
if user["email"] == args.first_email:
66+
if user["email"] == args.email:
6267
user_id = user["id"]
6368
break
6469
message = "User already exists, new api key created."
@@ -73,18 +78,23 @@
7378

7479
key = response.json()["token"]
7580

76-
display_limits = "\n ".join([f"{router['name']} → unlimited" for router in routers])
77-
78-
print(f"""
79-
\033[32;1m✔ {message} \033[0m
80-
81-
\033[32;1mRole:\033[0m {role_name}
82-
\033[32;1mRole permissions:\033[0m {",".join(role_permissions)}
83-
\033[32;1mRole limits: \033[0m
84-
{display_limits}
85-
86-
\033[32;1mEmail:\033[0m {args.first_email}
87-
\033[32;1mPassword:\033[0m {args.first_password}
88-
89-
\033[32;1mAPI key:\033[0m {key}
90-
""")
81+
limits_table = Table(box=box.SIMPLE_HEAD, header_style="bold cyan")
82+
limits_table.add_column("Router")
83+
limits_table.add_column("Limit")
84+
for router in routers:
85+
limits_table.add_row(router["name"], "unlimited")
86+
87+
summary_table = Table(box=box.SIMPLE_HEAD, show_header=False)
88+
summary_table.add_column("Field", style="bold green")
89+
summary_table.add_column("Value", overflow="fold")
90+
summary_table.add_row("Role", role_name)
91+
summary_table.add_row("Role permissions", ",".join(role_permissions))
92+
summary_table.add_row("Email", args.email)
93+
summary_table.add_row("Password", args.password)
94+
summary_table.add_row("API key", key)
95+
96+
console.print(f"✔ {message}", style="bold green")
97+
console.print()
98+
console.print(Panel(summary_table, title="User information", border_style="bright_blue", padding=(1, 2)))
99+
console.print()
100+
console.print(Panel(limits_table, title="Role limits", border_style="bright_blue", padding=(1, 2)))

0 commit comments

Comments
 (0)