You can set dynamically set username and password(from database) in laravel (.env file).
$data = array('MAIL_USERNAME' => "set user name",'MAIL_PASSWORD' => "set password");
if (count($data) > 0) {
// Read .env-file
$env = file_get_contents(base_path() . '/.env');
// Split string on every " " and write into array
$env = preg_split('/\s+/', $env);;
// Loop through given data
foreach ((array) $data as $key => $value) {
// Loop through .env-data
foreach ($env as $env_key => $env_value) {
// Turn the value into an array and stop after the first split
// So it's not possible to split e.g. the App-Key by accident
$entry = explode("=", $env_value, 2);
// Check, if new key fits the actual .env-key
if ($entry[0] == $key) {
// If yes, overwrite it with the new one
$env[$env_key] = $key . "=" . $value;
} else {
// If not, keep the old one
$env[$env_key] = $env_value;
}
}
}
// Turn the array back to an String
$env = implode("\n", $env);
// And overwrite the .env with the new data
file_put_contents(base_path() . '/.env', $env);
\Artisan::call('config:cache');
\Artisan::call('cache:clear');
\Artisan::call('config:clear');
\Artisan::call('optimize:clear');
\Artisan::call('route:clear');
}