version 1.121, 2001/04/16 11:46:22
|
version 1.122, 2001/04/16 23:16:31
|
Line 28
|
Line 28
|
# revokecustomrole (udom,uname,url,rdom,rnam,rolename) : Revoke a custom role |
# revokecustomrole (udom,uname,url,rdom,rnam,rolename) : Revoke a custom role |
# appenv(hash) : adds hash to session environment |
# appenv(hash) : adds hash to session environment |
# delenv(varname) : deletes all environment entries starting with varname |
# delenv(varname) : deletes all environment entries starting with varname |
# store(hash) : stores hash permanently for this url |
# store(hashref,symb,courseid,udom,uname,homeserver) |
# cstore(hash) : critical store |
# : stores hash permanently for this url |
# restore : returns hash for this url |
# hashref needs to be given, and should be a \%hashname |
|
# the remaining args aren't required and if they aren't |
|
# passed or are '' they will be derived from the ENV |
|
# cstore(hashref,symb,courseid,udom,uname,homeserver) |
|
# : same as store but uses the critical interface to |
|
# guarentee a store |
|
# restore(symb,courseid,udom,uname,homeserver) |
|
# : returns hash for this symb, all args are optional |
|
# if they aren't given they will be derived from the current |
|
# enviroment |
# eget(namesp,array) : returns hash with keys from array filled in from namesp |
# eget(namesp,array) : returns hash with keys from array filled in from namesp |
# get(namesp,array) : returns hash with keys from array filled in from namesp |
# get(namesp,array) : returns hash with keys from array filled in from namesp |
# del(namesp,array) : deletes keys out of array from namesp |
# del(namesp,array) : deletes keys out of array from namesp |
Line 677 sub devalidate {
|
Line 686 sub devalidate {
|
# ----------------------------------------------------------------------- Store |
# ----------------------------------------------------------------------- Store |
|
|
sub store { |
sub store { |
my %storehash=@_; |
my ($storehash,$symb,$namespace,$domain,$stuname,$home) = @_; |
my $symb; |
if (!$symb) { unless ($symb=&symbread()) { return ''; } } |
unless ($symb=&symbread()) { return ''; } |
|
|
|
&devalidate($symb); |
&devalidate($symb); |
|
|
$symb=escape($symb); |
$symb=escape($symb); |
my $namespace; |
if (!$namespace) { unless ($namespace=$ENV{'request.course.id'}) { return ''; } } |
unless ($namespace=$ENV{'request.course.id'}) { return ''; } |
if (!$domain) { $domain=$ENV{'user.domain'}; } |
|
if (!$stuname) { $stuname=$ENV{'user.name'}; } |
|
if (!$home) { $home=$ENV{'user.home'}; } |
my $namevalue=''; |
my $namevalue=''; |
map { |
map { |
$namevalue.=escape($_).'='.escape($storehash{$_}).'&'; |
$namevalue.=escape($_).'='.escape($$storehash{$_}).'&'; |
} keys %storehash; |
} keys %$storehash; |
$namevalue=~s/\&$//; |
$namevalue=~s/\&$//; |
return reply( |
return critical("store:$domain:$stuname:$namespace:$symb:$namevalue","$home"); |
"store:$ENV{'user.domain'}:$ENV{'user.name'}:$namespace:$symb:$namevalue", |
|
"$ENV{'user.home'}"); |
|
} |
} |
|
|
# -------------------------------------------------------------- Critical Store |
# -------------------------------------------------------------- Critical Store |
|
|
sub cstore { |
sub cstore { |
my %storehash=@_; |
my ($storehash,$symb,$namespace,$domain,$stuname,$home) = @_; |
my $symb; |
if (!$symb) { unless ($symb=&symbread()) { return ''; } } |
unless ($symb=&symbread()) { return ''; } |
|
|
|
&devalidate($symb); |
&devalidate($symb); |
|
|
$symb=escape($symb); |
$symb=escape($symb); |
my $namespace; |
if (!$namespace) { unless ($namespace=$ENV{'request.course.id'}) { return ''; } } |
unless ($namespace=$ENV{'request.course.id'}) { return ''; } |
if (!$domain) { $domain=$ENV{'user.domain'}; } |
|
if (!$stuname) { $stuname=$ENV{'user.name'}; } |
|
if (!$home) { $home=$ENV{'user.home'}; } |
|
|
my $namevalue=''; |
my $namevalue=''; |
map { |
map { |
$namevalue.=escape($_).'='.escape($storehash{$_}).'&'; |
$namevalue.=escape($_).'='.escape($$storehash{$_}).'&'; |
} keys %storehash; |
} keys %$storehash; |
$namevalue=~s/\&$//; |
$namevalue=~s/\&$//; |
return critical( |
return critical("store:$domain:$stuname:$namespace:$symb:$namevalue","$home"); |
"store:$ENV{'user.domain'}:$ENV{'user.name'}:$namespace:$symb:$namevalue", |
|
"$ENV{'user.home'}"); |
|
} |
} |
|
|
# --------------------------------------------------------------------- Restore |
# --------------------------------------------------------------------- Restore |
|
|
sub restore { |
sub restore { |
my $symb; |
my ($symb,$namespace,$domain,$stuname,$home) = @_; |
unless ($symb=escape(&symbread())) { return ''; } |
if (!$symb) { |
my $namespace; |
unless ($symb=escape(&symbread())) { return ''; } |
unless ($namespace=$ENV{'request.course.id'}) { return ''; } |
} else { |
my $answer=reply( |
$symb=&escape($symb); |
"restore:$ENV{'user.domain'}:$ENV{'user.name'}:$namespace:$symb", |
} |
"$ENV{'user.home'}"); |
if (!$namespace) { unless ($namespace=$ENV{'request.course.id'}) { return ''; } } |
|
if (!$domain) { $domain=$ENV{'user.domain'}; } |
|
if (!$stuname) { $stuname=$ENV{'user.name'}; } |
|
if (!$home) { $home=$ENV{'user.home'}; } |
|
my $answer=&reply("restore:$domain:$stuname:$namespace:$symb","$home"); |
|
|
my %returnhash=(); |
my %returnhash=(); |
map { |
map { |
my ($name,$value)=split(/\=/,$_); |
my ($name,$value)=split(/\=/,$_); |
Line 1635 sub EXT {
|
Line 1648 sub EXT {
|
if ($realm eq 'user') { |
if ($realm eq 'user') { |
# --------------------------------------------------------------- user.resource |
# --------------------------------------------------------------- user.resource |
if ($space eq 'resource') { |
if ($space eq 'resource') { |
my %restored=&restore; |
my %restored=&restore(); |
return $restored{$qualifierrest}; |
return $restored{$qualifierrest}; |
# ----------------------------------------------------------------- user.access |
# ----------------------------------------------------------------- user.access |
} elsif ($space eq 'access') { |
} elsif ($space eq 'access') { |