Bonjour,
Je cherche un moyen pour limiter (masquer) les onglets disponibles quand un utilisateur n’est créé avec les droits admin . En effet quand le réglage est sur non cette utilisateur n’a pas accès a l’onglet utilisateurs dans le dashboard.
Comment puis-je masquer : reglages, logs, webhooks, téléphone ?
Tout ceci afin qu’un simple utilisateur aille trifouiller ou soit perdu dans des menu qu’il n’ira jamais…
j’ai essayer de jeter un oeil au php pour le réglage administrateur pour savoir sur quel fichier il agit … Mais aucune idée . J’ai cher du coté du css aussi pour masquer ces menu de maniere graphique …
<?php if (isset($_SESSION['user']['admin']) && $_SESSION['user']['admin']) { ?>
<div class="form-group">
<label>Niveau administrateur : </label>
<div class="form-group">
<input name="admin" type="radio" value="1" required <?= (isset($_SESSION['previous_http_post']['admin']) && (bool) $_SESSION['previous_http_post']['admin']) ? 'checked' : ''; ?>/> Oui
<input name="admin" type="radio" value="0" required <?= (isset($_SESSION['previous_http_post']['admin']) && !(bool) $_SESSION['previous_http_post']['admin']) ? 'checked' : ''; ?>/> Non
</div>
</div>
<?php } ?>
Quel est le soft ?
Pourquoi cacher des infos à un admin ? C’est pas le but de son grade avoir accès à tout ?
D’après moi tu tripouille pas le bon document
Non (je me suis mal exprimer) l’idée serait de pouvoir cacher plus de menu pour un non-admin et bien sur de laisser tous les menu pour les admin.
Et je me suis dis comme cette fonction cache un menu est-ce que l’on peut ajouter dans le code la possibilitée de cacher plus de menu comme le menu téléphone quand l’utilisateur n’est pas admin ?
Le soft raspisms . Version 3
Je sais pas ou les fichiers ce retrouve une fois installé, mais le document que tu veux modifier est dans le dossier;
raspisms-master\templates\incs
, raspism-master
a remplacer par l’emplacement des fichiers.
Le document c’est ‹ nav.php ›, il a les liens que tu parles.
Oui impec je pense que si j’ajoute dans cette variable les champs que je veux cacher cela fonctionnerai, par contre il faudrait que je puisse faire le changement de status de non-admin a admin (pour faire me reglage dans telephone par exemple) puis redescendre en non-admin, mais je ne sais pas comment procédé une fois le compte créé impossible de pouvoir le modifier (l’interface web ne permet pas de modifier un compte)… aurai-tu une idée ?
le code du sujet (dans nav.php)
<?php if (\controllers\internals\Tool::is_admin()) { ?>
inclure le code souhaité dans la condition
<?php } ?>
soit comme résultat :
<?php if (\controllers\internals\Tool::is_admin()) { ?>
<?php if ($_SESSION['user']['settings']['webhook'] ?? false) { ?>
<li <?php echo $page == 'webhooks' ? 'class="active"' : ''; ?>>
<a href="<?php echo \descartes\Router::url('Webhook', 'list'); ?>"><i class="fa fa-fw fa-plug"></i> Webhooks</a>
</li>
<?php } ?>
<li <?php echo $page == 'phones' ? 'class="active"' : ''; ?>>
<a href="<?php echo \descartes\Router::url('Phone', 'list'); ?>"><i class="fa fa-fw fa-phone"></i> Téléphones</a>
</li>
<li <?php echo $page == 'settings' ? 'class="active"' : ''; ?>>
<a href="<?php echo \descartes\Router::url('Setting', 'show'); ?>"><i class="fa fa-fw fa-cogs"></i> Réglages</a>
</li>
<li <?php echo $page == 'users' ? 'class="active"' : ''; ?>>
<a href="<?php echo \descartes\Router::url('User', 'list'); ?>"><i class="fa fa-fw fa-user"></i> Utilisateurs</a>
</li>
<?php } ?>``
Truc manuel
Crée un Array avec le ID de tes admin pouvant voir, par exemple le 1 et le 24, ajoute le a début de ce document.
$adminArray=array(1,24);
La je peux pas t’assurer de donne la bonne commande pour obtenir le ID de l’utilisateur, pour vérifier et voir toutes les valeurs tu peux faire un
print_r($_SESSION['user']);
ce qui t’imprimerais un texte comme ça, ou tu connais tout les noms et leur valeurs;
Array (
"nom"=>"valeur",
...
)
Mais pour continuer le code manuel, ajoute dans le if après le « \controllers\internals\Tool::is_admin() » ou tu veux filter que pour les vrais admins;
&& in_array($_SESSION['user']['id'],$adminArray)
As oui nickel cela va me permettre d’avoir plus infos merci bcp pour ton aide mais l’idée serai de comprendre comment modifier un non-admin en admin sans devoir recréé le compte car l’interface web ne permet pas directement de modifier cela …
Je penser a le modifier dans la base donné mysql directement mais je ne voudrais pas faire une bêtise … sinon intègre un bouton modifier la valeur admin de 0 à 1
J’irais regarder les sources et de trouver les 2 commandes suivante; la création d’un compte normal, et celle admin, tu te crée par la suite une commande de « upgrade account », et tu trouves un moyen de te l’intégrer dans le code, ça va te prendre un peu de skill en PHP par contre
Mais si tu veux prendre des users pour les rendre « admin » avec le menu caché, la tu peux faire autres choses.
Par exemple, ajouter un champs dans le user normal pour « accès admin limité », et après tu te crée une valeur comme celle dans le code d menu (ou il l’utilise) isAdmin qui pourrais etre isHalfAdmin et ou tu vérifie si le champ utilisateur est activé (ou via l’appel que je t’ai montré; $_SESSION['user']['halfAdmin']
par exemple). Mais si il doit faire des actions faut peut-être ajouter plutôt dans le isAdmin directement avec un filtrage dans cette commande. Tout dépend comment le code marche dans tout ça et ou sont les vérifications.
J’ai creuser un peu pour le moment j’utilise ça :
Dans usr/share/raspisms/templates/nav.php
déplacer : <?php if (\controllers\internals\Tool::is_admin()) { ?> au dessus de logs
les pages sont toujours accécible via la barre de navigation /phone par exemple
Mais je n’arrive pas a changer un utilisateur en admin et vise versa …
Je crois que ton niveau en PHP n’est pas à la hauteur de ton désire.
Le script doit marcher sous le principe de chargement de l’user courant avant l’affichage, et dont des contrôles. Les menu eux, ce n,est que le rendu selon la valeur de l’utilisateur, mais en aucun temps et aucun script est conçu pur que si un lien est absent du menu, que la page lui sois interdit.
Si tu veux passer d’un user @ admin ou vice versa, il faut trouver ;
- Les functions reliés à la création d’un admin, la gestion d’un admin, et la vérification si un user est admin
- Les functions reliés à la création d’un user, la gestion d’un user, et la vérification si il est actif, valide, etc…
Une fois trouver, il faut
- Comprendre la structure de la Base de donnée, des compte admin et user, leur différences etc…
- Examiner le système de gestion des pages, et de leurs commandes dite « background » ou « Preload » des pages
- Établir les besoins, ce qui doit être modifié en DB comme en codes, et au besoin créer de nouvelles fonctions et options dans les pages pour arriver à tes fins
Ceci relève du principe de rétro-ingénierie; tu prend un produit fini et tu le décortique pour en établir le fonctionnement et au besoin le modifier (améliorer) pour tes besoins.
Mais regarde si il n’existe pas des « hacks » de codes, un peux comme avec d’autres scripts PHP pour personnaliser. Ce sont souvent des fichiers du scripts pré-modifier, ou de petit guide pour expliquer comment modifier les fichiers pour un objectif quelconque.
Pour un peu cette raison, je préfère créer mes propres systèmes, lorsque possible. Fouiller dans les codes des autres n’est pas toujours simple et des fois, tu n’es simplement pas au même niveau de compétence dans le X language.
Actuellement il n’existe pas d’interface pour modifier un utilisateur une fois celui-ci créé, ce serait une chose à ajouter mais qui n’est pas prioritaire, la grande majorité des actions pouvant êtres effectuées directement par l’utilisateur dans son profile.
Si tu souhaites modifier un simple utilisateur pour le passer admin, tu peux effectivement aller modifier ça dans la base de donnée en modifiant l’entrée de l’utilisateur dans la table user
et en passant le champ admin
à 1
.
Actuellement il n’existe pas de système de droits permettant d’autoriser/interdire l’accès à certaines fonctions à des utilisateurs ou non (ex : autoriser la gestion des téléphones, mais interdire celle des webhooks, etc.). C’est là aussi une évolution qui est envisagée mais qui risque de demander beaucoup de développement.
Enfin, selon tes besoins je me permet de signaler qu’il est possible d’envisager des prestations de développement autour de RaspiSMS afin d’ajouter des fonctionnalités, etc. Voir RaspiSMS | Contact.