1
resposta

[Dúvida] Desafio numero 7 Dart: Trabalhando com orientação a objetos

void executarOperacao(String papel, Function operacao) {
    if (verificarPermissaoAdmin(papel)) {
      operacao();
    } else {
      print('Acesso negado');
    }
  }

Esse metodo, qual foi a logica utilizada para isso?

essa executarOperacao:

executarOperacao('admin', () => print('Usuário deletado'));

na hora de executar no main, como parametrizar outro usuario que não seja admin

   ServicoUsuario servico = ServicoUsuario();
  ServicoProduto produto = ServicoProduto();
  servico.deletarUsuario();
  produto.adicionarProduto();

sempre executa como se fosse true.

1 resposta

Olá, Lucas, como vai?

O método executarOperacao foi estruturado para receber dois parâmetros: o papel do usuário (String papel) e a função que será executada (Function operacao). Ele primeiro verifica se o usuário tem permissão de administrador usando verificarPermissaoAdmin(papel). Se for true, a operação passada é executada; caso contrário, a mensagem "Acesso negado" é exibida.

No código, deletarUsuario e adicionarProduto estão chamando executarOperacao passando a string 'admin' de forma fixa. Isso faz com que sempre seja avaliado como verdadeiro. Para testar com outro usuário, você pode modificar a chamada no main para passar um papel diferente, por exemplo:

ServicoUsuario servico = ServicoUsuario();
ServicoProduto produto = ServicoProduto();

String papelUsuario = 'editor'; 

servico.executarOperacao(papelUsuario, () => print('Usuário deletado'));
produto.executarOperacao(papelUsuario, () => print('Produto adicionado'));

Assim, se papelUsuario não for 'admin', a operação não será executada e a mensagem "Acesso negado" será exibida.

Espero ter ajudado!

Siga firme nos seus estudos e conte com o fórum sempre que precisar!

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado