Movable Typeのコンテンツタイプでベーシック認証

らら
らら

はじめに

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>

さいごに・・

あくまでも・・・ベーシック認証なので、会員数とかサーバーのスペックによります。

あと、ベーシック認証が動作するサーバーで・・・アパッチね。

なるべく・・静的コンテンツのまま・・・会員制にしたかったので・・とりあえず

関連記事