Problema ao excluir papel no sistema - Laravel

7 respostas
Elyton_Silva

Tenho uma função que impede o usuário deletar o papel “admin”, o problema que tenho ao tentar excluir esse papel ele deleta o papel abaixo dele, ao sobrar só um papel que é o admin a função tem efeito e acontece nada e recarrega a página, o certo seria caso eu tente deletar o papel de admin ele apenas recarregue a página e não apague o papel que foi adiciona recentemente.

Obs: Estou usando o spatie/laravel-permission para controlar o acesso do sistema.

Código controller

public function destroy($id)
{
    if(DB::table("roles")->find($id)->name == "admin"){ // Faz a verificação se for admin ele recarrega a página.
        return redirect()->route('roles.index');
    }

    Role::find($id)->delete(); // Se não é  admin ele exclui o papel.
   return redirect()->route('roles.index')
                             ->with('success','Papel excluido com sucesso!');
}

7 Respostas

javaflex

Debuga e veja o que vem em ->name. Se não vem admin logicamente nao vai cair nesse primeiro return e o problema estaria em outro lugar que você não mostrou.

Elyton_Silva

Pois é ele vem o admin, exemplo se deletar todos os papeis e sobrar só o admin ele não deleta fica dando refresh quando tento apagar ai está tudo certo só não deveria apagar os outros.

javaflex

Mas foi o que voce programou no if, sempre que chegar no admin está redirecionando pra index.

Elyton_Silva

Sim, só não entendo muito a lógica dessa acl que estou usando, antes eu usava outra acl e essa linha funcionava ele impedia do usuário deletar o papel de admin recarregava a página e não deletava os outros papeis.

javaflex

Se fizesse sua própria lógica teria mais controle e não ficaria travado nessa e em outras situações.

Sem dizer pontualmente onde está o problema, só resta você seguir documentação disso que está usando ou seguir a risca tutoriais.

Elyton_Silva

Já disse no post o problema, para resolver deve ser besteira só não sei o que adicionar ou alguma dica para resolver.

javaflex

Disse de forma abrangente, não pontual. Deveria debugar e pelo menos dizer a partir de que linha dá errado.

Criado 19 de julho de 2019
Ultima resposta 21 de jul. de 2019
Respostas 7
Participantes 2