#!/usr/bin/perl -w eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}' if 0; # not running under some shell eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}' if 0; # not running under some shell use strict; use Bio::Graphics::Browser2::UserDB; use Bio::Graphics::Browser2::Render; our $VERSION = '$Id: gbrowse_login,v 1.1 2009-08-27 20:33:23 idavies Exp $'; umask 022; my $fcgi = Bio::Graphics::Browser2::Render->fcgi_request; if ($fcgi) { my $FCGI_DONE = 0; $SIG{USR1} = $SIG{PIPE} = $SIG{TERM} = sub { my $sig = shift; my $time = localtime; print STDERR "[$time] [notice] gbrowse_login FastCGI process caught sig$sig. Exiting... (pid $$)\n"; $FCGI_DONE = 1; }; my %sys_env = %ENV; while (!$FCGI_DONE) { my $status = $fcgi->Accept; next unless $status >= 0; %ENV = ( %sys_env, %ENV ); CGI->initialize_globals(); GBrowseLogin->run(); $fcgi->Finish(); } } else { GBrowseLogin->run(); } package GBrowseLogin; use CGI qw(:standard); sub run { my %actions = map {$_=>1} param('action'); my %callback; warn 'gbrowse_login(',join ',',param('action'),')'; my $user = param('user'); my $pass = param('pass'); my $email = param('email'); my $fullname = param('fullname'); my $sessionid = param('session'); my $remember = param('remember'); my $old = param('old_val'); my $new = param('new_val'); my $column = param('column'); my $confirm = param('confirm'); my $openid = param('openid'); my $option = param('option'); my $source = param('source'); my $userdb = Bio::Graphics::Browser2::UserDB->new(Bio::Graphics::Browser2->open_globals); if($actions{list_openid}) { print header('application/json'); $userdb->do_list_openid($user) if $actions{list_openid}; return; } if($actions{confirm_openid}) { my $arg; my $print = -1; foreach(param('callback')) { $arg = $_ if($print == -1); $callback{$arg} = $_ if($print == 1); $print = $print * -1; } print header('application/json'); $userdb->do_confirm_openid(\%callback, $sessionid, $option,$email,$fullname); return; } print header(); $userdb->do_validate ($user, $pass, $remember) if $actions{validate}; $userdb->do_add_user_check ($user, $email, $fullname, $pass, $sessionid) if $actions{add_user_check}; $userdb->do_add_user ($user, $email, $fullname, $pass, $sessionid) if $actions{add_user}; $userdb->do_edit_confirmation ($email, $option) if $actions{edit_confirmation}; $userdb->do_confirm_account ($user, $confirm) if $actions{confirm_account}; $userdb->do_edit_details ($user, $column, $old, $new) if $actions{edit_details}; $userdb->do_email_info ($email) if $actions{email_info}; $userdb->do_delete_user ($user, $pass) if $actions{delete_user}; $userdb->do_add_openid_user ($user, $email,$fullname,$openid, $sessionid, $remember) if $actions{add_openid_user}; $userdb->do_check_openid ($openid, $sessionid, $source, $option) if $actions{check_openid}; $userdb->do_change_openid ($user, $pass, $openid, $option) if $actions{change_openid}; $userdb->do_get_gecos ($user) if $actions{get_gecos}; } __END__