AccueilAideRechercherIdentifiez-vousInscrivez-vous

Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
23 Mai 2012 à 03:34:43

Connexion avec identifiant, mot de passe et durée de la session
Rechercher
    avancée

News

Stats
8763 Messages dans 1087 Fils de discussion par 1002 Membres
Dernier membre: emilie
+  PHP Astux
|-+  NewsletTux v. 2
| |-+  NewsletTux 2 fr (fin du support)
| | |-+  [Disponible] NewsletTux 2.0.5.
Pages: [1] 2   Bas de page
Imprimer
Auteur Fil de discussion: [Disponible] NewsletTux 2.0.5.  (Lu 5951 fois)
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« le: 30 Octobre 2007 à 17:37:28 »

J'ouvre ce sujet en forme de post-it pour des améliorations (ou des ajouts !) pour la v. 2.0.5.

N'hésitez pas à poster vos remarques.

Actuellement, je vais travailler sur :
- correction bug "write.php" (si existant encore chez chertains)
- fonctions RSS : meilleure implémentation (lien possible dans la newsletter)
- pb de template / mail au staff (chez Astro ?)
- gestion UTF-8 et iso8859-15
- import d'email : message d'erreur plus explicite
- classes CSS pour différents liens (pub, gestion des abonnements)
- STAFF : objet du mail


Au passage, je vais essayer de proposer qq templates, si parmi vous certains ont des idées de "papier à lettres" et qu'ils veulent les soumettre, il n'y a aucun souci.

« Dernière édition: 05 Novembre 2007 à 09:19:19 par Matthieu » Journalisée

olivier
Néophyte
*
Sexe: Homme
Messages: 8



« Répondre #1 le: 04 Novembre 2007 à 21:49:33 »

Bonjour,
Petites requêtes pour la gestion du staff:

1) Serait il possible que lorsque que l'on change le statut d'un abonné en admin ou écrivain en passant par le menu:
->Gestion des abonnés ->lister les abonnés ->édition d'un abonné (icône crayon)
Un mail de confirmation contenant le mot de passe lui soit envoyé comme dans la partie gestion du staff.

2) Toujours  en passant par
->Gestion des abonnés ->lister les abonnés ->édition d'un abonné (icône crayon)
si l'on repasse un admin ou un écrivain en simple abonné celui ci conserve sont accès et ses droits serait il possible de remédier à cela ?

Merci
Journalisée
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #2 le: 04 Novembre 2007 à 22:05:59 »

pour le 1) oui c'est possible.

ouvre admin/subscribers.php, ligne 411, remplace :
Code:
if ($email != '')
{
// Now update user
$req_update_user = sprintf("UPDATE ".DB_PREFIX."users SET
groupval='%s',
name='%s',
mail='%s',
firstletter='%s',
footer='%s'
WHERE
id='%d';",$group, DBInsert($name), $email, $email[0], DBInsert($footer), $uid);

par
Code:
if ($email != '')
{
// reset pwd
$random_pwd = RandomPassword(10);

// Now update user
$req_update_user = sprintf("UPDATE ".DB_PREFIX."users SET
groupval='%s',
name='%s',
mail='%s',
firstletter='%s',
footer='%s',
pwd='%s'
WHERE
id='%d';",$group, DBInsert($name), $email, $email[0], DBInsert($footer), $random_pwd, $uid);
(ça correspond à ajouter 2 lignes et modifier la requête SQL)

puis juste en dessous, remplace :
Code:
if (ExecuteQuery($req_update_user, __FILE__, __LINE__))
{
// if this is this user (writer editing footer f.ex.) update SESSION
if ($_SESSION['ntux2_iduser'] == $uid)
par :
Code:
if (ExecuteQuery($req_update_user, __FILE__, __LINE__))
{
// notify by mail
$sent_message = $ntux2['subscribers_sendemail_writer'];

// now replace variables in the body
$sent_message = str_replace('{SITE_NAME}', SITE_NAME, $sent_message);
$sent_message = str_replace('{USER_GRP}', $ntux2['group_'.$group], $sent_message);
$sent_message = str_replace('{ADMIN_URL}', SITE_URL.SITE_NTUXDIR.'admin/', $sent_message);
$sent_message = str_replace('{RANDOM_PWD}', $random_pwd, $sent_message);
$sent_message = str_replace('{USER_NAME}', Disp($_SESSION['ntux2_name']), $sent_message);
SendTextMail($email, $ntux2['subscriber_newstaff_subject'], $sent_message, SITE_NAME, Disp($_SESSION['ntux2_name']));

// if this is this user (writer editing footer f.ex.) update SESSION
if ($_SESSION['ntux2_iduser'] == $uid)








pour le 2) ouvre admin/index.php et remplace ligne 61 :
Code:
(mail = '%s' AND pwd = '%s');",$mail, md5($pwd));

par :
Code:
(mail = '%s' AND pwd = '%s' AND groupval != 'subscriber');",$mail, md5($pwd));

Précision : la plupart des fonctions ne leur étaient pas dispo vu qu'elles sont réservées explicitement à l'admin ou à l'écrivain (ou au root).


EDIT : ceux qui passeront à la 205 maintenant auront ces modifs incluses.
« Dernière édition: 04 Novembre 2007 à 22:13:36 par Matthieu » Journalisée

olivier
Néophyte
*
Sexe: Homme
Messages: 8



« Répondre #3 le: 05 Novembre 2007 à 07:07:42 »

Merci Matthieu.
Encore une fois aussi rapide qu' efficace !
 Cool
Journalisée
Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #4 le: 06 Novembre 2007 à 21:10:27 »

Salut,

Il semble qu'il y a une erreur. (mais je peut me tromper.) J'ai modifié les lignes et changé un abonné en écrivain (mon second mail).
L'écrivain a bien eu son mail avec son mot de passe, mais l'accès lui est interdit.

En vérifiant dans la base de donnée sur le site, le mot de passe était en clair et non codé md5.

J'ai remplacé la ligne 425
Citation
id='%d';",$group, DBInsert($name), $email, $email[0], DBInsert($footer), $random_pwd, $uid);
par
Code:
id='%d';",$group, DBInsert($name), $email, $email[0], DBInsert($footer), md5($random_pwd), $uid);

modification dans la ligne: md5($random_pwd)

En repassant l'écrivain en abonné, pour revenir en écrivain afin qu'un nouveau mot de passe soit envoyé, l'écrivain a pu se connecter.

Ce que je trouve par-contre currieux, c'est que dans Accueil/Mon Profil, l'écrivain peut se déclarer en Admin.
Il n'a par-contre pas accès à toutes les rubriques de configurations, heureusement seules les rubriques en tant que writer restent disponibles.

En se déconnectant, et s'il s'est déclaré en Admin, il n'avait plus accès.
(Vous n'avez pas les autorisations suffisantes pour accéder à cette section, ou bien vous avez fait une erreur dans vos identifiants.)

Curieusement, j'ai eu le même message en essayant de me connecter aujourd'hui depuis mon lieu de travail avec mon login et psw SUPER UTILISATEUR (durant la pause Clin d'oeil)

Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #5 le: 06 Novembre 2007 à 23:13:38 »

woops, désolé pour ce md5 oublié, je le rajoute à l'instant.

Je mets en pièce jointe le fichier subscribers  qu'il faut renommer en subscribers.php et mettre dans admin/
- md5 du mot de passe
- l'écrivain n'a plus accès à la modif de son profil
- seul le root peut nommer admin quelqu'un (au passage, ça sert à rien de nommer un autre root, je l'ai modifié)

=> lien pour le "nouveau" subscribers.php <=
Journalisée

Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #6 le: 07 Novembre 2007 à 23:48:29 »

Je viens de constater une chose bien étrange

Etant logué avec mon compte SUPER UTILISATEUR, j'ai modifier les permissions d'écritures d'un écrivain puis j'ai validé le formulaire.
Résultat: l'écrivain a reçu un nouveau mail avec un nouveau mot de passe.
En modifiant une seconde fois les permissions d'écritures du même écrivain, celui-ci a encore reçu un nouveau mot de passe.
A chaque fois qu'une modification est réalisée, l'écrivain reçoit un nouveau mot de passe. Bizarre non?

Durant mes tests, je m'étais désinscrit de toutes les lettres pour éviter de les recevoir en plusieurs exemplaires (j'avais utilisé plusieurs de mes comptes mail), je viens de me réinscrire à toutes les lettres et je viens également de recevoir un mail avec un nouveau mot de passe.

Si je me déconnecte, il va falloir utiliser mon nouveau mot de passe pour me reconnecter. Bizarre non?

En éditant les inscriptions des abonnées et en contrôlant dans la base de données, leurs mots de passes sont également remplacés après chaque modification ou abonnement à une nouvelle lettre. Un mail leur est envoyé avec inscription au Staff en tant qu'abonné avec un mot de passe pour accès à l'interface d'administration.
En essayant l'accès, celui-ci n'est pas autorisé. Ce qui est normal, l'abonné ne doit pas y avoir accès.

Un nouveau mot de passe ne devrait pas être attribué a chaque modification, l'envoie du mail non plus!!!
Seulement si on décide de lui changer les droits Admin/Ecrivain/Abonné.
Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #7 le: 08 Novembre 2007 à 00:07:33 »

Oui, je comprends, mais c'est pas si simple que ça ...

J'ai volontairement, pour une raison technique, dû réinitialiser le mot de passe. L'explication est très simple, c'est que si tu passes un abonné en tant qu'écrivain (ou admin), il ne connait pas son mot de passe, et il n'y a aucun moyen dans la base pour le récupérer, hormis le fait d'en régénérer un nouveau.
Puisqu'on m'a demandé d'avertir par mail le changement de rôle si écrivain ou admin :

Citation
1) Serait il possible que lorsque que l'on change le statut d'un abonné en admin ou écrivain en passant par le menu:
->Gestion des abonnés ->lister les abonnés ->édition d'un abonné (icône crayon)
Un mail de confirmation contenant le mot de passe lui soit envoyé comme dans la partie gestion du staff.
c'était techniquement infaisable puisque le mot de passe était hashé en MD5... J'ai donc du choisir de le réinitialiser pour, cette fois, pouvoir l'envoyer en clair.
Ceci dit, il n'y a pas lieu logiquement de modifeir tous les abonnés Sourire

Enfin, le mot de passe est transparent pour l'utilisateur, il n'a pas à s'en soucier, celui-ci sert juste à vérifier que l'adresse mail est valide au moment de l'inscription.

Si tu as une meilleure technique, je suis à ton écoute, mais dans la mesure où le hashage en MD5 est quasiment irréversible, il ne faut pas compter pouvoir envoyer le mot de passe lors de la promotion d'un abonné => écrivain et pour qu'il se connecte à l'interface, il lui faudra bien le mot de passe ...

Si tu désires éviter l'avertissement par mail, dans la dernière modif faite sur ce topic, tu peux commenter la ligne :
Code:
SendTextMail($email, $ntux2['subscriber_newstaff_subject'], $sent_message, SITE_NAME, Disp($_SESSION['ntux2_name']));
« Dernière édition: 08 Novembre 2007 à 00:09:46 par Matthieu » Journalisée

Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #8 le: 08 Novembre 2007 à 23:07:42 »

Voila les modifications que je viens d'apporter suite à mon dernier message.

Les modifications concernent le changement de mot de passe avec envoie de mail.

Après modification,

En changeant les permissions d'écritures ou l'abonnement à une lettre, le mail n'est plus envoyé et l'écrivain, l'administrateur ou le Super utilisateur garde le même mot de passe.

Lorsque le super utilisateur ou un admin décide de faire passer un abonné en écrivain (ou admin), le mot de passe est remplacé par un nouveau et le mail est envoyé.

En repassant un admin, écrivain en abonné, celui-ci va recevoir un mail lui signalant qu'il n'a plus accès à la partie administration de la newsletter.

Voici les modifications:

Dans admin/subscribers.php
J'ai ajouter la ligne 343 (pour pouvoir faire une comparaison)
Code:
$group1 = $sub['groupval'];
A partir de 412 j'ai remplacé
Code:
if ($email != '')
{
// reset pwd
$random_pwd = RandomPassword(10);

// Now update user
$req_update_user = sprintf("UPDATE ".DB_PREFIX."users SET
groupval='%s',
name='%s',
mail='%s',
firstletter='%s',
footer='%s',
pwd='%s'
WHERE
id='%d';",$group, DBInsert($name), $email, $email[0], DBInsert($footer), $random_pwd, $uid);

par
Code:
if ($email != '')
{
if ($group != $group1)
    {
      // reset pwd
    $random_pwd = RandomPassword(10);

       // Now update user
          $req_update_user = sprintf("UPDATE ".DB_PREFIX."users SET
groupval='%s',
name='%s',
mail='%s',
firstletter='%s',
footer='%s',
pwd='%s'
WHERE
id='%d';",$group, DBInsert($name), $email, $email[0], DBInsert($footer), md5($random_pwd), $uid);
}
else
{
// Now update user
           $req_update_user = sprintf("UPDATE ".DB_PREFIX."users SET
groupval='%s',
name='%s',
mail='%s',
firstletter='%s',
footer='%s'
WHERE
id='%d';",$group, DBInsert($name), $email, $email[0], DBInsert($footer), $uid);
    }

Puis juste en dessous:
Code:
if (ExecuteQuery($req_update_user, __FILE__, __LINE__))
{
// notify by mail
$sent_message = $ntux2['subscribers_sendemail_writer'];

// now replace variables in the body
$sent_message = str_replace('{SITE_NAME}', SITE_NAME, $sent_message);
$sent_message = str_replace('{USER_GRP}', $ntux2['group_'.$group], $sent_message);
$sent_message = str_replace('{ADMIN_URL}', SITE_URL.SITE_NTUXDIR.'admin/', $sent_message);
$sent_message = str_replace('{RANDOM_PWD}', $random_pwd, $sent_message);
$sent_message = str_replace('{USER_NAME}', Disp($_SESSION['ntux2_name']), $sent_message);
SendTextMail($email, $ntux2['subscriber_newstaff_subject'], $sent_message, SITE_NAME, Disp($_SESSION['ntux2_name']));

// if this is this user (writer editing footer f.ex.) update SESSION
if ($_SESSION['ntux2_iduser'] == $uid)


Par
Code:
if (ExecuteQuery($req_update_user, __FILE__, __LINE__))
{
  if ($group != $group1)
   {
// notify by mail
if ($group == 'subscriber')
   {
   $sent_message = $ntux2['subscribers_sendemail_subscrib'];      
   }
else
   {
   $sent_message = $ntux2['subscribers_sendemail_writer'];
   }

// now replace variables in the body
$sent_message = str_replace('{SITE_NAME}', SITE_NAME, $sent_message);
$sent_message = str_replace('{USER_GRP}', $ntux2['group_'.$group], $sent_message);
$sent_message = str_replace('{ADMIN_URL}', SITE_URL.SITE_NTUXDIR.'admin/', $sent_message);
$sent_message = str_replace('{RANDOM_PWD}', $random_pwd, $sent_message);
$sent_message = str_replace('{USER_NAME}', Disp($_SESSION['ntux2_name']), $sent_message);
SendTextMail($email, $ntux2['subscriber_newstaff_subject'], $sent_message, SITE_NAME, Disp($_SESSION['ntux2_name']));
                           }
// if this is this user (writer editing footer f.ex.) update SESSION
if ($_SESSION['ntux2_iduser'] == $uid)

Dans languages/admin_fr.lang.php 
J'ais rajouté la ligne 384
Code:
$ntux2['subscribers_sendemail_subscrib'] = "Bonjour,\nUn administrateur du site {SITE_NAME} vous a désinscrit du Staff de la newsletter de son site. Vous êtes à présent {USER_GRP} et ne pouvez plus accéder à l'interface d'administration de son site.\nA bientôt !\n{USER_NAME}";

Il n'y a que quelques lignes de changées.
Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #9 le: 08 Novembre 2007 à 23:24:12 »

Ah oui, ça a l'air intéressant ... Désolé je suis sur un projet avec l'école, je passe une soutenance demain, j'ai pas trop le temps en ce moment de me replonger dans le code. J'ai tilté en relisant ma réponse une autre solution, qui semble être illustrée par ton exemple, je vais me pencher plus en détails dessus demain ou ce WE.
Journalisée

Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #10 le: 08 Novembre 2007 à 23:33:12 »

alors bonne chance!
Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #11 le: 09 Novembre 2007 à 19:05:48 »

Merci, c'est fini justement.
Ta version comporte à première vue, puisque tu sembles quand même mettre à jour le mot de passe (sans envoyer de notification)

J'ai réalisé de mon coté l'opération, en mettant un peu plus de lignes que toi, ça sera dispo dans la version 2.0.6. comme correctif, mais d'ici là tu peux tester.
Ci dessous le code complet de subscribers.php dans le if ($act == edit) :

Code:
if ($act == 'edit')
{
if (($uid != 1) || (($uid == 1) && ($_SESSION['ntux2_group'] == 'root')))
{
// retrieve user's data
$req_subscriber = sprintf("SELECT id, groupval, name, mail, footer FROM ".DB_PREFIX."users WHERE id='%d' ",$uid);
$subscriber = ExecuteQuery($req_subscriber, __FILE__, __LINE__);
$sub = mysql_fetch_array($subscriber);
// default values
$name = Disp($sub['name']);
$email = $sub['mail'];
$group = $sub['groupval'];
$footer = str_replace('<br />', '',$sub['footer']);

// retrieve profiles datas
$array_profiles = array();
$req_profiles = "SELECT id, title, descr, formats FROM ".DB_PREFIX."profiles;";
$profiles = ExecuteQuery($req_profiles, __FILE__, __LINE__);
while($p = mysql_fetch_array($profiles))
{
$array_profiles[$p['id']]['title'] = Disp($p['title']);
$array_profiles[$p['id']]['descr'] = Disp($p['descr']);
$array_profiles[$p['id']]['formats'] = Disp($p['formats']);
};

// retrieve this user's subscriptions
$req_subs = "SELECT id_profile AS pid, reg_format FROM ".DB_PREFIX."subscriptions WHERE id_user='".$uid."';";
$subs = ExecuteQuery($req_subs, __FILE__, __LINE__);
$array_selected_val = array();
while ($sub = mysql_fetch_array($subs))
{
$array_selected_val[$sub['pid']] = $sub['reg_format'];
};


// retrieve permissions
$req_perms = "SELECT id_profile AS pid FROM ".DB_PREFIX."writers WHERE id_user='".$uid."';";
$perms = ExecuteQuery($req_perms, __FILE__, __LINE__);
$array_selected_perms = array();
while ($perm = mysql_fetch_array($perms))
{
$array_selected_perms[$perm['pid']] = 1;
};

if (isset($_POST['submit']))
{
$errform = false;

// general data
$name = (isset($_POST['name'])) ? Rec($_POST['name']) : '';
$newgroup = (isset($_POST['newgroup'])) ? $_POST['newgroup'] : 'subscriber';
$oldgroup = (isset($_POST['oldgroup'])) ? $_POST['oldgroup'] : 'subscriber';
$email = (isset($_POST['email'])) ? $_POST['email'] : '';
$email = (IsEmail($email)) ? $email : '';
$footer = (isset($_POST['footer'])) ? Rec($_POST['footer']) : '';

// subscriptions
$array_new_regs = array();
foreach($array_profiles as $pid => $p)
{
if (isset($_POST['format_'.$pid]))
{
if ($_POST['format_'.$pid] != 'remove')
{
$array_new_regs[$pid] = $_POST['format_'.$pid];
};
};
};

// profiles permissions
$array_new_perms = array();
foreach($array_profiles as $pid => $p)
{
// if profile is checked, user may write in it
if (isset($_POST['perm_'.$pid]))
{
$array_new_perms[] = $pid;
}
};

// basic checks
if ($email != '')
{
// Now update user
if ($newgroup != $oldgroup) // group has changed
{
// reset pwd
$random_pwd = RandomPassword(10);

$req_update_user = sprintf("UPDATE ".DB_PREFIX."users SET
groupval='%s',
name='%s',
mail='%s',
firstletter='%s',
footer='%s',
pwd='%s'
WHERE
id='%d';",$newgroup, DBInsert($name), $email, $email[0], DBInsert($footer), md5($random_pwd), $uid);
}
else // same group, do not update password neither groupval
{
$req_update_user = sprintf("UPDATE ".DB_PREFIX."users SET
name='%s',
mail='%s',
firstletter='%s',
footer='%s'
WHERE
id='%d';",DBInsert($name), $email, $email[0], DBInsert($footer), $uid);
};

if (ExecuteQuery($req_update_user, __FILE__, __LINE__))
{
// notify by mail ?
$send_alert_mail = false;
/*
* case 1 : a subscriber becomes writer or admin => notify
* case 2 : an admin/a writer is downgraded to subscriber
* case 3 : an admin => writer or a writer => admin
*/
if (($oldgroup == 'subscriber') && ($newgroup != 'subscriber')) // case 1
{
$sent_message = $ntux2['subscribers_sendemail_writer'];
$send_alert_mail = true;
};

if (($oldgroup != 'subscriber') && ($newgroup == 'subscriber')) // case 2
{
$sent_message = $ntux2['subscribers_sendemail_subscriber'];
$send_alert_mail = true;
};

if (($oldgroup == 'admin') && ($newgroup == 'writer') || ($oldgroup == 'writer') && ($newgroup == 'admin')) // case 3
{
$sent_message = $ntux2['subscribers_sendemail_writer'];
$send_alert_mail = true;
};

if ($send_alert_mail)
{
// now replace variables in the body
$sent_message = str_replace('{SITE_NAME}', SITE_NAME, $sent_message);
$sent_message = str_replace('{USER_GRP}', $ntux2['group_'.$newgroup], $sent_message);
$sent_message = str_replace('{ADMIN_URL}', SITE_URL.SITE_NTUXDIR.'admin/', $sent_message);
$sent_message = str_replace('{RANDOM_PWD}', $random_pwd, $sent_message);
$sent_message = str_replace('{USER_NAME}', Disp($_SESSION['ntux2_name']), $sent_message);
SendTextMail($email, $ntux2['subscriber_newstaff_subject'], $sent_message, SITE_NAME, Disp($_SESSION['ntux2_name']));
};

// if this is this user (writer editing footer f.ex.) update SESSION
if ($_SESSION['ntux2_iduser'] == $uid)
{
$_SESSION['ntux2_name'] = $name;
$_SESSION['ntux2_footer'] = $footer;
}

// update registrations
// if update : remove all registrations, and rewrite them
$req_subuser = "DELETE FROM ".DB_PREFIX."subscriptions WHERE id_user='".$uid."';";
if (ExecuteQuery($req_subuser, __FILE__, __LINE__))
{
foreach($array_new_regs as $pid => $format)
{
$req_reguser = "INSERT INTO ".DB_PREFIX."subscriptions VALUES('".$uid."','".$pid."','".$format."');";
if (!ExecuteQuery($req_reguser, __FILE__, __LINE__))
{
$err_profile = GetProfileData($pid);
echo '<p>'.$ntux2['err_reg_email_profile'].' '.Disp($err_profile['title']).'</p>'.CR;
};
};
};
};

// update perms ?
if (($_SESSION['ntux2_group'] == 'root') || ($_SESSION['ntux2_group'] == 'admin'))
{
$req_del_perms = "DELETE FROM ".DB_PREFIX."writers WHERE id_user='".$uid."';";
if (ExecuteQuery($req_del_perms, __FILE__, __LINE__))
{
//print_r($array_new_perms);
// now rewrite them
foreach($array_new_perms as $perm_pid)
{
$req_perm = "INSERT INTO ".DB_PREFIX."writers (id_user, id_profile) VALUES ('".$uid."','".$perm_pid."');";
ExecuteQuery($req_perm, __FILE__, __LINE__);
};
echo '<p class="ok">'.$ntux2['subscribers_edit_ok'].'</p>'.CR;
};
};

if (($_SESSION['ntux2_group'] == 'root') || ($_SESSION['ntux2_group'] == 'admin'))
{
$uri = 'subscribers.php?act=';
$uri .= ($origin == 'manage_staff') ? 'manage_staff' : 'list';
RedirectTo($uri, 3000, $ntux2);
}
else
{
RedirectTo('subscribers.php?act=edit&amp;uid='.$uid, 3000, $ntux2);
}
}
else
{
$errform = true;
};
}; // end of if (isset($_POST['submit']))
Journalisée

Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #12 le: 09 Novembre 2007 à 19:42:44 »

Je vais remplacer par ton code pour tests.

Citation
Ta version comporte à première vue, puisque tu sembles quand même mettre à jour le mot de passe (sans envoyer de notification)

Lors de mes essais, que j'ai réalisé sur plusieurs comptes, avec contôle dans la base de donnée après chaque modification, aucun mot de passe avait été remplacé tant que:
  Super utilisateur  reste  Super utilisateur
  Admin  reste  Admin
  Ecrivain  reste Ecrivain
  Abonné  reste  Abonné
On peut alors modifier les droits d'écritures ou les abonnements aux lettres sans qu'un mail soit envoyé avec modification du mot de passe.

Par-contre lorsque Ecrivain devient Admin, Abonné devient Ecrivain ou Admin, Admin repasse en Ecrivain, le mot de passe est remplacé et le mail avec les changements est envoyé.  (Dans ce cas, on pourrait éventuellement garder le même mot de passe)

Lorsqu'un Admin ou Ecrivain redevient Abonné, le mot de passe est remplacé et le nouveau message, sans le mot de passe est envoyé par mail.
Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #13 le: 09 Novembre 2007 à 20:48:27 »

Je viens de faire les premiers tests,

Voici ce que j'ai constaté.

Dans la gestion des abonnées, le changement du groupe n'est plus possible
(ex: je passe un Abonné en Ecrivain, en validant, il est toujours en Abonné. Dans tout les essais, l'état du groupe n'a pas changé après validation)

Voici les 2 lignes qui m'accroche:
Code:
$newgroup = (isset($_POST['newgroup'])) ? $_POST['newgroup'] : 'subscriber';
$oldgroup = (isset($_POST['oldgroup'])) ? $_POST['oldgroup'] : 'subscriber';
Dans le code, je n'arrive pas à comprendre à partir d'où tu prend les 2 variables newgroup et oldgroup pour la comparaisons.

Le code de comparaisons est pourtant semblable au mien et devrais fonctionner.
Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #14 le: 10 Novembre 2007 à 11:37:55 »

Après quelques essais sur ma version tout fonctionne convenablement...

Ce que j'ai fait :
- dans le formulaire, j'ai changé le "name" du select : de "group" il est passé à "newgroup".
- dans ce même formulaire j'ai ajouté un input hidden name="oldgroup" qui a pour valeur le groupe au moment de l'édition du formulaire.

Je viens de passer un utilisateur abonné => écrivain, puis écrivain => admin, et admin => écrivain, écrivain => abonné : j'ai reçu tous les mails.
Journalisée

Pages: [1] 2   Haut de page
Imprimer
Aller à:  

Powered by SMF 1.1.16 | SMF © 2011, Simple Machines
Amber design by Bloc | XHTML | CSS