Zum Inhalt springen

Mediawiki upgrade: Unterschied zwischen den Versionen

Aus meh als gmues
Seite erstellt
 
Beschreibung psr Versionskonflikt
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Offizielle Anleitung ==
== Offizielle Anleitung ==
Für grosse Versionssprünge, e.g. 1.35 nach 1.39 https://www.mediawiki.org/wiki/Manual:Upgrading
Für grosse Versionssprünge, e.g. 1.39 nach 1.43 https://www.mediawiki.org/wiki/Manual:Upgrading


Für bugfix releases e.g. 1.35.8 nach 1.35.10 reicht ein patch: [[Mediawiki patchen]]
Für bugfix releases e.g. 1.39.8 nach 1.39.10 reicht ein patch: [[Mediawiki patchen]]


== Gemachte Anpassungen ==
== Gemachte Anpassungen ==
Diese Anpassungen wurden gemacht und müssen bei einem Upgrade übernommen und evtl. angepasst werden.
Diese Anpassungen wurden gemacht und müssen bei einem Upgrade übernommen und evtl. angepasst werden.


=== OAuth2 Client ===
=== WSOAuth ===
Die Erweiterung wird nicht mehr aktiv gepflegt, darum läuft sie derzeit mit 2 patches.
Für den Login mit meh als gmües wurde folgender AuthProvider in extensions/WSOAuth/src/AuthenticationProvider/MagAuth.php abgelegt.  


# Die Installation erfolgte [[mediawikiwiki:Extension:OAuth2_Client#Installation|gemäss Anleitung]] via git.
<?php
# [https://github.com/Schine/MW-OAuth2Client/pull/26 Dieser] und [https://github.com/Schine/MW-OAuth2Client/pull/30 dieser] PR wurden dazugemerged.
# Danach wurden die submodules aktualisiert mit <code>cd extensions/MW-OAuth2Client/vendors/oauth2-client</code> und <code>composer update</code>
namespace WSOAuth\AuthenticationProvider;
use League\OAuth2\Client\Provider\GenericProvider;
use MediaWiki\User\UserIdentity;
class MagAuth extends AuthProvider {
/**
* @var
*/
private $provider;
/**
* @inheritDoc
*/
public function __construct(
string $clientId,
string $clientSecret,
?string $authUri,
?string $redirectUri,
array $extensionData = []
) {
$this->provider = new GenericProvider([
    'clientId' => $clientId, // The client ID assigned to you by the provider
    'clientSecret' => $clientSecret, // The client password assigned to you by the provider
    'redirectUri' => $redirectUri,
    'urlAuthorize' => $authUri . '/o/authorize/',
    'urlAccessToken' => $authUri . '/o/token/',
    'urlResourceOwnerDetails' => $authUri . '/nextcloud/profile'
]);
}
/**
* @inheritDoc
*/
public function login( ?string &$key, ?string &$secret, ?string &$authUrl ): bool {
$authUrl = $this->provider->getAuthorizationUrl();
$secret = $this->provider->getState();
return true;
}
/**
* @inheritDoc
*/
public function logout( UserIdentity &$user ): void {
}
/**
* @inheritDoc
*/
public function getUser( string $key, string $secret, &$errorMessage ) {
if ( !isset( $_GET['code'] ) ) {
return false;
}
if ( !isset( $_GET['state'] ) || empty( $_GET['state'] ) || ( $_GET['state'] !== $secret ) ) {
return false;
}
try {
$token = $this->provider->getAccessToken( 'authorization_code', [ 'code' => $_GET['code'] ] );
$user = $this->provider->getResourceOwner( $token );
$userData = $user->toArray();
return [
'name' => $userData["displayName"],
'realname' => $userData["displayName"],
'email' => $userData["email"]
];
} catch ( \Exception $e ) {
return false;
}
}
/**
* @inheritDoc
*/
public function saveExtraAttributes( int $id ): void {
}
}
 
==== Patch: psr/http-messages Version ====
WSOAuth enthält Version 2.0 von psr/http-messages was zu einem Konflikt führt mit der Version 1.1 von Mediawiki 1.43. Dadurch funktionierte die Vorschau der Suchfunktion und das Hochladen von Dateien nicht mehr.
 
Durch Umbenennen dieses Ordners konnte das Problem gelöst werden.
 
<code>extensions/WSOAuth/vendor/psr/http-messages</code>
 
[[mediawikiwiki:Extension_talk:WSOAuth#c-Felagoth-20240221214200-Felagoth-20240220122100|Referenz]]
[[Kategorie:Anleitungen]]

Aktuelle Version vom 1. Juni 2025, 23:21 Uhr

Offizielle Anleitung

Für grosse Versionssprünge, e.g. 1.39 nach 1.43 https://www.mediawiki.org/wiki/Manual:Upgrading

Für bugfix releases e.g. 1.39.8 nach 1.39.10 reicht ein patch: Mediawiki patchen

Gemachte Anpassungen

Diese Anpassungen wurden gemacht und müssen bei einem Upgrade übernommen und evtl. angepasst werden.

WSOAuth

Für den Login mit meh als gmües wurde folgender AuthProvider in extensions/WSOAuth/src/AuthenticationProvider/MagAuth.php abgelegt.

<?php

namespace WSOAuth\AuthenticationProvider;

use League\OAuth2\Client\Provider\GenericProvider;
use MediaWiki\User\UserIdentity;

class MagAuth extends AuthProvider {

	/**
	 * @var
	 */
	private $provider;

	/**
	 * @inheritDoc
	 */
	public function __construct(
		string $clientId,
		string $clientSecret,
		?string $authUri,
		?string $redirectUri,
		array $extensionData = []
	) {
		
		$this->provider = new GenericProvider([
    			'clientId' => $clientId, // The client ID assigned to you by the provider
    			'clientSecret' => $clientSecret, // The client password assigned to you by the provider
    			'redirectUri' => $redirectUri,
    			'urlAuthorize' => $authUri . '/o/authorize/',
    			'urlAccessToken' => $authUri . '/o/token/',
    			'urlResourceOwnerDetails' => $authUri . '/nextcloud/profile'
		]);
	}

	/**
	 * @inheritDoc
	 */
	public function login( ?string &$key, ?string &$secret, ?string &$authUrl ): bool {
		$authUrl = $this->provider->getAuthorizationUrl();

		$secret = $this->provider->getState();

		return true;
	}

	/**
	 * @inheritDoc
	 */
	public function logout( UserIdentity &$user ): void {
	}

	/**
	 * @inheritDoc
	 */
	public function getUser( string $key, string $secret, &$errorMessage ) {
		if ( !isset( $_GET['code'] ) ) {
			return false;
		}

		if ( !isset( $_GET['state'] ) || empty( $_GET['state'] ) || ( $_GET['state'] !== $secret ) ) {
			return false;
		}

		try {
			$token = $this->provider->getAccessToken( 'authorization_code', [ 'code' => $_GET['code'] ] );
			$user = $this->provider->getResourceOwner( $token );
			$userData = $user->toArray();
			return [
				'name' => $userData["displayName"],
				'realname' => $userData["displayName"],
				'email' => $userData["email"]
			];
		} catch ( \Exception $e ) {
			return false;
		}
	}

	/**
	 * @inheritDoc
	 */
	public function saveExtraAttributes( int $id ): void {
	}
}

Patch: psr/http-messages Version

WSOAuth enthält Version 2.0 von psr/http-messages was zu einem Konflikt führt mit der Version 1.1 von Mediawiki 1.43. Dadurch funktionierte die Vorschau der Suchfunktion und das Hochladen von Dateien nicht mehr.

Durch Umbenennen dieses Ordners konnte das Problem gelöst werden.

extensions/WSOAuth/vendor/psr/http-messages

Referenz