1: <?php
2: /**
3: * Basic authentication
4: *
5: * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
6: * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
7: *
8: * Licensed under The MIT License
9: * For full copyright and license information, please see the LICENSE.txt
10: * Redistributions of files must retain the above copyright notice.
11: *
12: * @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
13: * @link https://cakephp.org CakePHP(tm) Project
14: * @package Cake.Network.Http
15: * @since CakePHP(tm) v 2.0.0
16: * @license https://opensource.org/licenses/mit-license.php MIT License
17: */
18:
19: /**
20: * Basic authentication
21: *
22: * @package Cake.Network.Http
23: */
24: class BasicAuthentication {
25:
26: /**
27: * Authentication
28: *
29: * @param HttpSocket $http Http socket instance.
30: * @param array &$authInfo Authentication info.
31: * @return void
32: * @see http://www.ietf.org/rfc/rfc2617.txt
33: */
34: public static function authentication(HttpSocket $http, &$authInfo) {
35: if (isset($authInfo['user'], $authInfo['pass'])) {
36: $http->request['header']['Authorization'] = static::_generateHeader($authInfo['user'], $authInfo['pass']);
37: }
38: }
39:
40: /**
41: * Proxy Authentication
42: *
43: * @param HttpSocket $http Http socket instance.
44: * @param array &$proxyInfo Proxy info.
45: * @return void
46: * @see http://www.ietf.org/rfc/rfc2617.txt
47: */
48: public static function proxyAuthentication(HttpSocket $http, &$proxyInfo) {
49: if (isset($proxyInfo['user'], $proxyInfo['pass'])) {
50: $http->request['header']['Proxy-Authorization'] = static::_generateHeader($proxyInfo['user'], $proxyInfo['pass']);
51: }
52: }
53:
54: /**
55: * Generate basic [proxy] authentication header
56: *
57: * @param string $user Username.
58: * @param string $pass Password.
59: * @return string
60: */
61: protected static function _generateHeader($user, $pass) {
62: return 'Basic ' . base64_encode($user . ':' . $pass);
63: }
64:
65: }
66: