X-Git-Url: http://www.wagner.pp.ru/gitweb/?a=blobdiff_plain;f=lib%2FVJournal%2FSession.pm;fp=lib%2FVJournal%2FSession.pm;h=f520cedb1cb4fc346f4ce4b3b3dae9b5eabe14c2;hb=712a6d8f7bec7e494f796c3c10616765c593b373;hp=e8197864dd566298ecebf04aaae4170bf579ff42;hpb=7ba1e2e976af0289758d379a4fb7b843d73590c1;p=oss%2Fvjournal.git diff --git a/lib/VJournal/Session.pm b/lib/VJournal/Session.pm index e819786..f520ced 100644 --- a/lib/VJournal/Session.pm +++ b/lib/VJournal/Session.pm @@ -58,9 +58,9 @@ sub new { } if (exists $attrs{-cgi} && $attrs{-cgi}->can("cookie")) { my $cgi=$attrs{-cgi}; + load_config($cgi); my $sess_id = $cgi->cookie(COOKIE_NAME); return undef unless $sess_id; - load_config(); if (!exists($config{-sessionbase})) { croak "No VJournal config read"; } @@ -141,7 +141,7 @@ sub create { if (exists $params{-avatar}) { @avatar = VJournal::Avatar::cache($params{-avatar}); } else { - @avatar = VJournal::Avatar::by_openid($user); + @avatar = VJournal::Avatar::by_openid($identity); } if (!@avatar && exists $params{-email}) { @avatar = VJournal::Avatar::by_email($params{-email}); @@ -150,7 +150,7 @@ sub create { $users{$identity}=join(":",$params{-name}||$identity ,$params{-email},$a{-src},$a{-width},$a{-height}); } - my ($name,$email,$avatarsrc,$avatarwidth,$avatarheight)=split(":",$users{$user}); + my ($name,$email,$avatarsrc,$avatarwidth,$avatarheight)=split(":",$users{$identity}); $session->{-name} = $name; $session->{-email} = $email if $email; if ($avatarsrc) { @@ -279,7 +279,7 @@ returns true, if current user is owner of the blog sub isowner { my $self=shift; - return $self->{-identity} eq $config->{-owner}; + return $self->{-identity} eq $config{-owner}; } =head2 banned @@ -304,7 +304,7 @@ Marks user as banned in the current blog sub ban { my ($self,$foe) = @_; - if (!$self->isowner()) return undef; + return undef if (!$self->isowner()) ; my %bans; dbmopen %bans,$config{-topdir}."/bans",0644; $bans{$foe}=time(); @@ -321,6 +321,7 @@ in the blog top url sub _readban { my $identity = shift; + my %bans; dbmopen %bans,$config{-topdir}."/bans",0644; if (exists $bans{-identity}) { return (-ban=>1); @@ -362,7 +363,8 @@ dies if config not found. sub load_config { my $cgi = $_[0]; - my $path=$cgi->path_translated(); + my $path; + $path=$1 if $cgi->path_translated()=~/^(.*)$/; my @dirs = File::Spec->splitdir($path); my @uri = File::Spec->splitdir($cgi->path_info); my $found =0; @@ -370,10 +372,10 @@ sub load_config { my $d=File::Spec->catdir(@dirs,CONFIG_NAME); if (-r $d) { open F,"<",$d; - local $/=undef; - my $config = ; + while () { + $config{"-$1"} = $2 if /^\s*(\w+)\s*=\s*"([^"]*)"\s*$/; + } close F; - eval "%config = {$d}"; $config{-topdir}=File::Spec->catdir(@dirs); $config{-topurl}=$cgi->url(-base=>1).File::Spec->catdir(@uri); die $@ if ($@); @@ -387,16 +389,17 @@ sub load_config { foreach my $key (@reqkeys) { die "Required key $key missing from config" unless exists $config{$key}; + } # sensible defaults $config{-sessionbase}||=$config{-statedir}."/sessions.db"; $config{-userbase}||=$config{-statedir}."/user.db"; $config{-sessiontime}||=86400*30; $config{-gracetime}||=86400; - $config{-templatedir}||=$config{-topdir}."/templates" + $config{-templatedir}||=$config{-topdir}."/templates"; $config{-avatardir}||=$config{-topdir}."/avatars"; if (!$config{-owner}) { - my $uri=substr($config{-topurl},index($config{-topurl},"://")+2; + my $uri=substr($config{-topurl},index($config{-topurl},"://")+3); $uri =~ s/:\d+(\/.*)?$//; $config{-owner} = $uri; }