feat(auth): Add OAuth2 authentication
This commit is contained in:
65
secnex/app/application.py
Normal file
65
secnex/app/application.py
Normal file
@@ -0,0 +1,65 @@
|
||||
import typer
|
||||
from typing import Optional
|
||||
|
||||
from rich.console import Console
|
||||
from rich.table import Table
|
||||
from rich.prompt import Prompt
|
||||
|
||||
import secnex.utils as utils
|
||||
|
||||
from secnex.kit.auth.auth import Auth
|
||||
from secnex.kit.config.config import Config
|
||||
|
||||
from secnex.kit.clients.application import ApplicationClient
|
||||
|
||||
console = Console()
|
||||
|
||||
application_app = typer.Typer()
|
||||
|
||||
@application_app.command(name="create", help="Create a new application")
|
||||
def create(
|
||||
name: Optional[str] = typer.Option(None, "--name", "-n", help="The name of the application"),
|
||||
tenant: Optional[str] = typer.Option(None, "--tenant", "-t", help="The tenant to set for the application"),
|
||||
):
|
||||
"""Create a new application"""
|
||||
if name is None:
|
||||
name = Prompt.ask("Enter the name of the application")
|
||||
if tenant is None:
|
||||
tenant = Prompt.ask("Enter the ID of the tenant")
|
||||
config = Config("default")
|
||||
application_client = ApplicationClient(config)
|
||||
secret = utils.generate_secret()
|
||||
app_id, status_code, success = application_client.create(name, tenant, secret)
|
||||
if not success:
|
||||
console.print(f"Failed to create application! Please check the logs for more information.", style="bold red")
|
||||
return
|
||||
console.print(f"Application created successfully!", style="bold green")
|
||||
console.print(f"Application ID: {app_id}", style="bold green")
|
||||
console.print(f"Secret: {secret}", style="bold green")
|
||||
|
||||
@application_app.command(name="ls", help="List all applications")
|
||||
def ls():
|
||||
"""List all applications"""
|
||||
config = Config("default")
|
||||
application_client = ApplicationClient(config)
|
||||
applications, status_code, success = application_client.get_all()
|
||||
if applications is None:
|
||||
console.print(f"No applications found!", style="bold red")
|
||||
return
|
||||
count_applications = len(applications)
|
||||
console.print(f"Found {count_applications} applications")
|
||||
table = Table(title="Applications")
|
||||
table.add_column("ID", style="bold green")
|
||||
table.add_column("Name", style="bold yellow")
|
||||
table.add_column("Tenant ID", style="bold purple")
|
||||
for app in applications:
|
||||
table.add_row(app.id, app.name, app.tenant_id)
|
||||
console.print(table)
|
||||
|
||||
@application_app.command(name="rm", help="Remove an application")
|
||||
def rm(id: str):
|
||||
"""Remove an application"""
|
||||
config = Config("default")
|
||||
application_client = ApplicationClient(config)
|
||||
application_client.remove(id)
|
||||
console.print(f"Application {id} removed successfully!")
|
||||
Reference in New Issue
Block a user