1
0
Fork 0

Will read configured http basic auth credentials from users auth.json file and pass the credentials to the configured IOInterface.

pull/2353/merge
Stephan Hochdoerfer 2014-05-26 13:02:34 +02:00 committed by Jordi Boggiano
parent 64ac32fca9
commit 1d15910fa6
1 changed files with 58 additions and 5 deletions

View File

@ -36,14 +36,11 @@ use Composer\Package\Version\VersionParser;
class Factory class Factory
{ {
/** /**
* @throws \RuntimeException * @return string
* @return Config
*/ */
public static function createConfig() protected static function getHomeDir()
{ {
// determine home and cache dirs
$home = getenv('COMPOSER_HOME'); $home = getenv('COMPOSER_HOME');
$cacheDir = getenv('COMPOSER_CACHE_DIR');
if (!$home) { if (!$home) {
if (defined('PHP_WINDOWS_VERSION_MAJOR')) { if (defined('PHP_WINDOWS_VERSION_MAJOR')) {
if (!getenv('APPDATA')) { if (!getenv('APPDATA')) {
@ -57,6 +54,16 @@ class Factory
$home = rtrim(getenv('HOME'), '/') . '/.composer'; $home = rtrim(getenv('HOME'), '/') . '/.composer';
} }
} }
return $home;
}
/**
* @return string
*/
protected static function getCacheDir($home)
{
$cacheDir = getenv('COMPOSER_CACHE_DIR');
if (!$cacheDir) { if (!$cacheDir) {
if (defined('PHP_WINDOWS_VERSION_MAJOR')) { if (defined('PHP_WINDOWS_VERSION_MAJOR')) {
if ($cacheDir = getenv('LOCALAPPDATA')) { 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 // Protect directory against web access. Since HOME could be
// the www-data's user home and be web-accessible it is a // the www-data's user home and be web-accessible it is a
// potential security risk // potential security risk
@ -128,6 +147,26 @@ class Factory
return $config; 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() public static function getComposerFile()
{ {
return trim(getenv('COMPOSER')) ?: './composer.json'; return trim(getenv('COMPOSER')) ?: './composer.json';
@ -214,6 +253,20 @@ class Factory
$config->merge($localConfig); $config->merge($localConfig);
$io->loadConfiguration($config); $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'); $vendorDir = $config->get('vendor-dir');
$binDir = $config->get('bin-dir'); $binDir = $config->get('bin-dir');