Enable calendar export for public_calendar = true

This commit is contained in:
Hypolite Petovan 2023-01-13 19:20:55 -05:00
parent 79d1506694
commit 323765110c
2 changed files with 23 additions and 6 deletions

View File

@ -23,11 +23,14 @@ namespace Friendica\Module\Calendar;
use Friendica\App;
use Friendica\BaseModule;
use Friendica\Content\Feature;
use Friendica\Core\L10n;
use Friendica\Core\Session\Capability\IHandleUserSessions;
use Friendica\Model\Event;
use Friendica\Model\Profile;
use Friendica\Model\User;
use Friendica\Module\Response;
use Friendica\Module\Security\Login;
use Friendica\Navigation\SystemMessages;
use Friendica\Network\HTTPException;
use Friendica\Util\Profiler;
@ -47,25 +50,39 @@ class Export extends BaseModule
protected $session;
/** @var SystemMessages */
protected $sysMessages;
/** @var App */
protected $app;
public function __construct(L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, IHandleUserSessions $session, SystemMessages $sysMessages, array $server, array $parameters = [])
public function __construct(App $app, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, IHandleUserSessions $session, SystemMessages $sysMessages, array $server, array $parameters = [])
{
parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
$this->session = $session;
$this->sysMessages = $sysMessages;
$this->app = $app;
}
protected function rawContent(array $request = [])
{
if (!$this->session->getLocalUserId()) {
throw new HTTPException\UnauthorizedException($this->t('Permission denied.'));
$nickname = $this->parameters['nickname'] ?? null;
if (!$nickname) {
throw new HTTPException\BadRequestException();
}
$owner = User::getByNickname($this->parameters['nickname'], ['uid']);
if (empty($owner)) {
$owner = Profile::load($this->app, $nickname, false);
if (!$owner || $owner['account_expired'] || $owner['account_removed']) {
throw new HTTPException\NotFoundException($this->t('User not found.'));
}
if (!$this->session->isAuthenticated() && $owner['hidewall']) {
$this->baseUrl->redirect('profile/' . $nickname . '/restricted');
}
if (!$this->session->isAuthenticated() && !Feature::isEnabled($owner['uid'], 'public_calendar')) {
$this->sysMessages->addNotice($this->t('Permission denied.'));
$this->baseUrl->redirect('profile/' . $nickname);
}
$ownerUid = $owner['uid'];
$format = $this->parameters['format'] ?: static::DEFAULT_EXPORT;

View File

@ -64,7 +64,7 @@ class Show extends BaseModule
protected function content(array $request = []): string
{
$nickname = $this->parameters['nickname'] ?? $this->app->getLoggedInUserNickname();
$nickname = $this->parameters['nickname'] ?? $this->session->getLocalUserNickname();
if (!$nickname) {
throw new HTTPException\UnauthorizedException();
}