X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=app.psgi;h=a9eb098d7672832589be3158ea37414aa510d1a1;hb=759ae227869b52a2ae9c12f25ee697d0d0e102a0;hp=c470f30dd8abbe714c5887210f44e1d6c635371f;hpb=42605537962bdbceedb27952a1319ed7e590e896;p=gruntmaster-page.git diff --git a/app.psgi b/app.psgi index c470f30..a9eb098 100644 --- a/app.psgi +++ b/app.psgi @@ -30,10 +30,13 @@ sub some_auth_required { sub admin_required { local $_ = $_[0]; - return 1 if m,^/pb/$word, && problem_private $1; - return 1 if m,^/log/(?:job|src)/$word, && job_private $1; - return 1 if m,^/ct/$word/(?:pb|log), && time < contest_start $1; - return 1 if m,^/ct/$word/log/src, && time < contest_end $1; + return problem_owner $1 if m,^/pb/$word, && problem_private $1; + return job_user $1 if m,^/log/(?:job|src)/$word, && job_private $1; + return contest_owner $1 if m,^/ct/$word/(?:pb|log), && time < contest_start $1; + if (m,^/ct/$word/log/(?:job|src)/$word, && time < contest_end $1){ + local $Gruntmaster::Data::contest = $1; + return job_user $2; + } 0 } @@ -43,7 +46,7 @@ sub require_admin { local *__ANON__ = "require_admin_middleware"; my $env = $_[0]; my $r = Plack::Request->new($env); - $env->{'gruntmaster.reqadmin'} = 1 if admin_required $r->path; + $env->{'gruntmaster.reqadmin'} = admin_required $r->path; $app->($env) } } @@ -66,7 +69,7 @@ sub authenticate { }; $authen_cache{$cache_key} = time; - return if $env->{'gruntmaster.reqadmin'} && !hascaps $user, 'gmadm'; + return if $env->{'gruntmaster.reqadmin'} && $env->{'gruntmaster.reqadmin'} ne $user && !hascaps $user, 'gmadm'; 1 }