Added AuthHelper::isGuestAccessEnabled()

This commit is contained in:
Lucas Bartholemy 2019-08-09 14:52:45 +02:00
parent 055a5cbc28
commit 3eb5a9e002
19 changed files with 86 additions and 28 deletions

View File

@ -8,6 +8,7 @@
namespace humhub\components\access;
use humhub\modules\user\helpers\AuthHelper;
use Yii;
use humhub\modules\user\models\User;
use yii\base\InvalidArgumentException;
@ -415,7 +416,7 @@ class ControllerAccess extends BaseObject
*/
public function validateStrictMode()
{
return !$this->isGuest() || Yii::$app->user->isGuestAccessEnabled();
return !$this->isGuest() || AuthHelper::isGuestAccessEnabled();
}
/**

View File

@ -7,6 +7,7 @@
namespace humhub\components\access;
use humhub\modules\user\helpers\AuthHelper;
use Yii;
class GuestAccessValidator extends AccessValidator
@ -20,7 +21,7 @@ class GuestAccessValidator extends AccessValidator
*/
public function run()
{
if ($this->access->isGuest() && !Yii::$app->user->isGuestAccessEnabled()) {
if ($this->access->isGuest() && !AuthHelper::isGuestAccessEnabled()) {
$this->code = 401;
return false;
}

View File

@ -8,6 +8,7 @@
namespace humhub\controllers;
use humhub\modules\user\helpers\AuthHelper;
use Yii;
use yii\web\HttpException;
use yii\base\UserException;
@ -48,7 +49,7 @@ class ErrorController extends Controller
/**
* Show special login required view for guests
*/
if (Yii::$app->user->isGuest && $exception instanceof HttpException && $exception->statusCode == '401' && Yii::$app->getModule('user')->settings->get('auth.allowGuestAccess')) {
if (Yii::$app->user->isGuest && $exception instanceof HttpException && $exception->statusCode == '401' && AuthHelper::isGuestAccessEnabled()) {
return $this->render('@humhub/views/error/401_guests', ['message' => $message]);
}

View File

@ -14,8 +14,8 @@ features:
if(Yii::$app->user->isGuest) {
//...
}
if(Yii::$app->user->isGuestAccessEnabled()) {
use humhub\modules\user\helpers\AuthHelper;
if(AuthHelper::isGuestAccessEnabled()) {
//...
}
```
@ -109,4 +109,4 @@ public static function onUserDelete(Event $event)
$user = $event->sender;
MyRecord::deleteAll(['user_id' => $user->id]);
}
```
```

View File

@ -12,6 +12,7 @@ use humhub\modules\admin\models\forms\SpaceSettingsForm;
use humhub\modules\admin\models\SpaceSearch;
use humhub\modules\content\models\Content;
use humhub\modules\space\models\Space;
use humhub\modules\user\helpers\AuthHelper;
use Yii;
use humhub\modules\admin\components\Controller;
use humhub\modules\admin\permissions\ManageSpaces;
@ -104,7 +105,7 @@ class SpaceController extends Controller
$form = new SpaceSettingsForm;
$visibilityOptions = [];
if (Yii::$app->getModule('user')->settings->get('auth.allowGuestAccess')) {
if (AuthHelper::isGuestAccessEnabled()) {
$visibilityOptions[Space::VISIBILITY_ALL] = Yii::t('SpaceModule.base', 'Public (Members & Guests)');
}

View File

@ -31,7 +31,7 @@ Your account request has been declined.<br><br>
Kind Regards<br>
{AdminName}<br><br>';
public $internalAllowAnonymousRegistration;
public $internalRequireApprovalAfterRegistration;
public $internalUsersCanInvite;
@ -120,17 +120,17 @@ Kind Regards<br>
if ($settingsManager->get('auth.anonymousRegistration')) {
$settingsManager->set('auth.showCaptureInRegisterForm', $this->showCaptureInRegisterForm);
}
if ($settingsManager->get('auth.needApproval')) {
if(empty($this->registrationApprovalMailContent) || (strcmp($this->registrationApprovalMailContent, Yii::t('AdminModule.controllers_ApprovalController', self::defaultRegistrationApprovalMailContent)) == 0)) {
$this->registrationApprovalMailContent = Yii::t('AdminModule.controllers_ApprovalController', self::defaultRegistrationApprovalMailContent);
$settingsManager->delete('auth.registrationApprovalMailContent');
$settingsManager->delete('auth.registrationApprovalMailContent');
} else {
$settingsManager->set('auth.registrationApprovalMailContent', $this->registrationApprovalMailContent);
}
if(empty($this->registrationDenialMailContent) || strcmp($this->registrationDenialMailContent, Yii::t('AdminModule.controllers_ApprovalController', self::defaultRegistrationDenialMailContent)) == 0) {
$this->registrationDenialMailContent = Yii::t('AdminModule.controllers_ApprovalController', self::defaultRegistrationDenialMailContent);
$settingsManager->delete('auth.registrationDenialMailContent');
$settingsManager->delete('auth.registrationDenialMailContent');
} else {
$settingsManager->set('auth.registrationDenialMailContent', $this->registrationDenialMailContent);
}

View File

@ -11,6 +11,7 @@ namespace humhub\modules\content\components;
use humhub\modules\content\models\ContentTag;
use humhub\modules\content\models\ContentTagRelation;
use humhub\modules\space\models\Space;
use humhub\modules\user\helpers\AuthHelper;
use humhub\modules\user\models\User;
use Yii;
use yii\db\Expression;
@ -76,7 +77,7 @@ class ActiveQueryContent extends \yii\db\ActiveQuery
// Created content of is always visible
$conditionUser .= 'OR content.created_by=' . $user->id;
} elseif (Yii::$app->user->isGuestAccessEnabled()) {
} elseif (AuthHelper::isGuestAccessEnabled()) {
$conditionSpace = 'space.id IS NOT NULL and space.visibility=' . Space::VISIBILITY_ALL . ' AND content.visibility=1';
$conditionUser = 'cuser.id IS NOT NULL and cuser.visibility=' . User::VISIBILITY_ALL . ' AND content.visibility=1';
} else {

View File

@ -8,6 +8,7 @@
namespace humhub\modules\content\components;
use humhub\modules\user\helpers\AuthHelper;
use Yii;
use yii\web\HttpException;
use humhub\components\Controller;
@ -103,7 +104,7 @@ class ContentContainerController extends Controller
}
// Directly redirect guests to login page - if guest access isn't enabled
if (Yii::$app->user->isGuest && Yii::$app->getModule('user')->settings->get('auth.allowGuestAccess') != 1) {
if (Yii::$app->user->isGuest && !AuthHelper::isGuestAccessEnabled()) {
Yii::$app->user->loginRequired();
return false;
}

View File

@ -21,6 +21,7 @@ use humhub\modules\content\permissions\CreatePublicContent;
use humhub\modules\content\permissions\ManageContent;
use humhub\modules\space\models\Space;
use humhub\modules\user\components\PermissionManager;
use humhub\modules\user\helpers\AuthHelper;
use humhub\modules\user\models\User;
use Yii;
use yii\base\Exception;
@ -780,14 +781,14 @@ class Content extends ContentDeprecated implements Movable, ContentOwner
* This is the case if all of the following conditions are met:
*
* - The content is public
* - The `auth.allowGuestAccess` module setting is enabled
* - The `auth.allowGuestAccess` setting is enabled
* - The space or profile visibility is set to VISIBILITY_ALL
*
* @return bool
*/
public function checkGuestAccess()
{
if (!$this->isPublic() || !Yii::$app->getModule('user')->settings->get('auth.allowGuestAccess')) {
if (!$this->isPublic() || !AuthHelper::isGuestAccessEnabled()) {
return false;
}

View File

@ -8,6 +8,7 @@
namespace humhub\modules\space\behaviors;
use humhub\modules\user\helpers\AuthHelper;
use Yii;
use yii\base\Behavior;
use yii\helpers\Json;
@ -62,7 +63,7 @@ class SpaceController extends Behavior
{
$this->updateLastVisit();
if (Yii::$app->getModule('user')->settings->get('auth.allowGuestAccess') && Yii::$app->user->isGuest && $this->space->visibility != Space::VISIBILITY_ALL) {
if (AuthHelper::isGuestAccessEnabled() && Yii::$app->user->isGuest && $this->space->visibility != Space::VISIBILITY_ALL) {
throw new HttpException(401, Yii::t('SpaceModule.behaviors_SpaceControllerBehavior', 'You need to login to view contents of this space!'));
}

View File

@ -15,6 +15,7 @@ use humhub\modules\space\permissions\CreatePrivateSpace;
use humhub\modules\space\permissions\CreatePublicSpace;
use humhub\modules\space\models\forms\InviteForm;
use Colors\RandomColor;
use humhub\modules\user\helpers\AuthHelper;
use Yii;
use yii\base\Exception;
use yii\web\HttpException;
@ -72,7 +73,7 @@ class CreateController extends Controller
}
$visibilityOptions = [];
if (Yii::$app->getModule('user')->settings->get('auth.allowGuestAccess') && Yii::$app->user->permissionmanager->can(new CreatePublicSpace)) {
if (AuthHelper::isGuestAccessEnabled() && Yii::$app->user->permissionmanager->can(new CreatePublicSpace)) {
$visibilityOptions[Space::VISIBILITY_ALL] = Yii::t('SpaceModule.base', 'Public (Members & Guests)');
}
if (Yii::$app->user->permissionmanager->can(new CreatePublicSpace)) {

View File

@ -28,6 +28,7 @@ use humhub\modules\space\activities\Created;
use humhub\modules\content\components\ContentContainerActiveRecord;
use humhub\modules\content\models\Content;
use humhub\modules\user\components\ActiveQueryUser;
use humhub\modules\user\helpers\AuthHelper;
use humhub\modules\user\models\User;
use humhub\modules\user\models\Follow;
use humhub\modules\user\models\Invite;
@ -579,7 +580,7 @@ class Space extends ContentContainerActiveRecord implements Searchable
];
// Add guest groups if enabled
if (Yii::$app->getModule('user')->settings->get('auth.allowGuestAccess')) {
if (AuthHelper::isGuestAccessEnabled()) {
$groups[self::USERGROUP_GUEST] = 'Guests';
}

View File

@ -2,6 +2,7 @@
use humhub\modules\space\models\Space;
use humhub\modules\space\modules\manage\widgets\SecurityTabMenu;
use humhub\modules\user\helpers\AuthHelper;
use humhub\widgets\DataSaved;
use yii\bootstrap\ActiveForm;
use yii\helpers\Html;
@ -26,7 +27,7 @@ use yii\helpers\Html;
Space::VISIBILITY_NONE => Yii::t('SpaceModule.base', 'Private (Invisible)'),
Space::VISIBILITY_REGISTERED_ONLY => Yii::t('SpaceModule.base', 'Public (Registered users only)')
];
if (Yii::$app->getModule('user')->settings->get('auth.allowGuestAccess') == 1) {
if (AuthHelper::isGuestAccessEnabled()) {
$visibilities[Space::VISIBILITY_ALL] = Yii::t('SpaceModule.base', 'Visible for all (members and guests)');
}
?>

View File

@ -8,6 +8,7 @@
namespace humhub\modules\user\behaviors;
use humhub\modules\user\helpers\AuthHelper;
use Yii;
use yii\base\Behavior;
use yii\web\HttpException;
@ -16,9 +17,9 @@ use humhub\components\Controller;
/**
* ProfileController Behavior
*
*
* In User container scopes, this behavior will automatically attached to a contentcontainer controller.
*
*
* @see User::controllerBehavior
* @see \humhub\modules\contentcontainer\components\Controller
* @property \humhub\modules\contentcontainer\components\Controller $owner the controller
@ -56,7 +57,7 @@ class ProfileController extends Behavior
}
/**
*
*
* @return type
*/
public function getUser()
@ -74,7 +75,7 @@ class ProfileController extends Behavior
throw new HttpException(404, Yii::t('UserModule.behaviors_ProfileControllerBehavior', 'This profile is no longer available!'));
}
if (Yii::$app->getModule('user')->settings->get('auth.allowGuestAccess') && $this->user->visibility != User::VISIBILITY_ALL && Yii::$app->user->isGuest) {
if (AuthHelper::isGuestAccessEnabled() && $this->user->visibility != User::VISIBILITY_ALL && Yii::$app->user->isGuest) {
throw new HttpException(401, Yii::t('UserModule.behaviors_ProfileControllerBehavior', 'You need to login to view this user profile!'));
}

View File

@ -12,6 +12,7 @@ use humhub\modules\user\authclient\AuthClientHelpers;
use humhub\modules\user\authclient\Password;
use humhub\modules\user\authclient\interfaces\AutoSyncUsers;
use humhub\modules\user\events\UserEvent;
use humhub\modules\user\helpers\AuthHelper;
use Yii;
use yii\authclient\ClientInterface;
use yii\db\Expression;
@ -84,8 +85,8 @@ class User extends \yii\web\User
* ```
*
* @param string|string[]|BasePermission $permission
* @see PermissionManager::can()
* @return boolean
* @see PermissionManager::can()
* @since 1.2
*/
public function can($permission, $params = [], $allowCaching = true)
@ -201,10 +202,11 @@ class User extends \yii\web\User
* Checks if the system configuration allows access for guests
*
* @return boolean is guest access enabled and allowed
* @deprecated since 1.4
*/
public static function isGuestAccessEnabled()
{
return (Yii::$app->getModule('user')->settings->get('auth.allowGuestAccess'));
return AuthHelper::isGuestAccessEnabled();
}
/**

View File

@ -8,6 +8,7 @@
namespace humhub\modules\user\controllers;
use humhub\modules\user\helpers\AuthHelper;
use Yii;
use yii\web\HttpException;
use humhub\modules\user\components\BaseAccountController;
@ -143,7 +144,7 @@ class AccountController extends BaseAccountController
public function actionSecurity()
{
$groups = [];
$groupAccessEnabled = (boolean) Yii::$app->getModule('user')->settings->get('auth.allowGuestAccess');
$groupAccessEnabled = AuthHelper::isGuestAccessEnabled();
if (Yii::$app->getModule('friendship')->getIsEnabled()) {
$groups[User::USERGROUP_FRIEND] = Yii::t('UserModule.account', 'Your friends');

View File

@ -0,0 +1,41 @@
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2015 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\modules\user\helpers;
use humhub\modules\user\Module;
use Yii;
/**
* Class AuthHelper
*
* @since 1.4
* @package humhub\modules\user\helpers
*/
class AuthHelper
{
/**
* Checks if limited access is allowed for unauthenticated users.
*
* @return boolean
*/
public static function isGuestAccessEnabled()
{
/** @var Module $module */
$module = Yii::$app->getModule('user');
if ($module->settings->get('auth.allowGuestAccess')) {
return true;
}
return false;
}
}

View File

@ -25,6 +25,7 @@ use humhub\modules\user\behaviors\Followable;
use humhub\modules\user\behaviors\ProfileController;
use humhub\modules\user\components\ActiveQueryUser;
use humhub\modules\user\events\UserEvent;
use humhub\modules\user\helpers\AuthHelper;
use humhub\modules\user\Module;
use humhub\modules\user\widgets\UserWall;
use Yii;
@ -452,7 +453,7 @@ class User extends ContentContainerActiveRecord implements IdentityInterface, Se
$this->auth_mode = $passwordAuth->getId();
}
if (Yii::$app->getModule('user')->settings->get('auth.allowGuestAccess')) {
if (AuthHelper::isGuestAccessEnabled()) {
// Set users profile default visibility to all
if (Yii::$app->getModule('user')->settings->get('auth.defaultUserProfileVisibility') == User::VISIBILITY_ALL) {
$this->visibility = User::VISIBILITY_ALL;

View File

@ -1,6 +1,7 @@
<?php
use humhub\libs\TimezoneHelper;
use humhub\modules\user\helpers\AuthHelper;
use yii\widgets\ActiveForm;
use \humhub\compat\CHtml;
?>
@ -17,7 +18,7 @@ use \humhub\compat\CHtml;
<?= $form->field($model, 'timeZone')->dropDownList(TimezoneHelper::generateList(), ['data-ui-select2' => '']); ?>
<?php if (Yii::$app->getModule('user')->settings->get('auth.allowGuestAccess')): ?>
<?php if (AuthHelper::isGuestAccessEnabled()): ?>
<?php
echo $form->field($model, 'visibility')->dropDownList([