############################################################################### # # ユーザ管理を行うアクションハンドラ # ############################################################################### package plugin::admin::AdminUserHandler; use strict; #============================================================================== # コンストラクタ #============================================================================== sub new { my $class = shift; my $self = {}; return bless $self,$class; } #============================================================================== # アクションハンドラメソッド #============================================================================== sub do_action { my $self = shift; my $wiki = shift; my $cgi = $wiki->get_CGI; $wiki->set_title("ユーザ管理"); if($cgi->param("delete") ne ""){ return $self->delete_user($wiki); } elsif($cgi->param("regist") ne ""){ return $self->user_form($wiki,{}); } elsif($cgi->param("update") ne ""){ my $users = &Util::load_config_hash($wiki,$wiki->config('userdat_file')); my $id = $cgi->param("update"); my ($pass,$type) = split(/\t/,$users->{$id}); return $self->user_form($wiki,{id=>$id,pass=>$pass,type=>$type}); } elsif($cgi->param("saveuser") ne ""){ return $self->save_user($wiki); } elsif($cgi->param("changepass") ne ""){ return $self->change_pass($wiki); } else { return $self->user_list($wiki); } } #============================================================================== # ユーザ一覧 #============================================================================== sub user_list { my $self = shift; my $wiki = shift; my $users = &Util::load_config_hash($wiki,$wiki->config('userdat_file')); my $buf .= "
| ID | 種別 | 操作 | |
|---|---|---|---|
| ".&Util::escapeHTML($id)." | \n"; if($type==0){ $buf .= "管理者 | \n"; } else { $buf .= "一般 | \n"; } $buf .= "config('script_name')."?action=ADMINUSER&update=".&Util::url_encode($id)."\">変更 ". "config('script_name')."?action=ADMINUSER&delete=".&Util::url_encode($id)."\">削除 | \n"; $buf .= "
ユーザ情報を保存しました。
". # "[config('script_name')."?action=ADMINUSER\">戻る]\n"; } #============================================================================== # パスワードの変更 #============================================================================== sub change_pass { my $self = shift; my $wiki = shift; my $cgi = $wiki->get_CGI(); my $id = $cgi->param("id"); my $pass = $cgi->param("pass"); my $users = &Util::load_config_hash($wiki,$wiki->config('userdat_file')); my ($p,$type) = split(/\t/,$users->{$id}); $users->{$id} = &Util::md5($pass,$id)."\t$type"; &Util::save_config_hash($wiki,$wiki->config('userdat_file'),$users); $wiki->redirectURL($wiki->config('script_name')."?action=ADMINUSER"); #return "パスワードを変更しました。
". # "[config('script_name')."?action=ADMINUSER\">戻る]\n"; } #============================================================================== # ユーザの削除 #============================================================================== sub delete_user { my $self = shift; my $wiki = shift; my $cgi = $wiki->get_CGI; my $id = $cgi->param("delete"); my $users = &Util::load_config_hash($wiki,$wiki->config('userdat_file')); my $saveusers = {}; foreach(sort(keys(%$users))){ if($_ ne $id){ $saveusers->{$_} = $users->{$_}; } } &Util::save_config_hash($wiki,$wiki->config('userdat_file'),$saveusers); $wiki->redirectURL($wiki->config('script_name')."?action=ADMINUSER"); #return "ユーザを削除しました。
". # "[config('script_name')."?action=ADMINUSER\">戻る]\n"; } 1;