Un service de réinitialisation de password pour les utilisateurs?

#1

Salut à tous,

Après quelques recherches, notamment dans les Apps non-officiel, il semble qu’il n’existe pas d’outils qui permettrait à un utilisateur qui a perdu son mot de passe de le réinitialiser (procédure classique avec envoi d’un courriel).
Nous utilisons Yunohost au quotidien dans notre association et les oublis de mdp sont fréquents et nécessitent toujours une action de l’administrateur. Il faudrait dans ce cas probablement associer une adresse email valide au compte utilisateur pour la réinitialisation, vu que tout le monde n’utilise pas le service mail de Yunohost.

Savez-vous si quelqu’un s’est déjà penché sur le sujet ou s’il y a quelque chose dans les tuyaux ?

Merci

1 Like
#2

Non pour l’instant je n’ai rien vu passer en ce sens.

Ca ne serait pas évident à mettre en place car actuellement seul l’utilisateur et l’admin peuvent changer le mot de passe dans la base ldap. Dans les 2 cas il leur faut renseigner leur mot de passe pour se connecter à cette base ldap. C’est ce qui se passe quand on se connecte sur /yunohost/admin/ idem si on se connecte via /yunohost/sso/.

Il faudrait donc qu’il soit possible de faire des opérations sur cette base ldap via une page web sans être authentifié sur la base ldap (ou avec un mot de passe dédié à l’application).

En plus il y a effectivement le soucis de l’adresse mail…

#3

Bonjour,
C’est possible avec mon API PHP de développer un tel formulaire. Mais cela implique de stocker le MDP admin yunohost en dur dans la page PHP, car yunohost n’a pas encore de token API…

Je te laisse consulter:

Le code en question

        /*
		Change user password with $data['new-password']
	*/
	public function change_user_password($order, $model, $data)
	{
		// Retrieve associated server
		$server = $this->di['db']->findOne('service_yunohostshared_server','id=:id',array(':id'=>$model->server_id));
		
		// Connect to YNH API
		$serveraccess = $this->find_access($server);
		$ynh = new YNH_API($serveraccess, $this->di['crypt']->decrypt($server->admin_password));
		
        // Change YNH password
		if ($ynh->login()) {
			$arguments['change_password'] = $data['new_password'];
			if($ynh->put("/users/".$model->username, $arguments)) {
				$model->updated_at = date('Y-m-d H:i:s');
				$this->di['db']->store($model);
				return true;
			}
			else {
				throw new \Exception('Could not change user\'s password', null, 7457);
			}
		}
		else {
			throw new \Exception('Could not change user\'s password because login to YunoHost failed', null, 7457);
		}
	}
#4

Vu la problématique d’architecture présentée plus haut c’est logique qu’il n’y ait pas de token pour l’API

#5

Est-ce que il y a une solution pour ce besoin qui a été trouvé depuis octobre 2017 ?

#6

Non pas pour l’instant, la problématique principal étant que l’email de l’utilisateur a des chances d’être sur le yunohost lui même. Donc la méthode de réinitialisation classique avec un envoi d’email à confirmer est bancal.
Ceci dit, si le user a mis en place un transfert de mail, ça pourrait se faire de cette façon.

#7

(A condition que la stack mail de l’instance soit fonctionnelle…)