Laravel 6

Changer d'accès à la bdd si l'utilisateur est connecté

Avatar de PhilippeViet
PhilippeViet

Bonjour,

J'ai créé deux utilisateur mysql pour avoir accès à ma bdd, l'un n'ayant que des droits de lectures et l'autre tous les droits.

Mon objectif est le suivant : lorsqu'un utilisateur n'est pas connecté sur le site, je voudrais qu'il soit connecté à la bdd avec seulement les droits de lecture, et lorsqu'il s'enregistre / se connecte, il utilise l'autre utilisateur mysql pour avoir tous les droits. Existe t-il un fichier dans laravel me permettant de faire ceci ?

if(Auth::user()){
        DB_CONNECTION=mysql
        DB_HOST=127.0.0.1
        DB_PORT=3306
        DB_DATABASE=mon-application
        DB_USERNAME='adminsitrateur'
        DB_PASSWORD='administrateur'
   }else{
        DB_CONNECTION=mysql
        DB_HOST=127.0.0.1
        DB_PORT=3306
        DB_DATABASE=mon-application
        DB_USERNAME='visiteur'
        DB_PASSWORD='visiteur'
   }
Avatar de bestmomo
bestmomo

Salut,

Il suffit dans un middleware de renseigner la configuration :

public function handle($request, Closure $next)
{
    if ($request->user()) {
       config()->set('database.mysql.username', 'administrateur');
       config()->set('database.mysql.password', 'xxx');
    }
    return $next($request);
}

Et par défaut les valeurs pour un simple visiteur dans .env.

Avatar de CinquièmeDimension
CinquièmeDimension

Moi j'aurai même mis ces valeurs là également dans le .env (au lieu de les mettre en dur) sous une dénomination genre:

DB_USERNAME_SITE_AUTH=user
DB_PASSWORD_SITE_AUTH=pass

Juste pour éviter les problèmes en cas de dev en local ou sur un autre serveur (les problèmes classiques quoi)

Avatar de bestmomo
bestmomo

Oui effectivement mais alors il faut ajouter dans un fichier config pour éviter de se faire piéger si on met la configuration en cache.

Avatar de PhilippeViet
PhilippeViet

Merci à vous deux, problème résolu.

Vous ne pouvez pas répondre à ce sujet.