| @@ -3,15 +3,19 @@ import random | |||
| import string | |||
| import click | |||
| from flask import current_app | |||
| from libs.password import password_pattern, valid_password, hash_password | |||
| from libs.helper import email as email_validate | |||
| from extensions.ext_database import db | |||
| from models.account import InvitationCode | |||
| from libs.rsa import generate_key_pair | |||
| from models.account import InvitationCode, Tenant | |||
| from models.model import Account | |||
| import secrets | |||
| import base64 | |||
| from models.provider import Provider | |||
| @click.command('reset-password', help='Reset the account password.') | |||
| @click.option('--email', prompt=True, help='The email address of the account whose password you need to reset') | |||
| @@ -73,6 +77,31 @@ def reset_email(email, new_email, email_confirm): | |||
| click.echo(click.style('Congratulations!, email has been reset.', fg='green')) | |||
| @click.command('reset-encrypt-key-pair', help='Reset the asymmetric key pair of workspace for encrypt LLM credentials. ' | |||
| 'After the reset, all LLM credentials will become invalid, ' | |||
| 'requiring re-entry.' | |||
| 'Only support SELF_HOSTED mode.') | |||
| @click.confirmation_option(prompt=click.style('Are you sure you want to reset encrypt key pair?' | |||
| ' this operation cannot be rolled back!', fg='red')) | |||
| def reset_encrypt_key_pair(): | |||
| if current_app.config['EDITION'] != 'SELF_HOSTED': | |||
| click.echo(click.style('Sorry, only support SELF_HOSTED mode.', fg='red')) | |||
| return | |||
| tenant = db.session.query(Tenant).first() | |||
| if not tenant: | |||
| click.echo(click.style('Sorry, no workspace found. Please enter /install to initialize.', fg='red')) | |||
| return | |||
| tenant.encrypt_public_key = generate_key_pair(tenant.id) | |||
| db.session.query(Provider).filter(Provider.provider_type == 'custom').delete() | |||
| db.session.commit() | |||
| click.echo(click.style('Congratulations! ' | |||
| 'the asymmetric key pair of workspace {} has been reset.'.format(tenant.id), fg='green')) | |||
| @click.command('generate-invitation-codes', help='Generate invitation codes.') | |||
| @click.option('--batch', help='The batch of invitation codes.') | |||
| @click.option('--count', prompt=True, help='Invitation codes count.') | |||
| @@ -134,3 +163,4 @@ def register_commands(app): | |||
| app.cli.add_command(reset_password) | |||
| app.cli.add_command(reset_email) | |||
| app.cli.add_command(generate_invitation_codes) | |||
| app.cli.add_command(reset_encrypt_key_pair) | |||