<!-- -*- mode:text coding:euc-jp -*-
   $FML: module.sgml,v 1.7 2009/12/26 13:33:25 fukachan Exp $
-->


<sect1 id="fml.command.module.hierarchy">
	<title>
	各種コマンドで使うモジュール
	</title>

<para>
&fml8; では、
コマンドメール、
makefml
そして
CGI
が使うモジュールは共有されています。
ただし、
その権限の差異によって、
一般ユーザ用のモジュールと管理者用のモジュールの２つに大きく分かれています。
以下、これらのモジュール群の構成について解説します。
</para>

<para>
FML::Command:: クラスは以下のような構成になっています。
<screen>
FML::Command		FML::Command クラス以下への入口、dispatcher
FML::Command::User	ユーザ用コマンド群
FML::Command::Admin	管理者用コマンド群
</screen>
たとえば、(コマンドメールでの)ユーザ用コマンドの場合
FML::Command を経由して
FML::Command::User::コマンド
モジュールを呼び出しています。
</para>


<sect2>
	<title>
	(コマンドメールでの)一般ユーザ用コマンド
	</title>

<para>
FML::Process::Command
から
FML::Command 経由で
「FML::Command::User::コマンド」
を呼び出しています。
</para>

<para>
最終的に
「FML::Command::Admin::コマンド」
を使うモジュールもあります。
たとえば登録と削除の実作業は
「FML::Command::Admin::コマンド」
にあるコードが行なっています。
すべてのプログラムで登録/削除作業の実体部分を共有するためです。
この場合、
「FML::Command::User::コマンド」は
confirm を行なうための wrapper という位置付けになります。
</para>
</sect2>


<sect2>
	<title>
	(コマンドメールでの) 管理者用コマンド (admin コマンド)
	</title>

<para>
FML::Process::Command から
FML::Command 経由で
「FML::Command::Admin::コマンド」
を呼び出しています。
</para>

</sect2>


<sect2>
	<title>
	makefml
	</title>

<warning>
<para>
makefml を実行できる時点で、
サーバにログインできる管理者権限があるとみなされています。
</para>
</warning>

<para>
FML::Process::Configure から
FML::Command 経由で
「FML::Command::Admin::コマンド」
を呼び出しています。
</para>

</sect2>


<sect2>
	<title>
	CGI
	</title>

<warning>
<para>
CGI も一般ユーザむけの CGI と管理者用の CGI があります。
</para>

<para>
管理者用の CGI については、
この CGI を実行できる時点で、
(認証をパスしており)
管理者権限があるとみなされています。
</para>
</warning>

<para>
アドレス登録/削除などのためにある一般ユーザ用の CGI は、
FML::Process::CGI から
FML::Command 経由で
「FML::Command::User::コマンド」
を呼び出しています。
コマンドメールと同様に confirm のための wrapper という位置付けです。
</para>

<para>
管理者用の CGI は、FML::Process::CGI から
FML::Command 経由で
「FML::Command::Admin::コマンド」
を呼び出しています。
</para>

</sect2>


</sect1>
