Skip to content

Adicionar um comando para criar um super user passando parâmetros pela linha de comandos #476

Description

@fribeiro-fccn

Descrição da nova funcionalidade

Atualmente, para criar o super user é necessário ter interação com o sistema a pedir email, pass.
Sugeria que fosse possível adicionar um novo comando para que os parâmetros passassem pela linha de comandos diretamente.

Isto implica modificar o app.py

Exemplo do pretendido - (Adicionei o nome como create_superuser_param pois já há o defualt e é só como exepmlo)

@app.cli.command("create_superuser_param")
@click.option("-e", "--email", required=True)
@click.option("-p", "--password", required=True)
@click.option("-c", "--email_confirmed", default=True)
def create_superuser_param(email, password, email_confirmed):
    """
    Cria um novo utilizador a partir dos dados inseridos na linha de comandos.

    Para criar um novo utilizador é necessário preencher:
    - email (deve ser válido e único);
    - password;
    - email confirmado.
    """

    user_email = email.strip()
    user_password = password.strip()
    email_confirmed = email_confirmed.strip()
    if email_confirmed.upper() in ("Y", "YES"):
        email_confirmed = True
    else:
        email_confirmed = False
        print("Deve enviar o email de confirmação pelo admin")

    # Validar email vazio
    if not user_email:
        print("Email não pode ser vazio")
        return

    # Validar formato do email
    form = EmailForm(data={"email": user_email})
    if not form.validate():
        print("Deve inserir um email válido!")
        return

    # Validar unicidade do email
    if controllers.get_user_by_email(user_email):
        print("Já existe outro utilizador com esse email!")
        return

    # Validar password vazia
    if not user_password:
        print("Senha não pode ser vazia")
        return

    # Informar quando o email não está confirmado
    if not email_confirmed:
        print("Deve enviar o email de confirmação pelo admin")

    # Criar utilizador
    create_user(user_email, user_password, email_confirmed)

    print("Novo utilizador criado com sucesso!")

Esta parte poderá ser revista:
email_confirmed = email_confirmed.strip()
if email_confirmed.upper() in ("Y", "YES"):
email_confirmed = True
else:
email_confirmed = False
print("Deve enviar o email de confirmação pelo admin")

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions