[LON-CAPA-cvs] cvs: loncom /lonnet/perl lonnet.pm
www
lon-capa-cvs@mail.lon-capa.org
Sat, 22 Mar 2003 21:23:35 -0000
www Sat Mar 22 16:23:35 2003 EDT
Modified files:
/loncom/lonnet/perl lonnet.pm
Log:
Further work on keyed access to courses
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.344 loncom/lonnet/perl/lonnet.pm:1.345
--- loncom/lonnet/perl/lonnet.pm:1.344 Fri Mar 21 21:13:08 2003
+++ loncom/lonnet/perl/lonnet.pm Sat Mar 22 16:23:35 2003
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.344 2003/03/22 02:13:08 www Exp $
+# $Id: lonnet.pm,v 1.345 2003/03/22 21:23:35 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -598,6 +598,32 @@
$ENV{'course.'.$ENV{'request.course.id'}.'.num'} unless (defined($cnum));
$udom=$ENV{'user.name'} unless (defined($udom));
$uname=$ENV{'user.domain'} unless (defined($uname));
+ my %existing=&get('accesskeys',[$ckey],$cdom,$cnum);
+ if (($existing{$ckey}=~/^\d+$/) || # has time - new key
+ ($existing{$ckey} eq $udom.':'.$uname)) { # this should not happen,
+ # unless something went wrong
+ # the first time around
+# ready to assign
+ } elsif (!$existing{$ckey}) {
+ if (&put('accesskey',{$ckey=>$udom.':'.$uname},$cdom,$cnum) eq 'ok') {
+# key now belongs to user
+ my $envkey='key.'.$cdom.'.'.$cnum;
+ if (&put('environment',{$envkey => $ckey}) eq 'ok') {
+ &appenv('environment.'.$envkey => $ckey);
+ return 'ok';
+ } else {
+ return
+ 'error: Count not permanently assign key, will need to be re-entered later.';
+ }
+ } else {
+ return 'error: Could not assign key, try again later.';
+ }
+# the key does not exist
+ return 'error: The key does not exist';
+ } else {
+# the key is somebody else's
+ return 'error: The key is already in use';
+ }
}
# ------------------------------------------------------ Generate a set of keys
@@ -608,6 +634,7 @@
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'} unless (defined($cdom));
$cnum=
$ENV{'course.'.$ENV{'request.course.id'}.'.num'} unless (defined($cnum));
+ unless (&allowed('ccc',$cdom)) { return 0; }
unless (($cdom) && ($cnum)) { return 0; }
if ($number>10000) { return 0; }
sleep(2); # make sure don't get same seed twice
@@ -643,6 +670,8 @@
$ENV{'course.'.$ENV{'request.course.id'}.'.num'} unless (defined($cnum));
$udom=$ENV{'user.name'} unless (defined($udom));
$uname=$ENV{'user.domain'} unless (defined($uname));
+ my %existing=&get('accesskeys',[$ckey],$cdom,$cnum);
+ return ($existing{$ckey} eq $udom.':'.$uname);
}
# ------------------------------------- Find the section of student in a course