Aller au contenu
Support de Zwii
Fred

[dev] Gestion des accès concurrents.

Messages recommandés

Hello @sylvainlelievre

Joli travail. Pour la mise en ligne d'un site de test, Il faudrait permettre une utilisation simultanée avec un rafraîchissement du site toutes les minutes. Mon hébergeur dispose d'une telle fonction dans cpanel., je vais voir ça.

Ta solution  est inétressante  puisque Zwii ne contient pas système de gestion de verrou empêchant une modification simultanée d'une page éditée ou d'une configuration.  Est-ce que tu penses pouvoir adapter ton script afin de gérer ce verrou ?

Le besoin est le suivant :

- quand un éditeur ou un admin accède à une édition de page, on génère un verrou sur la ressource qui empêche la double connexion. Lors de la validation ou du retour en arrière le verrou est supprimé. L'utilisation du CSRF est une très bonne  idée.

On peut ouvrir un atelier à ce sujet.

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour @Fred,

Pour le moment ce "verrou" est généré et mis à jour à chaque affichage de la page. C'est vrai que si l'édition d'une page dure plus que le temps de surveillance d'activité (5 minutes) il y aura possibilité de connexion multiple...

il y a une heure, Fred a dit :

quand un éditeur ou un admin accède à une édition de page, on génère un verrou

Mon idée de départ était de faire quelque chose de simple avec un minimum de modifications des modules du core.

Là il va falloir intervenir sur autre chose que user... mais ça me semble possible.

Je vais essayer !

 

Bonne journée

 

Sylvain

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, sylvainlelievre a dit :

Bonjour @Fred

 

,

 

Pour le moment ce "verrou" est généré et mis à jour à chaque affichage de la page. C'est vrai que si l'édition d'une page dure plus que le temps de surveillance d'activité (5 minutes) il y aura possibilité de connexion multiple...

Mon idée de départ était de faire quelque chose de simple avec un minimum de modifications des modules du core.

Là il va falloir intervenir sur autre chose que user... mais ça me semble possible.

Je vais essayer !

 

Bonne journée

 

Sylvain

Excellent !

Partager ce message


Lien à poster
Partager sur d’autres sites

La qualification de cette fonctionnalité est accès concurrents.

 

Pour en revenir au site Zwii il est en cours.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour @Fred,

 

Je vais réfléchir à cet "accès concurrents" indépendamment, pour le moment, du site bac à sable. Il est probable que si ce problème est résolu l'approche du site bac à sable sera à revoir. Mais pour l'instant je ne vois comment une tâche cron peut donner satisfaction, c'est pour ça que sur mon site de test je ne réinitialisait le site qu'après une nouvelle connexion, le "jeu" étant de déterminer le plus exactement quand on peut autoriser cette nouvelle connexion.

 

Accès concurrents

 

Je démarre avec la version Zwii 10.0.0.44

Le 19/03/2020 à 07:16, Fred a dit :

quand un éditeur ou un admin accède à une édition de page, on génère un verrou sur la ressource qui empêche la double connexion. Lors de la validation ou du retour en arrière le verrou est supprimé.

C'est malheureusement plus compliqué. Pour actionner le verrou qui empêche un autre utilisateur d'accéder à une page, article, configuration de module, etc... c'est simple mais pour retirer ce verrou c'est plus complexe :

L'utilisateur peut valider ou revenir en arrière mais il peut aussi se déconnecter, cliquer sur une autre page du menu ou fermer son navigateur. Autant d'action à détecter. Je vais commencer par recenser les informations dont j'ai besoin et voir comment on peut les obtenir dans Zwii.

 

A suivre...

 

Bonne journée

 

Sylvain

 

 

 

Modifié par sylvainlelievre

Partager ce message


Lien à poster
Partager sur d’autres sites

La gestion des accès concurrents évite qu'une page soit éditer par deux utilisateurs en même temps.

Réflexion démarrée avec @sylvainlelievre et les membres intéressés.

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 5 minutes, Fred a dit :

La gestion des accès concurrents évite qu'une page soit éditée par deux utilisateurs en même temps.

Bien pigé mais la détection de la fermeture du navigateur faite sauvagement est-elle envisageable ?

 

Comme je l'imaginais en avançant sur les accès concurrents j'ai trouvé une solution pour le site bac à sable,  pour empêcher d'avoir 2 utilisateurs connectés avec le même identifiant, beaucoup plus simple et beaucoup plus zwii ( 0 fichier supplémentaire, tout en json avec ajout dans les user de quelques paramètres supplémentaires).

 

Me voilà à courir 2 lièvres à la fois, un comble !

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 1 heure, sylvainlelievre a dit :

Me voilà à courir 2 lièvres à la fois, un comble !

Lol.

Pour le site de démo, je t"ai envoyé un MP.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour @Fred,

 

Pour les accès concurrents au niveau des pages (y compris une page mère de blog) :

Création dans page.json de 3 clefs supplémentaires :

editing -> true = page en édition

editing_csrf

editing_time utilisé pour détecter une fermeture de session (ex : fermeture du navigateur en phase d'édition).

 

Principe du Verrouillage

dans page.php je modifie ces paramètres quand on entre en édition (editing =true, etc...).

 

Principe du déverrouillage

Par submit : remise à false de editing et raz des autres paramètres quand on clic sur le bouton submit. Pour ce bouton submit j'ai dû lui donner un nom dans core/module/page/view/edit/edit.php.

 

Par sortie sans submit pour les cas où on sort de l'édition sans enregistrer par retour, clic sur un onglet de page ou clic sur une icône de la barre de membre (y compris sur logout mais pas sur le gestionnaire de fichiers) : c'est un script dans core.php en début de la fonction router() qui permet de faire les raz.

 

Autres cas : pour les cas où l'utilisateur ferme son navigateur ou son poste : un script en tout début de core.js.php et dans core.php en début de la fonction router() permet de faire les raz.

 

Visible dans https://www.vivreenborddebaie.fr/acces/

admin / admin

Version Zwii 10.0.044

 

Réalisé également pour la gestion des utilisateurs, la configuration du site et la personnalisation du thème.

 

Bug fonction delete : OK

 

A faire : tester...

 

Bonne soirée

 

 

 

acces_20200331.zip

Modifié par sylvainlelievre
maj delete

Partager ce message


Lien à poster
Partager sur d’autres sites

@Fred,

 

Gros bug découvert : l'accès concurrent protège actuellement d'une double édition mais pas d'un effacement !!!

ça ne devrait pas être trop méchant.

 

C'est réglé. l'accès concurrent prend en compte le delete d'une page demandée par une autre session.

Je devrais me rapprocher de la solution, archive (plus haut) mise à jour et datée.

 

A suivre...

 

Modifié par sylvainlelievre

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour @Fred,

 

Pour moi il n'y a aucune urgence. J'ai plusieurs projets en chantier.

 

Par contre si tu pouvais scinder le sujet " Demo live de Zwii et Site vitrine" en 2 sujets "Demo live de Zwii" et "Site vitrine de Zwii" ça me permettrait d'avancer plus clairement sur ces 2 projets.

 

Bonne journée

Sylvain

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour Sylvain,

Si comme modérateur.

Justement j'étais en train de vérifier. Les journées sont trop courtes, assez paradoxal  ceci-dit.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour @sylvainlelievre

Entre temps je suis passé en 146, et la livraison de tous les fichiers m'oblige à tout reprendre.

Peux-tu m'adresser uniquement les fichiers que tu as modifié dans leur arborescence ?

Une branche est créée sur GitHub : https://github.com/fredtempez/ZwiiCMS/tree/acces_concurrents

Tu dois pouvoir y déposer directement test fichiers, sinon un zip ça ira 😉

Merci  à toi.

Partager ce message


Lien à poster
Partager sur d’autres sites

@Fred,

Je veux bien essayer de faire les modifications sur la branche GitHub mais comment avoir les droits et comment modifier les fichiers ?

 

Le Zip suivant contient les fichiers modifiés, dont voici la liste :

Toutes mes modifications sont encadrées par //AJOUT //FIN AJOUT sauf commentaires... désolé

core/module/page/page.php

core/module/page/view/edit/edit.php       ajout d'un name pour le submit

Core/module/install/ressource/defautdata.php

Core/core.php             + ajout de la fonction acces_raz() au dessus de l'AJOUT signalé

Core/core.js.php          mod. au début du fichier avec fonction  setInterval()

Core/module/install/install.php

Core/module/user/user.php

Core/module/config/config.php

Core/module/theme/theme.php

acces_20200331.zip

Modifié par sylvainlelievre

Partager ce message


Lien à poster
Partager sur d’autres sites

@Fred,

 

Je me suis inscrit sur GitHub, je peux maintenant écrire dans les fichiers mais je n'ai pas les droits et j'ai ce message :

You’re editing a file in a project you don’t have write access to. We’ve created a fork of this project for you to commit your proposed changes to. Submitting a change to this file will write it to a new branch in your fork, so you can send a pull request.

Partager ce message


Lien à poster
Partager sur d’autres sites

Une fois ajouté, je te donnerai les droit sur la branche. Ce sera plus facile pour l'intégration et te facilitera le travail.

Partager ce message


Lien à poster
Partager sur d’autres sites

Non, ce n'est pas moi !

 

Je suis sylvainlelievre comme dans Zwii et je n'ai pas personnalisé mon icône.

 

Je n'arrive pas à te passer un message dans Github pour te faciliter la connexion.

Il y a 12 heures, Fred a dit :

Une fois ajouté, je te donnerai les droit sur la branche. Ce sera plus facile pour l'intégration et te facilitera le travail.

 

OK

Partager ce message


Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


×
×
  • Créer...