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: /**
28: * Add Authorization header to the request.
29: *
30: * @param \Cake\Http\Client\Request $request Request instance.
31: * @param array $credentials Credentials.
32: * @return \Cake\Http\Client\Request The updated request.
33: * @see https://www.ietf.org/rfc/rfc2617.txt
34: */
35: public function authentication(Request $request, array $credentials)
36: {
37: if (isset($credentials['username'], $credentials['password'])) {
38: $value = $this->_generateHeader($credentials['username'], $credentials['password']);
39: $request = $request->withHeader('Authorization', $value);
40: }
41:
42: return $request;
43: }
44:
45: /**
46: * Proxy Authentication
47: *
48: * @param \Cake\Http\Client\Request $request Request instance.
49: * @param array $credentials Credentials.
50: * @return \Cake\Http\Client\Request The updated request.
51: * @see https://www.ietf.org/rfc/rfc2617.txt
52: */
53: public function proxyAuthentication(Request $request, array $credentials)
54: {
55: if (isset($credentials['username'], $credentials['password'])) {
56: $value = $this->_generateHeader($credentials['username'], $credentials['password']);
57: $request = $request->withHeader('Proxy-Authorization', $value);
58: }
59:
60: return $request;
61: }
62:
63: /**
64: * Generate basic [proxy] authentication header
65: *
66: * @param string $user Username.
67: * @param string $pass Password.
68: * @return string
69: */
70: protected function _generateHeader($user, $pass)
71: {
72: return 'Basic ' . base64_encode($user . ':' . $pass);
73: }
74: }
75:
76: // @deprecated 3.4.0 Add backwards compat alias.
77: class_alias('Cake\Http\Client\Auth\Basic', 'Cake\Network\Http\Auth\Basic');
78: