1: <?php
2: /**
3: * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
4: * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
5: *
6: * Licensed under The MIT License
7: * Redistributions of files must retain the above copyright notice.
8: *
9: * @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
10: * @link https://cakephp.org CakePHP(tm) Project
11: * @since 3.0.0
12: * @license https://opensource.org/licenses/mit-license.php MIT License
13: */
14: namespace Cake\Http\Client\Auth;
15:
16: use Cake\Http\Client\Request;
17:
18: /**
19: * Basic authentication adapter for Cake\Http\Client
20: *
21: * Generally not directly constructed, but instead used by Cake\Http\Client
22: * when $options['auth']['type'] is 'basic'
23: */
24: class Basic
25: {
26: /**
27: * Add Authorization header to the request.
28: *
29: * @param \Cake\Http\Client\Request $request Request instance.
30: * @param array $credentials Credentials.
31: * @return \Cake\Http\Client\Request The updated request.
32: * @see https://www.ietf.org/rfc/rfc2617.txt
33: */
34: public function authentication(Request $request, array $credentials)
35: {
36: if (isset($credentials['username'], $credentials['password'])) {
37: $value = $this->_generateHeader($credentials['username'], $credentials['password']);
38: $request = $request->withHeader('Authorization', $value);
39: }
40:
41: return $request;
42: }
43:
44: /**
45: * Proxy Authentication
46: *
47: * @param \Cake\Http\Client\Request $request Request instance.
48: * @param array $credentials Credentials.
49: * @return \Cake\Http\Client\Request The updated request.
50: * @see https://www.ietf.org/rfc/rfc2617.txt
51: */
52: public function proxyAuthentication(Request $request, array $credentials)
53: {
54: if (isset($credentials['username'], $credentials['password'])) {
55: $value = $this->_generateHeader($credentials['username'], $credentials['password']);
56: $request = $request->withHeader('Proxy-Authorization', $value);
57: }
58:
59: return $request;
60: }
61:
62: /**
63: * Generate basic [proxy] authentication header
64: *
65: * @param string $user Username.
66: * @param string $pass Password.
67: * @return string
68: */
69: protected function _generateHeader($user, $pass)
70: {
71: return 'Basic ' . base64_encode($user . ':' . $pass);
72: }
73: }
74:
75: // @deprecated 3.4.0 Add backwards compat alias.
76: class_alias('Cake\Http\Client\Auth\Basic', 'Cake\Network\Http\Auth\Basic');
77: