import click from mgrctl.apps.vm6.auth import __version__ from mgrctl.api.vm6 import AuthAPI from mgrctl.utils.api_users import UserAPI user_cursor = UserAPI(callback_class=AuthAPI) @click.group(help='auth cmd for auth in VMmanager 6') @click.version_option( version=__version__, package_name='mgrctl.apps.vm6.auth', message=__version__ ) def cli(): pass @cli.group(help='Manage users') def user(): pass @user.command(help='List users') @click.option( '--all', is_flag=True, required=False, help='Show all users' ) @click.option( '--admins', is_flag=True, required=False, help='Show all active admins', ) def ls(all, admins): if all: user_cursor.echo_users(role='all') elif admins: user_cursor.echo_users(role='admin') else: user_cursor.echo_users(role='all') @user.command(help='Generate access key and return auth link(s)') @click.option( '--id', required=False, type=int, help='User id' ) @click.option( '--count', required=False, type=int, help='Number of access keys generated', ) @click.option( '--random', is_flag=True, required=False, help='Interactive mode, ignores other keys' ) @click.option( '--interactive', is_flag=True, required=False, help='Interactive mode, ignores other keys' ) def access(id, count, interactive, random): if id and not count: keys = user_cursor.get_access_keys(user=id, count=1) links = user_cursor.gen_access_links(keys) user_cursor.echo_access_links(links) elif id and count: keys = user_cursor.get_access_keys(user=id, count=count) links = user_cursor.gen_access_links(keys) user_cursor.echo_access_links(links) elif interactive: pass elif random: admin = user_cursor.get_first_random_admin() keys = user_cursor.get_access_keys(user=admin.get('id', 3), count=1) links = user_cursor.gen_access_links(keys) user_cursor.echo_access_links(links) else: pass @user.command(help='Generate API token for mgrctl user') def token(): token = user_cursor.gen_api_token() user_cursor.echo_api_token(token)