[ 新規 | 編集 | 差分 ] [ 検索 | 一覧 | FrontPage ] [ 履歴 (RSS) | 差分履歴 (RSS) ] [ ログイン ]
【PR】Amazon | SL-C3000 | SL-C1000(3/18発売!) | SL-C860 | SL-6000W | SL-6000L | SL-6000N

WalWiki/カスタマイズ/ログイン・ログアウト機能

編集

[login/logout]

編集

resource.txtへの追加

編集
loginbuttonログイン
logoutbuttonログアウト

グローバル変数追加

編集

スクリプト中で何度もvalid_password()を呼ぶ必要が無くなるようにグローバル変数でパスワード認証済みかどうかを保持します。

my $authorized = 0;                                         # yakty add [login/logout]

%command_doへの追加

編集
my %command_do = (
    read => \&do_read,
    edit => \&do_edit,
    adminedit => \&do_adminedit,
    adminchangepasswordform => \&do_adminchangepasswordform,
    adminchangepassword => \&do_adminchangepassword,
    write => \&do_write,
    index => \&do_index,
    searchform => \&do_searchform,
    search => \&do_search,
    create => \&do_create,
    createresult => \&do_createresult,
    FrontPage => \&do_FrontPage,
    comment => \&do_comment,
    rss => \&do_rss,
    diff => \&do_diff,
    interwikibox => \&do_interwiki_box, # Walrus add [InterWikiBox]
    login => \&do_login,                                    # yakty add [login/logout]
    logout => \&do_logout,                                  # yakty add [login/logout]
);

init_form()内の変更

編集

パスワードが正しいかどうかを検証してグローバル変数に保持します。

    $authorized = &valid_password($form{mypassword}); # yakty add [login/logout]
}

do_login()追加

編集
# yakty add [login/logout] start
sub do_login {
    &print_header($form{mypage});
    &print_message($resource{passwordneeded});
    &print_loginform;
    &print_footer($form{mypage});
}
# yakty add [login/logout] end

do_logout()追加

編集

print_loginform()追加

編集
# yakty add [login/logout] start
sub print_loginform {
    if($page_command{$form{mypage}}){
        $form{mycmd} = $page_command{$form{mypage}};
    } else {
        $form{mycmd} = 'read';
    }
    print <<"EOD";
<form action="$url_cgi" method="post">
    <input type="hidden" name="mycmd" value="$form{mycmd}">
    <input type="hidden" name="mypage" value="$form{mypage}">
    $resource{frozenpassword} <input type="password" name="mypassword" size="10">
    <input type="submit" value="$resource{loginbutton}"><br>
</form>
EOD
}
# yakty add [login/logout] end

do_create()内の変更

編集
sub do_create {
    &print_header($CreatePage);
    print <<"EOD";
<form action="$url_cgi" method="post">
    <!-- input type="hidden" name="mycmd" value="edit" --><!-- yakty del [login/logout] -->
    <input type="hidden" name="mycmd" value=@{[$authorized ? "adminedit" : "edit"]}><!-- yakty add [login/logout] -->
    <strong>$resource{newpagename}</strong><br>
    <input type="text" name="mypage" value="" size="80">
    <input type="submit" value="$resource{createbutton}"><br>
</form>
EOD
    &print_footer($CreatePage);
}

print_header()内の変更

編集

未ログイン時には編集リンクのみ、ログイン後には管理者編集リンクのみを表示します。
また、未ログイン時には凍結ページの編集リンクを全く表示しません。

    } else {
        $editable = 0;
    }
    # yakty add [login/logout] start
    if($authorized and $editable){
        $editable = 0;
        $admineditable = 1;
    }
#    if(&valid_password($form{mypassword})){
#        if($editable){
#            $editable = 0;
#            $admineditable = 1;
#        }
#    } else {
#        $admineditable = 0;
#    }
    # yakty add [login/logout] end
    my $cookedpage = &encode($page);
    my $escapedpage = &escape($page);
    if    ($editable)      { $resource{'parteditlinkformat'} = qq(<a class="partedit" title="$resource{editthispart}" href="$url_cgi?mycmd=edit&amp;mypage=$formatpage&amp;mypart=%d">$resource{editbutton}</a>); }
    #elsif ($admineditable) { $resource{'parteditlinkformat'} = qq(<a class="partedit" title="$resource{admineditthispart}" href="$url_cgi?mycmd=adminedit&amp;mypage=$formatpage&amp;mypart=%d">$resource{admineditbutton}</a>); }                 # yakty del [login/logout]
    elsif ($admineditable and $authorized) { $resource{'parteditlinkformat'} = qq(<a class="partedit" title="$resource{admineditthispart}" href="$url_cgi?mycmd=adminedit&amp;mypage=$formatpage&amp;mypart=%d">$resource{admineditbutton}</a>); }  # yakty add [login/logout]
    @{[ ($editable and $authorized == 0) # yakty mod [login/logout]
        ? qq(<a title="$resource{editthispage}" href="$url_cgi?mycmd=edit&amp;mypage=$cookedpage">$resource{editbutton}</a> | )
        : qq()
    ]}
    @{[ ($admineditable and $authorized) # yakty mod [login/logout]
        ? qq(<a title="$resource{admineditthispage}" href="$url_cgi?mycmd=adminedit&amp;mypage=$cookedpage">$resource{admineditbutton}</a> | )
        : qq()
    ]}
    @{[ $admineditable
        ? qq(<a href="$url_cgi?mycmd=diff&amp;mypage=$cookedpage">$resource{diffbutton}</a> | )
        : qq()
    ]}
    <a href="$url_cgi?$SearchPage" title="Word Search">$resource{searchbutton}</a> | 
    <a href="$url_cgi?$FrontPage" title="Top Page">$FrontPage</a> | 
    <a href="$url_cgi?$IndexPage" title="Page List">$resource{indexbutton}</a> | 
    <a href="$url_cgi?$RecentChanges" title="Change Log">$resource{recentchangesbutton}</a> | 
    <a href="$url_cgi?$RecentDiffs" title="Change Log(diff)">$resource{recentdiffsbutton}</a> | 
    <a href="$url_cgi?$RssPage" title="Change Log(RSS format)">$resource{rssbutton}</a>
    <!-- yakty add [login/logout] start -->
    @{[ $authorized
        ? qq( | <a href="$url_cgi?mycmd=logout&amp;mypage=$cookedpage" title="Logout(admin)">$resource{logoutbutton}</a>)
        : qq( | <a href="$url_cgi?mycmd=login&amp;mypage=$cookedpage" title="Login(admin)">$resource{loginbutton}</a>)
    ]}
    <!-- yakty add [login/logout] end -->

02730