mirror of
https://github.com/silverstripe/silverstripe-blog
synced 2024-10-22 11:05:58 +02:00
Merge pull request #486 from zanderwar/pulls/3.0/optional-profiles
Allow a user to disable all profiles
This commit is contained in:
commit
1d6cf1dec6
12
docs/en/configuring-user-profiles.md
Normal file
12
docs/en/configuring-user-profiles.md
Normal file
@ -0,0 +1,12 @@
|
||||
## Configuring user profiles
|
||||
|
||||
This module ships with User Profiles enabled by default.
|
||||
|
||||
If you'd prefer to disable this functionality and instead return a 404 for the `/profile/` page, you can do so using SilverStripe config.
|
||||
|
||||
In mysite/_config/settings.yml
|
||||
|
||||
```yaml
|
||||
SilverStripe\Blog\Model\BlogController:
|
||||
disable_profiles: true
|
||||
```
|
@ -4,8 +4,10 @@ namespace SilverStripe\Blog\Model;
|
||||
|
||||
use PageController;
|
||||
use SilverStripe\Control\Director;
|
||||
use SilverStripe\Control\HTTPResponse_Exception;
|
||||
use SilverStripe\Control\RSS\RSSFeed;
|
||||
use SilverStripe\ORM\ArrayList;
|
||||
use SilverStripe\ORM\DataList;
|
||||
use SilverStripe\ORM\FieldType\DBDatetime;
|
||||
use SilverStripe\ORM\PaginatedList;
|
||||
use SilverStripe\Security\Member;
|
||||
@ -42,6 +44,14 @@ class BlogController extends PageController
|
||||
'FilterDescription' => 'Text'
|
||||
];
|
||||
|
||||
/**
|
||||
* If enabled, blog author profiles will be turned off for this site
|
||||
*
|
||||
* @config
|
||||
* @var bool
|
||||
*/
|
||||
private static $disable_profiles = false;
|
||||
|
||||
/**
|
||||
* The current Blog Post DataList query.
|
||||
*
|
||||
@ -67,10 +77,16 @@ class BlogController extends PageController
|
||||
/**
|
||||
* Renders a Blog Member's profile.
|
||||
*
|
||||
* @return HTTPResponse
|
||||
* @throws HTTPResponse_Exception
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function profile()
|
||||
{
|
||||
if ($this->config()->get('disable_profiles')) {
|
||||
$this->httpError(404, 'Not Found');
|
||||
}
|
||||
|
||||
$profile = $this->getCurrentProfile();
|
||||
|
||||
if (!$profile) {
|
||||
@ -121,7 +137,7 @@ class BlogController extends PageController
|
||||
/**
|
||||
* Renders an archive for a specified date. This can be by year or year/month.
|
||||
*
|
||||
* @return null|HTTPResponse
|
||||
* @return null|string
|
||||
*/
|
||||
public function archive()
|
||||
{
|
||||
@ -212,7 +228,7 @@ class BlogController extends PageController
|
||||
/**
|
||||
* Renders the blog posts for a given tag.
|
||||
*
|
||||
* @return null|HTTPResponse
|
||||
* @return null|string
|
||||
*/
|
||||
public function tag()
|
||||
{
|
||||
@ -258,7 +274,7 @@ class BlogController extends PageController
|
||||
/**
|
||||
* Renders the blog posts for a given category.
|
||||
*
|
||||
* @return null|HTTPResponse
|
||||
* @return null|string
|
||||
*/
|
||||
public function category()
|
||||
{
|
||||
@ -440,7 +456,7 @@ class BlogController extends PageController
|
||||
*
|
||||
* @example "<% if $PaginationAbsoluteNextLink %><link rel="next" href="$PaginationAbsoluteNextLink"><% end_if %>"
|
||||
*
|
||||
* @return string
|
||||
* @return string|null
|
||||
*/
|
||||
public function PaginationAbsoluteNextLink()
|
||||
{
|
||||
@ -448,6 +464,8 @@ class BlogController extends PageController
|
||||
if ($posts->NotLastPage()) {
|
||||
return Director::absoluteURL($posts->NextLink());
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -456,7 +474,7 @@ class BlogController extends PageController
|
||||
*
|
||||
* @example "<% if $PaginationAbsolutePrevLink %><link rel="prev" href="$PaginationAbsolutePrevLink"><% end_if %>"
|
||||
*
|
||||
* @return string
|
||||
* @return string|null
|
||||
*/
|
||||
public function PaginationAbsolutePrevLink()
|
||||
{
|
||||
@ -464,6 +482,8 @@ class BlogController extends PageController
|
||||
if ($posts->NotFirstPage()) {
|
||||
return Director::absoluteURL($posts->PrevLink());
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -486,7 +506,7 @@ class BlogController extends PageController
|
||||
/**
|
||||
* Returns the current archive date.
|
||||
*
|
||||
* @return null|Date
|
||||
* @return null|DBDatetime
|
||||
*/
|
||||
public function getArchiveDate()
|
||||
{
|
||||
|
@ -9,6 +9,7 @@ use SilverStripe\Blog\Model\BlogCategory;
|
||||
use SilverStripe\Blog\Model\BlogPostFilter;
|
||||
use SilverStripe\Blog\Model\BlogTag;
|
||||
use SilverStripe\Control\Controller;
|
||||
use SilverStripe\Core\Config\Config;
|
||||
use SilverStripe\Core\Manifest\ModuleLoader;
|
||||
use SilverStripe\Forms\DatetimeField;
|
||||
use SilverStripe\Forms\HiddenField;
|
||||
@ -718,6 +719,16 @@ class BlogPost extends Page
|
||||
return $items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if User Profiles has been disabled via config
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getProfilesDisabled()
|
||||
{
|
||||
return Config::inst()->get(BlogController::class, 'disable_profiles');
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the label for BlogPost.Title to 'Post Title' (Rather than 'Page name').
|
||||
*
|
||||
|
@ -29,7 +29,7 @@
|
||||
<% loop $Credits %>
|
||||
<% if not $First && not $Last %>, <% end_if %>
|
||||
<% if not $First && $Last %> <%t SilverStripe\\Blog\\Model\\Blog.AND "and" %> <% end_if %>
|
||||
<% if $URLSegment %>
|
||||
<% if $URLSegment && not $Up.ProfilesDisabled %>
|
||||
<a href="$URL">$Name.XML</a>
|
||||
<% else %>
|
||||
$Name.XML
|
||||
|
@ -9,6 +9,7 @@ use SilverStripe\CMS\Controllers\ContentController;
|
||||
use SilverStripe\Control\Controller;
|
||||
use SilverStripe\Control\Director;
|
||||
use SilverStripe\Control\HTTPRequest;
|
||||
use SilverStripe\Control\HTTPResponse_Exception;
|
||||
use SilverStripe\Control\Session;
|
||||
use SilverStripe\Core\Config\Config;
|
||||
use SilverStripe\Dev\SapphireTest;
|
||||
@ -348,6 +349,21 @@ class BlogTest extends SapphireTest
|
||||
);
|
||||
}
|
||||
|
||||
public function testDisabledProfiles()
|
||||
{
|
||||
Config::modify()->set(BlogController::class, 'disable_profiles', true);
|
||||
|
||||
try {
|
||||
$controller = BlogController::create();
|
||||
$controller->setRequest(Controller::curr()->getRequest());
|
||||
$controller->profile();
|
||||
|
||||
$this->fail('The "profile" action should throw a HTTPResponse_Exception when disable_profiles is enabled');
|
||||
} catch (HTTPResponse_Exception $e) {
|
||||
$this->assertEquals(404, $e->getResponse()->getStatusCode(), 'The response status code should be 404 Not Found');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Mock a request against a given controller
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user