Will read configured http basic auth credentials from users auth.json file and pass the credentials to the configured IOInterface.
parent
64ac32fca9
commit
1d15910fa6
|
@ -36,14 +36,11 @@ use Composer\Package\Version\VersionParser;
|
|||
class Factory
|
||||
{
|
||||
/**
|
||||
* @throws \RuntimeException
|
||||
* @return Config
|
||||
* @return string
|
||||
*/
|
||||
public static function createConfig()
|
||||
protected static function getHomeDir()
|
||||
{
|
||||
// determine home and cache dirs
|
||||
$home = getenv('COMPOSER_HOME');
|
||||
$cacheDir = getenv('COMPOSER_CACHE_DIR');
|
||||
if (!$home) {
|
||||
if (defined('PHP_WINDOWS_VERSION_MAJOR')) {
|
||||
if (!getenv('APPDATA')) {
|
||||
|
@ -57,6 +54,16 @@ class Factory
|
|||
$home = rtrim(getenv('HOME'), '/') . '/.composer';
|
||||
}
|
||||
}
|
||||
|
||||
return $home;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
protected static function getCacheDir($home)
|
||||
{
|
||||
$cacheDir = getenv('COMPOSER_CACHE_DIR');
|
||||
if (!$cacheDir) {
|
||||
if (defined('PHP_WINDOWS_VERSION_MAJOR')) {
|
||||
if ($cacheDir = getenv('LOCALAPPDATA')) {
|
||||
|
@ -70,6 +77,18 @@ class Factory
|
|||
}
|
||||
}
|
||||
|
||||
return $cacheDir;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Config
|
||||
*/
|
||||
public static function createConfig()
|
||||
{
|
||||
// determine home and cache dirs
|
||||
$home = self::getHomeDir();
|
||||
$cacheDir = self::getCacheDir($home);
|
||||
|
||||
// Protect directory against web access. Since HOME could be
|
||||
// the www-data's user home and be web-accessible it is a
|
||||
// potential security risk
|
||||
|
@ -128,6 +147,26 @@ class Factory
|
|||
return $config;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Config
|
||||
*/
|
||||
protected static function createAuthConfig()
|
||||
{
|
||||
$home = self::getHomeDir();
|
||||
|
||||
$config = new Config();
|
||||
// add dirs to the config
|
||||
$config->merge(array('config' => array('home' => $home)));
|
||||
|
||||
$file = new JsonFile($home.'/auth.json');
|
||||
if ($file->exists()) {
|
||||
$config->merge($file->read());
|
||||
}
|
||||
$config->setConfigSource(new JsonConfigSource($file));
|
||||
|
||||
return $config;
|
||||
}
|
||||
|
||||
public static function getComposerFile()
|
||||
{
|
||||
return trim(getenv('COMPOSER')) ?: './composer.json';
|
||||
|
@ -214,6 +253,20 @@ class Factory
|
|||
$config->merge($localConfig);
|
||||
$io->loadConfiguration($config);
|
||||
|
||||
// load separate auth config
|
||||
$authConfig = static::createAuthConfig();
|
||||
if ($basicauth = $authConfig->get('basic-auth')) {
|
||||
foreach ($basicauth as $domain => $credentials) {
|
||||
if(!isset($credentials['username'])) {
|
||||
continue;
|
||||
}
|
||||
if(!isset($credentials['password'])) {
|
||||
$credentials['password'] = null;
|
||||
}
|
||||
$io->setAuthentication($domain, $credentials['username'], $credentials['password']);
|
||||
}
|
||||
}
|
||||
|
||||
$vendorDir = $config->get('vendor-dir');
|
||||
$binDir = $config->get('bin-dir');
|
||||
|
||||
|
|
Loading…
Reference in New Issue