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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions