Approbation utilisateur par mail avec affectation de role

Eléphanteau du PHP | 16 Messages

17 juin 2022, 10:22

Bonjour à tous,

Je suis en train de crée un site, et par securité, j'aimerais que l'inscription d'un utilisateur soit approuvé par email par un moderateur du site, j'aimerais egalement que cet utilisateur puisse affecter un role à l'utilisateur lors de cet approbation. Es ce que quelqu'un pourrais m'aider ? c'est pour une association

Merci d'avance à tous !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 juin 2022, 11:22

Bonjour,

PHPfrance est un forum d'entraide, donc oui aucun problème pour aider mais on ne va pas le faire à ta place, donc à toi de nous dire où tu bloques, ce que tu as essayé, quel est le message d'erreur que tu ne comprends pas... en nous donnant des extraits pertinents de ton code qui ne fonctionne pas comme prévu.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 16 Messages

17 juin 2022, 11:29

En fait, je ne sait pas par ou commencer, et dans mes recherche sur le net, je ne trouve pas ce cas. une piste de départ pourrais m'aider dans ma recherche. Merci

Mammouth du PHP | 1967 Messages

17 juin 2022, 14:05

Il te faut un status sur un utilisateur, pour savoir si il est approuvé ou pas. tu peux utiliser le roles et attribuer un role spécifique genre "non aprouvé".

lors de la création du user, il faut gèrer l'envoi de mail au modo, aprés le modo va sur ton site sur une page spécifique pour approuvé ou non l'user en lui attribuant le role qu'il faut.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Eléphanteau du PHP | 36 Messages

18 juin 2022, 21:05

Tu peut t'inspiré de ça, vire les message flash si ça t’intéresse pas

Une fois le lien activation cliquer :

Code : Tout sélectionner

$user_name = $_GET['username']; $token = $_GET['token']; $req = $db->prepare('SELECT * FROM users WHERE username = ?'); $req->execute([$user_name]); $user = $req->fetch(); if($user && $user->confirmed_token == $token ){ $db->prepare('UPDATE users SET slug = "membre", activation = "1", confirmed_token = null, authorization = 2, confirmed_at = NOW() WHERE username = ?')->execute([$user_name]); $_SESSION['auth'] = $user; setFlash('<strong>Super !</strong> Votre compte a bien étais valider <strong>Bien jouer :)</strong>'); redirect('account'); }else{ setFlash('<strong>Ho ho!</strong> Ce token n\'est plus valide <strong>Logger vous ou inscriver vous</strong>','rouge'); redirect('error'); }
A la fin du script inscription tu peut faire ça le but et d’envoyer un mail a la fin avec un lien d'activation du compte, encore faut-il avoir le retour des mail en local moi j'ai rien donc j'utilise google... ou tu peut créer ça dans ton administration pour validé toi même

Code : Tout sélectionner

if(empty($error)){ $req = $db->prepare("INSERT INTO users SET username = ?, password = ?, email = ?, confirmed_token = ?, date_inscription = now()"); $password = password_hash($pass, PASSWORD_BCRYPT); $token = str_random(60); $req->execute([$username, $password, $_POST['email'], $token]); $user_id = $db->lastInsertId(); $header="MIME-Version: 1.0\r\n"; $header.='From:"'.$_SERVER['HTTP_HOST'].'"<support@'.$_SERVER['HTTP_HOST'].'.com>'."\n"; $header.='Content-Type:text/html; charset="uft-8"'."\n"; $header.='Content-Transfer-Encoding: 8bit'; $message = ' <html> <body> <div align="center"> Pour valider votre compte merci de cliquer sur ce >> <a href="http://'.$_SERVER['HTTP_HOST'].'/confirm/'.urlencode($username).'/'.$token.'" target="_blank" >LIEN</a> << </div> </body> </html> '; mail($_POST['email'], 'Confirmation de votre inscription',$message,$header); setFlash('<strong>Super !</strong> Vous êtes bien inscrit reste a valider votre compte ! par Email'); redirect($router->generate('home')); }