Utiliser l’authentification du Syno en PHP

Si on veut créer un site web dont l’accès est restreint à certains utilisateurs et que ceux-ci sont déjà créés sur le syno, il est tout à fait possible de ne pas faire une double gestion de ces derniers et de faire appel à l’authentification du syno.

Pour cela, il y a l’url « magique »: http://adresse_du_syno:port_du_dsm/webman/login.cgi?username=mon_utilisateur&passwd=mon_mot_de_passe
Le port du dsm est par défaut 5000.

Le message retourné par l’url magique est au format json.
Il peut indiquer:

  • Si c’est OK: { « result » : « success », « success » : true }
  • Si le couple login/mot de passe est incorrect: { « reason » : « error_cantlogin », « result » : « error », « success » : false }
  • Si l’adresse IP est bloquée: { « reason » : « error_noprivilege », « result » : « error », « success » : false }

Petit exemple en php (j’utilise localhost car mon site web est hébergé sur le syno et le http, mais ça fonctionne aussi en https si celui-ci est activé).

function login($user,$pass,$cookie,$port){
$urlSyno=’http://localhost:’.$port.’/webman/login.cgi?username=’.$user.’&passwd=’.$pass;

$reponseLogin = file_get_contents($urlSyno);

if (json_decode($reponseLogin)->{‘success’}){
$_SESSION[‘user’] = $user;
if($cookie == ‘on’){
$expire = 365*24*3600;
setcookie(‘user’,$user,time()+$expire);
}
}
else echo ‘<div style= »text-align:center;color:red; »>Mauvais login/password</div>’;

}