Premium Eklentilerimiz İçin Besteci Desteğini Nasıl İyileştirdik?


Besteci, WordPress sitelerinde ücretsiz eklentileri yönetme yöntemimdir. Ancak, premium eklentileri yönetmek biraz daha zor. Geçen yıl, birçok kişi yeni Composer anahtar doğrulama yöntemiyle yaklaşımımızı sorgulasa da, genel olarak iyi karşılanan premium WordPress eklentilerimiz için tam Composer desteği sunduk.

Gerçek eklenti lisans anahtarınızın kullanılmasına, ekip üyeleriyle paylaşılmasına veya sürüm kontrolünde saklanmasına gerek kalmaması için yalnızca Besteci için yeni bir anahtar kullanmaya karar vermiştik. Ancak, birkaç kişi mevcut Composer kimlik doğrulama tekniklerinden bahsettiğinde, çözümümüzün mükemmel olmadığı anlaşıldı ve bu konuda bir şeyler yapmaya karar verdik.

TL;DR Artık Composer depomuz için temel kimlik doğrulamasını destekliyoruz; bu, kimlik bilgilerinizin bir auth.json dosyasında yer alabileceği ve sürüm kontrolünün dışında tutulabileceği anlamına gelir. 🎉

Banderas gif

Nasıl çalışır

Hesabım'daki Ayarlar'ı ziyaret ettiğinizde, mevcut tüm Besteci anahtarlarının artık tek bir anahtar yerine hem kullanıcı adı hem de şifre anahtarına sahip olduğunu göreceksiniz. Delicious Brains deposunu composer.json eklerken artık anahtarı URL'ye eklemeniz gerekmez, bu kadar basit:

 "repositories": [ { "type": "composer", "url": "https://composer.deliciousbrains.com" } ]

auth.json dosyası, depomuza bağlanırken temel kimlik doğrulama bilgileri olarak kullanılacak anahtarı ve parolayı içerir:

 { "http-basic": { "composer.deliciousbrains.com": { "username": "50BDFC1B7176DFED785036AA2BFB27DE", "password": "385347081A5F39AAC46564B6428DEBBC" } } }

auth.json dosyası, projenizde sunucudaki composer.json dosyasının yanına yerleştirilmelidir. Bu, sürüm kontrolüne bağlı olması gerekmediği ve .gitignore dosyanıza eklenebileceği anlamına gelir. Alternatif olarak, COMPOSER_HOME dizininizde bulunan mevcut bir auth.json kimlik bilgilerini ekleyebilirsiniz.

Her Besteci anahtar setinde, kullanılmaya hazır bir auth.json dosyası bulunur. Artık sağ alt köşedeki kullanışlı indirme düğmesiyle JSON dosyalarını indirebilirsiniz:

Besteci auth.json yeni kullanıcı arayüzü

Eklentilerimizi Composer ile yükleme sürecinin tamamı için burada yeni belgelerimiz var.

Bilim Bit

Teknik uygulama için çok fazla çalışmaya gerek yoktu. Besteci anahtarlarını saklayan özel tablomuza parola için yeni bir sütun ekledik. Parolalar daha sonra bir MD5 karması kullanılarak mevcut anahtarlar için otomatik olarak dolduruldu.

Bu kimlik doğrulama yöntemi temel kimlik doğrulama kullanıyor olsa da, aslında composer.deliciousbrains.com alt etki alanımızı bununla korumak istemiyoruz, kullanıcının Composer'ın kullandığı eklenti için aktif bir lisansa sahip olup olmadığını doğrulamak için kimlik bilgilerini kullanmak için PHP'ye ihtiyacımız var. indirmeyi talep ediyor.

Bu, kredi alamayacağım bir Nginx büyüsü anlamına geliyordu. Ashley, sunucunun aşağıdakileri ekleyerek yapılandırmasına yardımcı oldu, böylece Nginx http yetkilendirme başlığını PHP'ye geçirdi.

 fastcgi_param COMPOSER_AUTH $http_authorization;

Hangi $_SERVER değişkenine erişmemiz gerektiği açık olduğundan, başlığı COMPOSER_AUTH olarak adlandırmayı seçtik. Kimlik bilgileri, 'Temel' dize öneki ile base64 kodlu bir dize olarak iletilir, bu nedenle doğrulama PHP yöntemimiz şimdi şöyle görünür:

 protected function validate_composer_auth_authentication() { $auth = filter_input( INPUT_SERVER, 'COMPOSER_AUTH', FILTER_SANITIZE_STRING ); if ( empty( $auth ) ) { return false; } $auth = str_replace( 'Basic ', '', $auth ); $auth = explode( ':', base64_decode( $auth ) ); if ( ! isset( $auth[0] ) || ! isset( $auth[1] ) ) { return false; } $user = $auth[0]; $pass = $auth[1]; if ( ! \WC_Software_Composer::is_composer_key_secret_valid( $user, $pass ) ) { $this->http_error_header = 'HTTP/1.1 404 API Key Not Found'; $this->output_errors( array( 'composer_key_not_found' => __( 'Composer API key not found.', 'delicious-brains-api' ) ) ); } return $user; }

Anahtar ve sır diziden çıkarıldıktan sonra, eklenti için aktif lisansa sahip bir müşteri için var olup olmadıklarını kontrol ederiz.

Ayrıca, URL'de composer.deliciousbrains.com/packages.json anahtarı olmadan besteci.deliciousbrains.com/packages.json'a yapılan istekleri yakalamak için yeni bir Nginx yeniden yazma eklememiz gerekiyordu:

 rewrite ^/packages\.json$ /index.php?wc-api=delicious-brains&request=composer_packages last;

Bu yeniden yazma, mevcut olandan sonradır, bu nedenle eski yöntemi kullanarak istekleri hala yakalayabiliriz.

Geriye Dönük Uyumluluk

Peki ya eski yöntemi kullanan mevcut Besteci projeleri? Endişelenmeyin, gerçek WordPress tarzında geriye dönük uyumluluğu koruyoruz. Yukarıdaki validate_composer_auth_authentication yöntemi false döndürürse, eski yola döneriz ve depo URL'sinde anahtarın varlığını kontrol ederiz:

 /** * Endpoint for downloading Composer packages. */ public function request_composer_download() { $key = $this->validate_composer_auth_authentication(); if ( ! $key ) { $key = $this->validate_legacy_composer_key_authentication(); } if ( empty( $_GET['package'] ) ) { $this->http_error_header = 'HTTP/1.1 400 Bad Request'; $this->output_errors( array( 'no_package_name' => __( 'You did not provide a package name.', 'delicious-brains-api' ) ) ); } if ( empty( $_GET['version'] ) ) { $this->http_error_header = 'HTTP/1.1 400 Bad Request'; $this->output_errors( array( 'no_package_version' => __( 'You did not provide a package version.', 'delicious-brains-api' ) ) ); } # Process the download of the plugin … }

Eski kimlik doğrulama yöntemine ilişkin belgeler burada bulunabilir.

Toplama

Bunun artık premium eklentilerimiz için Composer desteği sağlamanın tüm kutularını işaretlediğine inanıyoruz ve gelecekte auth.json dosyalarını kullanmayı ve anahtarlarımı git'in dışında tutmayı dört gözle bekliyorum.

Umarım diğer WordPress eklenti mağazaları ve geliştiricileri, ürünleri için daha iyi Besteci desteği eklemeye başlar. Destek ekleyen herhangi birini biliyor musunuz? Yeni yöntemimizi kullanacak mısınız? Yorumlarda bize bildirin.

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

Divi's Theme Builder ile Özel Global Başlık Nasıl Oluşturulur

Artık Tema Oluşturucu burada olduğuna göre, web sitenizi A'dan Z'ye kurmanıza yardımcı olacak yeni eğitimlere dalmak için sabırsızlanıyoruz. Buna Divi'nin yerleşik seçeneğini kullanarak özel başlıklar oluşturma da dahildir. Bu eğitimde Divi's Theme Builder'ı kullanarak global bir başlık oluşturmaya odaklanacağız. Bu sayfaya veya gönderiye farklı bir başlık atamadıysanız, web sitenizin her yerinde genel bir başlık görünecektir.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir