--- loncom/lonnet/perl/lonnet.pm 2006/07/21 18:52:35 1.765 +++ loncom/lonnet/perl/lonnet.pm 2006/07/21 19:42:25 1.766 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.765 2006/07/21 18:52:35 albertel Exp $ +# $Id: lonnet.pm,v 1.766 2006/07/21 19:42:25 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -3220,20 +3220,15 @@ sub tmpdel { # -------------------------------------------------- portfolio access checking sub portfolio_access { - my ($r,$requrl) = @_; - my $access=&allowed('bre',$requrl); - if ($access eq '2' || $access eq 'F') { - return 'ok'; - } + my ($requrl) = @_; my (undef,$udom,$unum,$file_name,$group) = &parse_portfolio_url($requrl); my $result = &get_portfolio_access($udom,$unum,$file_name,$group); if ($result eq 'ok') { - return 'ok'; + return 'F'; } elsif ($result =~ /^[^:]+:guest_/) { - &Apache::lonacc::passphrase_access_checker($r,$result,$requrl); - return 'ok'; + return 'A'; } - return undef; + return ''; } sub get_portfolio_access { @@ -3602,6 +3597,13 @@ sub allowed { } } + if ($priv eq 'bre' + && $thisallowed ne 'F' + && $thisallowed ne '2' + && &is_portfolio_url($uri)) { + $thisallowed = &portfolio_access($uri); + } + # Full access at system, domain or course-wide level? Exit. if ($thisallowed=~/F/) { @@ -3752,7 +3754,11 @@ sub allowed { # unless ($env{'request.course.id'}) { - return '1'; + if ($thisallowed eq 'A') { + return 'A'; + } else { + return '1'; + } } # @@ -3815,6 +3821,9 @@ sub allowed { } } + if ($thisallowed eq 'A') { + return 'A'; + } return 'F'; } @@ -7508,6 +7517,7 @@ actions '': forbidden 1: user needs to choose course 2: browse allowed + A: passphrase authentication needed =item * @@ -8235,15 +8245,6 @@ Internal notes: Locks on files (resulting from submission of portfolio file to a homework problem stored in array of arrays. -parse_access_controls(): - -Parses XML of an access control record -Args -1. Text string (XML) of access comtrol record - -Returns: -1. Hash of access control settings. - modify_access_controls(): Modifies access controls for a portfolio file