ユーザー追加の制限

標準では、フォームでユーザー追加が誰にでもできるようになっている。
CMSとして使う上では、これは好ましくない。


ユーザー追加を制限する方法は、標準の機能では提供されていないようだ。
http://moinmoin.wikiwikiweb.de/FeatureRequests/DisableUserCreation

~/lib/python/MoinMoin/userform.py
        else: # not logged in
            # Login / register interface
            buttons = [
                # IMPORTANT: login should be first to be the default
                # button when a user hits ENTER.
                #('login', _('Login')),  # we now have a Login macro
                #('create', _('Create Profile')),  ###### この行をコメントアウト 
                ('cancel', _('Cancel')),
            ]

これをやるとUserPreferences画面で登録ボタンが表示されなくなる。
しかし、フォームそのものは出てきてしまうので美しくないな...

plugin/action/userform.py
	from MoinMoin.Page import Page
	from MoinMoin import wikiaction
	
	def execute(pagename, request):
	    if 'create' in request.form:
	        return Page(request, pagename).send_page(request, msg="Creating user accounts disabled.")
	
	    wikiaction.do_userform(pagename, request)

というプラグインでブロックする方法もあるが、これも美しくない。
wikiの下の

./underlay/pages/UserPreferences
./underlay/pages/UserPreferences/current
./underlay/pages/UserPreferences/revisions
./underlay/pages/UserPreferences/revisions/00000001
./underlay/pages/UserPreferences/cache
./underlay/pages/UserPreferences/cache/text_html
./underlay/pages/UserPreferences/cache/pagelinks

あたりを消してしまったほうがいいのかも。
さっそく実行。

%cd wiki/
%mkdir removepage
%mv underlay/pages/UserPreferences removepage/

日本語だと
http://mogeuser.sakura.ne.jp/moin.cgi/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%97%E3%83%AC%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9
ってのが生きているので、これも移動する必要がある。
当該ファイルをfindでキャッシュファイルの時間を頼りに探す。
./(e383a6e383bce382b6e38397e383ace38395e382a1e383ace383b3e382b9)
か?

%mv underlay/pages/"(e383a6e383bce382b6e38397e383ace38395e382a1e383ace383b3e382b9)"/ removepage/

成功。
移動しても機能コードは残っているから、普通のページにコードをペーストされて使われないためにも、冒頭の機能を殺すことそのものは必須。


CMSとして考えると、underlayそのものの内容を見直す必要があるのかも。
ヘルプや検索されたくないページ情報などは隠しておきたいところだ。