Mediawiki upgrade: Unterschied zwischen den Versionen
Erscheinungsbild
K Formatierung korrigiert |
Verwende neue OAuth Client extension |
||
| Zeile 1: | Zeile 1: | ||
== Offizielle Anleitung == | == Offizielle Anleitung == | ||
Für grosse Versionssprünge, e.g. 1. | 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. | 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 === | ||
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 { | |||
} | |||
} | |||
[[Kategorie:Anleitungen]] | [[Kategorie:Anleitungen]] | ||
Version vom 31. März 2025, 05:52 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 {
}
}