Changed page privileges to a more intuitive system.
This commit is contained in:
parent
f234b63317
commit
5a218e3feb
6 changed files with 55 additions and 90 deletions
|
|
@ -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>';
|
||||
|
|
|
|||
|
|
@ -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).",
|
||||
|
|
|
|||
|
|
@ -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 = ' <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 = ' <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}).",
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue