[prev in list] [next in list] [prev in thread] [next in thread] 

List:       lon-capa-cvs
Subject:    [LON-CAPA-cvs] cvs: loncom /auth lonroles.pm
From:       www <lon-capa-cvs-allow () mail ! lon-capa ! org>
Date:       2008-01-30 1:18:58
Message-ID: cvswww1201655938 () cvsserver
[Download RAW message or body]

www		Tue Jan 29 20:18:58 2008 EDT

  Modified files:              
    /loncom/auth	lonroles.pm 
  Log:
  Don't go to non-exising authorspaces
  
  
Index: loncom/auth/lonroles.pm
diff -u loncom/auth/lonroles.pm:1.182 loncom/auth/lonroles.pm:1.183
--- loncom/auth/lonroles.pm:1.182	Sat Jan 26 16:12:32 2008
+++ loncom/auth/lonroles.pm	Tue Jan 29 20:18:58 2008
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # User Roles Screen
 #
-# $Id: lonroles.pm,v 1.182 2008/01/26 21:12:32 www Exp $
+# $Id: lonroles.pm,v 1.183 2008/01/30 01:18:58 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -134,10 +134,12 @@
                     last;
                 }
 # Is this a recent ad-hoc CA-role?
-                if (my ($domain,$coursenum) =
-		    ($envkey =~ m-^form\.ca\./($match_domain)/($match_courseid)$-)) {
-                    if ($dcroles{$domain}) {
-                        &check_privs($domain,$coursenum,$then,$now,'ca');
+                if (my ($domain,$user) =
+		    ($envkey =~ m-^form\.ca\./($match_domain)/($match_username)$-)) {
+                    if (($dcroles{$domain}) && \
(&is_author_homeserver($user,$domain))) { +                        \
&check_privs($domain,$user,$then,$now,'ca'); +                    } else {
+                        delete($env{$envkey});
                     }
                     last;
                 }
@@ -147,7 +149,7 @@
                     if ($dcroles{$domain}) {
                         my $user=$env{'form.adhoccauname.'.$domain};
                         if (!$user) { $user=$env{'form.adhoccaunamerecent.'.$domain} \
                };
-                        if (($user) && ($user=~/$match_username/)) { 
+                        if (($user) && ($user=~/$match_username/) && \
(&is_author_homeserver($user,$domain))) {   \
&check_privs($domain,$user,$then,$now,'ca');  $env{'form.ca./'.$domain.'/'.$user}=1;
 		       }
@@ -905,6 +907,20 @@
     return $roletext;
 }
 
+sub is_author_homeserver {
+    my ($uname,$udom)=@_;
+    my $home = &Apache::lonnet::homeserver($uname,$udom);
+    my @ids=&Apache::lonnet::current_machine_ids();
+    foreach my $id (@ids) { 
+       if ($id eq $home) { 
+          if (-e "/home/".$uname."/public_html") {
+             return 1;
+          }
+       }
+    }
+    return 0;
+}
+
 sub check_privs {
     my ($cdom,$cnum,$then,$now,$checkrole) = @_;
     my $cckey = 'user.role.'.$checkrole.'./'.$cdom.'/'.$cnum; 


_______________________________________________
LON-CAPA-cvs mailing list
LON-CAPA-cvs@mail.lon-capa.org
http://mail.lon-capa.org/mailman/listinfo/lon-capa-cvs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic