uspdev / copaco

COntrole de PArque COmputacional
8 stars 14 forks source link

Gate de admin devolve superadmin quando campos de superadmin estão vazios #326

Closed wgnann closed 5 years ago

wgnann commented 5 years ago

Se, por exemplo, "SUPERADMINS_LDAP=" estiver no arquivo de configuração, qualquer usuário satisfará o Gate::allows('admin').

Isso acontece porque o explode() devolverá um array com "" na posição 0 caso estiver vazio e, se o usuário não tiver um username_ldap, $user->username_ldap será justamente "".

Como em PHP, NULL é igual a "", ambos são interpretados da mesma forma. A não existência do username_ldap implica no usuário sempre ser superadmin, pois in_array(NULL, [""]) é true.

wgnann commented 5 years ago

@app/Providers/AuthServiceProvider.php

-                in_array($user->id, $admins_id) ||
-                in_array($user->username_senhaunica, $admins_senhaunica) ||
-                in_array($user->username_senhaunica, $admins_ldap);
+                (in_array($user->id, $admins_id) and $user->id) ||
+                (in_array($user->username_senhaunica, $admins_senhaunica) and $user->username_senhaunica) ||
+                (in_array($user->username_senhaunica, $admins_ldap) and $user->username_ldap);
wgnann commented 5 years ago

PR 327.