|
1 | 1 | import argparse |
2 | 2 |
|
3 | 3 | 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 |
4 | 8 |
|
5 | 9 | parser = argparse.ArgumentParser() |
6 | 10 | parser.add_argument("--api_url", type=str, default="http://localhost:8000") |
7 | 11 | 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") |
10 | 14 |
|
11 | 15 |
|
12 | 16 | if __name__ == "__main__": |
| 17 | + console = Console() |
13 | 18 | args = parser.parse_args() |
14 | 19 |
|
15 | 20 | headers = {"Authorization": f"Bearer {args.master_key}"} |
|
19 | 24 | assert response.status_code == 200, response.text |
20 | 25 | routers = response.json()["data"] |
21 | 26 |
|
22 | | - role_name = "my-first-role" |
| 27 | + role_name = "admin" |
23 | 28 | role_permissions = ["admin"] |
24 | 29 | role_limits = [] |
25 | 30 |
|
|
40 | 45 | assert response.status_code == 200, response.text |
41 | 46 | roles = response.json()["data"] |
42 | 47 | for role in roles: |
43 | | - if role["name"] == "my-first-role": |
| 48 | + if role["name"] == role_name: |
44 | 49 | role_id = role["id"] |
45 | 50 | break |
46 | 51 | else: |
|
51 | 56 | response = requests.post( |
52 | 57 | url=f"{args.api_url}/v1/admin/users", |
53 | 58 | 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}, |
55 | 60 | ) |
56 | 61 | if response.status_code == 409: |
57 | 62 | response = requests.get(f"{args.api_url}/v1/admin/users", headers=headers) |
58 | 63 | assert response.status_code == 200, response.text |
59 | 64 | users = response.json()["data"] |
60 | 65 | for user in users: |
61 | | - if user["email"] == args.first_email: |
| 66 | + if user["email"] == args.email: |
62 | 67 | user_id = user["id"] |
63 | 68 | break |
64 | 69 | message = "User already exists, new api key created." |
|
73 | 78 |
|
74 | 79 | key = response.json()["token"] |
75 | 80 |
|
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