Changed page privileges to a more intuitive system.

This commit is contained in:
JT Smith 2003-02-03 03:32:11 +00:00
parent f234b63317
commit 5a218e3feb
6 changed files with 55 additions and 90 deletions

View file

@ -36,7 +36,7 @@ our @EXPORT = qw(&www_viewMessageLogMessage &www_viewMessageLog &www_viewProfile
sub _accountOptions {
my ($output);
$output = '<div class="accountOptions"><ul>';
if (WebGUI::Privilege::isInGroup(3) || WebGUI::Privilege::isInGroup(4) || WebGUI::Privilege::isInGroup(5) || WebGUI::Privilege::isInGroup(6)) {
if (WebGUI::Privilege::isInGroup(4) || WebGUI::Privilege::isInGroup(5) || WebGUI::Privilege::isInGroup(6) || WebGUI::Privilege::isInGroup(8)) {
if ($session{var}{adminOn}) {
$output .= '<li><a href="'.WebGUI::URL::page('op=switchOffAdmin').'">'.
WebGUI::International::get(12).'</a>';

View file

@ -57,13 +57,8 @@ sub _recursePageTree {
title,
styleId,
ownerId,
ownerView,
ownerEdit,
groupId,
groupView,
groupEdit,
worldView,
worldEdit,
groupIdView,
groupIdEdit,
sequenceNumber,
metaTags,
urlizedTitle,
@ -85,13 +80,8 @@ sub _recursePageTree {
".quote($package{title}).",
$newParent{styleId},
$session{user}{userId},
$newParent{ownerView},
$newParent{ownerEdit},
$newParent{groupId},
$newParent{groupView},
$newParent{groupEdit},
$newParent{worldView},
$newParent{worldEdit},
$newParent{groupIdView},
$newParent{groupIdEdit},
$sequenceNumber,
".quote($package{metaTags}).",
".quote($urlizedTitle).",

View file

@ -33,10 +33,8 @@ sub _recursivelyChangePrivileges {
$sth = WebGUI::SQL->read("select pageId from page where parentId=$_[0]");
while (($pageId) = $sth->array) {
WebGUI::SQL->write("update page set startDate=$session{form}{startDate}, endDate=$session{form}{endDate},
ownerId=$session{form}{ownerId}, ownerView=$session{form}{ownerView},
ownerEdit=$session{form}{ownerEdit}, groupId='$session{form}{groupId}', groupView=$session{form}{groupView},
groupEdit=$session{form}{groupEdit}, worldView=$session{form}{worldView}, worldEdit=$session{form}{worldEdit}
where pageId=$pageId");
ownerId=$session{form}{ownerId}, groupIdView=$session{form}{groupIdView},
groupIdEdit=$session{form}{groupIdEdit} where pageId=$pageId");
_recursivelyChangePrivileges($pageId);
}
$sth->finish;
@ -222,8 +220,6 @@ sub www_editPage {
$page{title} = $page{menuTitle} = $page{urlizedTitle} = $page{synopsis} = '';
$page{parentId} = $session{form}{npp};
$page{ownerId} = $session{user}{userId};
$page{ownerEdit} = 1;
$page{ownerView} = 1;
} else {
%page = %{$session{page}};
($childCount) = WebGUI::SQL->quickArray("select count(*) from page where parentId=$page{pageId}");
@ -335,35 +331,27 @@ sub www_editPage {
-value=>$page{endDate},
-uiLevel=>9
);
%hash = WebGUI::SQL->buildHash("select users.userId,users.username from users,groupings
where (groupings.groupId=4 or groupings.groupId=3) and groupings.userId=users.userId
order by users.username");
if (WebGUI::Privilege::isInGroup(3)) {
$subtext = ' &nbsp; <a href="'.WebGUI::URL::page('op=listUsers').'">'
.WebGUI::International::get(7).'</a>';
} else {
$subtext = "";
}
my $clause;
if (WebGUI::Privilege::isInGroup(3)) {
$clause = "userId<>1 and status='Active'";
} else {
$clause = "userId=$page{ownerId}";
}
my $users = WebGUI::SQL->buildHashRef("select userId,username from users where $clause order by username");
$f->select(
-name=>"ownerId",
-options=>\%hash,
-options=>$users,
-label=>WebGUI::International::get(108),
-value=>[$page{ownerId}],
-subtext=>$subtext,
-uiLevel=>9
);
$f->yesNo(
-name=>"ownerView",
-label=>WebGUI::International::get(109),
-value=>$page{ownerView},
-uiLevel=>9
);
$f->yesNo(
-name=>"ownerEdit",
-label=>WebGUI::International::get(110),
-value=>$page{ownerEdit},
-uiLevel=>9
);
if (WebGUI::Privilege::isInGroup(3)) {
$subtext = ' &nbsp; <a href="'.WebGUI::URL::page('op=listGroups').'">'
.WebGUI::International::get(5).'</a>';
@ -371,35 +359,20 @@ sub www_editPage {
$subtext = "";
}
$f->group(
-name=>"groupId",
-label=>WebGUI::International::get(111),
-value=>[$page{groupId}],
-name=>"groupIdView",
-label=>WebGUI::International::get(872),
-value=>[$page{groupIdView}],
-subtext=>$subtext,
-uiLevel=>9
);
$f->yesNo(
-name=>"groupView",
-label=>WebGUI::International::get(112),
-value=>$page{groupView},
-uiLevel=>9
);
$f->yesNo(
-name=>"groupEdit",
-label=>WebGUI::International::get(113),
-value=>$page{groupEdit},
-uiLevel=>9);
$f->yesNo(
-name=>"worldView",
-label=>WebGUI::International::get(114),
-value=>$page{worldView},
-uiLevel=>9
);
$f->yesNo(
-name=>"worldEdit",
-label=>WebGUI::International::get(115),
-value=>$page{worldEdit},
-uiLevel=>9
);
$f->group(
-name=>"groupIdEdit",
-label=>WebGUI::International::get(871),
-value=>[$page{groupIdEdit}],
-subtext=>$subtext,
-excludeGroups=>[1,7],
-uiLevel=>9
);
if ($childCount) {
$f->yesNo(
-name=>"recursePrivs",
@ -417,7 +390,8 @@ sub www_editPage {
gotoNewPage=>WebGUI::International::get(823),
backToPage=>WebGUI::International::get(847)
},
-value=>"gotoNewPage"
-value=>"gotoNewPage",
-uiLevel=>1
);
}
$f->submit;
@ -454,13 +428,8 @@ sub www_editPageSave {
title=".quote($session{form}{title}).",
styleId=$session{form}{styleId},
ownerId=$session{form}{ownerId},
ownerView=$session{form}{ownerView},
ownerEdit=$session{form}{ownerEdit},
groupId='$session{form}{groupId}',
groupView=$session{form}{groupView},
groupEdit=$session{form}{groupEdit},
worldView=$session{form}{worldView},
worldEdit=$session{form}{worldEdit},
groupIdView=$session{form}{groupIdView},
groupIdEdit=$session{form}{groupIdEdit},
startDate=$session{form}{startDate},
endDate=$session{form}{endDate},
metaTags=".quote($session{form}{metaTags}).",

View file

@ -16,6 +16,7 @@ package WebGUI::Privilege;
use strict;
use Tie::CPHash;
use WebGUI::DateTime;
use WebGUI::International;
use WebGUI::Operation::Account ();
use WebGUI::Session;
@ -96,21 +97,16 @@ The unique identifier for the page that you wish to check the privileges on. Def
=cut
sub canEditPage {
my ($isContentManager,%page);
my (%page);
tie %page, 'Tie::CPHash';
if ($_[0] ne "") {
%page = WebGUI::SQL->quickHash("select ownerId,ownerEdit,worldEdit,groupId,groupEdit from page where pageId=$_[0]");
%page = WebGUI::SQL->quickHash("select ownerId,groupIdEdit from page where pageId=$_[0]");
} else {
%page = %{$session{page}};
}
$isContentManager = isInGroup(4);
if ($page{worldEdit} && $isContentManager) {
if ($session{user}{userId} == $page{ownerId}) {
return 1;
} elsif ($session{user}{userId} eq $page{ownerId} && $page{ownerEdit} && $isContentManager) {
return 1;
} elsif (isInGroup($page{groupId}) && $page{groupEdit} && $isContentManager) {
return 1;
} elsif (isInGroup(3)) { # admin check
} elsif (isInGroup($page{groupIdEdit})) {
return 1;
} else {
return 0;
@ -139,20 +135,15 @@ sub canViewPage {
if ($_[0] eq "") {
%page = %{$session{page}};
} else {
%page = WebGUI::SQL->quickHash("select ownerId,ownerView,groupId,groupView,worldView,startDate,endDate
from page where pageId=$_[0]");
%page = WebGUI::SQL->quickHash("select ownerId,groupIdView,startDate,endDate from page where pageId=$_[0]");
}
if ($page{startDate} < time() && $page{endDate} > time()) {
$inDateRange = 1;
}
if ($page{worldView} && $inDateRange) {
if ($session{user}{userId} == $page{ownerId}) {
return 1;
} elsif ($session{user}{userId} eq $page{ownerId} && $page{ownerView} && $inDateRange) {
} elsif (isInGroup($page{groupIdView}) && $inDateRange) {
return 1;
} elsif (isInGroup($page{groupId}) && $page{groupView} && $inDateRange) {
return 1;
} elsif (isInGroup(3)) { # admin check
return 1;
} elsif (canEditPage($_[0])) {
return 1;
} else {