From 673e2fe729287e85957fddd551886335ca27f165 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 00:10:40 +0200 Subject: [PATCH 01/43] Added GDPR params --- src/User/Module.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/User/Module.php b/src/User/Module.php index 2ab8e72..d12126c 100644 --- a/src/User/Module.php +++ b/src/User/Module.php @@ -19,6 +19,22 @@ use yii\base\Module as BaseModule; */ class Module extends BaseModule { + /** + * @var bool whether to enable european G.D.P.R. compliance. + * This will add a few elements to comply with european general data protection regulation. + * This regulation affects to all companys in Europe a those companies outside that offer their + * service to the E.U. + * List of elements that will be added when this is enabled: + * - Checkbox to request consent on register form + * - Forgot me button in profile view. + * - Download my data button in profile + */ + public $enableGPDRcompliance = false; + /** + * @var null|array|string with the url to privacy policy. + * Must be in the same format as yii/helpers/Url::to requires. + */ + public $GDPRprivacyPolicyUrl = null; /** * @var bool whether to enable two factor authentication or not */ From 328acd2e2279e5e66783ef2b48ecf0d46af7189b Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 00:23:37 +0200 Subject: [PATCH 02/43] Added GPDR migration --- .../m000000_000007_add_gdpr_consent_field.php | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/User/Migration/m000000_000007_add_gdpr_consent_field.php diff --git a/src/User/Migration/m000000_000007_add_gdpr_consent_field.php b/src/User/Migration/m000000_000007_add_gdpr_consent_field.php new file mode 100644 index 0000000..8d06931 --- /dev/null +++ b/src/User/Migration/m000000_000007_add_gdpr_consent_field.php @@ -0,0 +1,27 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Migration; + +use yii\db\Migration; + +class m000000_000007_add_gdpr_consent_field extends Migration +{ + public function safeUp() + { + $this->addColumn('{{%user}}', 'gdpr_consent', $this->boolean()); + } + + public function safeDown() + { + $this->dropColumn('{{%user}}', 'gdpr_consent'); + } +} From 14b6c6af7d0a44101099b302a9195412ab34bc0a Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 00:30:51 +0200 Subject: [PATCH 03/43] Added gdpr validator --- src/User/Form/RegistrationForm.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/User/Form/RegistrationForm.php b/src/User/Form/RegistrationForm.php index e45bbeb..ae3b5db 100644 --- a/src/User/Form/RegistrationForm.php +++ b/src/User/Form/RegistrationForm.php @@ -68,6 +68,9 @@ class RegistrationForm extends Model // password rules 'passwordRequired' => ['password', 'required', 'skipOnEmpty' => $this->module->generatePasswords], 'passwordLength' => ['password', 'string', 'min' => 6, 'max' => 72], + 'gdprConsent' => ['gdpr_consent', 'required', 'when' => function () { + return $this->module->enableGPDRcompliance; + }] ]; } From 80412f5807105903a9aed0865d309eba1e08aed2 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 00:50:41 +0200 Subject: [PATCH 04/43] Added gdpr hint and static field --- src/User/Form/RegistrationForm.php | 20 +++++++++++++++++++ .../resources/views/registration/register.php | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/src/User/Form/RegistrationForm.php b/src/User/Form/RegistrationForm.php index ae3b5db..ed2caaa 100644 --- a/src/User/Form/RegistrationForm.php +++ b/src/User/Form/RegistrationForm.php @@ -16,6 +16,7 @@ use Da\User\Traits\ContainerAwareTrait; use Da\User\Traits\ModuleAwareTrait; use Yii; use yii\base\Model; +use yii\helpers\Html; class RegistrationForm extends Model { @@ -34,6 +35,10 @@ class RegistrationForm extends Model * @var string Password */ public $password; + /** + * @var bool Data processing consent + */ + public $gdpr_consent; /** * {@inheritdoc} @@ -83,6 +88,21 @@ class RegistrationForm extends Model 'email' => Yii::t('usuario', 'Email'), 'username' => Yii::t('usuario', 'Username'), 'password' => Yii::t('usuario', 'Password'), + 'gdpr_consent' => Yii::t('usuario', 'Data processing consent') + ]; + } + + public function attributeHints() + { + return [ + 'gdpr_consent' => Yii::t('usuario', 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}', + [ + 'privacyPolicy' => Html::a(Yii::t('usuario', 'privacy policy'), + $this->module->GDPRprivacyPolicyUrl, + ['target' => '_blank'] + ) + ]) ]; } } diff --git a/src/User/resources/views/registration/register.php b/src/User/resources/views/registration/register.php index 1cc3577..d25ac81 100644 --- a/src/User/resources/views/registration/register.php +++ b/src/User/resources/views/registration/register.php @@ -45,6 +45,10 @@ $this->params['breadcrumbs'][] = $this->title; field($model, 'password')->passwordInput() ?> + enableGPDRcompliance == false): ?> + field($model, 'gdpr_consent')->checkbox() ?> + + 'btn btn-success btn-block']) ?> From 7312f62f405bb794ee62868ea0ba7b0f5c068cc2 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 01:29:51 +0200 Subject: [PATCH 05/43] Add phpdoc gdpr properties --- src/User/Model/User.php | 66 +++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/src/User/Model/User.php b/src/User/Model/User.php index 7fc3771..b2c744e 100644 --- a/src/User/Model/User.php +++ b/src/User/Model/User.php @@ -46,6 +46,8 @@ use yii\web\IdentityInterface; * @property int $created_at * @property int $updated_at * @property int $last_login_at + * @property bool $gdpr_consent + * @property int $gdpr_consent_date * * Defined relations: * @property SocialNetworkAccount[] $socialNetworkAccounts @@ -69,6 +71,38 @@ class User extends ActiveRecord implements IdentityInterface */ protected $connectedAccounts; + /** + * {@inheritdoc} + */ + public static function tableName() + { + return '{{%user}}'; + } + + /** + * {@inheritdoc} + */ + public static function findIdentity($id) + { + return static::findOne($id); + } + + /** + * @return UserQuery + */ + public static function find() + { + return new UserQuery(static::class); + } + + /** + * {@inheritdoc} + */ + public static function findIdentityByAccessToken($token, $type = null) + { + throw new NotSupportedException('Method "' . __CLASS__ . '::' . __METHOD__ . '" is not implemented.'); + } + /** * {@inheritdoc} */ @@ -106,14 +140,6 @@ class User extends ActiveRecord implements IdentityInterface } } - /** - * {@inheritdoc} - */ - public static function tableName() - { - return '{{%user}}'; - } - /** * {@inheritdoc} */ @@ -222,14 +248,6 @@ class User extends ActiveRecord implements IdentityInterface return $this->getAttribute('auth_key'); } - /** - * {@inheritdoc} - */ - public static function findIdentity($id) - { - return static::findOne($id); - } - /** * @return bool whether is blocked or not */ @@ -296,20 +314,4 @@ class User extends ActiveRecord implements IdentityInterface return $this->connectedAccounts; } - - /** - * @return UserQuery - */ - public static function find() - { - return new UserQuery(static::class); - } - - /** - * {@inheritdoc} - */ - public static function findIdentityByAccessToken($token, $type = null) - { - throw new NotSupportedException('Method "' . __CLASS__ . '::' . __METHOD__ . '" is not implemented.'); - } } From a33b6c07237d0f5bf57a409669fbb82e14d1254d Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 01:30:23 +0200 Subject: [PATCH 06/43] Fix typo in property name --- src/User/Module.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/User/Module.php b/src/User/Module.php index d12126c..8b50edb 100644 --- a/src/User/Module.php +++ b/src/User/Module.php @@ -29,7 +29,7 @@ class Module extends BaseModule * - Forgot me button in profile view. * - Download my data button in profile */ - public $enableGPDRcompliance = false; + public $enableGDPRcompliance = false; /** * @var null|array|string with the url to privacy policy. * Must be in the same format as yii/helpers/Url::to requires. From 574a6a63dc39092e0ae340614c714871c107e378 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 01:31:34 +0200 Subject: [PATCH 07/43] Added GDPR consent checkbox --- src/User/resources/views/registration/register.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/User/resources/views/registration/register.php b/src/User/resources/views/registration/register.php index d25ac81..bb5a02f 100644 --- a/src/User/resources/views/registration/register.php +++ b/src/User/resources/views/registration/register.php @@ -45,8 +45,8 @@ $this->params['breadcrumbs'][] = $this->title; field($model, 'password')->passwordInput() ?> - enableGPDRcompliance == false): ?> - field($model, 'gdpr_consent')->checkbox() ?> + enableGDPRcompliance): ?> + field($model, 'gdpr_consent')->checkbox(['value' => 1]) ?> 'btn btn-success btn-block']) ?> From c6a5710e6ae726c412bfb17e0991bee6563ee4c1 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 01:31:51 +0200 Subject: [PATCH 08/43] Added consent date --- ...t_field.php => m000000_000007_add_gdpr_consent_fields.php} | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) rename src/User/Migration/{m000000_000007_add_gdpr_consent_field.php => m000000_000007_add_gdpr_consent_fields.php} (71%) diff --git a/src/User/Migration/m000000_000007_add_gdpr_consent_field.php b/src/User/Migration/m000000_000007_add_gdpr_consent_fields.php similarity index 71% rename from src/User/Migration/m000000_000007_add_gdpr_consent_field.php rename to src/User/Migration/m000000_000007_add_gdpr_consent_fields.php index 8d06931..fd0a1d1 100644 --- a/src/User/Migration/m000000_000007_add_gdpr_consent_field.php +++ b/src/User/Migration/m000000_000007_add_gdpr_consent_fields.php @@ -13,15 +13,17 @@ namespace Da\User\Migration; use yii\db\Migration; -class m000000_000007_add_gdpr_consent_field extends Migration +class m000000_000007_add_gdpr_consent_fields extends Migration { public function safeUp() { $this->addColumn('{{%user}}', 'gdpr_consent', $this->boolean()); + $this->addColumn('{{%user}}', 'gdpr_consent_date', $this->integer(11)); } public function safeDown() { $this->dropColumn('{{%user}}', 'gdpr_consent'); + $this->dropColumn('{{%user}}', 'gdpr_consent_date'); } } From eda30f236e9518105218b18f68717d5fd819062c Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 01:32:03 +0200 Subject: [PATCH 09/43] Added GDPR rules --- src/User/Form/RegistrationForm.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/User/Form/RegistrationForm.php b/src/User/Form/RegistrationForm.php index ed2caaa..d0f9bc7 100644 --- a/src/User/Form/RegistrationForm.php +++ b/src/User/Form/RegistrationForm.php @@ -73,9 +73,14 @@ class RegistrationForm extends Model // password rules 'passwordRequired' => ['password', 'required', 'skipOnEmpty' => $this->module->generatePasswords], 'passwordLength' => ['password', 'string', 'min' => 6, 'max' => 72], - 'gdprConsent' => ['gdpr_consent', 'required', 'when' => function () { - return $this->module->enableGPDRcompliance; - }] + 'gdprType' => ['gdpr_consent', 'boolean'], + 'gdprRequired' => ['gdpr_consent', + 'compare', + 'compareValue' => true, + 'message' => Yii::t('xenon','Your consent is required to register'), + 'when' => function () { + return $this->module->enableGDPRcompliance; + }] ]; } From ca495ca053dfc4ced40305cb2c79ffdb74657426 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 01:49:50 +0200 Subject: [PATCH 10/43] Added privacy action --- src/User/Controller/SettingsController.php | 9 ++++++++- src/User/resources/views/settings/privacy.php | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/User/resources/views/settings/privacy.php diff --git a/src/User/Controller/SettingsController.php b/src/User/Controller/SettingsController.php index f8fb71b..e8f9528 100644 --- a/src/User/Controller/SettingsController.php +++ b/src/User/Controller/SettingsController.php @@ -66,7 +66,8 @@ class SettingsController extends Controller UserQuery $userQuery, SocialNetworkAccountQuery $socialNetworkAccountQuery, array $config = [] - ) { + ) + { $this->profileQuery = $profileQuery; $this->userQuery = $userQuery; $this->socialNetworkAccountQuery = $socialNetworkAccountQuery; @@ -96,6 +97,7 @@ class SettingsController extends Controller 'profile', 'account', 'networks', + 'privacy', 'disconnect', 'delete', 'two-factor', @@ -145,6 +147,11 @@ class SettingsController extends Controller ); } + public function actionPrivacy() + { + return $this->render('privacy'); + } + public function actionAccount() { /** @var SettingsForm $form */ diff --git a/src/User/resources/views/settings/privacy.php b/src/User/resources/views/settings/privacy.php new file mode 100644 index 0000000..a8e0c29 --- /dev/null +++ b/src/User/resources/views/settings/privacy.php @@ -0,0 +1,19 @@ + + +
+
+ render('_menu') ?> +
+
+
+
+ title) ?> +
+
+ +
+
+
+
From bd35ccabf70ac17c31dcd8e426e6379e1fc12921 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 01:50:14 +0200 Subject: [PATCH 11/43] Added privacy option --- src/User/resources/views/settings/_menu.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/User/resources/views/settings/_menu.php b/src/User/resources/views/settings/_menu.php index 8821d16..732d366 100644 --- a/src/User/resources/views/settings/_menu.php +++ b/src/User/resources/views/settings/_menu.php @@ -14,6 +14,7 @@ use yii\widgets\Menu; /** @var \Da\User\Model\User $user */ $user = Yii::$app->user->identity; +$module = Yii::$app->getModule('user'); $networksVisible = count(Yii::$app->authClientCollection->clients) > 0; ?> @@ -40,6 +41,10 @@ $networksVisible = count(Yii::$app->authClientCollection->clients) > 0; 'items' => [ ['label' => Yii::t('usuario', 'Profile'), 'url' => ['/user/settings/profile']], ['label' => Yii::t('usuario', 'Account'), 'url' => ['/user/settings/account']], + ['label' => Yii::t('usuario', 'Privacy'), + 'url' => ['/user/settings/privacy'], + 'visible' => $module->enableGDPRcompliance + ], [ 'label' => Yii::t('usuario', 'Networks'), 'url' => ['/user/settings/networks'], From f2605c77df694765c5c0823f0865ea9064147b3a Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 02:00:15 +0200 Subject: [PATCH 12/43] Added content --- src/User/resources/views/settings/privacy.php | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/User/resources/views/settings/privacy.php b/src/User/resources/views/settings/privacy.php index a8e0c29..59d3caf 100644 --- a/src/User/resources/views/settings/privacy.php +++ b/src/User/resources/views/settings/privacy.php @@ -1,5 +1,9 @@ title = Yii::t('usuario', 'Privacy settings'); + ?>
@@ -9,10 +13,35 @@ use yii\helpers\Html;
- title) ?> +

title) ?>

- +
+
+

+

+

+ 'btn btn-info']) + ?> +
+
+

+

+

+ 'btn btn-danger']) + ?> +
+
From 44d1e86d5699508387e57ae6f85ae0eafcb53fe4 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 02:00:38 +0200 Subject: [PATCH 13/43] Fix missing h3 in panel header --- src/User/resources/views/settings/profile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/User/resources/views/settings/profile.php b/src/User/resources/views/settings/profile.php index 9cfaf8e..1144909 100644 --- a/src/User/resources/views/settings/profile.php +++ b/src/User/resources/views/settings/profile.php @@ -37,7 +37,7 @@ $timezoneHelper = $model->make(TimezoneHelper::class);
- title) ?> +

title) ?>

Date: Sun, 27 May 2018 02:20:18 +0200 Subject: [PATCH 14/43] Added exportable properties --- src/User/Module.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/User/Module.php b/src/User/Module.php index 8b50edb..cc7979e 100644 --- a/src/User/Module.php +++ b/src/User/Module.php @@ -23,7 +23,7 @@ class Module extends BaseModule * @var bool whether to enable european G.D.P.R. compliance. * This will add a few elements to comply with european general data protection regulation. * This regulation affects to all companys in Europe a those companies outside that offer their - * service to the E.U. + * services to the E.U. * List of elements that will be added when this is enabled: * - Checkbox to request consent on register form * - Forgot me button in profile view. @@ -35,6 +35,21 @@ class Module extends BaseModule * Must be in the same format as yii/helpers/Url::to requires. */ public $GDPRprivacyPolicyUrl = null; + /** + * @var array with the name of the user identity properties to be included when user request download of his data. + * Names can include relations like `profile.name` + */ + public $GDPRexportProperties = [ + 'email', + 'username', + 'profile.public_email', + 'profile.name', + 'profile.gravatar_email', + 'profile.gravatar_id', + 'profile.location', + 'profile.website', + 'profile.bio' + ]; /** * @var bool whether to enable two factor authentication or not */ From 0ea8bebab072b85f269e00c4a68031e8e498bd7b Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 02:48:21 +0200 Subject: [PATCH 15/43] Add target to export link --- src/User/resources/views/settings/privacy.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/User/resources/views/settings/privacy.php b/src/User/resources/views/settings/privacy.php index 59d3caf..b4fc4bb 100644 --- a/src/User/resources/views/settings/privacy.php +++ b/src/User/resources/views/settings/privacy.php @@ -26,7 +26,10 @@ $this->title = Yii::t('usuario', 'Privacy settings');

'btn btn-info']) + [ + 'class' => 'btn btn-info', + 'target' => '_blank' + ]) ?>
From d8538b2a3cea39b1000333ba81b2786d38621c68 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 02:48:38 +0200 Subject: [PATCH 16/43] Add more information --- src/User/Module.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/User/Module.php b/src/User/Module.php index cc7979e..9325b0f 100644 --- a/src/User/Module.php +++ b/src/User/Module.php @@ -37,7 +37,10 @@ class Module extends BaseModule public $GDPRprivacyPolicyUrl = null; /** * @var array with the name of the user identity properties to be included when user request download of his data. - * Names can include relations like `profile.name` + * Names can include relations like `profile.name`. + * GPDR says: + * > The data subject shall have the right to receive the personal data concerning him or her, which he + * > or she has provided to a controller, in a structured, commonly used and machine-readable format */ public $GDPRexportProperties = [ 'email', @@ -45,7 +48,6 @@ class Module extends BaseModule 'profile.public_email', 'profile.name', 'profile.gravatar_email', - 'profile.gravatar_id', 'profile.location', 'profile.website', 'profile.bio' From c6a9e07ee90302356e3687f0e69e7304b6efc113 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 03:02:01 +0200 Subject: [PATCH 17/43] Added export function --- src/User/Controller/SettingsController.php | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/User/Controller/SettingsController.php b/src/User/Controller/SettingsController.php index e8f9528..0ee63b3 100644 --- a/src/User/Controller/SettingsController.php +++ b/src/User/Controller/SettingsController.php @@ -31,6 +31,7 @@ use Da\User\Validator\TwoFactorCodeValidator; use Yii; use yii\filters\AccessControl; use yii\filters\VerbFilter; +use yii\helpers\ArrayHelper; use yii\web\Controller; use yii\web\ForbiddenHttpException; use yii\web\NotFoundHttpException; @@ -96,6 +97,7 @@ class SettingsController extends Controller 'actions' => [ 'profile', 'account', + 'export', 'networks', 'privacy', 'disconnect', @@ -152,6 +154,44 @@ class SettingsController extends Controller return $this->render('privacy'); } + /** + * Exports the personal data of the current active user + */ + public function actionExport() + { + if (!$this->module->enableGDPRcompliance) + throw new NotFoundHttpException('Page not found'); + + try { + $properties = $this->module->GDPRexportProperties; + $user = Yii::$app->user->identity; + $data = [$properties, []]; + + foreach ($properties as $property) { + $data[1][] = Yii::$app->formatter->asText(ArrayHelper::getValue($user, $property)); + } + + array_walk($data[0], function (&$value, $key) { + $splitted = explode('.', $value); + $value = array_pop($splitted); + }); + + Yii::$app->response->headers->removeAll(); + Yii::$app->response->headers->add('Content-type', 'text/csv'); + Yii::$app->response->headers->add('Content-Disposition', 'attachment;filename=gdpr-data.csv'); + Yii::$app->response->send(); + $f = fopen('php://output', 'w'); + foreach ($data as $line) { + fputcsv($f, $line, ";"); + } + } catch (\Exception $e) { + throw $e; + } catch (\Throwable $e) { + throw $e; + } + + } + public function actionAccount() { /** @var SettingsForm $form */ From 4bf1acf36dc4c6df940efa0b520d03b761977edc Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 03:10:52 +0200 Subject: [PATCH 18/43] Fix export docs --- src/User/Controller/SettingsController.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/User/Controller/SettingsController.php b/src/User/Controller/SettingsController.php index 0ee63b3..3261a08 100644 --- a/src/User/Controller/SettingsController.php +++ b/src/User/Controller/SettingsController.php @@ -155,7 +155,11 @@ class SettingsController extends Controller } /** - * Exports the personal data of the current active user + * Exports the data from the current user in a mechanical readable format (csv). Properties exported can be defined + * in the module configuration. + * @throws NotFoundHttpException if gdpr compliance is not enabled + * @throws \Exception + * @throws \Throwable */ public function actionExport() { @@ -182,7 +186,7 @@ class SettingsController extends Controller Yii::$app->response->send(); $f = fopen('php://output', 'w'); foreach ($data as $line) { - fputcsv($f, $line, ";"); + fputcsv($f, $line); } } catch (\Exception $e) { throw $e; From 1a08ce0250221078cc22a0b3a86e1cd6cbf2a88d Mon Sep 17 00:00:00 2001 From: Administrator Date: Sun, 27 May 2018 03:15:27 +0200 Subject: [PATCH 19/43] Add gdpr_deleted field --- src/User/Migration/m000000_000007_add_gdpr_consent_fields.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/User/Migration/m000000_000007_add_gdpr_consent_fields.php b/src/User/Migration/m000000_000007_add_gdpr_consent_fields.php index fd0a1d1..573f316 100644 --- a/src/User/Migration/m000000_000007_add_gdpr_consent_fields.php +++ b/src/User/Migration/m000000_000007_add_gdpr_consent_fields.php @@ -19,11 +19,13 @@ class m000000_000007_add_gdpr_consent_fields extends Migration { $this->addColumn('{{%user}}', 'gdpr_consent', $this->boolean()); $this->addColumn('{{%user}}', 'gdpr_consent_date', $this->integer(11)); + $this->addColumn('{{%user}}', 'gdpr_deleted', $this->boolean()->defaultValue(0)); } public function safeDown() { $this->dropColumn('{{%user}}', 'gdpr_consent'); $this->dropColumn('{{%user}}', 'gdpr_consent_date'); + $this->dropColumn('{{%user}}', 'gdpr_deleted'); } } From 6f77ffe8b933454f2aaa49ce20e1bf580fec695a Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 03:34:42 +0200 Subject: [PATCH 20/43] Add timestamp for GDPR --- src/User/Model/User.php | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/User/Model/User.php b/src/User/Model/User.php index b2c744e..ae16e95 100644 --- a/src/User/Model/User.php +++ b/src/User/Model/User.php @@ -28,7 +28,9 @@ use yii\web\IdentityInterface; * * @property bool $isAdmin * @property bool $isBlocked - * @property bool $isConfirmed whether user account has been confirmed or not + * @property bool $isConfirmed whether user account has been confirmed or not + * @property bool $gdpr_deleted whether user requested deletion of his account + * @property bool $gdpr_consent whether user has consent personal data processing * * Database fields: * @property int $id @@ -46,8 +48,7 @@ use yii\web\IdentityInterface; * @property int $created_at * @property int $updated_at * @property int $last_login_at - * @property bool $gdpr_consent - * @property int $gdpr_consent_date + * @property int $gdpr_consent_date date of agreement of data processing * * Defined relations: * @property SocialNetworkAccount[] $socialNetworkAccounts @@ -145,9 +146,19 @@ class User extends ActiveRecord implements IdentityInterface */ public function behaviors() { - return [ + $behaviors = [ TimestampBehavior::className(), ]; + + if ($this->module->enableGDPRcompliance) { + $behaviors['GDPR'] = [ + 'class' => TimestampBehavior::class, + 'createdAtAttribute' => 'gdpr_consent_date', + 'updatedAtAttribute' => false + ]; + } + + return $behaviors; } /** From c168427236c1d33523ebb26c57df83dcf459754e Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 03:36:14 +0200 Subject: [PATCH 21/43] Update delete url --- src/User/resources/views/settings/privacy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/User/resources/views/settings/privacy.php b/src/User/resources/views/settings/privacy.php index b4fc4bb..2b31e3b 100644 --- a/src/User/resources/views/settings/privacy.php +++ b/src/User/resources/views/settings/privacy.php @@ -40,7 +40,7 @@ $this->title = Yii::t('usuario', 'Privacy settings'); ) ?>

'btn btn-danger']) ?>
From d3223142799d399b5988cd0013f82fc84b89ee3a Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 03:54:28 +0200 Subject: [PATCH 22/43] Add gdprDelete form model --- src/User/Form/GdprDeleteForm.php | 57 ++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/User/Form/GdprDeleteForm.php diff --git a/src/User/Form/GdprDeleteForm.php b/src/User/Form/GdprDeleteForm.php new file mode 100644 index 0000000..2cd023d --- /dev/null +++ b/src/User/Form/GdprDeleteForm.php @@ -0,0 +1,57 @@ +securityHelper = $securityHelper; + parent::__construct($config); + } + + /** + * {@inheritdoc} + */ + public function rules() + { + return [ + 'requiredFields' => [['password'], 'required'], + 'passwordValidate' => [ + 'password', + function ($attribute) { + if ($this->user === null || + !$this->securityHelper->validatePassword($this->password, $this->user->password_hash) + ) { + $this->addError($attribute, Yii::t('usuario', 'Invalid login or password')); + } + }, + ] + ]; + } + +} \ No newline at end of file From 83e7359a2380742cf87b3cf4ac7222bccbd24e7e Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 05:57:31 +0200 Subject: [PATCH 23/43] Add gdprDelete action --- src/User/Controller/SettingsController.php | 120 +++++++++++++++++---- 1 file changed, 99 insertions(+), 21 deletions(-) diff --git a/src/User/Controller/SettingsController.php b/src/User/Controller/SettingsController.php index 3261a08..ab0179d 100644 --- a/src/User/Controller/SettingsController.php +++ b/src/User/Controller/SettingsController.php @@ -11,11 +11,15 @@ namespace Da\User\Controller; + use Da\User\Contracts\MailChangeStrategyInterface; +use Da\User\Event\GdprEvent; use Da\User\Event\ProfileEvent; use Da\User\Event\SocialNetworkConnectEvent; use Da\User\Event\UserEvent; +use Da\User\Form\GdprDeleteForm; use Da\User\Form\SettingsForm; +use Da\User\Helper\SecurityHelper; use Da\User\Model\Profile; use Da\User\Model\SocialNetworkAccount; use Da\User\Model\User; @@ -53,12 +57,12 @@ class SettingsController extends Controller /** * SettingsController constructor. * - * @param string $id - * @param Module $module - * @param ProfileQuery $profileQuery - * @param UserQuery $userQuery + * @param string $id + * @param Module $module + * @param ProfileQuery $profileQuery + * @param UserQuery $userQuery * @param SocialNetworkAccountQuery $socialNetworkAccountQuery - * @param array $config + * @param array $config */ public function __construct( $id, @@ -100,6 +104,7 @@ class SettingsController extends Controller 'export', 'networks', 'privacy', + 'gdprdelete', 'disconnect', 'delete', 'two-factor', @@ -151,7 +156,93 @@ class SettingsController extends Controller public function actionPrivacy() { - return $this->render('privacy'); + return $this->render('privacy', [ + 'module' => $this->module + ]); + } + + public function actionGdprdelete() + { + if (!$this->module->enableGDPRcompliance) + throw new NotFoundHttpException(); + + /** @var GdprDeleteForm $form */ + $form = $this->make(GdprDeleteForm::class); + + $user = $form->getUser(); + /* @var $event GdprEvent */ + $event = $this->make(GdprEvent::class, [$user]); + + if ($form->load(Yii::$app->request->post()) && $form->validate()) { + $this->trigger(GdprEvent::EVENT_BEFORE_DELETE, $event); + + if ($event->isValid) { + Yii::$app->user->logout(); + //Disconnect social networks + $networks = $this->socialNetworkAccountQuery->where(['user_id' => $user->id])->all(); + foreach ($networks as $network) { + $this->disconnectSocialNetwork($network->id); + } + + /* @var $security SecurityHelper */ + $security = $this->make(SecurityHelper::class); + $anonymReplacement = $this->module->GDPRanonymPrefix . $user->id; + + $user->updateAttributes([ + 'email' => $anonymReplacement . "@example.com", + 'username' => $anonymReplacement, + 'gdpr_deleted' => 1, + 'blocked_at' => time(), + 'auth_key' => $security->generateRandomString() + ]); + $user->profile->updateAttributes([ + 'public_email' => $anonymReplacement . "@example.com", + 'name' => $anonymReplacement, + 'gravatar_email' => $anonymReplacement . "@example.com", + 'location' => $anonymReplacement, + 'website' => $anonymReplacement . ".tld", + 'bio' => Yii::t('usuario', 'Deleted by GDPR request') + ]); + + + } + $this->trigger(GdprEvent::EVENT_AFTER_DELETE, $event); + + Yii::$app->session->setFlash('info', Yii::t('usuario', 'Your personal information has been removed')); + + return $this->goHome(); + + } + + return $this->render('gdprdelete', [ + 'model' => $form, + ]); + } + + /** + * @param $id + * @throws ForbiddenHttpException + * @throws NotFoundHttpException + * @throws \Exception + * @throws \Throwable + * @throws \yii\db\StaleObjectException + */ + protected function disconnectSocialNetwork($id): void + { + /** @var SocialNetworkAccount $account */ + $account = $this->socialNetworkAccountQuery->whereId($id)->one(); + + if ($account === null) { + throw new NotFoundHttpException(); + } + if ($account->user_id != Yii::$app->user->id) { + throw new ForbiddenHttpException(); + } + $event = $this->make(SocialNetworkConnectEvent::class, [Yii::$app->user->identity, $account]); + + $this->trigger(SocialNetworkConnectEvent::EVENT_BEFORE_DISCONNECT, $event); + $account->delete(); + $this->trigger(SocialNetworkConnectEvent::EVENT_AFTER_DISCONNECT, $event); } /** @@ -164,7 +255,7 @@ class SettingsController extends Controller public function actionExport() { if (!$this->module->enableGDPRcompliance) - throw new NotFoundHttpException('Page not found'); + throw new NotFoundHttpException(); try { $properties = $this->module->GDPRexportProperties; @@ -255,20 +346,7 @@ class SettingsController extends Controller public function actionDisconnect($id) { - /** @var SocialNetworkAccount $account */ - $account = $this->socialNetworkAccountQuery->whereId($id)->one(); - - if ($account === null) { - throw new NotFoundHttpException(); - } - if ($account->user_id != Yii::$app->user->id) { - throw new ForbiddenHttpException(); - } - $event = $this->make(SocialNetworkConnectEvent::class, [Yii::$app->user->identity, $account]); - - $this->trigger(SocialNetworkConnectEvent::EVENT_BEFORE_DISCONNECT, $event); - $account->delete(); - $this->trigger(SocialNetworkConnectEvent::EVENT_AFTER_DISCONNECT, $event); + $this->disconnectSocialNetwork($id); return $this->redirect(['networks']); } From 5dcaad02e773dfdd0c917a49b5aa343a35460086 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 05:57:46 +0200 Subject: [PATCH 24/43] Add container aware --- src/User/Bootstrap.php | 2 ++ src/User/Event/GdprEvent.php | 39 ++++++++++++++++++++++++++++++++ src/User/Form/GdprDeleteForm.php | 34 ++++++++++++++++++++++------ src/User/Module.php | 4 ++++ 4 files changed, 72 insertions(+), 7 deletions(-) create mode 100644 src/User/Event/GdprEvent.php diff --git a/src/User/Bootstrap.php b/src/User/Bootstrap.php index 0f36307..3ece9fe 100644 --- a/src/User/Bootstrap.php +++ b/src/User/Bootstrap.php @@ -71,6 +71,7 @@ class Bootstrap implements BootstrapInterface $di->set(Event\SocialNetworkAuthEvent::class); $di->set(Event\SocialNetworkConnectEvent::class); $di->set(Event\UserEvent::class); + $di->set(Event\GdprEvent::class); // forms $di->set(Form\LoginForm::class); @@ -78,6 +79,7 @@ class Bootstrap implements BootstrapInterface $di->set(Form\RegistrationForm::class); $di->set(Form\ResendForm::class); $di->set(Form\SettingsForm::class); + $di->set(Form\GdprDeleteForm::class); // helpers $di->set(Helper\AuthHelper::class); diff --git a/src/User/Event/GdprEvent.php b/src/User/Event/GdprEvent.php new file mode 100644 index 0000000..89872c5 --- /dev/null +++ b/src/User/Event/GdprEvent.php @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +namespace Da\User\Event; + +use Da\User\Model\User; +use yii\base\Event; + +class GdprEvent extends Event +{ + + const EVENT_BEFORE_DELETE = 'beforeDelete'; + const EVENT_AFTER_DELETE = 'afterDelete'; + /** + * @var bool whether logic must continue after this event. Valid only for beforeDelete + */ + public $isValid = true; + + protected $user; + + public function __construct(User $user, array $config = []) + { + $this->user = $user; + parent::__construct($config); + } + + public function getUser() + { + return $this->user; + } +} diff --git a/src/User/Form/GdprDeleteForm.php b/src/User/Form/GdprDeleteForm.php index 2cd023d..c7f9ee4 100644 --- a/src/User/Form/GdprDeleteForm.php +++ b/src/User/Form/GdprDeleteForm.php @@ -4,13 +4,20 @@ namespace Da\User\Form; -use yii\base\Model; -use Yii; -use Da\User\Model\User; use Da\User\Helper\SecurityHelper; +use Da\User\Model\User; +use Da\User\Traits\ContainerAwareTrait; +use Yii; +use yii\base\Model; +/** + * Class GdprDeleteForm + * @package Da\User\Form + */ class GdprDeleteForm extends Model { + use ContainerAwareTrait; + /** * @var string User's password */ @@ -26,7 +33,7 @@ class GdprDeleteForm extends Model /** * @param SecurityHelper $securityHelper - * @param array $config + * @param array $config */ public function __construct(SecurityHelper $securityHelper, $config = []) { @@ -44,14 +51,27 @@ class GdprDeleteForm extends Model 'passwordValidate' => [ 'password', function ($attribute) { - if ($this->user === null || - !$this->securityHelper->validatePassword($this->password, $this->user->password_hash) + if (!$this->securityHelper + ->validatePassword($this->password, $this->getUser()->password_hash) ) { - $this->addError($attribute, Yii::t('usuario', 'Invalid login or password')); + $this->addError($attribute, Yii::t('usuario', 'Invalid password')); } }, ] ]; } + /** + * @return User|null|\yii\web\IdentityInterface + */ + public function getUser() + { + if ($this->user == null) { + $this->user = Yii::$app->user->identity; + } + + return $this->user; + } + + } \ No newline at end of file diff --git a/src/User/Module.php b/src/User/Module.php index 9325b0f..0e8ceef 100644 --- a/src/User/Module.php +++ b/src/User/Module.php @@ -52,6 +52,10 @@ class Module extends BaseModule 'profile.website', 'profile.bio' ]; + /** + * @var string prefix to be used as a replacement when user requeste deletion of his data. + */ + public $GDPRanonymPrefix = 'GDPR'; /** * @var bool whether to enable two factor authentication or not */ From dbe52388b37b995cb89d22d1175c6396198064a1 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 05:58:04 +0200 Subject: [PATCH 25/43] Fix translation category --- src/User/Form/RegistrationForm.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/User/Form/RegistrationForm.php b/src/User/Form/RegistrationForm.php index d0f9bc7..3b745c7 100644 --- a/src/User/Form/RegistrationForm.php +++ b/src/User/Form/RegistrationForm.php @@ -77,7 +77,7 @@ class RegistrationForm extends Model 'gdprRequired' => ['gdpr_consent', 'compare', 'compareValue' => true, - 'message' => Yii::t('xenon','Your consent is required to register'), + 'message' => Yii::t('usuario', 'Your consent is required to register'), 'when' => function () { return $this->module->enableGDPRcompliance; }] @@ -100,8 +100,7 @@ class RegistrationForm extends Model public function attributeHints() { return [ - 'gdpr_consent' => Yii::t('usuario', 'I aggree processing of my personal data and the use of cookies - to facilitate the operation of this site. For more information read our {privacyPolicy}', + 'gdpr_consent' => Yii::t('usuario', 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}', [ 'privacyPolicy' => Html::a(Yii::t('usuario', 'privacy policy'), $this->module->GDPRprivacyPolicyUrl, From a8c6366ef7cd01bada3a03d7cd36448643cf3318 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 05:58:32 +0200 Subject: [PATCH 26/43] Add gdpr messages --- src/User/resources/i18n/ca/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/da/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/de-DU/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/de/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/es/usuario.php | 28 +++++++++++++++++++---- src/User/resources/i18n/fa-IR/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/fi/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/fr/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/hr/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/hu/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/it/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/kk/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/lt/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/nl/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/pl/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/pt-BR/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/pt-PT/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/ro/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/ru/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/th/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/tr_TR/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/uk/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/vi/usuario.php | 20 ++++++++++++++++ src/User/resources/i18n/zh-CN/usuario.php | 20 ++++++++++++++++ 24 files changed, 483 insertions(+), 5 deletions(-) diff --git a/src/User/resources/i18n/ca/usuario.php b/src/User/resources/i18n/ca/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/ca/usuario.php +++ b/src/User/resources/i18n/ca/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/da/usuario.php b/src/User/resources/i18n/da/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/da/usuario.php +++ b/src/User/resources/i18n/da/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/de-DU/usuario.php b/src/User/resources/i18n/de-DU/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/de-DU/usuario.php +++ b/src/User/resources/i18n/de-DU/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/de/usuario.php b/src/User/resources/i18n/de/usuario.php index b8d9cdf..f801b73 100644 --- a/src/User/resources/i18n/de/usuario.php +++ b/src/User/resources/i18n/de/usuario.php @@ -25,20 +25,33 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Cancel' => '', 'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => '', 'Class' => '', 'Close' => '', 'Create new rule' => '', 'Created at' => '', + 'Data processing consent' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Disable Two-Factor Auth' => '', + 'Download my data' => '', 'Enable' => '', 'Enable Two-factor auth' => '', + 'Export my data' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'Impersonate this user' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Last login' => '', 'Never' => '', 'New rule' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Required "key" cannot be empty.' => '', 'Required "secret" cannot be empty.' => '', 'Role "{0}" not found. Creating it.' => '', @@ -52,6 +65,7 @@ return [ 'The "recaptcha" component must be configured.' => '', 'The verification code is incorrect.' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Two Factor Authentication' => '', 'Two factor successfully enabled.' => '', 'Two-Factor Authentication' => '', @@ -68,10 +82,16 @@ return [ 'Verification failed. Please, enter new code.' => '', 'We couldn\'t re-send the mail to confirm your address. Please, verify is the correct email or if it has been confirmed already.' => '', 'We have sent confirmation links to both old and new email addresses. You must click both links to complete your request.' => '', + 'You are about to delete all your personal data from this site.' => '', + 'Your consent is required to register' => '', + 'Your personal information has been removed' => '', + 'privacy policy' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@Eine Nachricht wurde an ihre E-Mail Adresse versandt@@', 'Awesome, almost there. ' => '@@Fast geschafft. @@', 'Class "{0}" does not exist' => '@@Klasse "{0}" existiert nicht@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@Registrierungs-IP@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/es/usuario.php b/src/User/resources/i18n/es/usuario.php index c96215a..eceb972 100644 --- a/src/User/resources/i18n/es/usuario.php +++ b/src/User/resources/i18n/es/usuario.php @@ -17,11 +17,16 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'Required "key" cannot be empty.' => 'El atributo "key" es obligatorio.', - 'Required "secret" cannot be empty.' => 'El atributo "secret" es obligatorio.', - 'The "recaptcha" component must be configured.' => 'El component "recaptcha" debe estar configurado.', - 'The verification code is incorrect.' => 'El código de verificación es incorrecto.', - '{0} cannot be blank.' => '{0} no puede estar vacío.', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Doy mi consentimiento para que mis datos personales sean procesados con el fin de operar en este sitio web. Para más información lea nuestra {privacyPolicy}', + 'Invalid password' => 'Contraseña incorrecta', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => 'Una vez que haya eliminado sus datos, no podrá volver a iniciar sesión con esta cuenta.', + 'Privacy' => 'Privacidad', + 'Privacy settings' => 'Ajustes de privacidad', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => 'Esto eliminará sus datos personales de este sitio web. No podrá iniciar sesión con esta cuenta.', + 'You are about to delete all your personal data from this site.' => 'Está a punto de borrar toda su información personal de este sitio', + 'Your consent is required to register' => 'El consentimiento es necesario para poder registrarse', + 'Your personal information has been removed' => 'Su información personal ha sido eliminada', + 'privacy policy' => 'política de privacidad', '(not set)' => '(sin establecer)', 'A confirmation message has been sent to your new email address' => 'Se ha enviado un mensaje de confirmación a tu nueva dirección de correo electrónico', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => 'Un mensaje ha sido enviado a tu dirección de correo electrónico. Contiene un vínculo de confirmación que tienes que seguir para completar el registro.', @@ -54,6 +59,7 @@ return [ 'Authorization rule has been updated.' => 'Regla de autenticación actualizada.', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => 'Bien hecho, casi estamos. Ahora tienes que seguir el vínculo de confirmación que hemos enviado a tu nueva dirección de e-mail.', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => 'Bien hecho, casi estamos. Ahora tienes que seguir el vínculo de confirmación que hemos enviado a tu antigua dirección de e-mail.', + 'Back to privacy settings' => 'Volver a los ajustes de privacidad ', 'Bio' => 'Biografía', 'Block' => 'Bloquear', 'Block status' => 'Estado de bloqueo', @@ -84,13 +90,18 @@ return [ 'Credentials will be sent to the user by email' => 'Las credenciales se enviarán al usuario por correo electrónico', 'Current password' => 'Contraseña actual', 'Current password is not valid' => 'La contraseña actual no es válida', + 'Data processing consent' => 'Consentimiento para el procesamiento de datos', 'Delete' => 'Eliminar', 'Delete account' => 'Eliminar cuenta', + 'Delete my account' => 'Borrar mi cuenta', + 'Delete personal data' => 'Borrar mis datos personales', + 'Deleted by GDPR request' => 'Borrado por solicitud GDPR', 'Description' => 'Descripción', 'Didn\'t receive confirmation message?' => '¿No has recibido el mensaje de confirmación?', 'Disable Two-Factor Auth' => 'Desabilitar autenticación de dos factores', 'Disconnect' => 'Desconectar', 'Don\'t have an account? Sign up!' => '¿No tienes cuenta? ¡Regístrate!', + 'Download my data' => 'Descargar mis datos', 'Email' => 'Correo electrónico', 'Email (public)' => 'Correo electrónico (público)', 'Enable' => 'Habilitar', @@ -98,10 +109,12 @@ return [ 'Error occurred while changing password' => 'Se ha producido un error al cambiar la contraseña', 'Error occurred while confirming user' => 'Se ha producido un error al confirmar el usuario', 'Error occurred while deleting user' => 'Se ha producido un error al eliminar el usuario', + 'Export my data' => 'Exportar mis datos', 'Finish' => 'Finalizar', 'Forgot password?' => '¿Olvidaste la contraseña?', 'Gravatar email' => 'Correo electrónico Gravatar', 'Hello' => 'Hola', + 'Here you can download your personal data in a comma separated values format.' => 'Aquí puede descargar su información personal en un archivo de valores separados por coma', 'If you already registered, sign in and connect this account on settings page' => 'Si ya está registrados, inicie sesión y conecta esta cuenta en la página de configuración', 'If you cannot click the link, please try pasting the text into your browser' => 'Si tienes problemas, por favor, pegua la siguiente dirección URL en su navegador web', 'If you did not make this request you can ignore this email' => 'PD: Si ha recibido este correo electrónico por error, simplemente elimínelo', @@ -152,6 +165,8 @@ return [ 'Registration time' => 'Hora de registro', 'Remember me next time' => 'Recuérdame la próxima vez', 'Request new confirmation message' => 'Solicita nuevo mensaje de confirmación', + 'Required "key" cannot be empty.' => 'El atributo "key" es obligatorio.', + 'Required "secret" cannot be empty.' => 'El atributo "secret" es obligatorio.', 'Reset your password' => 'Restablece contraseña', 'Role "{0}" not found. Creating it.' => 'Rol "{0}" no encontrado. Creándolo.', 'Roles' => 'Roles', @@ -170,7 +185,9 @@ return [ 'Switch identities is disabled.' => 'Personificación de usuarios deshabilitada.', 'Thank you for signing up on {0}' => 'Gracias por registrate en {0}', 'Thank you, registration is now complete.' => 'Gracias, el registro ha sido completado.', + 'The "recaptcha" component must be configured.' => 'El component "recaptcha" debe estar configurado.', 'The confirmation link is invalid or expired. Please try requesting a new one.' => 'El enlace de confirmación no es válido o ha caducado. Por favor, intenta a solicitar uno nuevo.', + 'The verification code is incorrect.' => 'El código de verificación es incorrecto.', 'There is neither role nor permission with name "{0}"' => 'No existe rol ni permiso con el nombre "{0}"', 'This account has already been connected to another user' => 'Esta cuenta ya está conectada con otro usuario', 'This email address has already been taken' => 'Esta cuenta de correo electrónico ya está siendo utilizada', @@ -239,4 +256,5 @@ return [ 'Your email address has been changed' => 'Tu cuenta de correo electrónico ha sido cambiada', 'Your profile has been updated' => 'Tu perfil ha sido actualizado', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, MMMM dd, YYYY HH:mm}', + '{0} cannot be blank.' => '{0} no puede estar vacío.', ]; diff --git a/src/User/resources/i18n/fa-IR/usuario.php b/src/User/resources/i18n/fa-IR/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/fa-IR/usuario.php +++ b/src/User/resources/i18n/fa-IR/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/fi/usuario.php b/src/User/resources/i18n/fi/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/fi/usuario.php +++ b/src/User/resources/i18n/fi/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/fr/usuario.php b/src/User/resources/i18n/fr/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/fr/usuario.php +++ b/src/User/resources/i18n/fr/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/hr/usuario.php b/src/User/resources/i18n/hr/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/hr/usuario.php +++ b/src/User/resources/i18n/hr/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/hu/usuario.php b/src/User/resources/i18n/hu/usuario.php index 70331bc..b172291 100644 --- a/src/User/resources/i18n/hu/usuario.php +++ b/src/User/resources/i18n/hu/usuario.php @@ -20,15 +20,28 @@ return [ 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Cancel' => '', 'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => '', 'Close' => '', + 'Data processing consent' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Disable Two-Factor Auth' => '', + 'Download my data' => '', 'Enable' => '', 'Enable Two-factor auth' => '', + 'Export my data' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Last login' => '', 'Never' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Required "key" cannot be empty.' => '', 'Required "secret" cannot be empty.' => '', 'Role "{0}" not found. Creating it.' => '', @@ -36,6 +49,7 @@ return [ 'The "recaptcha" component must be configured.' => '', 'The verification code is incorrect.' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Two Factor Authentication' => '', 'Two factor successfully enabled.' => '', 'Two-Factor Authentication' => '', @@ -48,9 +62,15 @@ return [ 'Verification failed. Please, enter new code.' => '', 'We couldn\'t re-send the mail to confirm your address. Please, verify is the correct email or if it has been confirmed already.' => '', 'We have sent confirmation links to both old and new email addresses. You must click both links to complete your request.' => '', + 'You are about to delete all your personal data from this site.' => '', + 'Your consent is required to register' => '', + 'Your personal information has been removed' => '', + 'privacy policy' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@Üzenet érkezett az e-mail címedre.@@', 'Awesome, almost there. ' => '@@Szuper, majdnem kész.@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'We couldn\'t re-send the mail to confirm your address. ' => '@@A cím megerősítéséhez nem tudtuk újra elküldeni az e-mailt.@@', 'We have sent confirmation links to both old and new email addresses. ' => '@@Megerősítő linkeket küldtünk régi és új e-mail címekre.@@', '(not set)' => '(nincs beállítva)', diff --git a/src/User/resources/i18n/it/usuario.php b/src/User/resources/i18n/it/usuario.php index 4cacb3a..e70556f 100644 --- a/src/User/resources/i18n/it/usuario.php +++ b/src/User/resources/i18n/it/usuario.php @@ -20,15 +20,28 @@ return [ 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Cancel' => '', 'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => '', 'Close' => '', + 'Data processing consent' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Disable Two-Factor Auth' => '', + 'Download my data' => '', 'Enable' => '', 'Enable Two-factor auth' => '', + 'Export my data' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Last login' => '', 'Never' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Required "key" cannot be empty.' => '', 'Required "secret" cannot be empty.' => '', 'Role "{0}" not found. Creating it.' => '', @@ -36,6 +49,7 @@ return [ 'The "recaptcha" component must be configured.' => '', 'The verification code is incorrect.' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Two Factor Authentication' => '', 'Two factor successfully enabled.' => '', 'Two-Factor Authentication' => '', @@ -48,9 +62,15 @@ return [ 'Verification failed. Please, enter new code.' => '', 'We couldn\'t re-send the mail to confirm your address. Please, verify is the correct email or if it has been confirmed already.' => '', 'We have sent confirmation links to both old and new email addresses. You must click both links to complete your request.' => '', + 'You are about to delete all your personal data from this site.' => '', + 'Your consent is required to register' => '', + 'Your personal information has been removed' => '', + 'privacy policy' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@È stato inviato un messaggio al tuo indirizzo email@@', 'Awesome, almost there. ' => '@@Fantastico, ci siamo quasi. @@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'We couldn\'t re-send the mail to confirm your address. ' => '@@Non è stato possibile reinviare l\'email per confermare il tuo indirizzo. @@', 'We have sent confirmation links to both old and new email addresses. ' => '@@Abbiamo inviato un link di conferma sia al nuovo che al vecchio indirizzo email. @@', '(not set)' => '(non impostato)', diff --git a/src/User/resources/i18n/kk/usuario.php b/src/User/resources/i18n/kk/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/kk/usuario.php +++ b/src/User/resources/i18n/kk/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/lt/usuario.php b/src/User/resources/i18n/lt/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/lt/usuario.php +++ b/src/User/resources/i18n/lt/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/nl/usuario.php b/src/User/resources/i18n/nl/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/nl/usuario.php +++ b/src/User/resources/i18n/nl/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/pl/usuario.php b/src/User/resources/i18n/pl/usuario.php index 5f503f5..113d46c 100644 --- a/src/User/resources/i18n/pl/usuario.php +++ b/src/User/resources/i18n/pl/usuario.php @@ -17,13 +17,33 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ + 'Back to privacy settings' => '', 'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => '', + 'Data processing consent' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', + 'Download my data' => '', + 'Export my data' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', + 'Invalid password' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Required "key" cannot be empty.' => '', 'Required "secret" cannot be empty.' => '', 'Role "{0}" not found. Creating it.' => '', 'The "recaptcha" component must be configured.' => '', 'The verification code is incorrect.' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', + 'You are about to delete all your personal data from this site.' => '', + 'Your consent is required to register' => '', + 'Your personal information has been removed' => '', + 'privacy policy' => '', '{0} cannot be blank.' => '', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', '(not set)' => '(nie podano)', 'A confirmation message has been sent to your new email address' => 'Potwierdzenie zostało wysłane na Twój nowy adres email', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => 'Wysłaliśmy wiadomość na Twój adres email, zawierającą link aktywacyjny, w który musisz kliknąć, aby zakończyć rejestrację.', diff --git a/src/User/resources/i18n/pt-BR/usuario.php b/src/User/resources/i18n/pt-BR/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/pt-BR/usuario.php +++ b/src/User/resources/i18n/pt-BR/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/pt-PT/usuario.php b/src/User/resources/i18n/pt-PT/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/pt-PT/usuario.php +++ b/src/User/resources/i18n/pt-PT/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/ro/usuario.php b/src/User/resources/i18n/ro/usuario.php index 2ca4ae3..454329a 100644 --- a/src/User/resources/i18n/ro/usuario.php +++ b/src/User/resources/i18n/ro/usuario.php @@ -20,15 +20,28 @@ return [ 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Cancel' => '', 'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => '', 'Close' => '', + 'Data processing consent' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Disable Two-Factor Auth' => '', + 'Download my data' => '', 'Enable' => '', 'Enable Two-factor auth' => '', + 'Export my data' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Last login' => '', 'Never' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Required "key" cannot be empty.' => '', 'Required "secret" cannot be empty.' => '', 'Role "{0}" not found. Creating it.' => '', @@ -36,6 +49,7 @@ return [ 'The "recaptcha" component must be configured.' => '', 'The verification code is incorrect.' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Two Factor Authentication' => '', 'Two factor successfully enabled.' => '', 'Two-Factor Authentication' => '', @@ -48,9 +62,15 @@ return [ 'Verification failed. Please, enter new code.' => '', 'We couldn\'t re-send the mail to confirm your address. Please, verify is the correct email or if it has been confirmed already.' => '', 'We have sent confirmation links to both old and new email addresses. You must click both links to complete your request.' => '', + 'You are about to delete all your personal data from this site.' => '', + 'Your consent is required to register' => '', + 'Your personal information has been removed' => '', + 'privacy policy' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@A fost trimis un mesaj la adresa dvs. de e-mail.@@', 'Awesome, almost there. ' => '@@Minunat, aproape acolo.@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'We couldn\'t re-send the mail to confirm your address. ' => '@@Nu am putut retrimite mesajul pentru a vă confirma adresa.@@', 'We have sent confirmation links to both old and new email addresses. ' => '@@Am trimis linkuri de confirmare adresa de e-mail vechi și cel noi.@@', '(not set)' => '(nu este setat)', diff --git a/src/User/resources/i18n/ru/usuario.php b/src/User/resources/i18n/ru/usuario.php index ae3e0fe..c4c3246 100644 --- a/src/User/resources/i18n/ru/usuario.php +++ b/src/User/resources/i18n/ru/usuario.php @@ -20,15 +20,28 @@ return [ 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Cancel' => '', 'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => '', 'Close' => '', + 'Data processing consent' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Disable Two-Factor Auth' => '', + 'Download my data' => '', 'Enable' => '', 'Enable Two-factor auth' => '', + 'Export my data' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Last login' => '', 'Never' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Required "key" cannot be empty.' => '', 'Required "secret" cannot be empty.' => '', 'Role "{0}" not found. Creating it.' => '', @@ -36,6 +49,7 @@ return [ 'The "recaptcha" component must be configured.' => '', 'The verification code is incorrect.' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Two Factor Authentication' => '', 'Two factor successfully enabled.' => '', 'Two-Factor Authentication' => '', @@ -48,10 +62,16 @@ return [ 'Verification failed. Please, enter new code.' => '', 'We couldn\'t re-send the mail to confirm your address. Please, verify is the correct email or if it has been confirmed already.' => '', 'We have sent confirmation links to both old and new email addresses. You must click both links to complete your request.' => '', + 'You are about to delete all your personal data from this site.' => '', + 'Your consent is required to register' => '', + 'Your personal information has been removed' => '', + 'privacy policy' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@Сообщение было отправлено на вашу электронную почту@@', 'Awesome, almost there. ' => '@@Замечательно, почти готово!@@', 'Class "{0}" does not exist' => '@@Класс "{0}" не найден@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@IP при регистрации@@', 'Rule class can not be instantiated' => '@@Класс правила не может быть создан@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@Класс правила должен наследоваться от "yii\\rbac\\Rule"@@', diff --git a/src/User/resources/i18n/th/usuario.php b/src/User/resources/i18n/th/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/th/usuario.php +++ b/src/User/resources/i18n/th/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/tr_TR/usuario.php b/src/User/resources/i18n/tr_TR/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/tr_TR/usuario.php +++ b/src/User/resources/i18n/tr_TR/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/uk/usuario.php b/src/User/resources/i18n/uk/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/uk/usuario.php +++ b/src/User/resources/i18n/uk/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/vi/usuario.php b/src/User/resources/i18n/vi/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/vi/usuario.php +++ b/src/User/resources/i18n/vi/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', diff --git a/src/User/resources/i18n/zh-CN/usuario.php b/src/User/resources/i18n/zh-CN/usuario.php index 8a18a4e..5b39d05 100644 --- a/src/User/resources/i18n/zh-CN/usuario.php +++ b/src/User/resources/i18n/zh-CN/usuario.php @@ -49,6 +49,7 @@ return [ 'Authorization rule has been updated.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '', 'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '', + 'Back to privacy settings' => '', 'Bio' => '', 'Block' => '', 'Block status' => '', @@ -79,13 +80,18 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', + 'Delete my account' => '', + 'Delete personal data' => '', + 'Deleted by GDPR request' => '', 'Description' => '', 'Didn\'t receive confirmation message?' => '', 'Disable Two-Factor Auth' => '', 'Disconnect' => '', 'Don\'t have an account? Sign up!' => '', + 'Download my data' => '', 'Email' => '', 'Email (public)' => '', 'Enable' => '', @@ -93,10 +99,13 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', + 'Export my data' => '', 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', 'Hello' => '', + 'Here you can download your personal data in a comma separated values format.' => '', + 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '', 'If you already registered, sign in and connect this account on settings page' => '', 'If you cannot click the link, please try pasting the text into your browser' => '', 'If you did not make this request you can ignore this email' => '', @@ -107,6 +116,7 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', + 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid value' => '', 'It will be deleted forever' => '', @@ -129,12 +139,15 @@ return [ 'Not blocked' => '', 'Not found' => '', 'Once you delete your account, there is no going back' => '', + 'Once you have deleted your data, you will not longer be able to sign in with this account.' => '', 'Password' => '', 'Password has been changed' => '', 'Permissions' => '', 'Please be certain' => '', 'Please click the link below to complete your password reset' => '', 'Please fix following errors:' => '', + 'Privacy' => '', + 'Privacy settings' => '', 'Profile' => '', 'Profile details' => '', 'Profile details have been updated' => '', @@ -175,6 +188,7 @@ return [ 'This email address has already been taken' => '', 'This username has already been taken' => '', 'This will disable two-factor auth. Are you sure?' => '', + 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication' => '', @@ -222,6 +236,7 @@ return [ 'Website' => '', 'Welcome to {0}' => '', 'Yandex' => '', + 'You are about to delete all your personal data from this site.' => '', 'You can assign multiple roles or permissions to user by using the form below' => '', 'You can connect multiple accounts to be able to log in using them' => '', 'You cannot remove your own account' => '', @@ -235,13 +250,18 @@ return [ 'Your account has been created and a message with further instructions has been sent to your email' => '', 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', + 'Your consent is required to register' => '', 'Your email address has been changed' => '', + 'Your personal information has been removed' => '', 'Your profile has been updated' => '', + 'privacy policy' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', '{0} cannot be blank.' => '', 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', + 'I aggree processing of my personal data and the use of cookies + to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', From ba4cf2f7cfeb228434a0e09bd069d8ded464ae80 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 05:58:56 +0200 Subject: [PATCH 27/43] Created view --- .../resources/views/settings/gdprdelete.php | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/User/resources/views/settings/gdprdelete.php diff --git a/src/User/resources/views/settings/gdprdelete.php b/src/User/resources/views/settings/gdprdelete.php new file mode 100644 index 0000000..a849352 --- /dev/null +++ b/src/User/resources/views/settings/gdprdelete.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ + +use yii\widgets\ActiveForm; +use yii\helpers\Html; +/* @var $model \Da\User\Form\GdprDeleteForm */ +?> + +
+
+
+
+

+ +

+
+
+

+

+ +

+
+ +
+
+ field($model, 'password')->passwordInput() ?> +
+
+
+
+ 'btn btn-danger']) ?> +
+
+
+
+
+ 'btn btn-info']) ?> +
+
+ +
+
+
+
+ From ffd8709e33baa70a81a900f4a9a431d454ef3fbc Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 05:59:36 +0200 Subject: [PATCH 28/43] Added compatibility with allowAccountDelete --- src/User/resources/views/settings/privacy.php | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/User/resources/views/settings/privacy.php b/src/User/resources/views/settings/privacy.php index 2b31e3b..868823b 100644 --- a/src/User/resources/views/settings/privacy.php +++ b/src/User/resources/views/settings/privacy.php @@ -2,6 +2,8 @@ use yii\helpers\Html; +/* @var $module \Da\User\Module */ + $this->title = Yii::t('usuario', 'Privacy settings'); ?> @@ -39,10 +41,22 @@ $this->title = Yii::t('usuario', 'Privacy settings'); 'This will remove your personal data from this site. You will no longer be able to sign in.' ) ?>

- 'btn btn-danger']) - ?> + allowAccountDelete): ?> + 'btn btn-danger', + 'data-method' => 'post', + 'data-confirm' => Yii::t('usuario', 'Are you sure? There is no going back'), + ] + ) ?> + 'btn btn-danger']) + ?> +
From 1d0168379a3afea78e68dba0a43a19604d58d259 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 06:49:51 +0200 Subject: [PATCH 29/43] Added GDPR columns --- tests/_data/schema.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/_data/schema.sql b/tests/_data/schema.sql index a700996..eb32a92 100644 --- a/tests/_data/schema.sql +++ b/tests/_data/schema.sql @@ -73,6 +73,9 @@ CREATE TABLE `user` ( `auth_tf_enabled` tinyint(1) DEFAULT '0', `flags` int(11) NOT NULL DEFAULT '0', `last_login_at` int(11) DEFAULT NULL, + `gdpr_consent` tinyint(1) NULL DEFAULT '0', + `gdpr_consent_date` int(11) NULL, + `gdpr_deleted` tinyint(1) DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `user_unique_email` (`email`), From 4f41f09fe20f21347f8b5ba465931a4e069f6f58 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 16:25:08 +0200 Subject: [PATCH 30/43] Add default value for gdpr --- src/User/Form/RegistrationForm.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/User/Form/RegistrationForm.php b/src/User/Form/RegistrationForm.php index 441faf4..7c819de 100644 --- a/src/User/Form/RegistrationForm.php +++ b/src/User/Form/RegistrationForm.php @@ -76,6 +76,7 @@ class RegistrationForm extends Model 'passwordRequired' => ['password', 'required', 'skipOnEmpty' => $this->module->generatePasswords], 'passwordLength' => ['password', 'string', 'min' => 6, 'max' => 72], 'gdprType' => ['gdpr_consent', 'boolean'], + 'gdprDefault' => ['gdpr_consent', 'default', 'value' => 0,'skipOnEmpty' => false], 'gdprRequired' => ['gdpr_consent', 'compare', 'compareValue' => true, From f44cbe23b983ddfc353d5402b0eb34719901a22e Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 16:25:28 +0200 Subject: [PATCH 31/43] Fix merge conflict --- src/User/Model/User.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/User/Model/User.php b/src/User/Model/User.php index 4b93923..610772d 100644 --- a/src/User/Model/User.php +++ b/src/User/Model/User.php @@ -51,14 +51,10 @@ use yii\web\IdentityInterface; * @property int $created_at * @property int $updated_at * @property int $last_login_at -<<<<<<< HEAD * @property int $gdpr_consent_date date of agreement of data processing - * ======= * @property string $last_login_ip * @property int $password_changed_at * @property int $password_age ->>>>>>> upstream/master - * * Defined relations: * @property SocialNetworkAccount[] $socialNetworkAccounts * @property Profile $profile From 4952d7bd3c79d9a5d7e0facfc92f4701283df546 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 16:26:02 +0200 Subject: [PATCH 32/43] Fix merge conflict --- src/User/Migration/m000000_000009_add_gdpr_consent_fields.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/User/Migration/m000000_000009_add_gdpr_consent_fields.php b/src/User/Migration/m000000_000009_add_gdpr_consent_fields.php index 573f316..ea8c47c 100644 --- a/src/User/Migration/m000000_000009_add_gdpr_consent_fields.php +++ b/src/User/Migration/m000000_000009_add_gdpr_consent_fields.php @@ -13,7 +13,7 @@ namespace Da\User\Migration; use yii\db\Migration; -class m000000_000007_add_gdpr_consent_fields extends Migration +class m000000_000009_add_gdpr_consent_fields extends Migration { public function safeUp() { From fc7ab68fec761634639038222e97910218cc4e89 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 16:26:42 +0200 Subject: [PATCH 33/43] Fix merge conflict --- src/User/resources/i18n/tr-TR/usuario.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/User/resources/i18n/tr-TR/usuario.php b/src/User/resources/i18n/tr-TR/usuario.php index 9236ca5..89759e9 100644 --- a/src/User/resources/i18n/tr-TR/usuario.php +++ b/src/User/resources/i18n/tr-TR/usuario.php @@ -100,11 +100,9 @@ return [ 'Error occurred while changing password' => '', 'Error occurred while confirming user' => '', 'Error occurred while deleting user' => '', -<<<<<<< HEAD:src/User/resources/i18n/tr_TR/usuario.php 'Export my data' => '', 'Error sending registration message to "{email}". Please try again later.' => '', 'Error sending welcome message to "{email}". Please try again later.' => '', ->>>>>>> upstream/master:src/User/resources/i18n/tr-TR/usuario.php 'Finish' => '', 'Forgot password?' => '', 'Gravatar email' => '', @@ -121,11 +119,9 @@ return [ 'Information' => '', 'Invalid login or password' => '', 'Invalid or expired link' => '', -<<<<<<< HEAD:src/User/resources/i18n/tr_TR/usuario.php 'Invalid password' => '', 'Invalid two-factor code' => '', 'Invalid two factor authentication code' => '', ->>>>>>> upstream/master:src/User/resources/i18n/tr-TR/usuario.php 'Invalid value' => '', 'It will be deleted forever' => '', 'Items' => '', @@ -196,11 +192,9 @@ return [ 'This account has already been connected to another user' => '', 'This email address has already been taken' => '', 'This username has already been taken' => '', -<<<<<<< HEAD:src/User/resources/i18n/tr_TR/usuario.php 'This will disable two-factor auth. Are you sure?' => '', 'This will remove your personal data from this site. You will no longer be able to sign in.' => '', 'This will disable two factor authentication. Are you sure?' => '', ->>>>>>> upstream/master:src/User/resources/i18n/tr-TR/usuario.php 'Time zone' => '', 'Time zone is not valid' => '', 'Two Factor Authentication (2FA)' => '', @@ -273,12 +267,10 @@ return [ 'A message has been sent to your email address. ' => '@@@@', 'Awesome, almost there. ' => '@@@@', 'Class "{0}" does not exist' => '@@@@', -<<<<<<< HEAD:src/User/resources/i18n/tr_TR/usuario.php 'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', 'Disable Two-Factor Auth' => '@@@@', 'Enable Two-factor auth' => '@@@@', ->>>>>>> upstream/master:src/User/resources/i18n/tr-TR/usuario.php 'Registration ip' => '@@@@', 'Rule class can not be instantiated' => '@@@@', 'Rule class must extend "yii\\rbac\\Rule"' => '@@@@', From 4b07c93313f2347e99b41c192513b1f31ec07453 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 16:26:54 +0200 Subject: [PATCH 34/43] Fix menu view --- src/User/resources/views/settings/profile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/User/resources/views/settings/profile.php b/src/User/resources/views/settings/profile.php index 8f33786..0237aa0 100644 --- a/src/User/resources/views/settings/profile.php +++ b/src/User/resources/views/settings/profile.php @@ -32,7 +32,7 @@ $timezoneHelper = $model->make(TimezoneHelper::class);
- render('/profile/_menu') ?> + render('_menu') ?>
From 2ebfad946ac76d080a50716bd632e4ad43ead383 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 16:28:19 +0200 Subject: [PATCH 35/43] Added gdpr tests --- tests/functional/GdprCest.php | 125 ++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 tests/functional/GdprCest.php diff --git a/tests/functional/GdprCest.php b/tests/functional/GdprCest.php new file mode 100644 index 0000000..8074071 --- /dev/null +++ b/tests/functional/GdprCest.php @@ -0,0 +1,125 @@ +getModule('user'); + $module->enableEmailConfirmation = $emailConfirmation; + $module->generatePasswords = $generatePasswords; + $module->enableGDPRcompliance = $enableGdpr; + } + + public function _before(FunctionalTester $I) + { + $I->haveFixtures(['user' => UserFixture::className()]); + } + + public function _after(FunctionalTester $I) + { + \Yii::$container->set(Module::className(), [ + 'enableEmailConfirmation' => true, + 'generatePasswords' => false, + ]); + } + + /** + * Tests registration with email, username and password without any confirmation. + * + * @param FunctionalTester $I + */ + public function testGdprRegistration(FunctionalTester $I) + { + + $this->_prepareModule(false,false); + + $I->amOnRoute('/user/registration/register'); + + $I->amGoingTo('try to register with empty credentials'); + $this->register($I, '', '', '',false); + $I->see('Username cannot be blank'); + $I->see('Email cannot be blank'); + $I->see('Password cannot be blank'); + $I->see('Your consent is required to register'); + + $I->amGoingTo('try to register with already used email and username'); + $user = $I->grabFixture('user', 'user'); + + $this->register($I, $user->email, $user->username, 'qwerty'); + $I->see(Html::encode('This username has already been taken')); + $I->see(Html::encode('This email address has already been taken')); + $this->register($I, 'tester@example.com', 'tester', 'tester'); + $I->see('Your account has been created'); + $user = $I->grabRecord(User::className(), ['email' => 'tester@example.com']); + $I->assertTrue($user->isConfirmed); + + $I->amOnRoute('/user/security/login'); + $I->fillField('#loginform-login', 'tester'); + $I->fillField('#loginform-password', 'tester'); + $I->click('Sign in'); + $I->see('Logout'); + } + + protected function register(FunctionalTester $I, $email, $username = null, $password = null, $gdpr_consent = true) + { + $I->fillField('#registrationform-email', $email); + $I->fillField('#registrationform-username', $username); + if ($password !== null) { + $I->fillField('#registrationform-password', $password); + } + if ($gdpr_consent) + $I->checkOption('#registrationform-gdpr_consent'); + + $I->click('Sign up'); + + } + + /** + * Tests registration when confirmation message is sent. + * + * @param FunctionalTester $I + */ + public function testRegistrationWithConfirmation(FunctionalTester $I) + { + $this->_prepareModule(true); + + $I->amOnRoute('/user/registration/register'); + $this->register($I, 'tester@example.com', 'tester', 'tester'); + $I->see('Your account has been created and a message with further instructions has been sent to your email'); + $user = $I->grabRecord(User::className(), ['email' => 'tester@example.com']); + $token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRMATION]); + /** @var yii\swiftmailer\Message $message */ + $message = $I->grabLastSentEmail(); + $I->assertArrayHasKey($user->email, $message->getTo()); + $I->assertContains(Html::encode($token->getUrl()), utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString()))); + $I->assertFalse($user->isConfirmed); + } + + /** + * Tests registration when password is generated automatically and sent to user. + * + * @param FunctionalTester $I + */ + public function testRegistrationWithoutPassword(FunctionalTester $I) + { + $this->_prepareModule(false,true); + + $I->amOnRoute('/user/registration/register'); + $this->register($I, 'tester@example.com', 'tester'); + $I->see('Your account has been created'); + $user = $I->grabRecord(User::className(), ['email' => 'tester@example.com']); + $I->assertEquals('tester', $user->username); + /** @var yii\swiftmailer\Message $message */ + $message = $I->grabLastSentEmail(); + $I->assertArrayHasKey($user->email, $message->getTo()); + $I->assertContains('We have generated a password for you', utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString()))); + } +} From ba367c31be59d69307ff1fd74ce752d4bfef1258 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 17:06:06 +0200 Subject: [PATCH 36/43] Add RBAC tables --- tests/_data/schema.sql | 109 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/tests/_data/schema.sql b/tests/_data/schema.sql index cd9c92a..745a4bb 100644 --- a/tests/_data/schema.sql +++ b/tests/_data/schema.sql @@ -84,4 +84,113 @@ CREATE TABLE `user` ( UNIQUE KEY `user_unique_username` (`username`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; + +DROP TABLE IF EXISTS `auth_assignment`; +CREATE TABLE `auth_assignment` ( + `item_name` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `user_id` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `created_at` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Structure `auth_item` +-- + +DROP TABLE IF EXISTS `auth_item`; +CREATE TABLE `auth_item` ( + `name` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `type` smallint(6) NOT NULL, + `description` text COLLATE utf8_unicode_ci, + `rule_name` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `data` blob, + `created_at` int(11) DEFAULT NULL, + `updated_at` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Structure `auth_item_child` +-- + +DROP TABLE IF EXISTS `auth_item_child`; +CREATE TABLE `auth_item_child` ( + `parent` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `child` varchar(64) COLLATE utf8_unicode_ci NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Structure `auth_rule` +-- + +DROP TABLE IF EXISTS `auth_rule`; +CREATE TABLE `auth_rule` ( + `name` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `data` blob, + `created_at` int(11) DEFAULT NULL, + `updated_at` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + +-- +-- Indexes +-- + +-- +-- Index for `auth_assignment` +-- +ALTER TABLE `auth_assignment` + ADD PRIMARY KEY (`item_name`,`user_id`), + ADD KEY `auth_assignment_user_id_idx` (`user_id`); + +-- +-- Index for `auth_item` +-- +ALTER TABLE `auth_item` + ADD PRIMARY KEY (`name`), + ADD KEY `rule_name` (`rule_name`), + ADD KEY `idx-auth_item-type` (`type`); + +-- +-- Index for `auth_item_child` +-- +ALTER TABLE `auth_item_child` + ADD PRIMARY KEY (`parent`,`child`), + ADD KEY `child` (`child`); + +-- +-- Index for `auth_rule` +-- +ALTER TABLE `auth_rule` + ADD PRIMARY KEY (`name`); + +-- +-- Restrictions +-- + +-- +-- `auth_assignment` filters +-- +ALTER TABLE `auth_assignment` + ADD CONSTRAINT `auth_assignment_ibfk_1` FOREIGN KEY (`item_name`) REFERENCES `auth_item` (`name`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- +-- `auth_item` filters +-- +ALTER TABLE `auth_item` + ADD CONSTRAINT `auth_item_ibfk_1` FOREIGN KEY (`rule_name`) REFERENCES `auth_rule` (`name`) ON DELETE SET NULL ON UPDATE CASCADE; + +-- +-- `auth_item_child` filters +-- +ALTER TABLE `auth_item_child` + ADD CONSTRAINT `auth_item_child_ibfk_1` FOREIGN KEY (`parent`) REFERENCES `auth_item` (`name`) ON DELETE CASCADE ON UPDATE CASCADE, + ADD CONSTRAINT `auth_item_child_ibfk_2` FOREIGN KEY (`child`) REFERENCES `auth_item` (`name`) ON DELETE CASCADE ON UPDATE CASCADE; +COMMIT; + + SET FOREIGN_KEY_CHECKS = 1; + From 2d1a2aed91d0f243142f9eab8a201f938bfae596 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 17:41:15 +0200 Subject: [PATCH 37/43] Improved tests --- tests/functional/GdprCest.php | 55 ++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/tests/functional/GdprCest.php b/tests/functional/GdprCest.php index 8074071..8138395 100644 --- a/tests/functional/GdprCest.php +++ b/tests/functional/GdprCest.php @@ -9,18 +9,12 @@ use yii\helpers\Html; class GdprCest { - public function _prepareModule($emailConfirmation = true, $generatePasswords = false, $enableGdpr = true) - { - /* @var $module Module */ - $module = Yii::$app->getModule('user'); - $module->enableEmailConfirmation = $emailConfirmation; - $module->generatePasswords = $generatePasswords; - $module->enableGDPRcompliance = $enableGdpr; - } - public function _before(FunctionalTester $I) { - $I->haveFixtures(['user' => UserFixture::className()]); + $I->haveFixtures([ + 'user' => UserFixture::class, + 'profile' => \tests\_fixtures\ProfileFixture::class + ]); } public function _after(FunctionalTester $I) @@ -39,12 +33,12 @@ class GdprCest public function testGdprRegistration(FunctionalTester $I) { - $this->_prepareModule(false,false); + $this->_prepareModule(false, false); $I->amOnRoute('/user/registration/register'); $I->amGoingTo('try to register with empty credentials'); - $this->register($I, '', '', '',false); + $this->register($I, '', '', '', false); $I->see('Username cannot be blank'); $I->see('Email cannot be blank'); $I->see('Password cannot be blank'); @@ -68,6 +62,15 @@ class GdprCest $I->see('Logout'); } + public function _prepareModule($emailConfirmation = true, $generatePasswords = false, $enableGdpr = true) + { + /* @var $module Module */ + $module = Yii::$app->getModule('user'); + $module->enableEmailConfirmation = $emailConfirmation; + $module->generatePasswords = $generatePasswords; + $module->enableGDPRcompliance = $enableGdpr; + } + protected function register(FunctionalTester $I, $email, $username = null, $password = null, $gdpr_consent = true) { $I->fillField('#registrationform-email', $email); @@ -110,7 +113,7 @@ class GdprCest */ public function testRegistrationWithoutPassword(FunctionalTester $I) { - $this->_prepareModule(false,true); + $this->_prepareModule(false, true); $I->amOnRoute('/user/registration/register'); $this->register($I, 'tester@example.com', 'tester'); @@ -122,4 +125,30 @@ class GdprCest $I->assertArrayHasKey($user->email, $message->getTo()); $I->assertContains('We have generated a password for you', utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString()))); } + + + /** + * Test privacy page + * + * @param FunctionalTester $I + */ + public function testPrivacyPage(FunctionalTester $I) + { + $this->_prepareModule(false, false); + + $I->amGoingTo('try that privacy page works'); + $I->amLoggedInAs(1); + $I->amOnRoute('/user/settings/privacy'); + $I->see('Export my data', 'h3'); + $I->see('Delete my account', 'h3'); + $I->click('Delete'); + $I->fillField('#gdprdeleteform-password','wrongpassword'); + $I->click('Delete'); + $I->see('Invalid password'); + $I->fillField('#gdprdeleteform-password','qwerty'); + $I->click('Delete'); + $I->see('Login'); + + + } } From f68312f27e4295accdfcad92d106362d5412f51f Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 17:47:08 +0200 Subject: [PATCH 38/43] Added more tests --- tests/functional/GdprCest.php | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/tests/functional/GdprCest.php b/tests/functional/GdprCest.php index 8138395..c81d9f0 100644 --- a/tests/functional/GdprCest.php +++ b/tests/functional/GdprCest.php @@ -134,21 +134,37 @@ class GdprCest */ public function testPrivacyPage(FunctionalTester $I) { - $this->_prepareModule(false, false); $I->amGoingTo('try that privacy page works'); $I->amLoggedInAs(1); + $this->_prepareModule(false, false); $I->amOnRoute('/user/settings/privacy'); $I->see('Export my data', 'h3'); $I->see('Delete my account', 'h3'); $I->click('Delete'); - $I->fillField('#gdprdeleteform-password','wrongpassword'); + $I->fillField('#gdprdeleteform-password', 'wrongpassword'); $I->click('Delete'); $I->see('Invalid password'); - $I->fillField('#gdprdeleteform-password','qwerty'); + $I->fillField('#gdprdeleteform-password', 'qwerty'); $I->click('Delete'); $I->see('Login'); + } - + /** + * Test privacy page + * + * @param FunctionalTester $I + */ + public function testPrivacyPageAccess(FunctionalTester $I) + { + $I->amGoingTo('Try that a user cant access to privacy if GDPR is not enabled'); + $this->_prepareModule(false, false, false); + $I->amLoggedInAs(1); + $I->amOnRoute('/user/settings/privacy'); + $I->see('Not Found'); + $I->amOnRoute('/user/settings/gdprdelete'); + $I->see('Not Found'); + $I->amOnRoute('/user/settings/export'); + $I->see('Not Found'); } } From 9275b16d1d309957aa912859ea195bfb0d517171 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 18:26:38 +0200 Subject: [PATCH 39/43] Added GDPR docs --- docs/helpful-guides/gdpr.md | 47 ++++++++++++++++++++++ docs/installation/configuration-options.md | 35 +++++++++++++++- 2 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 docs/helpful-guides/gdpr.md diff --git a/docs/helpful-guides/gdpr.md b/docs/helpful-guides/gdpr.md new file mode 100644 index 0000000..90cbbba --- /dev/null +++ b/docs/helpful-guides/gdpr.md @@ -0,0 +1,47 @@ +# GDPR and Yii2-usuario + +EU regulation +The General Data Protection Regulation (GDPR) (EU) 2016/679 is a regulation in EU law on data protection and privacy for all individuals within the European Union and the European Economic Area. It also addresses the export of personal data outside the EU and EEA. The GDPR aims primarily to give control to citizens and residents over their personal data and to simplify the regulatory environment for international business by unifying the regulation within the EU + +## Enable GDPR + +To enable support in yii2-usuario set `enableGDPRcompliance` to `true` and set + `GDPRprivacyPolicyUrl` with an url pointing to your privacy policy. + +### At this moment a few measures apply to your app: + +#### Data processing consent: + +All users must give consent of data processing to register. +Also consent will be stored in db with the user data. + +#### Data portability + +Gdpr says: +> The data subject shall have the right to receive the personal data concerning him or her, which he +> or she has provided to a controller, in a structured, commonly used and machine-readable format\[...] + +Users now have a privacy page in their account settings where they can export his/her personal data +in a csv file. +If you collect additional personal information you can to export by adding to +`GDPRexportProperties`. +> Export use `ArrayHelper::getValue()` to extract information, so you can use links to relations. + + +#### Right to be forgotten + +GDPR says: [Article 17](https://gdpr.algolia.com/gdpr-article-17) +> The data subject shall have the right to obtain from the controller the erasure of personal data concerning him or her without undue delay and the controller shall have the obligation to erase personal data without undue delay\[...] + +In privacy page, users will find a button to delete their personal information. +The behavior differs depending module configuration. + +If `$allowAccountDelete` is set to `true` the account will be fully deleted when clicking *Delete* button, +while when if that setting is set to `false` the module will remove social network connections and +replace the personal data with a custom alias defined in `$GDPRanonymPrefix`. + +The account will be blocked and marked as `gdpr_deleted`. + +That way you can keep your site operation as normal. + +> If you need to delete additional information use the `GdprEvent::EVENT_BEFORE_DELETE`. diff --git a/docs/installation/configuration-options.md b/docs/installation/configuration-options.md index a2a2224..23a2ba4 100644 --- a/docs/installation/configuration-options.md +++ b/docs/installation/configuration-options.md @@ -7,10 +7,41 @@ The module comes with a set of attributes to configure. The following is the lis Setting this attribute will allow users to configure their login process with two-factor authentication. -### twoFactorAuthenticationCycles (type: `integer`, default: `1`) +#### twoFactorAuthenticationCycles (type: `integer`, default: `1`) By default, Google Authenticator App for two-factor authentication cycles in periods of 30 seconds. In order to allow -a bigger period so to avoid out of sync issues. +a bigger period so to avoid out of sync issues. + +#### enableGDPRcompliance (type: `boolean`, default: `false`) + +Setting this attribute enables a serie of measures to comply with EU GDPR regulation, like data consent, right to be forgotten and data portability. + +#### GDPRprivacyPolicyUrl (type: `array`, default: null) +The link to privacy policy. This will be used on registration form as "read our pivacy policy". It must follow the same format as `yii\helpers\Url::to` + +#### GDPRexportProperties (type: `array`) + +An array with the name of the user identity properties to be included when user request download of his data. +Names can include relations like `profile.name`. + +Defaults to: +```php + [ + 'email', + 'username', + 'profile.public_email', + 'profile.name', + 'profile.gravatar_email', + 'profile.location', + 'profile.website', + 'profile.bio' + ] +``` + + +#### GDPRanonymPrefix (type: `string`, default: `GDPR`) +Prefix to be used as a replacement when user requeste deletion of his data + #### enableRegistration (type: `boolean`, default: `true`) From 572eb2c2cdb9b6277e5243194b9d8202770975c0 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 18:27:00 +0200 Subject: [PATCH 40/43] Prevent access to privacy when GDPR is not enabled --- src/User/Controller/SettingsController.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/User/Controller/SettingsController.php b/src/User/Controller/SettingsController.php index 74b7cde..d4a3a3d 100644 --- a/src/User/Controller/SettingsController.php +++ b/src/User/Controller/SettingsController.php @@ -156,6 +156,9 @@ class SettingsController extends Controller public function actionPrivacy() { + if (!$this->module->enableGDPRcompliance) + throw new NotFoundHttpException(); + return $this->render('privacy', [ 'module' => $this->module ]); From 86f8da1bdf3bae660d9b590c114a96b146575681 Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 18:29:26 +0200 Subject: [PATCH 41/43] Improved docs --- docs/helpful-guides/gdpr.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/helpful-guides/gdpr.md b/docs/helpful-guides/gdpr.md index 90cbbba..9012eb9 100644 --- a/docs/helpful-guides/gdpr.md +++ b/docs/helpful-guides/gdpr.md @@ -11,13 +11,16 @@ To enable support in yii2-usuario set `enableGDPRcompliance` to `true` and set ### At this moment a few measures apply to your app: #### Data processing consent: +GDPR says: [Article 7](https://gdpr.algolia.com/gdpr-article-7) + +> Where processing is based on consent, the controller shall be able to demonstrate that the data subject has consented to processing of his or her personal data.\[...] All users must give consent of data processing to register. Also consent will be stored in db with the user data. #### Data portability -Gdpr says: +GDPR says: [Article 20](https://gdpr.algolia.com/gdpr-article-20) > The data subject shall have the right to receive the personal data concerning him or her, which he > or she has provided to a controller, in a structured, commonly used and machine-readable format\[...] From 4b48406301191d0609fa0165d2ad085825f5963a Mon Sep 17 00:00:00 2001 From: "E.Alamo" Date: Sun, 27 May 2018 18:47:18 +0200 Subject: [PATCH 42/43] Fix test --- src/User/resources/views/settings/privacy.php | 7 ++++++- tests/functional/GdprCest.php | 14 +++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/User/resources/views/settings/privacy.php b/src/User/resources/views/settings/privacy.php index 868823b..4e9b012 100644 --- a/src/User/resources/views/settings/privacy.php +++ b/src/User/resources/views/settings/privacy.php @@ -46,6 +46,7 @@ $this->title = Yii::t('usuario', 'Privacy settings'); Yii::t('usuario', 'Delete account'), ['delete'], [ + 'id' => 'gdpr-del-button', 'class' => 'btn btn-danger', 'data-method' => 'post', 'data-confirm' => Yii::t('usuario', 'Are you sure? There is no going back'), @@ -54,7 +55,11 @@ $this->title = Yii::t('usuario', 'Privacy settings'); 'btn btn-danger']) + [ + 'class' => 'btn btn-danger', + 'id' => 'gdpr-del-button', + + ]) ?>
diff --git a/tests/functional/GdprCest.php b/tests/functional/GdprCest.php index c81d9f0..855c842 100644 --- a/tests/functional/GdprCest.php +++ b/tests/functional/GdprCest.php @@ -141,11 +141,11 @@ class GdprCest $I->amOnRoute('/user/settings/privacy'); $I->see('Export my data', 'h3'); $I->see('Delete my account', 'h3'); - $I->click('Delete'); - $I->fillField('#gdprdeleteform-password', 'wrongpassword'); + $I->amOnRoute('/user/settings/gdprdelete'); + $I->fillField('#gdprdeleteform-password','wrongpassword'); $I->click('Delete'); $I->see('Invalid password'); - $I->fillField('#gdprdeleteform-password', 'qwerty'); + $I->fillField('#gdprdeleteform-password','qwerty'); $I->click('Delete'); $I->see('Login'); } @@ -157,14 +157,14 @@ class GdprCest */ public function testPrivacyPageAccess(FunctionalTester $I) { + $I->amGoingTo('Try that a user cant access to privacy if GDPR is not enabled'); - $this->_prepareModule(false, false, false); + $this->_prepareModule(false, false,false); $I->amLoggedInAs(1); $I->amOnRoute('/user/settings/privacy'); $I->see('Not Found'); - $I->amOnRoute('/user/settings/gdprdelete'); - $I->see('Not Found'); - $I->amOnRoute('/user/settings/export'); + $I->amOnRoute('/user/settings/privacy'); + $I->see('Not Found');$I->amOnRoute('/user/settings/privacy'); $I->see('Not Found'); } } From ef4a1de6f46136e6dca3daadb6756810299a39a7 Mon Sep 17 00:00:00 2001 From: Lorenzo Milesi Date: Fri, 13 Jul 2018 09:33:15 +0200 Subject: [PATCH 43/43] Minor fixes to GDPR files --- src/User/Form/GdprDeleteForm.php | 11 ++++++++++- .../m000000_000009_add_gdpr_consent_fields.php | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/User/Form/GdprDeleteForm.php b/src/User/Form/GdprDeleteForm.php index c7f9ee4..926c767 100644 --- a/src/User/Form/GdprDeleteForm.php +++ b/src/User/Form/GdprDeleteForm.php @@ -1,5 +1,14 @@ + * @author E. Alamo + * + * For the full copyright and license information, please view + * the LICENSE file that was distributed with this source code. + */ namespace Da\User\Form; @@ -74,4 +83,4 @@ class GdprDeleteForm extends Model } -} \ No newline at end of file +} diff --git a/src/User/Migration/m000000_000009_add_gdpr_consent_fields.php b/src/User/Migration/m000000_000009_add_gdpr_consent_fields.php index ea8c47c..ea3f5eb 100644 --- a/src/User/Migration/m000000_000009_add_gdpr_consent_fields.php +++ b/src/User/Migration/m000000_000009_add_gdpr_consent_fields.php @@ -17,8 +17,8 @@ class m000000_000009_add_gdpr_consent_fields extends Migration { public function safeUp() { - $this->addColumn('{{%user}}', 'gdpr_consent', $this->boolean()); - $this->addColumn('{{%user}}', 'gdpr_consent_date', $this->integer(11)); + $this->addColumn('{{%user}}', 'gdpr_consent', $this->boolean()->defaultValue(0)); + $this->addColumn('{{%user}}', 'gdpr_consent_date', $this->integer(11)->null()); $this->addColumn('{{%user}}', 'gdpr_deleted', $this->boolean()->defaultValue(0)); }