1<?php
2
3/*
4 * This file is part of the TYPO3 CMS project.
5 *
6 * It is free software; you can redistribute it and/or modify it under
7 * the terms of the GNU General Public License, either version 2
8 * of the License, or any later version.
9 *
10 * For the full copyright and license information, please read the
11 * LICENSE.txt file that was distributed with this source code.
12 *
13 * The TYPO3 project - inspiring people to share!
14 */
15
16namespace TYPO3\CMS\Install\Updates;
17
18use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
19
20/**
21 * Installs and downloads EXT:rsaauth if requested
22 * @internal This class is only meant to be used within EXT:install and is not part of the TYPO3 Core API.
23 */
24class RsaauthExtractionUpdate extends AbstractDownloadExtensionUpdate
25{
26    /**
27     * @var \TYPO3\CMS\Install\Updates\ExtensionModel
28     */
29    protected $extension;
30
31    /**
32     * @var \TYPO3\CMS\Install\Updates\Confirmation
33     */
34    protected $confirmation;
35
36    public function __construct()
37    {
38        $this->extension = new ExtensionModel(
39            'rsaauth',
40            'Deprecated rsaauth extension',
41            '10.0.0',
42            'friendsoftypo3/rsaauth',
43            'Contains a service to authenticate TYPO3 BE and FE users using private/public key encryption of passwords.'
44        );
45
46        $this->confirmation = new Confirmation(
47            'Are you sure?',
48            'Do not install this extension. Use HTTPS instead. ' . $this->extension->getDescription(),
49            false
50        );
51    }
52
53    /**
54     * Return a confirmation message instance
55     *
56     * @return \TYPO3\CMS\Install\Updates\Confirmation
57     */
58    public function getConfirmation(): Confirmation
59    {
60        return $this->confirmation;
61    }
62
63    /**
64     * Return the identifier for this wizard
65     * This should be the same string as used in the ext_localconf class registration
66     *
67     * @return string
68     */
69    public function getIdentifier(): string
70    {
71        return 'rsaauthExtension';
72    }
73
74    /**
75     * Return the speaking name of this wizard
76     *
77     * @return string
78     */
79    public function getTitle(): string
80    {
81        return 'Install extension "rsaauth" from TER if the site is still not secured using HTTPS';
82    }
83
84    /**
85     * Return the description for this wizard
86     *
87     * @return string
88     */
89    public function getDescription(): string
90    {
91        return 'The extension "rsaauth" adds a public/private key based encryption for Backend and Frontend'
92               . ' login passwords. The approach is limited and has various flaws. The extension is fully'
93               . ' obsolete if the instance uses HTTPS.';
94    }
95
96    /**
97     * Is an update necessary?
98     * Is used to determine whether a wizard needs to be run.
99     *
100     * @return bool
101     */
102    public function updateNecessary(): bool
103    {
104        return !ExtensionManagementUtility::isLoaded('rsaauth');
105    }
106
107    /**
108     * Returns an array of class names of Prerequisite classes
109     * This way a wizard can define dependencies like "database up-to-date" or
110     * "reference index updated"
111     *
112     * @return string[]
113     */
114    public function getPrerequisites(): array
115    {
116        return [
117            DatabaseUpdatedPrerequisite::class
118        ];
119    }
120}
121