pluxml / PluXml

A CMS to create lightweight websites with ease and without database.
http://pluxml.org
GNU General Public License v3.0
212 stars 66 forks source link

Accès des SUBSCRIBER limité a leurs profils #689

Closed sudwebdesign closed 8 months ago

sudwebdesign commented 8 months ago

Il est possible a un abonné d'écrire un article, lister les articles et accéder aux médias, avec ce patch leurs accès est interdit.

sudwebdesign commented 8 months ago

C'est en testant avec plxAdminBar que je met a jour pour suive les évolutions de PluXml qui m'a permis de découvrir ceci. Cela me semblais anormal, vu que le menu d'un abonné affiche juste le lien Profil.

bazooka07 commented 8 months ago

2 remarques :

Une façon plus rapide est de faire un test sur $_SESSION['profil'] dans prepend.php quand PLX_AUTH n'est pas défini.

# Hook Plugins
eval($plxAdmin->plxPlugins->callHook('AdminPrepend'));

# Restricted grants for PROFIL_SUBSCRIBER
if(
    !defined('PLX_AUTHPAGE') and
    $_SESSION['profil'] > PROFIL_WRITER and
    !preg_match('#/core/admin/profil\.php$#', $_SERVER['PHP_SELF'])
) {
    header('Location: profil.php');
    exit;
}

Je pousserai un PR demain

sudwebdesign commented 8 months ago

La il y aucune boucle infini, un abonné a le droit d'ouvrir les page admin/article.php medias.php et index.php car (me semble t'il) aucun test du profil est fait sur ces pages et pour la redirection de index vers profil le premier commit le prévoit.

sudwebdesign commented 8 months ago

Pour éviter des problèmes avec les plugins, je ferais le test decheckProfil avant l'appel aux hooks

Le placement de checkprofil est inspiré de admin/categories.php ou de catégorie.php (me rappelle plus) où il est rajouté PROFIL_WRITER Au moins ils se ressemblent (les hooks sont bien avant la vérif).

C'est sur que de placer la vérif après un hook semble (a priori) bizarre, peut-être une raison historique ou autre... Il est donc possible de changer le profil de l'utilisateur en session ou bien plus.

Je te laisse seul juge du placement des checkprofil, ce qui compte c'est que PluXml est le moins de bogue possible ;)

bazooka07 commented 8 months ago

PR https://github.com/pluxml/PluXml/pull/695