Merge remote-tracking branch 'upstream/master' into dev-ctrlr-modules

# Conflicts:
#	CHANGELOG.md
This commit is contained in:
Tõnis Ormisson
2018-09-15 10:18:50 +03:00
17 changed files with 45 additions and 26 deletions

View File

@ -15,6 +15,7 @@
- Fix #195: UserCreateService: check if we're from web before setting flash message (maxxer) - Fix #195: UserCreateService: check if we're from web before setting flash message (maxxer)
- Enh: Improvements to the admin responsive design (wautvda) - Enh: Improvements to the admin responsive design (wautvda)
- Enh: Add controller module class reference (TonisOrmisson) - Enh: Add controller module class reference (TonisOrmisson)
- Enh: Replace the deprecated InvalidParamException in ClassMapHelper (TonisOrmisson)
## 1.1.4 - February 19, 2018 ## 1.1.4 - February 19, 2018
- Enh: Check enableEmailConfirmation on registration (faenir) - Enh: Check enableEmailConfirmation on registration (faenir)

View File

@ -13,6 +13,9 @@ The following is the list of action provided by the module:
- **/user/settings/profile** Displays profile settings form - **/user/settings/profile** Displays profile settings form
- **/user/settings/account** Displays account settings form (email, username, password) - **/user/settings/account** Displays account settings form (email, username, password)
- **/user/settings/networks** Displays social network accounts settings page - **/user/settings/networks** Displays social network accounts settings page
- **/user/settings/confirm** Confirms a new email (requires *id* and *token* query params)
- **/user/settings/privacy**     Displays GDPR data page
- **/user/settings/gdprdelete**   Displays delete personal data page
- **/user/profile/show** Displays user's profile (requires *id* query param) - **/user/profile/show** Displays user's profile (requires *id* query param)
- **/user/admin/index** Displays user management interface - **/user/admin/index** Displays user management interface
- **/user/admin/create** Displays create user form - **/user/admin/create** Displays create user form

View File

@ -53,6 +53,18 @@ In `config/web.php` remove *module > rbac* configuration and change the *modules
* If you had `modelMap` customization you have to replace them with `classMap`. * If you had `modelMap` customization you have to replace them with `classMap`.
* In your extended model replace the `BaseUser` inheritance from `dektrium\user\models\User` to `Da\User\Model\User` * In your extended model replace the `BaseUser` inheritance from `dektrium\user\models\User` to `Da\User\Model\User`
* If you had controller remapping replace the inheritance from `dektrium\user\controllers\XX` to `Da\User\Controller\XX` * If you had controller remapping replace the inheritance from `dektrium\user\controllers\XX` to `Da\User\Controller\XX`
* Some properties has been renamed: from `enableConfirmation` to `enableEmailConfirmation`; from `enableGeneratingPassword` to `generatePasswords`
* Restore Identity url rule has been renamed: from `/user/admin/switch` to `/user/admin/switch-identity`
* Restore Identity session checker has changes: from
```php
if (Yii::$app->session->has(\dektrium\user\controllers\AdminController::ORIGINAL_USER_SESSION_KEY))
```
to
```php
/** @var Da\User\Module $module */
$module = Yii::$app->getModule('user');
if(Yii::$app->session->has($module->switchIdentitySessionKey))
```
## Rbac migrations ## Rbac migrations

View File

@ -51,9 +51,9 @@ abstract class AbstractAuthItemController extends Controller
{ {
return [ return [
'access' => [ 'access' => [
'class' => AccessControl::className(), 'class' => AccessControl::class,
'ruleConfig' => [ 'ruleConfig' => [
'class' => AccessRuleFilter::className(), 'class' => AccessRuleFilter::class,
], ],
'rules' => [ 'rules' => [
[ [

View File

@ -43,7 +43,7 @@ class ProfileController extends Controller
{ {
return [ return [
'access' => [ 'access' => [
'class' => AccessControl::className(), 'class' => AccessControl::class,
'rules' => [ 'rules' => [
[ [
'allow' => true, 'allow' => true,

View File

@ -63,7 +63,7 @@ class RecoveryController extends Controller
{ {
return [ return [
'access' => [ 'access' => [
'class' => AccessControl::className(), 'class' => AccessControl::class,
'rules' => [ 'rules' => [
[ [
'allow' => true, 'allow' => true,

View File

@ -72,7 +72,7 @@ class RegistrationController extends Controller
{ {
return [ return [
'access' => [ 'access' => [
'class' => AccessControl::className(), 'class' => AccessControl::class,
'rules' => [ 'rules' => [
[ [
'allow' => true, 'allow' => true,

View File

@ -36,15 +36,15 @@ class RuleController extends Controller
{ {
return [ return [
'verbs' => [ 'verbs' => [
'class' => VerbFilter::className(), 'class' => VerbFilter::class,
'actions' => [ 'actions' => [
'delete' => ['POST'], 'delete' => ['POST'],
], ],
], ],
'access' => [ 'access' => [
'class' => AccessControl::className(), 'class' => AccessControl::class,
'ruleConfig' => [ 'ruleConfig' => [
'class' => AccessRuleFilter::className(), 'class' => AccessRuleFilter::class,
], ],
'rules' => [ 'rules' => [
[ [

View File

@ -64,7 +64,7 @@ class SecurityController extends Controller
{ {
return [ return [
'access' => [ 'access' => [
'class' => AccessControl::className(), 'class' => AccessControl::class,
'rules' => [ 'rules' => [
[ [
'allow' => true, 'allow' => true,
@ -79,7 +79,7 @@ class SecurityController extends Controller
], ],
], ],
'verbs' => [ 'verbs' => [
'class' => VerbFilter::className(), 'class' => VerbFilter::class,
'actions' => [ 'actions' => [
'logout' => ['post'], 'logout' => ['post'],
], ],
@ -94,7 +94,7 @@ class SecurityController extends Controller
{ {
return [ return [
'auth' => [ 'auth' => [
'class' => AuthAction::className(), 'class' => AuthAction::class,
// if user is not logged in, will try to log him in, otherwise // if user is not logged in, will try to log him in, otherwise
// will try to connect social account to user. // will try to connect social account to user.
'successCallback' => Yii::$app->user->isGuest 'successCallback' => Yii::$app->user->isGuest

View File

@ -89,7 +89,7 @@ class SettingsController extends Controller
{ {
return [ return [
'verbs' => [ 'verbs' => [
'class' => VerbFilter::className(), 'class' => VerbFilter::class,
'actions' => [ 'actions' => [
'disconnect' => ['post'], 'disconnect' => ['post'],
'delete' => ['post'], 'delete' => ['post'],
@ -97,7 +97,7 @@ class SettingsController extends Controller
], ],
], ],
'access' => [ 'access' => [
'class' => AccessControl::className(), 'class' => AccessControl::class,
'rules' => [ 'rules' => [
[ [
'allow' => true, 'allow' => true,

View File

@ -12,6 +12,8 @@
namespace Da\User\Filter; namespace Da\User\Filter;
use Da\User\Model\User;
use Da\User\Module;
use Yii; use Yii;
use yii\base\ActionFilter; use yii\base\ActionFilter;
@ -19,7 +21,9 @@ class PasswordAgeEnforceFilter extends ActionFilter
{ {
public function beforeAction($action) public function beforeAction($action)
{ {
$maxPasswordAge = Yii::$app->getModule('user')->maxPasswordAge; /** @var Module $module */
$module = Yii::$app->getModule('user');
$maxPasswordAge = $module->maxPasswordAge;
// If feature is not set do nothing (or raise a configuration error?) // If feature is not set do nothing (or raise a configuration error?)
if (is_null($maxPasswordAge)) { if (is_null($maxPasswordAge)) {
return parent::beforeAction($action); return parent::beforeAction($action);
@ -28,7 +32,9 @@ class PasswordAgeEnforceFilter extends ActionFilter
// Not our business // Not our business
return parent::beforeAction($action); return parent::beforeAction($action);
} }
if (Yii::$app->user->identity->password_age >= $maxPasswordAge) { /** @var User $identity */
$identity = Yii::$app->user->identity;
if ($identity->password_age >= $maxPasswordAge) {
// Force password change // Force password change
Yii::$app->getSession()->setFlash('warning', Yii::t('usuario', 'Your password has expired, you must change it now')); Yii::$app->getSession()->setFlash('warning', Yii::t('usuario', 'Your password has expired, you must change it now'));
return Yii::$app->response->redirect(['/user/settings/account'])->send(); return Yii::$app->response->redirect(['/user/settings/account'])->send();

View File

@ -11,7 +11,7 @@
namespace Da\User\Helper; namespace Da\User\Helper;
use yii\base\InvalidParamException; use yii\base\InvalidArgumentException;
class ClassMapHelper class ClassMapHelper
{ {
@ -39,7 +39,7 @@ class ClassMapHelper
/** /**
* @param $key * @param $key
* *
* @throws InvalidParamException * @throws \InvalidArgumentException
* @return mixed * @return mixed
* *
*/ */
@ -48,6 +48,6 @@ class ClassMapHelper
if (array_key_exists($key, $this->map)) { if (array_key_exists($key, $this->map)) {
return $this->map[$key]; return $this->map[$key];
} }
throw new InvalidParamException('Unknown model map key: ' . $key); throw new InvalidArgumentException('Unknown model map key: ' . $key);
} }
} }

View File

@ -161,7 +161,7 @@ class User extends ActiveRecord implements IdentityInterface
public function behaviors() public function behaviors()
{ {
$behaviors = [ $behaviors = [
TimestampBehavior::className(), TimestampBehavior::class,
]; ];
if ($this->module->enableGDPRcompliance) { if ($this->module->enableGDPRcompliance) {

View File

@ -53,7 +53,7 @@ $this->params['breadcrumbs'][] = $this->title;
], ],
], ],
[ [
'class' => ActionColumn::className(), 'class' => ActionColumn::class,
'template' => '{update} {delete}', 'template' => '{update} {delete}',
'urlCreator' => function ($action, $model) { 'urlCreator' => function ($action, $model) {
return Url::to(['/user/permission/' . $action, 'name' => $model['name']]); return Url::to(['/user/permission/' . $action, 'name' => $model['name']]);

View File

@ -54,7 +54,7 @@ $this->params['breadcrumbs'][] = $this->title;
], ],
], ],
[ [
'class' => ActionColumn::className(), 'class' => ActionColumn::class,
'template' => '{update} {delete}', 'template' => '{update} {delete}',
'urlCreator' => function ($action, $model) { 'urlCreator' => function ($action, $model) {
return Url::to(['/user/role/' . $action, 'name' => $model['name']]); return Url::to(['/user/role/' . $action, 'name' => $model['name']]);

View File

@ -60,7 +60,7 @@ $this->params['breadcrumbs'][] = $this->title;
], ],
], ],
[ [
'class' => ActionColumn::className(), 'class' => ActionColumn::class,
'template' => '{update} {delete}', 'template' => '{update} {delete}',
'urlCreator' => function ($action, $model) { 'urlCreator' => function ($action, $model) {
return Url::to(['/user/rule/' . $action, 'name' => $model['name']]); return Url::to(['/user/rule/' . $action, 'name' => $model['name']]);

View File

@ -162,9 +162,6 @@ class GdprCest
$this->_prepareModule(false, false,false); $this->_prepareModule(false, false,false);
$I->amLoggedInAs(1); $I->amLoggedInAs(1);
$I->amOnRoute('/user/settings/privacy'); $I->amOnRoute('/user/settings/privacy');
$I->see('Not Found'); $I->seeResponseCodeIs(404);
$I->amOnRoute('/user/settings/privacy');
$I->see('Not Found');$I->amOnRoute('/user/settings/privacy');
$I->see('Not Found');
} }
} }