Merge branch 'master' into next
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / package / PackageUpdateUnauthorizedException.class.php
1 <?php
2 declare(strict_types=1);
3 namespace wcf\system\package;
4 use wcf\data\package\update\server\PackageUpdateServer;
5 use wcf\system\exception\UserException;
6 use wcf\system\WCF;
7 use wcf\util\HTTPRequest;
8
9 /**
10 * Credentials for update server are either missing or invalid.
11 *
12 * @author Alexander Ebert
13 * @copyright 2001-2018 WoltLab GmbH
14 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
15 * @package WoltLabSuite\Core\System\Package
16 */
17 class PackageUpdateUnauthorizedException extends UserException {
18 /**
19 * package update version
20 * @var array
21 */
22 protected $packageUpdateVersion = [];
23
24 /**
25 * HTTP request object
26 * @var HTTPRequest
27 */
28 protected $request = null;
29
30 /**
31 * package update server object
32 * @var PackageUpdateServer
33 */
34 protected $updateServer = null;
35
36 /**
37 * Creates a new PackageUpdateUnauthorizedException object.
38 *
39 * @param HTTPRequest $request
40 * @param PackageUpdateServer $updateServer
41 * @param array $packageUpdateVersion
42 */
43 public function __construct(HTTPRequest $request, PackageUpdateServer $updateServer, array $packageUpdateVersion = []) {
44 $this->request = $request;
45 $this->updateServer = $updateServer;
46 $this->packageUpdateVersion = $packageUpdateVersion;
47 }
48
49 /**
50 * Returns the rendered template.
51 *
52 * @return string
53 */
54 public function getRenderedTemplate() {
55 $serverReply = $this->request->getReply();
56
57 WCF::getTPL()->assign([
58 'authInsufficient' => (isset($serverReply['httpHeaders']['wcf-update-server-auth'][0]) && $serverReply['httpHeaders']['wcf-update-server-auth'][0] === 'unauthorized'),
59 'packageUpdateVersion' => $this->packageUpdateVersion,
60 'request' => $this->request,
61 'updateServer' => $this->updateServer,
62 'serverAuthData' => $this->updateServer->getAuthData(),
63 'serverReply' => $serverReply
64 ]);
65
66 return WCF::getTPL()->fetch('packageUpdateUnauthorized');
67 }
68
69 /**
70 * Returns package update version.
71 *
72 * @return array
73 */
74 public function getPackageUpdateVersion() {
75 return $this->packageUpdateVersion;
76 }
77
78 /**
79 * Returns the HTTP request object.
80 *
81 * @return HTTPRequest
82 */
83 public function getRequest() {
84 return $this->request;
85 }
86
87 /**
88 * Returns package update server object.
89 *
90 * @return PackageUpdateServer
91 */
92 public function getUpdateServer() {
93 return $this->updateServer;
94 }
95 }