Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Candidat au Club
    Aide pour créer un module "Mot de passe oublier" et utilisation d'API sur site (explication) ou exemple
    Bonjour tout le monde,

    Je souhaiterai que vous m'indiquiez comment créer un moudle de "Mot de Passe Oublier"

    et aussi comment utiliser ou faire appel a une API (GoogleFit) avec mkframework.

    Merci d'avance de votre aide.

  2. #2
    Rédacteur

    IL faut
    • creer un module d'authentification
    • ajouter un champ email à chaque utilisateur
    • ajouter un champ "doitChangerMotDePasse"
    • ajouter une page de modification de mot de passe
    • ajouter une page mot de passe oublié


    Dans la page de mot de passe oublié, ajouter un champ pour saisir l'email, à la soumission, faites une recherche en base pour retrouver l'utilisateur avec l'email

    Si trouvé,
    • generer un mot de passe aléatoire
    • mettre à jour en base le mot de passe de l'utilisateur (hashé)
    • mettre a jour le champ "doitChangerMotDePasse" à 1
    • envoyer email avec ce mot de passe généré



    Dans module d'authentification, si "doitChangerMotDePasse" est à 1, il faut rediriger sur page de modif de mot de passe
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Candidat au Club
    A d'accord merci beaucoup

    Et pour l'API comment je dois faire, je souhaite prendre l'API GoogleFIT.

  4. #4
    Rédacteur

    Pour l'API google fit, je vois qu'il y a une API accessible en REST, je vais voir pour ecrire un petit tuto pour acceder à ce genre d'api REST en utilisant oAuth
    il viendra completer celui-ci
    http://mkframework.com/faq.html#plugin_restClient
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Candidat au Club
    J'attend donc alors ton tutoriel car j'en ai besoin maintenant pour un site.

  6. #6
    Rédacteur

    La mise en place de oAuth est assez complexe, idem pour faire un plugin pour se connecter à google fit

    en cherchant ce soir j'ai vu que Google proposait une bibliothèque d'accès à ses services "google client"

    Voici ce que j'ai fait poru integrer au projet mkframework

    creation d'un repetoire lib

    telechargement https://github.com/google/google-api-php-client

    desarchivage dans le repetoire lib du projet

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ├── conf
    ├── data
    ├── index.php
    ├── layout
    ├── lib
    │   └── google-api-php-client-master
    ├── model
    ├── module
    ├── myClasses
    ├── plugin
    └── public


    ensuite dans le repertoire google-api-php-client-master, via composer j'ai installer les dependancees (composer https://getcomposer.org/download/)

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    cd lib/google-api-php-client-master
    composer install


    Ensuite pour pouvoir appeler la librairie client Google, dans le ficheir public/index.php

    on integre le fichier de chargement autoload du client Google
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    require_once __DIR__.'/../lib/google-api-php-client-master/vendor/autoload.php';
     
     
    $oRoot=new _root();


    J'ai ensuite suivi le tutoriel de google pour obtenir un fichier json pour oAuth2
    ici: https://developers.google.com/fit/re...v1/get-started

    je l'ai copié dans le repertoire data/json/client_id.json'


    Enfin le code ici pour lister les dossiers dans google drive

    module/default/main.php

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    <?php
     
    class module_default extends abstract_module{
     
    	public function before(){
     
    		session_start();
     
    		define('ROOTURL','http://localhost/mkframeworkPackage-1.0.7/Projects/testGoogleFit/public/');
     
    		$this->oLayout=new _layout('template1');
    	}
     
    	public function _callback(){
    		$client = new Google_Client();
    		$client->setAuthConfig(_root::getConfigVar('path.data').'/json/client_id.json');
    		$client->setRedirectUri(ROOTURL._root::getLink('default::callback') );
    		$client->addScope(Google_Service_Books::BOOKS);
     
    		if (! isset($_GET['code'])) {
    			$auth_url = $client->createAuthUrl();
    			header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
    		} else {
    			$client->authenticate($_GET['code']);
    			$_SESSION['access_token'] = $client->getAccessToken();
    			$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/';
    			header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
    		}
    	}
     
    	public function _index(){
     
    		$client = new Google_Client();
    		$client->setAuthConfig(_root::getConfigVar('path.data').'/json/client_id.json');
     
     
    		$client->addScope(Google_Service_Books::BOOKS);
     
    		if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
    			$client->setAccessToken($_SESSION['access_token']);
     
    			$service = new Google_Service_Books($client);
    			$optParams = array('filter' => 'free-ebooks');
    			$results = $service->volumes->listVolumes('Henry David Thoreau', $optParams);
     
    			foreach ($results as $item) {
    			  echo $item['volumeInfo']['title'], "<br /> \n";
    			}exit;
     
    			$drive = new Google_Service_Drive($client);
    			$files = $drive->files->listFiles(array())->getItems();
    			echo json_encode($files);
    		} else {
    			$redirect_uri = ROOTURL._root::getLink('default::callback');
    			header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
    		}
     
    		exit;
    	}
     
    	public function after(){
    		$this->oLayout->show();
    	}
    }
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  7. #7
    Candidat au Club
    J'ai cette erreur finalement : Fatal error: Uncaught Error: Class 'Google_Client' not found in C:\xampp\htdocs\mkframework1\Projects\CoachSportive\module\default\main.php:36 Stack trace: #0 C:\xampp\htdocs\lib\framework\class_root.php(264): module_default->_index() #1 C:\xampp\htdocs\mkframework1\Projects\CoachSportive\public\index.php(47): _root->run() #2 {main} thrown in C:\xampp\htdocs\mkframework1\Projects\CoachSportive\module\default\main.php on line 36

    Voici mon code
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    class module_default extends abstract_module{
     
    	public function before(){
     
    		if(!isset($_SESSION)) 
        { 
            session_start(); 
        } 
     
    		define('ROOTURL','http://localhost/mkframework1/Projects/CoachSportive/public/');
     
    		$this->oLayout=new _layout('template1');
    	}
     
    	public function _callback(){
    		$client = new Google_Client();
    		$client->setAuthConfig(_root::getConfigVar('path.data').'/json/client_id.json');
    		$client->setRedirectUri(ROOTURL._root::getLink('default::callback') );
    		$client->addScope(Google_Service_Drive:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />RIVE_METADATA_READONLY);
     
    		if (! isset($_GET['code'])) {
    			$auth_url = $client->createAuthUrl();
    			header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
    		} else {
    			$client->authenticate($_GET['code']);
    			$_SESSION['access_token'] = $client->getAccessToken();
    			$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/';
    			header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
    		}
    	}
     
    	public function _index(){
     
    		$client = new Google_Client();
    		//$client->setApplicationName("test");
    		//$client->setDeveloperKey("AIzaSyAznidmlPyqobLwWpqSf2XaxIJEtI7lP4w");
    		$client->setAuthConfig(_root::getConfigVar('path.data').'/json/client_id.json');
     
     
    		$client->addScope(Google_Service_Drive:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />RIVE_METADATA_READONLY);
     
    		if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
    			$client->setAccessToken($_SESSION['access_token']);
    			$drive = new Google_Service_Drive($client);
    			$files = $drive->files->listFiles(array())->getItems();
    			echo json_encode($files);
    		} else {
    			$redirect_uri = ROOTURL._root::getLink('default::callback');
    			header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
    		}
     
    		exit;
    	}
     
    	public function after(){
    		$this->oLayout->show();
    	}
    }

  8. #8
    Membre éclairé
    Citation Envoyé par imikado Voir le message
    IL faut
    • creer un module d'authentification
    • ajouter un champ email à chaque utilisateur
    • ajouter un champ "doitChangerMotDePasse"
    • ajouter une page de modification de mot de passe
    • ajouter une page mot de passe oublié


    Dans la page de mot de passe oublié, ajouter un champ pour saisir l'email, à la soumission, faites une recherche en base pour retrouver l'utilisateur avec l'email

    Si trouvé,
    • generer un mot de passe aléatoire
    • mettre à jour en base le mot de passe de l'utilisateur (hashé)
    • mettre a jour le champ "doitChangerMotDePasse" à 1
    • envoyer email avec ce mot de passe généré



    Dans module d'authentification, si "doitChangerMotDePasse" est à 1, il faut rediriger sur page de modif de mot de passe
    Bonjour Imikado

    Je voudrais pas interférer de manière intrusive mais je pense que une tuto nous aiderai tous sur ce sujet.

    Merci
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  9. #9
    Rédacteur

    c'est noté, je vais essayer d'en ecrire un cette semaine
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  10. #10
    Rédacteur

    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  11. #11
    Membre éclairé
    Bonjour Imikado

    Etant absent depuis la semaine passé c'est ce matin que j'ai vu le tutoriel

    Merci beaucoup
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

###raw>template_hook.ano_emploi###