[LON-CAPA-cvs] cvs: loncom /auth lonroles.pm
raeburn
lon-capa-cvs@mail.lon-capa.org
Thu, 11 Nov 2004 23:17:13 -0000
raeburn Thu Nov 11 18:17:13 2004 EDT
Modified files:
/loncom/auth lonroles.pm
Log:
CC privs created on the fly as needed for DC. Works nicely now.
Index: loncom/auth/lonroles.pm
diff -u loncom/auth/lonroles.pm:1.106 loncom/auth/lonroles.pm:1.107
--- loncom/auth/lonroles.pm:1.106 Thu Nov 11 17:18:23 2004
+++ loncom/auth/lonroles.pm Thu Nov 11 18:17:13 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# User Roles Screen
#
-# $Id: lonroles.pm,v 1.106 2004/11/11 22:18:23 raeburn Exp $
+# $Id: lonroles.pm,v 1.107 2004/11/11 23:17:13 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -83,7 +83,8 @@
my $then=$ENV{'user.login.time'};
my $envkey;
my $dcselect='';
-
+ my %dcroles = ();
+ my $numdc = &check_fordc(\%dcroles,$then);
# ================================================================== Roles Init
if ($ENV{'form.selectrole'}) {
@@ -121,9 +122,20 @@
"request.role.adv" => $ENV{'user.adv'},
"request.role.domain" => $ENV{'user.domain'});
-# Check to see if the user is a DC trying to enter a course
-# course selection page
- my $dcflag = 0;
+# Check to see if the user is a DC trying to enter a course and needs privs to be created
+ if ($numdc > 0) {
+ foreach my $envkey (keys %ENV) {
+ if ($envkey =~ m-^form\.cc\./(\w+)/(\w+)$-) {
+ if ($dcroles{$1}) {
+ unless ($ENV{'user.role.cc./'.$1.'/'.$2}) {
+ &set_privileges($1,$2);
+ }
+ }
+ last;
+ }
+ }
+ }
+
if ($ENV{'form.dccourse'}) {
my $dcdom = $ENV{'form.dcdomain'};
my $pickedcourse = $ENV{'form.dccourse'};
@@ -131,17 +143,6 @@
unless ($ENV{'user.role.cc./'.$dcdom.'/'.$pickedcourse}) {
if ($ENV{'user.role.dc./'.$dcdom.'/'}) {
&set_privileges($dcdom,$pickedcourse);
- my $msg=&mt('Entering course ...');
- my ($furl,$ferr)=&Apache::lonuserstate::readmap($dcdom.'/'.$pickedcourse);
- my $formaction = '/adm/roles/';
- my $courseid = $dcdom.'_'.$pickedcourse;
- &Apache::lonhtmlcommon::store_recent('cc_pickby_dc_'.$dcdom,
- $courseid,$formaction);
- # Send the user to the course they selected
- &redirect_user($r,&mt('Entering Course'),
- $furl,$msg,
- $ENV{'environment.remotenavmap'});
- return OK;
}
}
}
@@ -291,7 +292,6 @@
}
# Check to see if the user is a DC coming from the
# course selection page
- my $dcflag = 0;
if ($ENV{'form.dccourse'}) {
my $formaction = '/adm/roles/';
my ($dcdom,$pickedcourse) = split/_/,$courseid;
@@ -435,9 +435,6 @@
$r->print('><input type=submit value="'.&mt('Display').'">');
}
- my %dcroles = ();
- my $numdc = &check_fordc(\%dcroles,$then);
-
my (%roletext,%sortrole,%roleclass);
my $countactive=0;
my $inrole=0;
@@ -1044,7 +1041,8 @@
my $userroles = &Apache::lonnet::set_arearole($role,$area,'','',$dcdom,$ENV{'user.name'});
my %ccrole = ();
&Apache::lonnet::standard_roleprivs(\%ccrole,$role,$dcdom,$spec,$pickedcourse,$area);
- $userroles .= &Apache::lonnet::set_userprivs(\$userroles,\%ccrole); my @newprivs = split/\n/,$userroles;
+ my ($author,$adv)= &Apache::lonnet::set_userprivs(\$userroles,\%ccrole);
+ my @newprivs = split/\n/,$userroles;
my %newccroles = ();
foreach (@newprivs) {
my ($key,$val) = split/=/,$_;
@@ -1055,7 +1053,6 @@
$ENV{'user.name'},
$ENV{'user.home'},
"Role ".$role);
-
&Apache::lonnet::appenv(
'request.role' => $role,
'request.role.domain' => $dcdom,