From ef120fb06beef4f160db2fed238226f3b93dffb3 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Tue, 16 Sep 2008 22:32:36 +0000 Subject: [PATCH] Added isVisitor, isAdmin, and isRegistered methods to User object instead of hard coding checks everywhere with group ids. And updated the code base to match. --- docs/changelog/7.x.x.txt | 3 ++ lib/WebGUI/Affiliate.pm | 6 +-- lib/WebGUI/Asset.pm | 4 +- lib/WebGUI/Asset/Event.pm | 2 +- lib/WebGUI/Asset/File/GalleryFile.pm | 2 +- lib/WebGUI/Asset/FilePile.pm | 4 +- lib/WebGUI/Asset/Post.pm | 4 +- lib/WebGUI/Asset/Post/Thread.pm | 8 ++-- lib/WebGUI/Asset/RichEdit.pm | 2 +- lib/WebGUI/Asset/Shortcut.pm | 2 +- lib/WebGUI/Asset/WikiPage.pm | 2 +- lib/WebGUI/Asset/Wobject/Collaboration.pm | 8 ++-- .../Asset/Wobject/Collaboration/Newsletter.pm | 4 +- lib/WebGUI/Asset/Wobject/Dashboard.pm | 12 ++--- .../Asset/Wobject/EventManagementSystem.pm | 2 +- lib/WebGUI/Asset/Wobject/Folder.pm | 6 +-- lib/WebGUI/Asset/Wobject/Matrix.pm | 14 +++--- lib/WebGUI/Asset/Wobject/MessageBoard.pm | 6 +-- lib/WebGUI/Asset/Wobject/Navigation.pm | 2 +- lib/WebGUI/AssetClipboard.pm | 4 +- lib/WebGUI/AssetTrash.pm | 2 +- lib/WebGUI/Auth.pm | 46 +++++++++++++++++-- lib/WebGUI/Auth/LDAP.pm | 8 ++-- lib/WebGUI/Auth/WebGUI.pm | 18 ++++---- lib/WebGUI/Form/Attachments.pm | 2 +- lib/WebGUI/Form/Control.pm | 2 +- lib/WebGUI/Form/DatabaseLink.pm | 2 +- lib/WebGUI/Form/Group.pm | 2 +- lib/WebGUI/Form/LdapLink.pm | 2 +- lib/WebGUI/Form/User.pm | 2 +- lib/WebGUI/Macro/GroupAdd.pm | 2 +- lib/WebGUI/Macro/GroupDelete.pm | 2 +- lib/WebGUI/Macro/LoginToggle.pm | 2 +- lib/WebGUI/Operation/Auth.pm | 2 +- lib/WebGUI/Operation/Friends.pm | 14 +++--- lib/WebGUI/Operation/Inbox.pm | 12 ++--- lib/WebGUI/Operation/Invite.pm | 6 +-- lib/WebGUI/Operation/Profile.pm | 8 ++-- lib/WebGUI/Operation/Settings.pm | 4 +- lib/WebGUI/Operation/Shared.pm | 2 +- lib/WebGUI/Operation/SpellCheck.pm | 2 +- lib/WebGUI/Operation/User.pm | 8 ++-- lib/WebGUI/Operation/Workflow.pm | 2 +- lib/WebGUI/Session/Privilege.pm | 2 +- lib/WebGUI/Session/Style.pm | 2 +- lib/WebGUI/Shop/Admin.pm | 4 +- lib/WebGUI/Shop/Pay.pm | 2 +- lib/WebGUI/Shop/PayDriver.pm | 4 +- lib/WebGUI/Shop/ShipDriver.pm | 4 +- lib/WebGUI/User.pm | 43 ++++++++++++++++- .../Workflow/Activity/SendNewsletters.pm | 2 +- t/User.t | 7 ++- 52 files changed, 201 insertions(+), 118 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index f17b5a3ed..ac5e76695 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -5,6 +5,9 @@ - rfe: Process Macros in HTTP Proxy's URL - rfe: TimeZone for the User Profiles displays incorrectly after installation - rfe: choice of type of redirect on redirect assets + - Added isVisitor, isAdmin, and isRegistered methods to User object instead + of hard coding checks everywhere with group ids. And updated the code base + to match. - rfe: Town Hall: EMS badge early bird field/discount - rewrite macro parser, improving speed and making parameter parsing more sane - Made the charset metatag the highest thing in the head block. diff --git a/lib/WebGUI/Affiliate.pm b/lib/WebGUI/Affiliate.pm index de3a2e7fb..9af5e16de 100644 --- a/lib/WebGUI/Affiliate.pm +++ b/lib/WebGUI/Affiliate.pm @@ -52,11 +52,11 @@ A reference to the current session. sub grabReferral { my $session = shift; - if ($session->user->userId ne "1" && $session->user->referringAffiliate) { + if ($session->user->isRegistered && $session->user->referringAffiliate) { return ""; - } elsif ($session->user->userId ne "1" && (($session->user->referringAffiliate eq "0" && $session->form->process("referringAffiliate")) || $session->form->process("affiliateId"))) { + } elsif ($session->user->isRegistered && (($session->user->referringAffiliate eq "0" && $session->form->process("referringAffiliate")) || $session->form->process("affiliateId"))) { $session->user->referringAffiliate($session->scratch->get("referringAffiliate")); - } elsif ($session->user->userId ne "1") { + } elsif ($session->user->isRegistered) { $session->user->referringAffiliate(1); } elsif ($session->form->process("affiliateId") ne "") { $session->scratch->set("referringAffiliate",$session->form->process("affiliateId")); diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index ee99ff7e0..527420a9b 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -778,7 +778,7 @@ sub getAssetAdderLinks { $self->session->errorHandler->error("Couldn't get UI level of ".$class.". Root cause: ".$@); next; } - next if ($uiLevel > $self->session->user->profileField("uiLevel"));# && !$self->session->user->isInGroup(3)); + next if ($uiLevel > $self->session->user->profileField("uiLevel"));# && !$self->session->user->isAdmin); my $canAdd = eval{$class->canAdd($self->session)}; if ($@) { $self->session->errorHandler->error("Couldn't determine if user can add ".$class." because ".$@); @@ -1050,7 +1050,7 @@ sub getEditForm { fieldType=>$fieldType ); } - if ($self->session->user->isInGroup(3)) { + if ($self->session->user->isAdmin) { # Add a quick link to add field $tabform->getTab("meta")->readOnly( -value=>'

'. diff --git a/lib/WebGUI/Asset/Event.pm b/lib/WebGUI/Asset/Event.pm index f25b7a39b..6d01f1de4 100644 --- a/lib/WebGUI/Asset/Event.pm +++ b/lib/WebGUI/Asset/Event.pm @@ -2444,7 +2444,7 @@ sub www_view { return $self->session->privilege->noAccess() unless $self->canView; my $check = $self->checkView; return $check if (defined $check); - $self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->userId eq "1"); + $self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->isVisitor); $self->session->http->sendHeader; $self->prepareView; my $style = $self->getParent->processStyle("~~~"); diff --git a/lib/WebGUI/Asset/File/GalleryFile.pm b/lib/WebGUI/Asset/File/GalleryFile.pm index 04a2dfaad..e0ad40ae9 100644 --- a/lib/WebGUI/Asset/File/GalleryFile.pm +++ b/lib/WebGUI/Asset/File/GalleryFile.pm @@ -636,7 +636,7 @@ sub processCommentEditForm { : 0 ; - my $visitorIp = $session->user->userId eq "1" + my $visitorIp = $session->user->isVisitor ? $session->env->get("REMOTE_ADDR") : undef ; diff --git a/lib/WebGUI/Asset/FilePile.pm b/lib/WebGUI/Asset/FilePile.pm index f15e434e8..59cfa8373 100644 --- a/lib/WebGUI/Asset/FilePile.pm +++ b/lib/WebGUI/Asset/FilePile.pm @@ -91,13 +91,13 @@ sub edit { ); $tabform->addTab("security",$i18n->get(107,"Asset"),6); my $subtext; - if ($self->session->user->isInGroup(3)) { + if ($self->session->user->isAdmin) { $subtext = $self->session->icon->manage('op=listUsers'); } else { $subtext = ""; } my $clause; - if ($self->session->user->isInGroup(3)) { + if ($self->session->user->isAdmin) { my $group = WebGUI::Group->new($self->session,4); my $contentManagers = $group->getAllUsers(); push (@$contentManagers, $self->session->user->userId); diff --git a/lib/WebGUI/Asset/Post.pm b/lib/WebGUI/Asset/Post.pm index e5a44de3d..772eac26e 100644 --- a/lib/WebGUI/Asset/Post.pm +++ b/lib/WebGUI/Asset/Post.pm @@ -627,7 +627,7 @@ sub hasRated { my $self = shift; return 1 if $self->isPoster; my $flag = 0; - if ($self->session->user->userId eq "1") { + if ($self->session->user->isVisitor) { ($flag) = $self->session->db->quickArray("select count(*) from Post_rating where assetId=? and ipAddress=?",[$self->getId, $self->session->env->getIp]); } else { ($flag) = $self->session->db->quickArray("select count(*) from Post_rating where assetId=? and userId=?",[$self->getId, $self->session->user->userId]); @@ -1255,7 +1255,7 @@ sub www_edit { $var{'form.footer' } = WebGUI::Form::formFooter($session); $var{'usePreview' } = $self->getThread->getParent->get("usePreview"); $var{'user.isModerator'} = $self->getThread->getParent->canModerate; - $var{'user.isVisitor' } = ($user->userId eq '1'); + $var{'user.isVisitor' } = ($user->isVisitor); $var{'visitorName.form'} = WebGUI::Form::text($session, { name => "visitorName", value => $form->process('visitorName') || $self->getValue("visitorName") diff --git a/lib/WebGUI/Asset/Post/Thread.pm b/lib/WebGUI/Asset/Post/Thread.pm index bd16a5095..674152488 100644 --- a/lib/WebGUI/Asset/Post/Thread.pm +++ b/lib/WebGUI/Asset/Post/Thread.pm @@ -854,7 +854,7 @@ sub view { my $currentPost = shift || $self; $self->markRead; $self->incrementViews unless ($self->session->form->process("func") eq 'rate'); - if ($self->session->user->userId eq '1' && !$self->session->form->process("layout")) { + if ($self->session->user->isVisitor && !$self->session->form->process("layout")) { my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get; return $out if $out; } @@ -864,7 +864,7 @@ sub view { $self->getParent->appendTemplateLabels($var); $var->{'karmaIsEnabled' } = $self->session->setting->get("useKarma"); - $var->{'user.isVisitor' } = ($self->session->user->userId eq '1'); + $var->{'user.isVisitor' } = ($self->session->user->isVisitor); $var->{'user.isModerator' } = $self->getParent->canModerate; $var->{'user.canPost' } = $self->getParent->canPost; $var->{'user.canReply' } = $self->canReply; @@ -961,7 +961,7 @@ sub view { $var->{'collaboration.description'} = $self->getParent->get("description"); my $out = $self->processTemplate($var,undef,$self->{_viewTemplate}); - if ($self->session->user->userId eq '1' && !$self->session->form->process("layout")) { + if ($self->session->user->isVisitor && !$self->session->form->process("layout")) { WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->getThread->getParent->get("visitorCacheTimeout")); } return $out; @@ -1158,7 +1158,7 @@ sub www_view { return $self->session->privilege->noAccess() unless $self->canView; my $check = $self->checkView; return $check if (defined $check); - $self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->userId eq "1"); + $self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->isVisitor); $self->session->http->sendHeader; $self->prepareView; my $style = $self->getParent->processStyle("~~~"); diff --git a/lib/WebGUI/Asset/RichEdit.pm b/lib/WebGUI/Asset/RichEdit.pm index 30531f11e..cef035321 100644 --- a/lib/WebGUI/Asset/RichEdit.pm +++ b/lib/WebGUI/Asset/RichEdit.pm @@ -487,7 +487,7 @@ sub getRichEditor { theme_advanced_toolbar_location => $self->getValue("toolbarLocation"), theme_advanced_statusbar_location => "bottom", valid_elements => $self->getValue("validElements"), - wg_userIsVisitor => $self->session->user->userId eq '1' ? JSON::true() : JSON::false(), + wg_userIsVisitor => $self->session->user->isVisitor ? JSON::true() : JSON::false(), ); foreach my $button (@toolbarButtons) { if ($button eq "spellchecker" && $self->session->config->get('availableDictionaries')) { diff --git a/lib/WebGUI/Asset/Shortcut.pm b/lib/WebGUI/Asset/Shortcut.pm index b2c8dceec..e98423902 100644 --- a/lib/WebGUI/Asset/Shortcut.pm +++ b/lib/WebGUI/Asset/Shortcut.pm @@ -771,7 +771,7 @@ sub www_edit { sub www_getUserPrefsForm { #This is a form retrieved by "ajax". my $self = shift; - return 'You are no longer logged in' if $self->session->user->userId eq '1'; + return 'You are no longer logged in' if $self->session->user->isVisitor; return 'You are not allowed to personalize this Dashboard.' unless $self->getParent->canPersonalize; my $output; my @fielden = $self->getPrefFieldsToShow; diff --git a/lib/WebGUI/Asset/WikiPage.pm b/lib/WebGUI/Asset/WikiPage.pm index 010fac729..3bcce40cd 100644 --- a/lib/WebGUI/Asset/WikiPage.pm +++ b/lib/WebGUI/Asset/WikiPage.pm @@ -424,7 +424,7 @@ sub www_view { $self->update({ views => $self->get('views')+1 }); # TODO: This should probably exist, as the CS has one. # $self->session->http->setCacheControl($self->getWiki->get('visitorCacheTimeout')) -# if ($self->session->user->userId eq '1'); +# if ($self->session->user->isVisitor); $self->session->http->sendHeader; $self->prepareView; return $self->getWiki->processStyle($self->view); diff --git a/lib/WebGUI/Asset/Wobject/Collaboration.pm b/lib/WebGUI/Asset/Wobject/Collaboration.pm index a1e29f16a..66b25791c 100644 --- a/lib/WebGUI/Asset/Wobject/Collaboration.pm +++ b/lib/WebGUI/Asset/Wobject/Collaboration.pm @@ -58,7 +58,7 @@ sub _visitorCacheKey { #------------------------------------------------------------------- sub _visitorCacheOk { my $self = shift; - return ($self->session->user->userId eq '1' + return ($self->session->user->isVisitor && !$self->session->form->process('sortBy')); } @@ -308,7 +308,7 @@ sub canSubscribe { ? WebGUI::User->new( $session, $userId ) : $self->session->user ; - return ($user->userId ne "1" && $self->canView( $userId ) ); + return ($user->isRegistered && $self->canView( $userId ) ); } #------------------------------------------------------------------- @@ -1063,7 +1063,7 @@ sub getViewTemplateVars { $var{"add.url"} = $self->getNewThreadUrl; $var{"rss.url"} = $self->getRssUrl; $var{'user.isModerator'} = $self->canModerate; - $var{'user.isVisitor'} = ($self->session->user->userId eq '1'); + $var{'user.isVisitor'} = ($self->session->user->isVisitor); $var{'user.isSubscribed'} = $self->isSubscribed; $var{'sortby.title.url'} = $self->getSortByUrl("title"); $var{'sortby.username.url'} = $self->getSortByUrl("username"); @@ -1500,7 +1500,7 @@ sub www_unsubscribe { sub www_view { my $self = shift; my $disableCache = ($self->session->form->process("sortBy") ne ""); - $self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->userId eq "1" && !$disableCache); + $self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->isVisitor && !$disableCache); return $self->SUPER::www_view(@_); } diff --git a/lib/WebGUI/Asset/Wobject/Collaboration/Newsletter.pm b/lib/WebGUI/Asset/Wobject/Collaboration/Newsletter.pm index 1be1c32a2..b22cd15d0 100644 --- a/lib/WebGUI/Asset/Wobject/Collaboration/Newsletter.pm +++ b/lib/WebGUI/Asset/Wobject/Collaboration/Newsletter.pm @@ -193,7 +193,7 @@ sub www_edit { #------------------------------------------------------------------- sub www_mySubscriptions { my $self = shift; - return $self->session->privilege->insufficient unless ($self->canView && $self->session->user->userId ne "1"); + return $self->session->privilege->insufficient unless ($self->canView && $self->session->user->isRegistered); my %var = (); my $meta = $self->getMetaDataFields; my @categories = (); @@ -233,7 +233,7 @@ sub www_mySubscriptions { #------------------------------------------------------------------- sub www_mySubscriptionsSave { my $self = shift; - return $self->session->privilege->insufficient unless ($self->canView && $self->session->user->userId ne "1"); + return $self->session->privilege->insufficient unless ($self->canView && $self->session->user->isRegistered); my $subscriptions = $self->session->form->process("subscriptions", "checkList"); $self->setUserSubscriptions($subscriptions); return $self->www_view; diff --git a/lib/WebGUI/Asset/Wobject/Dashboard.pm b/lib/WebGUI/Asset/Wobject/Dashboard.pm index 6b17a2256..32adb5ac0 100644 --- a/lib/WebGUI/Asset/Wobject/Dashboard.pm +++ b/lib/WebGUI/Asset/Wobject/Dashboard.pm @@ -24,14 +24,14 @@ our @ISA = qw(WebGUI::Asset::Wobject); #------------------------------------------------------------------- sub canManage { my $self = shift; - return 0 if $self->session->user->userId eq '1'; + return 0 if $self->session->user->isVisitor; return $self->session->user->isInGroup($self->get("adminsGroupId")); } #------------------------------------------------------------------- sub canPersonalize { my $self = shift; - return 0 if $self->session->user->userId eq '1'; + return 0 if $self->session->user->isVisitor; return $self->session->user->isInGroup($self->get("usersGroupId")); } @@ -273,7 +273,7 @@ sub view { shortcutUrl=>$child->getUrl, canPersonalize=>$self->canPersonalize, showReloadIcon=>$child->{_properties}{showReloadIcon}, - canEditUserPrefs=>(($self->session->user->userId ne '1') && (ref $child eq 'WebGUI::Asset::Shortcut') && (scalar($child->getPrefFieldsToShow) > 0)) + canEditUserPrefs=>(($self->session->user->isRegistered) && (ref $child eq 'WebGUI::Asset::Shortcut') && (scalar($child->getPrefFieldsToShow) > 0)) }); $newStuff .= 'available_dashlets["'.$child->getId.'"]=\''.$child->getUrl.'\';'; @@ -286,7 +286,7 @@ sub view { shortcutUrl=>$child->getUrl, canPersonalize=>$self->canPersonalize, showReloadIcon=>$child->{_properties}{showReloadIcon}, - canEditUserPrefs=>(($self->session->user->userId ne '1') && (ref $child eq 'WebGUI::Asset::Shortcut') && (scalar($child->getPrefFieldsToShow) > 0)) + canEditUserPrefs=>(($self->session->user->isRegistered) && (ref $child eq 'WebGUI::Asset::Shortcut') && (scalar($child->getPrefFieldsToShow) > 0)) }); $newStuff .= 'available_dashlets["'.$child->getId.'"]=\''.$child->getUrl.'\';'; } @@ -309,7 +309,7 @@ sub view { shortcutUrl=>$child->getUrl, showReloadIcon=>$child->{_properties}{showReloadIcon}, canPersonalize=>$self->canPersonalize, - canEditUserPrefs=>(($self->session->user->userId ne '1') && (ref $child eq 'WebGUI::Asset::Shortcut') && (scalar($child->getPrefFieldsToShow) > 0)) + canEditUserPrefs=>(($self->session->user->isRegistered) && (ref $child eq 'WebGUI::Asset::Shortcut') && (scalar($child->getPrefFieldsToShow) > 0)) }); $newStuff .= 'available_dashlets["'.$child->getId.'"]=\''.$child->getUrl.'\';'; } @@ -329,7 +329,7 @@ sub view { #------------------------------------------------------------------- sub www_setContentPositions { my $self = shift; - return 'Visitors cannot save settings' if($self->session->user->userId eq '1'); + return 'Visitors cannot save settings' if($self->session->user->isVisitor); return $self->session->privilege->insufficient() unless ($self->canPersonalize); return 'empty' unless $self->get("isInitialized"); my $dummy = $self->initialize unless $self->get("isInitialized"); diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm index fe79d6e65..3ab4f3a22 100644 --- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm +++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm @@ -1422,7 +1422,7 @@ Displays the badges purchased by the current user, or all users if the user is p sub www_lookupRegistrant { my ($self) = @_; my $session = $self->session; - return $session->privilege->noAccess() unless ($self->canView && $self->session->user->userId ne "1"); + return $session->privilege->noAccess() unless ($self->canView && $self->session->user->isRegistered); # set up template variables my %var = ( diff --git a/lib/WebGUI/Asset/Wobject/Folder.pm b/lib/WebGUI/Asset/Wobject/Folder.pm index 00f167f36..5798e90d1 100644 --- a/lib/WebGUI/Asset/Wobject/Folder.pm +++ b/lib/WebGUI/Asset/Wobject/Folder.pm @@ -194,7 +194,7 @@ sub view { my $self = shift; # Use cached version for visitors - if ($self->session->user->userId eq '1') { + if ($self->session->user->isVisitor) { my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get; return $out if $out; } @@ -258,7 +258,7 @@ sub view { my $out = $self->processTemplate( $vars, undef, $self->{_viewTemplate} ); # Update the cache - if ($self->session->user->userId eq '1') { + if ($self->session->user->isVisitor) { WebGUI::Cache->new($self->session,"view_".$self->getId) ->set($out,$self->get("visitorCacheTimeout")); } @@ -277,7 +277,7 @@ See WebGUI::Asset::Wobject::www_view() for details. sub www_view { my $self = shift; - $self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->userId eq "1"); + $self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->isVisitor); $self->SUPER::www_view(@_); } diff --git a/lib/WebGUI/Asset/Wobject/Matrix.pm b/lib/WebGUI/Asset/Wobject/Matrix.pm index 6e32bcab8..8c4120e2c 100644 --- a/lib/WebGUI/Asset/Wobject/Matrix.pm +++ b/lib/WebGUI/Asset/Wobject/Matrix.pm @@ -293,7 +293,7 @@ sub www_compare { $var{isTooMany} = (scalar(@cmsList)>$max); $var{isTooFew} = (scalar(@cmsList)<2); $var{'compare.form'} = $self->getCompareForm(@cmsList); - $var{'isLoggedIn'} = ($self->session->user->userId ne "1"); + $var{'isLoggedIn'} = ($self->session->user->isRegistered); if ($var{isTooMany} || $var{isTooFew}) { return $self->processStyle($self->processTemplate(\%var,$self->get("compareTemplateId"))); } @@ -985,7 +985,7 @@ sub www_search { $var{isTooFew} = ($count<2); } } - $var{'isLoggedIn'} = ($self->session->user->userId ne "1"); + $var{'isLoggedIn'} = ($self->session->user->isRegistered); $var{'compare.form'} = $self->getCompareForm(@list); $var{'form.header'} = WebGUI::Form::formHeader($self->session,{action=>$self->getUrl}) .WebGUI::Form::hidden($self->session,{ @@ -1032,14 +1032,14 @@ sub www_search { #------------------------------------------------------------------- sub view { my $self = shift; - if ($self->session->user->userId eq '1') { + if ($self->session->user->isVisitor) { my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get; return $out if $out; } my (%var); $var{'compare.form'} = $self->getCompareForm; $var{'search.url'} = $self->getUrl("func=search"); - $var{'isLoggedIn'} = ($self->session->user->userId ne "1"); + $var{'isLoggedIn'} = ($self->session->user->isRegistered); $var{'field.list.url'} = $self->getUrl('func=listFields'); $var{'listing.add.url'} = $self->formatURL("editListing","new"); @@ -1132,7 +1132,7 @@ sub view { } $sth->finish; my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate}); - if ($self->session->user->userId eq '1') { + if ($self->session->user->isVisitor) { WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("visitorCacheTimeout")); } return $out; @@ -1148,7 +1148,7 @@ See WebGUI::Asset::Wobject::www_view() for details. sub www_view { my $self = shift; - $self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->userId eq "1"); + $self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->isVisitor); $self->SUPER::www_view(@_); } @@ -1167,7 +1167,7 @@ sub www_viewDetail { $var{thumbnail} = $storage->getThumbnailUrl($listing->{filename}); } $var{"discussion"} = $forum && $forum->view; - $var{'isLoggedIn'} = ($self->session->user->userId ne "1"); + $var{'isLoggedIn'} = ($self->session->user->isRegistered); if ($self->session->form->process("do") eq "sendEmail" && $self->session->form->process("verify","captcha")) { if ($self->session->form->process("body") ne "") { my $u = WebGUI::User->new($self->session, $listing->{maintainerId}); diff --git a/lib/WebGUI/Asset/Wobject/MessageBoard.pm b/lib/WebGUI/Asset/Wobject/MessageBoard.pm index 0c340ef0a..cd697ccc2 100644 --- a/lib/WebGUI/Asset/Wobject/MessageBoard.pm +++ b/lib/WebGUI/Asset/Wobject/MessageBoard.pm @@ -98,7 +98,7 @@ See WebGUI::Asset::view() for details. sub view { my $self = shift; - if ($self->session->user->userId eq '1') { + if ($self->session->user->isVisitor) { my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get; return $out if $out; } @@ -163,7 +163,7 @@ sub view { $var{forum_loop} = \@forum_loop; my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate}); - if ($self->session->user->userId eq '1') { + if ($self->session->user->isVisitor) { WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("visitorCacheTimeout")); } return $out; @@ -179,7 +179,7 @@ See WebGUI::Asset::Wobject::www_view() for details. sub www_view { my $self = shift; - $self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->userId eq "1"); + $self->session->http->setCacheControl($self->get("visitorCacheTimeout")) if ($self->session->user->isVisitor); $self->SUPER::www_view(@_); } diff --git a/lib/WebGUI/Asset/Wobject/Navigation.pm b/lib/WebGUI/Asset/Wobject/Navigation.pm index 30a5d0176..1a0aa2f4e 100644 --- a/lib/WebGUI/Asset/Wobject/Navigation.pm +++ b/lib/WebGUI/Asset/Wobject/Navigation.pm @@ -521,7 +521,7 @@ sub www_goBackToPage { sub www_preview { my $self = shift; $self->session->var->get("adminOn") = 0; - return $self->session->privilege->insufficient() unless ($self->session->user->isInGroup(3)); + return $self->session->privilege->insufficient() unless ($self->session->user->isAdmin); my $nav = WebGUI::Navigation->new( depth=>$self->session->form->process("depth"), method=>$self->session->form->process("method"), startAt=>$self->session->form->process("startAt"), diff --git a/lib/WebGUI/AssetClipboard.pm b/lib/WebGUI/AssetClipboard.pm index 776433539..5a52d0162 100644 --- a/lib/WebGUI/AssetClipboard.pm +++ b/lib/WebGUI/AssetClipboard.pm @@ -374,7 +374,7 @@ sub www_emptyClipboard { my $self = shift; my $ac = WebGUI::AdminConsole->new($self->session,"clipboard"); return $self->session->privilege->insufficient() unless ($self->session->user->isInGroup(4)); - foreach my $asset (@{$self->getAssetsInClipboard(!($self->session->form->process("systemClipboard") && $self->session->user->isInGroup(3)))}) { + foreach my $asset (@{$self->getAssetsInClipboard(!($self->session->form->process("systemClipboard") && $self->session->user->isAdmin))}) { $asset->trash; } return $self->www_manageClipboard(); @@ -395,7 +395,7 @@ sub www_manageClipboard { return $self->session->privilege->insufficient() unless ($self->session->user->isInGroup(12)); my $i18n = WebGUI::International->new($self->session, "Asset"); my ($header,$limit); - if ($self->session->form->process("systemClipboard") && $self->session->user->isInGroup(3)) { + if ($self->session->form->process("systemClipboard") && $self->session->user->isAdmin) { $header = $i18n->get(966); $ac->addSubmenuItem($self->getUrl('func=manageClipboard'), $i18n->get(949)); $ac->addSubmenuItem($self->getUrl('func=emptyClipboard;systemClipboard=1'), $i18n->get(959), diff --git a/lib/WebGUI/AssetTrash.pm b/lib/WebGUI/AssetTrash.pm index abebc380b..9c1ce8526 100644 --- a/lib/WebGUI/AssetTrash.pm +++ b/lib/WebGUI/AssetTrash.pm @@ -318,7 +318,7 @@ sub www_manageTrash { return $self->session->privilege->insufficient() unless ($self->session->user->isInGroup(12)); my ($header, $limit); $ac->setHelp("trash manage"); - if ($self->session->form->process("systemTrash") && $self->session->user->isInGroup(3)) { + if ($self->session->form->process("systemTrash") && $self->session->user->isAdmin) { $header = $i18n->get(965); $ac->addSubmenuItem($self->getUrl('func=manageTrash'), $i18n->get(10,"WebGUI")); } else { diff --git a/lib/WebGUI/Auth.pm b/lib/WebGUI/Auth.pm index 9dd26c7b2..03324959a 100644 --- a/lib/WebGUI/Auth.pm +++ b/lib/WebGUI/Auth.pm @@ -59,7 +59,7 @@ sub _isDuplicateUsername { my $self = shift; my $username = shift; #Return false if the user is already logged in, but not changing their username. - return 0 if($self->userId ne "1" && $self->session->user->username eq $username); + return 0 if($self->isRegistered && $self->session->user->username eq $username); my ($otherUser) = $self->session->db->quickArray("select count(*) from users where username=".$self->session->db->quote($username)); return 0 if !$otherUser; my $i18n = WebGUI::International->new($self->session); @@ -80,7 +80,7 @@ sub _isValidUsername { my $username = shift; my $error = ""; - return 1 if($self->userId ne "1" && $self->session->user->username eq $username); + return 1 if($self->isRegistered && $self->session->user->username eq $username); my $i18n = WebGUI::International->new($self->session); @@ -360,7 +360,7 @@ Auth method that the form for creating users should call sub deactivateAccount { my $self = shift; my $method = $_[0]; - return $self->session->privilege->vitalComponent() if($self->userId eq '1' || $self->userId eq '3'); + return $self->session->privilege->vitalComponent() if($self->isVisitor || $self->isAdmin); return $self->session->privilege->adminOnly() if(!$self->session->setting->get("selfDeactivation")); my $i18n = WebGUI::International->new($self->session); my %var; @@ -386,7 +386,7 @@ sub deactivateAccountConfirm { # Cannot deactivate "Visitor" or "Admin" users this way return $self->session->privilege->vitalComponent - if $self->userId eq '1' || $self->userId eq '3'; + if $self->isVisitor || $self->isAdmin; my $i18n = WebGUI::International->new($self->session); @@ -675,6 +675,19 @@ sub init { #------------------------------------------------------------------- +=head2 isAdmin () + +Returns 1 if the user is user 3 (admin). + +=cut + +sub isAdmin { + my $self = shift; + return $self->userId eq '3'; +} + +#------------------------------------------------------------------- + =head2 isCallable ( method ) Returns whether or not a method is callable @@ -686,6 +699,31 @@ sub isCallable { return isIn($_[0],@{$self->{callable}}) } +#------------------------------------------------------------------- + +=head2 isRegistered () + +Returns 1 if the user is not a visitor. + +=cut + +sub isRegistered { + my $self = shift; + return $self->userId ne '1'; +} + +#------------------------------------------------------------------- + +=head2 isVisitor () + +Returns 1 if the user is a visitor. + +=cut + +sub isVisitor { + my $self = shift; + return $self->userId eq '1'; +} #------------------------------------------------------------------- diff --git a/lib/WebGUI/Auth/LDAP.pm b/lib/WebGUI/Auth/LDAP.pm index e8b7fe374..9c77b4cb8 100644 --- a/lib/WebGUI/Auth/LDAP.pm +++ b/lib/WebGUI/Auth/LDAP.pm @@ -221,7 +221,7 @@ sub createAccount { my $message = shift; my $confirm = shift || $self->session->form->process("confirm"); my $vars; - if ($self->session->user->userId ne "1") { + if ($self->session->user->isRegistered) { return $self->displayAccount; } elsif (!$self->session->setting->get("anonymousRegistration") && !$self->session->setting->get('userInvitationsEnabled')) { @@ -308,7 +308,7 @@ sub createAccountSave { #------------------------------------------------------------------- sub deactivateAccount { my $self = shift; - return $self->displayLogin if($self->userId eq '1'); + return $self->displayLogin if($self->isVisitor); return $self->SUPER::deactivateAccount("deactivateAccountConfirm"); } @@ -323,7 +323,7 @@ sub deactivateAccountConfirm { sub displayAccount { my $self = shift; my $vars; - return $self->displayLogin($_[0]) if ($self->userId eq '1'); + return $self->displayLogin($_[0]) if ($self->isVisitor); my $i18n = WebGUI::International->new($self->session); $vars->{displayTitle} = '

'.$i18n->get(61).'

'; $vars->{'account.message'} = $i18n->get(856); @@ -339,7 +339,7 @@ sub displayAccount { sub displayLogin { my $self = shift; my $vars; - return $self->displayAccount($_[0]) if ($self->userId ne "1"); + return $self->displayAccount($_[0]) if ($self->isRegistered); $vars->{'login.message'} = $_[0] if ($_[0]); return $self->SUPER::displayLogin("login",$vars); } diff --git a/lib/WebGUI/Auth/WebGUI.pm b/lib/WebGUI/Auth/WebGUI.pm index 7c940e2fd..0e5ecd025 100644 --- a/lib/WebGUI/Auth/WebGUI.pm +++ b/lib/WebGUI/Auth/WebGUI.pm @@ -136,7 +136,7 @@ sub createAccount { my $vars = shift || {}; #$self->session->errorHandler->warn('WebGUI::Auth::createAccount called'); - if ($self->session->user->userId ne "1") { + if ($self->session->user->isRegistered) { return $self->displayAccount; } elsif (!$self->session->setting->get("anonymousRegistration") && !$self->session->setting->get('userInvitationsEnabled')) { @@ -188,7 +188,7 @@ sub createAccountSave { my $i18n = WebGUI::International->new($session); # Logged in users cannot see this page - return $self->displayAccount if ($session->user->userId ne "1"); + return $self->displayAccount if ($session->user->isRegistered); # Make sure anonymous registration is enabled if (!$setting->get("anonymousRegistration") && !$setting->get("userInvitationsEnabled")) { @@ -256,7 +256,7 @@ sub createAccountSave { #------------------------------------------------------------------- sub deactivateAccount { my $self = shift; - return $self->displayLogin if($self->userId eq '1'); + return $self->displayLogin if($self->isVisitor); return $self->SUPER::deactivateAccount("deactivateAccountConfirm"); } @@ -283,7 +283,7 @@ sub deactivateAccountConfirm { sub displayAccount { my $self = shift; my $vars; - return $self->displayLogin($_[0]) if ($self->userId eq '1'); + return $self->displayLogin($_[0]) if ($self->isVisitor); my $i18n = WebGUI::International->new($self->session); my $userData = $self->getParams; $vars->{'account.message'} = $_[0] if ($_[0]); @@ -315,7 +315,7 @@ The initial login screen an unauthenticated user sees sub displayLogin { my $self = shift; my $vars; - return $self->displayAccount($_[0]) if ($self->userId ne "1"); + return $self->displayAccount($_[0]) if ($self->isRegistered); my $i18n = WebGUI::International->new($self->session); $vars->{'login.message'} = '' if ($_[0]); $vars->{'recoverPassword.isAllowed'} = $self->getSetting("passwordRecovery"); @@ -693,7 +693,7 @@ passed directly to the approprate method. sub recoverPassword { my $self = shift; - return $self->displayLogin unless ($self->session->setting->get('webguiPasswordRecovery') ne '') and $self->userId eq '1'; + return $self->displayLogin unless ($self->session->setting->get('webguiPasswordRecovery') ne '') and $self->isVisitor; my $type = $self->getPasswordRecoveryType; @@ -829,7 +829,7 @@ sub profileRecoverPasswordFinish { my $session = $self->session; my $i18n = WebGUI::International->new($self->session); my $i18n2 = WebGUI::International->new($self->session, 'AuthWebGUI'); - return $self->displayLogin unless ($self->session->setting->get('webguiPasswordRecovery') ne '') and $self->userId eq '1'; + return $self->displayLogin unless ($self->session->setting->get('webguiPasswordRecovery') ne '') and $self->isVisitor; my $username; if ($self->getSetting('passwordRecoveryRequireUsername')) { @@ -942,7 +942,7 @@ sub profileRecoverPasswordFinish { sub emailRecoverPasswordFinish { my $self = shift; - return $self->displayLogin unless ($self->session->setting->get('webguiPasswordRecovery') ne '') and $self->userId eq '1'; + return $self->displayLogin unless ($self->session->setting->get('webguiPasswordRecovery') ne '') and $self->isVisitor; my $i18n = WebGUI::International->new($self->session); my $i18n2 = WebGUI::International->new($self->session, 'AuthWebGUI'); @@ -1171,7 +1171,7 @@ sub updateAccount { my $display = ''; my $error = ""; - if($self->userId eq '1'){ + if($self->isVisitor){ return $self->displayLogin; } diff --git a/lib/WebGUI/Form/Attachments.pm b/lib/WebGUI/Form/Attachments.pm index a2840599e..fd62b7017 100644 --- a/lib/WebGUI/Form/Attachments.pm +++ b/lib/WebGUI/Form/Attachments.pm @@ -293,7 +293,7 @@ sub www_upload { my $asset = ""; # prevent malicious visitors from being able to publish children things they've published to tempsace - my $owner = ($session->user->userId eq "1") ? "3" : $session->user->userId; + my $owner = ($session->user->isVisitor) ? "3" : $session->user->userId; my %properties = ( title => $filename, diff --git a/lib/WebGUI/Form/Control.pm b/lib/WebGUI/Form/Control.pm index 4414f1759..edbf896e1 100644 --- a/lib/WebGUI/Form/Control.pm +++ b/lib/WebGUI/Form/Control.pm @@ -583,7 +583,7 @@ sub passUiLevelCheck { } else { # use programmed default $passUiLevelCheck = ($self->get("uiLevel") <= $self->session->user->profileField("uiLevel")); } - $passUiLevelCheck = $self->session->user->isInGroup(3) unless ($passUiLevelCheck); # override if in admins group + $passUiLevelCheck = $self->session->user->isAdmin unless ($passUiLevelCheck); # override if in admins group return $passUiLevelCheck; } diff --git a/lib/WebGUI/Form/DatabaseLink.pm b/lib/WebGUI/Form/DatabaseLink.pm index e92a82d2b..21770549a 100644 --- a/lib/WebGUI/Form/DatabaseLink.pm +++ b/lib/WebGUI/Form/DatabaseLink.pm @@ -167,7 +167,7 @@ Renders the form field to HTML as a table row complete with labels, subtext, hov sub toHtmlWithWrapper { my $self = shift; - if ($self->session->user->isInGroup(3)) { + if ($self->session->user->isAdmin) { my $subtext; if ($self->get("afterEdit")) { $subtext = $self->session->icon->edit("op=editDatabaseLink;lid=".$self->getOriginalValue.";afterEdit=".$self->session->url->escape($self->get("afterEdit"))); diff --git a/lib/WebGUI/Form/Group.pm b/lib/WebGUI/Form/Group.pm index dd500ec31..ef67284c5 100644 --- a/lib/WebGUI/Form/Group.pm +++ b/lib/WebGUI/Form/Group.pm @@ -195,7 +195,7 @@ Renders the form field to HTML as a table row complete with labels, subtext, hov sub toHtmlWithWrapper { my $self = shift; - if ($self->session->user->isInGroup(3)) { + if ($self->session->user->isAdmin) { my $subtext = $self->session->icon->manage("op=listGroups"); $self->set("subtext",$subtext . $self->get("subtext")); } diff --git a/lib/WebGUI/Form/LdapLink.pm b/lib/WebGUI/Form/LdapLink.pm index 9fc357659..1c9e26f86 100644 --- a/lib/WebGUI/Form/LdapLink.pm +++ b/lib/WebGUI/Form/LdapLink.pm @@ -188,7 +188,7 @@ Renders the form field to HTML as a table row complete with labels, subtext, hov sub toHtmlWithWrapper { my $self = shift; - if ($self->session->user->isInGroup(3)) { + if ($self->session->user->isAdmin) { my $subtext; if ($self->get("afterEdit")) { $subtext = $self->session->icon->edit("op=editLDAPLink;llid=".$self->getOriginalValue.";afterEdit=".$self->session->url->escape($self->get("afterEdit"))); diff --git a/lib/WebGUI/Form/User.pm b/lib/WebGUI/Form/User.pm index f0d6fb29f..ce09d7cd3 100644 --- a/lib/WebGUI/Form/User.pm +++ b/lib/WebGUI/Form/User.pm @@ -149,7 +149,7 @@ sub toHtml { my $self = shift; my $user = WebGUI::User->new($self->session, $self->getOriginalValue); my $manage = undef; - if ($self->session->user->isInGroup(3)) { + if ($self->session->user->isAdmin) { $manage = " ".$self->session->icon->manage('op=listUsers'); } return WebGUI::Form::Hidden->new($self->session, diff --git a/lib/WebGUI/Macro/GroupAdd.pm b/lib/WebGUI/Macro/GroupAdd.pm index 910778d97..3cc0a35a8 100644 --- a/lib/WebGUI/Macro/GroupAdd.pm +++ b/lib/WebGUI/Macro/GroupAdd.pm @@ -46,7 +46,7 @@ sub process { my ($session, $groupName, $text, $template) = @_; return "" if ($groupName eq ""); return "" if ($text eq ""); - return "" if ($session->user->userId eq '1'); + return "" if ($session->user->isVisitor); my $g = WebGUI::Group->find($session, $groupName); return "" unless defined $g->getId; return "" unless ($g->autoAdd); diff --git a/lib/WebGUI/Macro/GroupDelete.pm b/lib/WebGUI/Macro/GroupDelete.pm index a95df6f4d..2a4d523e3 100644 --- a/lib/WebGUI/Macro/GroupDelete.pm +++ b/lib/WebGUI/Macro/GroupDelete.pm @@ -46,7 +46,7 @@ sub process { my ($session, $groupName, $text, $template) = @_; return "" if ($groupName eq ""); return "" if ($text eq ""); - return "" if ($session->user->userId eq '1'); + return "" if ($session->user->isVisitor); my $g = WebGUI::Group->find($session, $groupName); return "" unless defined $g->getId; return "" unless ($g->autoDelete); diff --git a/lib/WebGUI/Macro/LoginToggle.pm b/lib/WebGUI/Macro/LoginToggle.pm index 35d81aca1..7d2700213 100644 --- a/lib/WebGUI/Macro/LoginToggle.pm +++ b/lib/WebGUI/Macro/LoginToggle.pm @@ -51,7 +51,7 @@ sub process { my $login = $param[0] || $i18n->get(716); my $logout = $param[1] || $i18n->get(717); my %var; - if ($session->user->userId eq '1') { + if ($session->user->isVisitor) { return $session->url->page("op=auth;method=init") if ($param[0] eq "linkonly"); $var{'toggle.url'} = $session->url->page('op=auth;method=init'); $var{'toggle.text'} = $login; diff --git a/lib/WebGUI/Operation/Auth.pm b/lib/WebGUI/Operation/Auth.pm index e7cb062e8..63a2a43f8 100644 --- a/lib/WebGUI/Operation/Auth.pm +++ b/lib/WebGUI/Operation/Auth.pm @@ -34,7 +34,7 @@ sub getInstance { my $session = shift; #Get Auth Settings my $authMethod = $session->user->authMethod || $session->setting->get("authMethod"); - $authMethod = $session->setting->get("authMethod") if($session->user->userId eq '1'); + $authMethod = $session->setting->get("authMethod") if($session->user->isVisitor); $authMethod = $_[0] if($_[0] && isIn($_[0], @{$session->config->get("authMethods")})); my $userId = $_[1]; #Create Auth Object diff --git a/lib/WebGUI/Operation/Friends.pm b/lib/WebGUI/Operation/Friends.pm index 8ea41aa40..23acfb0cb 100644 --- a/lib/WebGUI/Operation/Friends.pm +++ b/lib/WebGUI/Operation/Friends.pm @@ -37,7 +37,7 @@ Form for inviting a user to become your friend. sub www_addFriend { my $session = shift; - return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); + return $session->privilege->insufficient() unless ($session->user->isRegistered); my $friendId = $session->form->get('userId'); my $protoFriend = WebGUI::User->new($session, $friendId); @@ -105,7 +105,7 @@ members (determined by email address) and send the email. sub www_addFriendSave { my $session = shift; - return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); + return $session->privilege->insufficient() unless ($session->user->isRegistered); my $friendId = $session->form->get('friendId'); my $protoFriend = WebGUI::User->new($session, $friendId); @@ -147,7 +147,7 @@ Form for the friend to accept or deny the request. sub www_friendRequest { my $session = shift; - return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); + return $session->privilege->insufficient() unless ($session->user->isRegistered); my $i18n = WebGUI::International->new($session, 'Friends'); @@ -241,7 +241,7 @@ Handle form data from the friend's response to the invitation sub www_friendRequestSave { my $session = shift; - return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); + return $session->privilege->insufficient() unless ($session->user->isRegistered); my $i18n = WebGUI::International->new($session, 'Friends'); my $doWhat = $session->form->get('doWhat'); @@ -296,7 +296,7 @@ send private messages to a subset of them. sub www_manageFriends { my $session = shift; my ($user, $url, $style) = $session->quick(qw(user url style)); - return $session->privilege->insufficient() unless ($user->isInGroup(2)); + return $session->privilege->insufficient() unless ($user->isRegistered); my $i18n = WebGUI::International->new($session, 'Friends'); ##You have no friends! @@ -349,7 +349,7 @@ Removes friends from the current user's friends list. sub www_removeFriends { my $session = shift; - return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); + return $session->privilege->insufficient() unless ($session->user->isRegistered); my @users = $session->form->param("userId"); WebGUI::Friends->new($session)->delete(\@users); return www_manageFriends($session); @@ -366,7 +366,7 @@ Sends a message to selected friends. sub www_sendMessageToFriends { my $session = shift; - return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); + return $session->privilege->insufficient() unless ($session->user->isRegistered); my @users = $session->form->param("userId"); my $friends = WebGUI::Friends->new($session); $friends->sendMessage($session->form->process("subject", "text"), $session->form->process("message","textarea"), \@users); diff --git a/lib/WebGUI/Operation/Inbox.pm b/lib/WebGUI/Operation/Inbox.pm index 10b95631c..c0356f564 100644 --- a/lib/WebGUI/Operation/Inbox.pm +++ b/lib/WebGUI/Operation/Inbox.pm @@ -128,7 +128,7 @@ Form for sending private messages sub www_sendPrivateMessage { my $session = shift; - return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); + return $session->privilege->insufficient() unless ($session->user->isRegistered); my $i18n = WebGUI::International->new($session); my $form = $session->form; @@ -176,7 +176,7 @@ members (determined by email address) and send the email. sub www_sendPrivateMessageSave { my $session = shift; - return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); + return $session->privilege->insufficient() unless ($session->user->isRegistered); my $i18n = WebGUI::International->new($session); my $form = $session->form; @@ -250,7 +250,7 @@ Templated display all messages for the current user. sub www_viewInbox { my $session = shift; - return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); + return $session->privilege->insufficient() unless ($session->user->isRegistered); my $i18n = WebGUI::International->new($session); my $vars = {}; @@ -303,7 +303,7 @@ sub www_viewInbox { my $u = WebGUI::User->new($session,$sentBy); #If the user that sent the message is valid, get the username #This case would happen if the user was deleted after sending a private message - if($u->userId ne "1") { + if($u->isRegistered) { $from = $u->username; } } @@ -341,7 +341,7 @@ Mark a private message in the inbox as deleted. sub www_deletePrivateMessage { my $session = shift; - return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); + return $session->privilege->insufficient() unless ($session->user->isRegistered); #Get the message my $message = WebGUI::Inbox->new($session)->getMessage($session->form->param("messageId")); @@ -362,7 +362,7 @@ Templated display of a single message for the user. sub www_viewInboxMessage { my $session = shift; - return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); + return $session->privilege->insufficient() unless ($session->user->isRegistered); #Get the message my $message = WebGUI::Inbox->new($session)->getMessage($session->form->param("messageId")); diff --git a/lib/WebGUI/Operation/Invite.pm b/lib/WebGUI/Operation/Invite.pm index 3fbb99f63..4fb53d502 100644 --- a/lib/WebGUI/Operation/Invite.pm +++ b/lib/WebGUI/Operation/Invite.pm @@ -37,7 +37,7 @@ Form for inviting a user. sub www_inviteUser { my $session = shift; - return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); + return $session->privilege->insufficient() unless ($session->user->isRegistered); my $formError = shift; my $vars = {}; my $i18n = WebGUI::International->new($session, 'Invite'); @@ -88,7 +88,7 @@ members (determined by email address) and send the email. sub www_inviteUserSave { my $session = shift; - return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); + return $session->privilege->insufficient() unless ($session->user->isRegistered); #Mandatory field checks my $hisEmailAddress = $session->form->get('invite_email'); @@ -168,7 +168,7 @@ create account page. Otherwise, scourge and flay them. sub www_acceptInvite { my $session = shift; - return $session->privilege->insufficient() if ($session->user->isInGroup(2)); + return $session->privilege->insufficient() if ($session->user->isRegistered); my $i18n = WebGUI::International->new($session, 'Invite'); diff --git a/lib/WebGUI/Operation/Profile.pm b/lib/WebGUI/Operation/Profile.pm index ae2f4437b..d83a10df2 100644 --- a/lib/WebGUI/Operation/Profile.pm +++ b/lib/WebGUI/Operation/Profile.pm @@ -201,7 +201,7 @@ A reference to the current session. sub www_editProfile { my $session = shift; - return WebGUI::Operation::Auth::www_auth($session,"init") if($session->user->userId eq '1'); + return WebGUI::Operation::Auth::www_auth($session,"init") if($session->user->isVisitor); my $i18n = WebGUI::International->new($session); my $vars = {}; $vars->{displayTitle} .= $i18n->get(338); @@ -261,7 +261,7 @@ A reference to the current session. sub www_editProfileSave { my $session = shift; my ($profile, $error, $warning); - return WebGUI::Operation::Auth::www_auth($session, "init") if ($session->user->userId eq '1'); + return WebGUI::Operation::Auth::www_auth($session, "init") if ($session->user->isVisitor); ($profile, $error, $warning) = validateProfileData($session); $error .= $warning; return www_editProfile($session, '') if($error ne ""); @@ -295,8 +295,8 @@ sub www_viewProfile { return $session->privilege->notMember() if($u->username eq ""); - return $session->style->userStyle($vars->{displayTitle}.'. '.$i18n->get(862)) if($u->profileField("publicProfile") < 1 && ($session->user->userId ne $session->form->process("uid") || $session->user->isInGroup(3))); - return $session->privilege->insufficient() if(!$session->user->isInGroup(2)); + return $session->style->userStyle($vars->{displayTitle}.'. '.$i18n->get(862)) if($u->profileField("publicProfile") < 1 && ($session->user->userId ne $session->form->process("uid") || $session->user->isAdmin)); + return $session->privilege->insufficient() if(!$session->user->isRegistered); my @array = (); foreach my $category (@{WebGUI::ProfileCategory->getCategories($session)}) { diff --git a/lib/WebGUI/Operation/Settings.pm b/lib/WebGUI/Operation/Settings.pm index 370a1c84f..cd03374e6 100644 --- a/lib/WebGUI/Operation/Settings.pm +++ b/lib/WebGUI/Operation/Settings.pm @@ -576,7 +576,7 @@ keys: sub www_editSettings { my $session = shift; my $argsHash = shift; - return $session->privilege->adminOnly() unless ($session->user->isInGroup(3)); + return $session->privilege->adminOnly() unless ($session->user->isAdmin); my $i18n = WebGUI::International->new($session, "WebGUI"); my $output = ''; @@ -646,7 +646,7 @@ is in group Admin (3). Returns the user to the Edit Settings screen, www_editSe sub www_saveSettings { my $session = shift; - return $session->privilege->adminOnly() unless ($session->user->isInGroup(3)); + return $session->privilege->adminOnly() unless ($session->user->isAdmin); my $i18n = WebGUI::International->new($session, "WebGUI"); my $setting = $session->setting; my $form = $session->form; diff --git a/lib/WebGUI/Operation/Shared.pm b/lib/WebGUI/Operation/Shared.pm index ee1be369b..bce2d0e2d 100644 --- a/lib/WebGUI/Operation/Shared.pm +++ b/lib/WebGUI/Operation/Shared.pm @@ -80,7 +80,7 @@ TODO: DOCUMENT ME my %logout; $logout{'options.display'} = ''.$i18n->get(64).''; push(@array,\%logout); - if ($session->setting->get("selfDeactivation") && !$session->user->isInGroup(3)){ + if ($session->setting->get("selfDeactivation") && !$session->user->isAdmin){ my %hash; $hash{'options.display'} = ''.$i18n->get(65).''; push(@array,\%hash); diff --git a/lib/WebGUI/Operation/SpellCheck.pm b/lib/WebGUI/Operation/SpellCheck.pm index 398d796bd..b5a0698d1 100644 --- a/lib/WebGUI/Operation/SpellCheck.pm +++ b/lib/WebGUI/Operation/SpellCheck.pm @@ -104,7 +104,7 @@ sub addWord { my $language = shift; my $word = shift; die "You must be logged in to add words to your dictionary.\n:" - if ($session->user->userId eq '1'); + if ($session->user->isVisitor); my $speller = _getSpeller($session, $language); $speller->add_to_personal($word); $speller->save_all_word_lists; diff --git a/lib/WebGUI/Operation/User.pm b/lib/WebGUI/Operation/User.pm index 8775d2e6c..807ae6dea 100644 --- a/lib/WebGUI/Operation/User.pm +++ b/lib/WebGUI/Operation/User.pm @@ -341,7 +341,7 @@ sub www_editUser { my $tabform = WebGUI::TabForm->new($session,\%tabs); $tabform->formHeader({extras=>'autocomplete="off"'}); my $u = WebGUI::User->new($session,($uid eq 'new') ? '' : $uid); #Setting uid to '' when uid is 'new' so visitor defaults prefill field for new user - my $username = ($u->userId eq '1' && $uid ne "1") ? '' : $u->username; + my $username = ($u->isVisitor && $uid ne "1") ? '' : $u->username; $tabform->hidden({name=>"op",value=>"editUserSave"}); $tabform->hidden({name=>"uid",value=>$uid}); $tabform->getTab("account")->raw('  '); @@ -395,7 +395,7 @@ sub www_editUser { foreach my $field (@{$category->getFields}) { next if $field->getId =~ /contentPositions/; my $label = $field->getLabel . ($field->isRequired ? "*" : ''); - if ($field->getId eq "alias" && $u->userId eq '1') { + if ($field->getId eq "alias" && $u->isVisitor) { $tabform->getTab("profile")->raw($field->formField({label=>$label},1,undef,1)); } else { $tabform->getTab("profile")->raw($field->formField({label=>$label},1,$u)); @@ -408,7 +408,7 @@ sub www_editUser { @exclude = (@exclude,"1","2","7"); my $secondaryAdmin = $session->user->isInGroup('11'); my @extraExclude = (); - if ($secondaryAdmin && !$session->user->isInGroup(3)) { + if ($secondaryAdmin && !$session->user->isAdmin) { @extraExclude = $session->db->buildArray('select groupId from groups where groupId not in (select groupId from groupings where userId=?)',[$session->user->userId]); } push @extraExclude, @exclude; @@ -425,7 +425,7 @@ sub www_editUser { unless ( $group eq "1" || $group eq "2" || $group eq "7" # can't remove user from magic groups || ($session->user->userId eq $u->userId && $group eq 3) # cannot remove self from admin - || ($u->userId eq "3" && $group eq "3") # admin user cannot be remove from admin + || ($u->isAdmin && $group eq "3") # admin user cannot be remove from admin ) { push(@include,$group); } diff --git a/lib/WebGUI/Operation/Workflow.pm b/lib/WebGUI/Operation/Workflow.pm index 7e2506852..197376dd7 100644 --- a/lib/WebGUI/Operation/Workflow.pm +++ b/lib/WebGUI/Operation/Workflow.pm @@ -299,7 +299,7 @@ Save the submitted new workflow priority. sub www_editWorkflowPriority { my $session = shift; - return $session->privilege->insufficient() unless $session->user->isInGroup(3); + return $session->privilege->insufficient() unless $session->user->isAdmin; my $i18n = WebGUI::International->new($session, 'Workflow'); my $ac = WebGUI::AdminConsole->new($session,"workflow"); diff --git a/lib/WebGUI/Session/Privilege.pm b/lib/WebGUI/Session/Privilege.pm index d5b92a8ab..c86034e0c 100644 --- a/lib/WebGUI/Session/Privilege.pm +++ b/lib/WebGUI/Session/Privilege.pm @@ -160,7 +160,7 @@ Returns a message stating that the user does not have the privileges necessary t sub noAccess { my $self = shift; $self->session->http->setStatus("401", "No Access"); - if ($self->session->user->userId eq '1') { + if ($self->session->user->isVisitor) { return WebGUI::Operation::Auth::www_auth($self->session, "init"); } else { my $i18n = WebGUI::International->new($self->session); diff --git a/lib/WebGUI/Session/Style.pm b/lib/WebGUI/Session/Style.pm index be5353e99..14791a24c 100644 --- a/lib/WebGUI/Session/Style.pm +++ b/lib/WebGUI/Session/Style.pm @@ -183,7 +183,7 @@ return props[propName]; '; -if ($self->session->user->isInGroup(2) || $self->session->setting->get("preventProxyCache")) { +if ($self->session->user->isRegistered || $self->session->setting->get("preventProxyCache")) { # This "triple incantation" panders to the delicate tastes of various browsers for reliable cache suppression. $var{'head.tags'} .= ' diff --git a/lib/WebGUI/Shop/Admin.pm b/lib/WebGUI/Shop/Admin.pm index b6590b5f7..ce2e7ea2b 100644 --- a/lib/WebGUI/Shop/Admin.pm +++ b/lib/WebGUI/Shop/Admin.pm @@ -113,7 +113,7 @@ Displays the general commerce settings. sub www_editSettings { my $self = shift; - return $self->session->privilege->adminOnly() unless ($self->session->user->isInGroup("3")); + return $self->session->privilege->adminOnly() unless ($self->session->user->isAdmin); my $i18n = WebGUI::International->new($self->session, "Shop"); my $ac = $self->getAdminConsole; my $setting = $self->session->setting; @@ -176,7 +176,7 @@ Saves the general commerce settings. sub www_editSettingsSave { my $self = shift; - return $self->session->privilege->adminOnly() unless ($self->session->user->isInGroup("3")); + return $self->session->privilege->adminOnly() unless ($self->session->user->isAdmin); my ($setting, $form) = $self->session->quick(qw(setting form)); foreach my $template (qw(shopMyPurchasesDetailTemplateId shopMyPurchasesTemplateId shopCartTemplateId shopAddressBookTemplateId shopAddressTemplateId)) { diff --git a/lib/WebGUI/Shop/Pay.pm b/lib/WebGUI/Shop/Pay.pm index 9002ad3b1..0cf23c755 100644 --- a/lib/WebGUI/Shop/Pay.pm +++ b/lib/WebGUI/Shop/Pay.pm @@ -364,7 +364,7 @@ sub www_selectPaymentGateway { my $i18n = WebGUI::International->new( $session, 'Shop' ); # Make sure the user is logged in. - if ($session->user->userId eq '1') { + if ($session->user->isVisitor) { $session->scratch->set( 'redirectAfterLogin', $session->url->page('shop=pay;method=selectPaymentGateway') ); # We cannot use WebGUI::Operation::execute( $session, 'auth'); because the method form param used by the diff --git a/lib/WebGUI/Shop/PayDriver.pm b/lib/WebGUI/Shop/PayDriver.pm index c186dc83c..cd5b85c77 100644 --- a/lib/WebGUI/Shop/PayDriver.pm +++ b/lib/WebGUI/Shop/PayDriver.pm @@ -803,7 +803,7 @@ sub www_edit { my $admin = WebGUI::Shop::Admin->new($session); my $i18n = WebGUI::International->new($session, "PayDriver"); - return $session->privilege->insufficient() unless $session->user->isInGroup(3); + return $session->privilege->insufficient() unless $session->user->isAdmin; my $form = $self->getEditForm; $form->submit; @@ -822,7 +822,7 @@ Saves the data from the post. sub www_editSave { my $self = shift; my $session = $self->session; - return $session->privilege->insufficient() unless $session->user->isInGroup(3); + return $session->privilege->insufficient() unless $session->user->isAdmin; $self->processPropertiesFromFormPost; $session->http->setRedirect($session->url->page('shop=pay;method=manage')); diff --git a/lib/WebGUI/Shop/ShipDriver.pm b/lib/WebGUI/Shop/ShipDriver.pm index 9778277b1..5801c044c 100644 --- a/lib/WebGUI/Shop/ShipDriver.pm +++ b/lib/WebGUI/Shop/ShipDriver.pm @@ -321,7 +321,7 @@ Generates an edit form. sub www_edit { my $self = shift; my $session = $self->session; - return $session->privilege->insufficient() unless $session->user->isInGroup(3); + return $session->privilege->insufficient() unless $session->user->isAdmin; my $admin = WebGUI::Shop::Admin->new($session); my $i18n = WebGUI::International->new($session, "Shop"); my $form = $self->getEditForm; @@ -340,7 +340,7 @@ Saves the data from the post. sub www_editSave { my $self = shift; my $session = $self->session; - return $session->privilege->insufficient() unless $session->user->isInGroup(3); + return $session->privilege->insufficient() unless $session->user->isAdmin; $self->processPropertiesFromFormPost; $session->http->setRedirect($session->url->page('shop=ship;method=manage')); return undef; diff --git a/lib/WebGUI/User.pm b/lib/WebGUI/User.pm index fed003edc..b392cced4 100644 --- a/lib/WebGUI/User.pm +++ b/lib/WebGUI/User.pm @@ -420,6 +420,19 @@ sub identifier { } +#------------------------------------------------------------------- + +=head2 isAdmin () + +Returns 1 if the user is in the admins group. + +=cut + +sub isAdmin { + my $self = shift; + return $self->isInGroup(3); +} + #------------------------------------------------------------------- =head2 isInGroup ( [ groupId ] ) @@ -481,6 +494,32 @@ sub isOnline { return $flag; } +#------------------------------------------------------------------- + +=head2 isRegistered () + +Returns 1 if the user is not a visitor. + +=cut + +sub isRegistered { + my $self = shift; + return $self->userId ne '1'; +} + +#------------------------------------------------------------------- + +=head2 isVisitor () + +Returns 1 if the user is a visitor. + +=cut + +sub isVisitor { + my $self = shift; + return $self->userId eq '1'; +} + #------------------------------------------------------------------- @@ -611,7 +650,7 @@ sub newByEmail { my $email = shift; my ($id) = $session->dbSlave->quickArray("select userId from userProfileData where email=?",[$email]); my $user = $class->new($session, $id); - return undef if ($user->userId eq "1"); # visitor is never valid for this method + return undef if ($user->isVisitor); # visitor is never valid for this method return undef unless $user->username; return $user; } @@ -640,7 +679,7 @@ sub newByUsername { my $username = shift; my ($id) = $session->dbSlave->quickArray("select userId from users where username=?",[$username]); my $user = $class->new($session, $id); - return undef if ($user->userId eq "1"); # visitor is never valid for this method + return undef if ($user->isVisitor); # visitor is never valid for this method return undef unless $user->username; return $user; } diff --git a/lib/WebGUI/Workflow/Activity/SendNewsletters.pm b/lib/WebGUI/Workflow/Activity/SendNewsletters.pm index b6db87c7b..724b34a95 100644 --- a/lib/WebGUI/Workflow/Activity/SendNewsletters.pm +++ b/lib/WebGUI/Workflow/Activity/SendNewsletters.pm @@ -86,7 +86,7 @@ sub execute { # get user object $eh->info("Getting user $userId"); my $user = WebGUI::User->new($self->session, $userId); - next if ($user->userId eq "1"); + next if ($user->isVisitor); my $emailAddress = $user->profileField("email"); next if ($emailAddress eq ""); diff --git a/t/User.t b/t/User.t index 637481591..ab359c09c 100644 --- a/t/User.t +++ b/t/User.t @@ -20,7 +20,7 @@ use WebGUI::Cache; use WebGUI::User; use WebGUI::ProfileField; -use Test::More tests => 133; # increment this value for each test you create +use Test::More tests => 137; # increment this value for each test you create use Test::Deep; my $session = WebGUI::Test->session; @@ -222,6 +222,7 @@ is ($result, '194.168.0.101', "userSession setup correctly"); ok (!$visitor->isInGroup($cm->getId), "Visitor is not member of group"); ok ($admin->isInGroup($cm->getId), "Admin is member of group"); +ok($admin->isAdmin, "Admin user is in admins group"); my $origFilter = $cm->ipFilter; @@ -230,6 +231,8 @@ $cm->ipFilter('194.168.0.0/24'); is( $cm->ipFilter, "194.168.0.0/24", "ipFilter assignment to local net, 194.168.0.0/24"); ok ($visitor->isInGroup($cm->getId), "Visitor is allowed in via IP"); +ok ($visitor->isVisitor, "User checks out as visitor"); +ok (!$visitor->isAdmin,"User that isn't an admin doesn't look like admin"); $session->db->write('update userSession set lastIP=? where sessionId=?',['193.168.0.101', $session->getId]); @@ -244,7 +247,7 @@ $cm->ipFilter(defined $origFilter ? $origFilter : ''); $user = WebGUI::User->new($session, "new"); ok($user->isInGroup(7), "addToGroups: New user is in group 7(Everyone)"); ok(!$user->isInGroup(1), "New user not in group 1 (Visitors)"); - +ok($user->isRegistered, "User is not a visitor"); $user->addToGroups([3]); ok($user->isInGroup(3), "addToGroups: New user is in group 3(Admin)");