はじめに
Movable Typeのコンテンツタイプでベーシック認証のアカウント情報を登録して
会員サイトをつくる感じ・・・をやってみる・・
つくってみる・・
コンテンツタイプはこんな感じ・・
あと、別途会員情報で住所とか。。会社名、連絡先とか追加でもいいですよね。
ベーシック認証のパスワードhtpasswdは、パスワード部分が暗号化なので・・
下記を参考に・・
関連
Movable Type7 文字置換プラグイン
https://www.omakase.net/blog/2021/03/mt7-replace.html
ベーシック認証用の暗号化プラグインをつくる・・
---htpasswdCrypt
| htpasswdCrypt.pl
はい・・上と・・・関数だけ違います・・w
htpasswdCrypt.pl
package MT::Plugin::htpasswdCrypt;
use Encode;
use vars qw( $PLUGINNAME $VERSION );
$PLUGINNAME = 'htpasswdCrypt';
$VERSION = '1.0.0';
use base qw( MT::Plugin );
my $plugin = __PACKAGE__->new({
id => $PLUGINNAME,
key => $PLUGINNAME,
name => $PLUGINNAME,
version => $VERSION,
author_name => '電脳職人村',
author_link => 'http://www.omakase.net/',
doc_link => 'http://www.omakase.net/',
description => <<HTMLHEREDOC,
This plugin for htpasswd Crypt Convert.
HTMLHEREDOC
});
MT->add_plugin( $plugin );
sub init_registry {
my $plugin = shift;
$plugin->registry({
global_filters => {
'htpasswd_Crypt' => \&htpasswdCrypt
},
tags => {
block => {
htpasswdCrypt => \&htpasswdCrypt,
},
function => {
htpasswdCrypt => \&htpasswdCrypt,
},
modifier => {
htpasswdCrypt => \&htpasswdCrypt,
},
},
});
}
#<MTタグ htpasswdCrypt="1">
use MT::Template::Context;
sub htpasswdCrypt {
my($pass_string, $len, $ctx) = @_;
@salt = ('a'..'z','A'..'Z','0'..'9','.','/');
srand( time | $$ );
$salt = $salt[int(rand($#salt))] . $salt[int(rand($#salt))];
return crypt($pass_string,$salt);
}
作成したプラグインをインストールして・・・
memberってフォルダーにベーシック認証をかけて、htpasswdを動的に出力・・・
インデックステンプレートで
htpasswdCrypt="1"をコンテンツタグに追加・・
<mt:ContentFieldValue htpasswdCrypt="1">
.htpasswdのMTタグ
<mt:Unless name="blanklinedel" regex_replace="/^[\s\t]*\n/gm","">
<mt:Contents content_type="ベーシック認証アカウント">
<mt:ContentField content_field="ユーザーID"><mt:ContentFieldValue></mt:ContentField>:<mt:ContentField content_field="パスワード"><mt:ContentFieldValue htpasswdCrypt="1"></mt:ContentField>
</mt:Contents>
</mt:Unless>
インデックステンプレート .htaccess
<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AuthUserFile <$mt:WebsitePath$>member/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
order deny,allow
コンテンツタイプのベーシック認証アカウントで会員一覧とか・・会員制で必要なものを・・・
<p>会員一覧</p>
<table>
<mt:Contents content_type="ベーシック認証アカウント">
<tr>
<td><mt:ContentField content_field="氏名"><mt:ContentFieldValue></mt:ContentField></td>
<td><mt:ContentField content_field="コンテンツタイプで追加した情報TELとか"><mt:ContentFieldValue></mt:ContentField></td>
<td><mt:ContentField content_field="コンテンツタイプで追加した情報住所とか"><mt:ContentFieldValue></mt:ContentField></td>
</tr>
</mt:Contents>
</table>
さいごに・・
あくまでも・・・ベーシック認証なので、会員数とかサーバーのスペックによります。
あと、ベーシック認証が動作するサーバーで・・・アパッチね。
なるべく・・静的コンテンツのまま・・・会員制にしたかったので・・とりあえず