diff --git a/CHANGELOG.md b/CHANGELOG.md index 0656516..a425fdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - Fix user event triggering in admin controller (maxxer) - Enh #331: Added Ukrainian translations (kwazaro) - Enh #324: Added option to restrict user assignments to roles only (CheckeredFlag) + - Enh #224: Added option to require consent (eseperio) ## 1.5.0 April 19, 2019 - Fix: Fix condition in EmailChangeService (it was always false) (borisaeric) diff --git a/docs/helpful-guides/gdpr.md b/docs/helpful-guides/gdpr.md index 59dea98..a4eb17d 100644 --- a/docs/helpful-guides/gdpr.md +++ b/docs/helpful-guides/gdpr.md @@ -18,6 +18,8 @@ GDPR says: [Article 7](https://gdpr.algolia.com/gdpr-article-7) All users must give consent of data processing to register. Also consent will be stored in db with the user data. +If you have users before GDPR law you can force them to give consent via GDPRrequireConsentToAll. You must use also in your accessControl behaviors the yii2-usuario accessRuleFilter. Any registerd user that has not give consent will be redirected in any action to the consent screen except those defined in `GDPRconsentExcludedUrls` + #### Data portability GDPR says: [Article 20](https://gdpr.algolia.com/gdpr-article-20) diff --git a/docs/installation/configuration-options.md b/docs/installation/configuration-options.md index 2a7b478..e166aac 100644 --- a/docs/installation/configuration-options.md +++ b/docs/installation/configuration-options.md @@ -42,6 +42,18 @@ Defaults to: #### gdprAnonymizePrefix (type: `string`, default: `GDPR`) Prefix to be used as a replacement when user requeste deletion of his data +#### gdprConsentMessage (type: `string`) +Use this to customize the message that will appear as hint in the give consent checkbox. +If you leave it empty the next message will be used: + +>I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our privacy policy + +#### GdprRequireConsentToAll (type `boolean`, default `false`) +Whether require to already registered user give consent to process their data. According to GDPR this is mandatory. +To forbid user access to any function, until it gives consent, use the AccessRuleFilter included with this module. + +#### GdprConsentExcludedUrls (type `array`, default `['user/settings/*']`) +List of urls that does not require explicit data processing consent to be accessed, like own profile, account... You can use wildcards like `route/to/*` . #### enableRegistration (type: `boolean`, default: `true`) diff --git a/src/User/Controller/SettingsController.php b/src/User/Controller/SettingsController.php index 810e82c..3b0aef3 100644 --- a/src/User/Controller/SettingsController.php +++ b/src/User/Controller/SettingsController.php @@ -33,6 +33,7 @@ use Da\User\Traits\ModuleAwareTrait; use Da\User\Validator\AjaxRequestModelValidator; use Da\User\Validator\TwoFactorCodeValidator; use Yii; +use yii\base\DynamicModel; use yii\filters\AccessControl; use yii\filters\VerbFilter; use yii\helpers\ArrayHelper; @@ -104,6 +105,7 @@ class SettingsController extends Controller 'export', 'networks', 'privacy', + 'gdpr-consent', 'gdpr-delete', 'disconnect', 'delete', @@ -123,6 +125,10 @@ class SettingsController extends Controller ]; } + /** + * @throws \yii\base\InvalidConfigException + * @return string|Response + */ public function actionProfile() { $profile = $this->profileQuery->whereUserId(Yii::$app->user->identity->getId())->one(); @@ -132,6 +138,7 @@ class SettingsController extends Controller $profile->link('user', Yii::$app->user->identity); } + /** @var ProfileEvent $event */ $event = $this->make(ProfileEvent::class, [$profile]); $this->make(AjaxRequestModelValidator::class, [$profile])->validate(); @@ -154,6 +161,10 @@ class SettingsController extends Controller ); } + /** + * @throws NotFoundHttpException + * @return string + */ public function actionPrivacy() { if (!$this->module->enableGdprCompliance) { @@ -164,6 +175,15 @@ class SettingsController extends Controller ]); } + /** + * @throws NotFoundHttpException + * @throws \Throwable + * @throws \yii\base\Exception + * @throws \yii\base\InvalidConfigException + * @throws \yii\db\StaleObjectException + * @throws ForbiddenHttpException + * @return string|Response + */ public function actionGdprDelete() { if (!$this->module->enableGdprCompliance) { @@ -219,6 +239,37 @@ class SettingsController extends Controller ]); } + public function actionGdprConsent() + { + /** @var User $user */ + $user = Yii::$app->user->identity; + if ($user->gdpr_consent) { + return $this->redirect(['profile']); + } + $model = new DynamicModel(['gdpr_consent']); + $model->addRule('gdpr_consent', 'boolean'); + $model->addRule('gdpr_consent', 'default', ['value' => 0, 'skipOnEmpty' => false]); + $model->addRule('gdpr_consent', 'compare', [ + 'compareValue' => true, + 'message' => Yii::t('usuario', 'Your consent is required to work with this site'), + 'when' => function () { + return $this->module->enableGdprCompliance; + }, + ]); + if ($model->load(Yii::$app->request->post()) && $model->validate()) { + $user->updateAttributes([ + 'gdpr_consent' => 1, + 'gdpr_consent_date' => time(), + ]); + return $this->redirect(['profile']); + } + + return $this->render('gdpr-consent', [ + 'model' => $model, + 'gdpr_consent_hint' => $this->module->getConsentMessage(), + ]); + } + /** * Exports the data from the current user in a mechanical readable format (csv). Properties exported can be defined * in the module configuration. diff --git a/src/User/Filter/AccessRuleFilter.php b/src/User/Filter/AccessRuleFilter.php index 3f1c492..9b4a261 100644 --- a/src/User/Filter/AccessRuleFilter.php +++ b/src/User/Filter/AccessRuleFilter.php @@ -13,10 +13,39 @@ namespace Da\User\Filter; use Closure; use Da\User\Model\User; +use Da\User\Traits\ModuleAwareTrait; +use Yii; use yii\filters\AccessRule; class AccessRuleFilter extends AccessRule { + use ModuleAwareTrait; + + /** + * @inheritDoc + */ + public function allows($action, $user, $request) + { + $consentAction = 'user/settings/gdpr-consent'; + if (!$user->isGuest && $action->uniqueId !== $consentAction) { + $module = $this->getModule(); + if ($module->gdprRequireConsentToAll) { + $excludedUrls = $module->gdprConsentExcludedUrls; + $excludedUrls[] = $module->gdprPrivacyPolicyUrl; + foreach ($excludedUrls as $url) { + if (!fnmatch($url, $action->uniqueId)) { + /** @var User $identity */ + $identity = $user->identity; + if (!$identity->gdpr_consent) { + Yii::$app->response->redirect([ "/$consentAction"])->send(); + } + } + } + } + } + return parent::allows($action, $user, $request); + } + /** * {@inheritdoc} * */ diff --git a/src/User/Form/RegistrationForm.php b/src/User/Form/RegistrationForm.php index bd96894..b727c4b 100644 --- a/src/User/Form/RegistrationForm.php +++ b/src/User/Form/RegistrationForm.php @@ -76,7 +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], + 'gdprDefault' => ['gdpr_consent', 'default', 'value' => 0, 'skipOnEmpty' => false], 'gdprRequired' => ['gdpr_consent', 'compare', 'compareValue' => true, @@ -103,17 +103,7 @@ class RegistrationForm extends Model public function attributeHints() { return [ - 'gdpr_consent' => Yii::t( - 'usuario', - 'I agree 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'] - ) - ] - ) + 'gdpr_consent' => $this->module->getConsentMessage() ]; } } diff --git a/src/User/Module.php b/src/User/Module.php index c7c1c2c..0f10f49 100644 --- a/src/User/Module.php +++ b/src/User/Module.php @@ -12,7 +12,10 @@ namespace Da\User; use Da\User\Contracts\MailChangeStrategyInterface; +use Da\User\Filter\AccessRuleFilter; +use Yii; use yii\base\Module as BaseModule; +use yii\helpers\Html; /** * This is the main module class of the yii2-usuario extension. @@ -56,6 +59,24 @@ class Module extends BaseModule * @var string prefix to be used as a replacement when user requests deletion of his data. */ public $gdprAnonymizePrefix = 'GDPR'; + /** + * @var bool if true, all registered users will be prompted to give consent if they have not gave it earlier. + */ + public $gdprRequireConsentToAll = false; + /** + * @var null|string use this to customize the message that will appear as hint in the give consent checkbox + */ + public $gdprConsentMessage; + /** + * @var array list of url that does not require explicit data processing consent + * to be accessed, like own profile, account... You can use wildcards like `route/to/*`. Do not prefix + * "/" required for redirection, they are used to match against action ids. + * + * @see AccessRuleFilter + */ + public $gdprConsentExcludedUrls = [ + 'user/settings/*' + ]; /** * @var bool whether to enable two factor authentication or not */ @@ -180,9 +201,29 @@ class Module extends BaseModule /** * @var integer If != NULL sets a max password age in days */ - public $maxPasswordAge = null; + public $maxPasswordAge; /** * @var boolean whether to restrict assignment of permissions to users */ public $restrictUserPermissionAssignment = false; + + /** + * @return string with the hit to be used with the give consent checkbox + */ + public function getConsentMessage() + { + $defaultConsentMessage = Yii::t( + 'usuario', + 'I agree 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->gdprPrivacyPolicyUrl, + ['target' => '_blank'] + ), + ] + ); + + return $this->gdprConsentMessage ?: $defaultConsentMessage; + } } diff --git a/src/User/Widget/AssignmentsWidget.php b/src/User/Widget/AssignmentsWidget.php index 42a0931..90b950c 100644 --- a/src/User/Widget/AssignmentsWidget.php +++ b/src/User/Widget/AssignmentsWidget.php @@ -79,9 +79,10 @@ class AssignmentsWidget extends Widget /** * Returns available auth items to be attached to the user. - * + * * @param int|null type of auth items or null to return all - * + * @param null|mixed $type + * * @return array */ protected function getAvailableItems($type = null) diff --git a/src/User/resources/i18n/ca/usuario.php b/src/User/resources/i18n/ca/usuario.php index 62ade06..fd3e6ba 100644 --- a/src/User/resources/i18n/ca/usuario.php +++ b/src/User/resources/i18n/ca/usuario.php @@ -17,12 +17,15 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', + 'privacy policy' => '@@@@', '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'A new confirmation link has been sent' => '', 'A password will be generated automatically if not provided' => '', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'Account' => '', 'Account confirmation' => '', 'Account details' => '', @@ -83,6 +86,7 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data privacy' => '', 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', @@ -111,7 +115,6 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', - 'I agree 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' => '', @@ -189,6 +192,7 @@ return [ 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Submit' => '', 'Switch identities is disabled.' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', @@ -223,6 +227,7 @@ return [ 'Unable to update block status.' => '', 'Unblock' => '', 'Unconfirmed' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', 'Update' => '', 'Update assignments' => '', 'Update permission' => '', @@ -266,11 +271,11 @@ return [ 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', 'Your consent is required to register' => '', + 'Your consent is required to work with this site' => '', 'Your email address has been changed' => '', 'Your password has expired, you must change it now' => '', '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. ' => '@@@@', diff --git a/src/User/resources/i18n/da/usuario.php b/src/User/resources/i18n/da/usuario.php index 62ade06..fd3e6ba 100644 --- a/src/User/resources/i18n/da/usuario.php +++ b/src/User/resources/i18n/da/usuario.php @@ -17,12 +17,15 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', + 'privacy policy' => '@@@@', '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'A new confirmation link has been sent' => '', 'A password will be generated automatically if not provided' => '', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'Account' => '', 'Account confirmation' => '', 'Account details' => '', @@ -83,6 +86,7 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data privacy' => '', 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', @@ -111,7 +115,6 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', - 'I agree 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' => '', @@ -189,6 +192,7 @@ return [ 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Submit' => '', 'Switch identities is disabled.' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', @@ -223,6 +227,7 @@ return [ 'Unable to update block status.' => '', 'Unblock' => '', 'Unconfirmed' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', 'Update' => '', 'Update assignments' => '', 'Update permission' => '', @@ -266,11 +271,11 @@ return [ 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', 'Your consent is required to register' => '', + 'Your consent is required to work with this site' => '', 'Your email address has been changed' => '', 'Your password has expired, you must change it now' => '', '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. ' => '@@@@', diff --git a/src/User/resources/i18n/de/usuario.php b/src/User/resources/i18n/de/usuario.php index f369fbd..c93c975 100644 --- a/src/User/resources/i18n/de/usuario.php +++ b/src/User/resources/i18n/de/usuario.php @@ -114,7 +114,7 @@ return [ 'Gravatar email' => 'Gravatar E-Mail', 'Hello' => 'Hallo', 'Here you can download your personal data in a comma separated values format.' => 'Hier können Sie eigene persönliche Daten in komma-separiertem Format herunterladen', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Ich stimme der Verarbeitung meiner persönlichen Daten und der Benutzung von Cookies zur Vereinfachung der Benutzer dieses Services zu. Weitere Informationen stehen in unserer {privacyPolicy}', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Ich stimme der Verarbeitung meiner persönlichen Daten und der Benutzung von Cookies zur Vereinfachung der Benutzer dieses Services zu. Weitere Informationen stehen in unserer {privacyPolicy}@@', 'If you already registered, sign in and connect this account on settings page' => 'Wenn Sie sich bereits registriert haben, melden Sie sich an und verbinden Sie dieses Konto auf der Einstellungs-Seite', 'If you cannot click the link, please try pasting the text into your browser' => 'Wenn Sie den Link nicht anklicken können, versuchen Sie, diesen in ihre Browser-Leiste einzufügen', 'If you did not make this request you can ignore this email' => 'Wenn Sie diese Anfrage nicht gemacht haben, können Sie diese E-Mail ignorieren', @@ -273,7 +273,7 @@ return [ 'Your password has expired, you must change it now' => 'Ihr Kennwort ist abgelaufen. Sie müssen es nun ändern', 'Your personal information has been removed' => 'Ihre persönlichen Daten wurden gelöscht', 'Your profile has been updated' => 'Ihr Profil wurde gespeichert', - 'privacy policy' => 'Datenschutzrichtlinie', + 'privacy policy' => '@@Datenschutzrichtlinie@@', '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, dd. MMM YYYY, HH:mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd. MMMM YYYY, HH:mm}', '{0} cannot be blank.' => '{0} darf nicht leer sein.', diff --git a/src/User/resources/i18n/es/usuario.php b/src/User/resources/i18n/es/usuario.php index b21c17e..9e56332 100644 --- a/src/User/resources/i18n/es/usuario.php +++ b/src/User/resources/i18n/es/usuario.php @@ -22,12 +22,14 @@ return [ 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => 'Se ha enviado un mensaje a su dirección de correo electrónico. Contiene un enlace de confirmación que tiene que seguir para completar el registro.', 'A new confirmation link has been sent' => 'Se ha enviado un nuevo enlace de confirmación', 'A password will be generated automatically if not provided' => 'Si no se proporciona contraseña, se generará una automáticamente', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => 'De acuerdo con el Reglamento General Europeo de Protección de Datos (GDPR), necesitamos su consentimiento para trabajar con sus datos personales', 'Account' => 'Cuenta', 'Account confirmation' => 'Confirmación de la cuenta', 'Account details' => 'Detalles de la cuenta', 'Account details have been updated' => 'Se han actualizado los detalles de la cuenta', 'Account settings' => 'Configuración de la cuenta', 'Already registered? Sign in!' => '¿Ya está registrado? ¡Inicie sesión!', + 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => 'Se ha enviado un correo electrónico con instrucciones para crear una nueva contraseña a {email} si está asociado con la cuenta {appName}. Su contraseña actual no ha sido modificada.', 'An error occurred processing your request' => 'Se ha producido un error al procesar su solicitud', 'Are you sure you want to block this user?' => '¿Seguro que desea bloquear a este usuario?', 'Are you sure you want to confirm this user?' => '¿Seguro que desea confirmar a este usuario?', @@ -81,6 +83,7 @@ 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 privacy' => 'Privacidad de datos', 'Data processing consent' => 'Consentimiento para el procesamiento de datos', 'Delete' => 'Eliminar', 'Delete account' => 'Eliminar cuenta', @@ -109,7 +112,7 @@ return [ 'Gravatar email' => 'Correo electrónico de Gravatar', 'Hello' => 'Hola', 'Here you can download your personal data in a comma separated values format.' => 'Aquí puede descargar su información personal en formato de valores separados por comas.', - 'I agree 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 el procesamiento de mis datos personales y el uso de «cookies» para facilitar el funcionamiento de este sitio. Para más información lea nuestra {privacyPolicy}', + 'I agree 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 el procesamiento de mis datos personales y el uso de «cookies» para facilitar el funcionamiento de este sitio. Para más información lea nuestra {privacyPolicy}@@', 'If you already registered, sign in and connect this account on settings page' => 'Si ya está registrado, inicie sesión y conecte esta cuenta en la página de configuración', 'If you cannot click the link, please try pasting the text into your browser' => 'Si no puede pulsar en el enlace, intente pegar el siguiente texto en su navegador web', 'If you did not make this request you can ignore this email' => 'Si no hizo esta petición, puede ignorar este mensaje', @@ -174,6 +177,7 @@ return [ 'Roles' => 'Roles', 'Rule' => 'Regla', 'Rule class must extend "yii\\rbac\\Rule".' => 'La clase de Rule debe extender "yii\\rbac\\Rule"', + 'Rule class name' => 'Nombre de clase Regla', 'Rule name' => 'Nombre de la regla', 'Rule name {0} is already in use' => 'El nombre {0} ya está siendo usado por otra regla', 'Rule {0} does not exists' => 'La regla {0} no existe', @@ -181,10 +185,12 @@ return [ 'Rules' => 'Reglas', 'Save' => 'Guardar', 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => 'Escanee el QrCode con la aplicación Google Authenticator, luego inserte su código temporal en el campo de texto y envíe.', + 'Select rule...' => 'Seleccionar regla...', 'Send password recovery email' => 'Enviar email de recuperación de contraseña', 'Sign in' => 'Iniciar sesión', 'Sign up' => 'Registrarse', 'Something went wrong' => 'Algo salió mal', + 'Submit' => 'Enviar', 'Switch identities is disabled.' => 'La personificación de usuarios está inhabilitada.', 'Thank you for signing up on {0}' => 'Gracias por registrarse en {0}', 'Thank you, registration is now complete.' => 'Gracias, el registro ha sido completado.', @@ -203,6 +209,7 @@ return [ 'Two Factor Authentication (2FA)' => 'Autenticación de dos factores (2FA)', 'Two factor authentication code' => 'Código de autenticación de dos factores', 'Two factor authentication has been disabled.' => 'La autenticación de dos factores ha sido inhabilitada.', + 'Two factor authentication protects you in case of stolen credentials' => 'La autenticación de dos factores lo protege en caso de credenciales robadas', 'Two factor authentication successfully enabled.' => 'La autenticación de dos factores fue habilitada con éxito.', 'Unable to confirm user. Please, try again.' => 'No se ha podido confirmar el usuario. Por favor, inténtelo de nuevo.', 'Unable to create an account.' => 'No se ha podido crear la cuenta.', @@ -218,6 +225,7 @@ return [ 'Unable to update block status.' => 'No se ha podido actualizar el estado de bloqueo.', 'Unblock' => 'Desbloquear', 'Unconfirmed' => 'Sin confirmar', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => 'Desafortunadamente, no puede trabajar con este sitio sin darnos su consentimiento para procesar sus datos.', 'Update' => 'Actualizar', 'Update assignments' => 'Actualizar asignaciones', 'Update permission' => 'Actualizar permiso', @@ -265,13 +273,10 @@ return [ 'Your password has expired, you must change it now' => 'Su contraseña ha expirado, debe cambiarla ahora', 'Your personal information has been removed' => 'Su información personal ha sido eliminada', 'Your profile has been updated' => 'Su perfil ha sido actualizado', - 'privacy policy' => 'política de privacidad', + 'privacy policy' => '@@política de privacidad@@', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM, YYYY HH:mm}', '{0} cannot be blank.' => '{0} no puede estar vacío.', - 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', - 'Rule class name' => '', - 'Select rule...' => '', - 'Two factor authentication protects you in case of stolen credentials' => '', + 'Your consent is required to work with this site' => '', '{0, date, MMM dd, YYYY HH:mm}' => '', 'An email has been sent with instructions for resetting your password' => '@@Se ha enviado un correo electrónico con instrucciones para restablecer su contraseña@@', 'Two factor authentication protects you against stolen credentials' => '@@La autenticación de dos factores le protege del robo de credenciales@@', diff --git a/src/User/resources/i18n/et/usuario.php b/src/User/resources/i18n/et/usuario.php index 64584fc..61eb699 100644 --- a/src/User/resources/i18n/et/usuario.php +++ b/src/User/resources/i18n/et/usuario.php @@ -17,15 +17,6 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => 'Saatsime aadressile {email} juhendi, kuidas saad oma parooli uuendada, kui see aadress on seotud mõne {appName} kontoga. Me ei muutnud sinu praegust parooli.', - 'Authentication rule class {0} can not be instantiated' => '', - 'Rule class must extend "yii\\rbac\\Rule".' => '', - 'Rule class name' => 'Reegli klassi nimi', - 'Select rule...' => 'Vali reegel', - 'VKontakte' => '', - 'Yandex' => '', - '{0, date, MMM dd, YYYY HH:mm}' => '', - '{0, date, MMMM dd, YYYY HH:mm}' => '', '(not set)' => '(määramata)', 'A confirmation message has been sent to your new email address' => 'Saatsime sinu uuele e-maili aadressile kinnituskirja', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => 'Saatsime sulle kinnituseks e-kirja. Registreerumise kinnitamiseks pead klikkma saadetud kirjas olevale lingile.', @@ -37,6 +28,7 @@ return [ 'Account details have been updated' => 'Konto andmed on uuendatud', 'Account settings' => 'Konto seaded', 'Already registered? Sign in!' => 'Oled registreerunud? Logi sisse!', + 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => 'Saatsime aadressile {email} juhendi, kuidas saad oma parooli uuendada, kui see aadress on seotud mõne {appName} kontoga. Me ei muutnud sinu praegust parooli.', 'An error occurred processing your request' => 'Päringu protsessimisel tekkis viga', 'Are you sure you want to block this user?' => 'Oled kindel, et tahad selle kasutaja blokeerid?', 'Are you sure you want to confirm this user?' => 'Oled kindel, et tahad selle kasutaja kinnitada?', @@ -117,7 +109,6 @@ return [ 'Gravatar email' => 'Gravatari e-posti aadress', 'Hello' => 'Tere', 'Here you can download your personal data in a comma separated values format.' => 'Siit saad alla laadida sinuga seotud andmed CSV formaadis.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Nõusutn oma isikuandmete töötlemise ning küpsiste kasutamisega, et selle lehe kasutamiset hõlbustada. Lisainfot loe lehelt {privacyPolicy}.', 'If you already registered, sign in and connect this account on settings page' => 'Kui oled juba registreerunud, logi sisse ja ühenda see konto oma seadete lehel', 'If you cannot click the link, please try pasting the text into your browser' => 'Kui sa ei saa lingil klikkida, proovi see kleepida oma brausri aadressireale', 'If you did not make this request you can ignore this email' => 'Kui sa ei ole seda päringut tellinud, siis võid seda kirja ignoreerida', @@ -181,6 +172,7 @@ return [ 'Role "{0}" not found. Creating it.' => 'Rolli "{0}" ei leitud. Loon selle.', 'Roles' => 'Rollid', 'Rule' => 'Reegel', + 'Rule class name' => 'Reegli klassi nimi', 'Rule name' => 'Reegli nimi', 'Rule name {0} is already in use' => 'Reegel nimega {0} on juba kasutusel', 'Rule {0} does not exists' => 'Rolli {0} ei ole olemas', @@ -188,6 +180,7 @@ return [ 'Rules' => 'Reeglid', 'Save' => 'Salvesta', 'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => 'Skaneeri QR kood Google Authenticatori äpiga ning seejärel sisesta sealt saadud ajutine kood siia kasti ning vajuta nupule.', + 'Select rule...' => 'Vali reegel', 'Send password recovery email' => 'Saada parooli taastamise kiri', 'Sign in' => 'Logi sisse', 'Sign up' => 'Liitu', @@ -271,6 +264,18 @@ return [ 'Your password has expired, you must change it now' => 'Sinu parool on aegunud, pead seda uuendama.', 'Your personal information has been removed' => 'Sinu isiklikud andmed on kustutatud', 'Your profile has been updated' => 'Sinu profiil on uuendatud', - 'privacy policy' => 'privaatsuspoliitika', '{0} cannot be blank.' => '{0} ei või olla tühi.', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Authentication rule class {0} can not be instantiated' => '', + 'Data privacy' => '', + 'Rule class must extend "yii\\rbac\\Rule".' => '', + 'Submit' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'VKontakte' => '', + 'Yandex' => '', + 'Your consent is required to work with this site' => '', + '{0, date, MMM dd, YYYY HH:mm}' => '', + '{0, date, MMMM dd, YYYY HH:mm}' => '', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Nõusutn oma isikuandmete töötlemise ning küpsiste kasutamisega, et selle lehe kasutamiset hõlbustada. Lisainfot loe lehelt {privacyPolicy}.@@', + 'privacy policy' => '@@privaatsuspoliitika@@', ]; diff --git a/src/User/resources/i18n/fa-IR/usuario.php b/src/User/resources/i18n/fa-IR/usuario.php index 62ade06..fd3e6ba 100644 --- a/src/User/resources/i18n/fa-IR/usuario.php +++ b/src/User/resources/i18n/fa-IR/usuario.php @@ -17,12 +17,15 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', + 'privacy policy' => '@@@@', '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'A new confirmation link has been sent' => '', 'A password will be generated automatically if not provided' => '', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'Account' => '', 'Account confirmation' => '', 'Account details' => '', @@ -83,6 +86,7 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data privacy' => '', 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', @@ -111,7 +115,6 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', - 'I agree 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' => '', @@ -189,6 +192,7 @@ return [ 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Submit' => '', 'Switch identities is disabled.' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', @@ -223,6 +227,7 @@ return [ 'Unable to update block status.' => '', 'Unblock' => '', 'Unconfirmed' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', 'Update' => '', 'Update assignments' => '', 'Update permission' => '', @@ -266,11 +271,11 @@ return [ 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', 'Your consent is required to register' => '', + 'Your consent is required to work with this site' => '', 'Your email address has been changed' => '', 'Your password has expired, you must change it now' => '', '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. ' => '@@@@', diff --git a/src/User/resources/i18n/fi/usuario.php b/src/User/resources/i18n/fi/usuario.php index 62ade06..fd3e6ba 100644 --- a/src/User/resources/i18n/fi/usuario.php +++ b/src/User/resources/i18n/fi/usuario.php @@ -17,12 +17,15 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', + 'privacy policy' => '@@@@', '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'A new confirmation link has been sent' => '', 'A password will be generated automatically if not provided' => '', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'Account' => '', 'Account confirmation' => '', 'Account details' => '', @@ -83,6 +86,7 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data privacy' => '', 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', @@ -111,7 +115,6 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', - 'I agree 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' => '', @@ -189,6 +192,7 @@ return [ 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Submit' => '', 'Switch identities is disabled.' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', @@ -223,6 +227,7 @@ return [ 'Unable to update block status.' => '', 'Unblock' => '', 'Unconfirmed' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', 'Update' => '', 'Update assignments' => '', 'Update permission' => '', @@ -266,11 +271,11 @@ return [ 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', 'Your consent is required to register' => '', + 'Your consent is required to work with this site' => '', 'Your email address has been changed' => '', 'Your password has expired, you must change it now' => '', '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. ' => '@@@@', diff --git a/src/User/resources/i18n/fr/usuario.php b/src/User/resources/i18n/fr/usuario.php index 586496e..85eb2b7 100644 --- a/src/User/resources/i18n/fr/usuario.php +++ b/src/User/resources/i18n/fr/usuario.php @@ -110,7 +110,6 @@ return [ 'Gravatar email' => 'Email gravatar', 'Hello' => 'Bonjour', 'Here you can download your personal data in a comma separated values format.' => 'Ici vous pouvez télécharger vos données personnelles dans un format avec les données séparées par des virgules', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'J\'accepte le traitement de mes données personnelles et l\'utilisation de cookies pour faciliter le fonctionnement de ce site. Pour plus d\'information, lisez notre {privacyPolicy}', 'If you already registered, sign in and connect this account on settings page' => 'Si vous êtes déjà inscrit, connectez-vous et liez ce compte dans la page des réglages', 'If you cannot click the link, please try pasting the text into your browser' => 'Si vous ne parvenez pas à cliquer sur le lien, veuillez essayer de coller le texte dans votre navigateur', 'If you did not make this request you can ignore this email' => 'Si vous n\'avez pas fait cette demande, vous pouvez ignorer cet email', @@ -269,8 +268,14 @@ return [ 'Your password has expired, you must change it now' => 'Votre mot de passe a expiré, vous devez le renouveler maintenant', 'Your personal information has been removed' => 'Vos données personnelles ont été supprimées', 'Your profile has been updated' => 'Votre profil a été mis à jour', - 'privacy policy' => 'politique de confidentialité', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM YYYY HH:mm}', '{0} cannot be blank.' => '{0} ne peut être vide.', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Data privacy' => '', + 'Submit' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'Your consent is required to work with this site' => '', '{0, date, MMM dd, YYYY HH:mm}' => '', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@J\'accepte le traitement de mes données personnelles et l\'utilisation de cookies pour faciliter le fonctionnement de ce site. Pour plus d\'information, lisez notre {privacyPolicy}@@', + 'privacy policy' => '@@politique de confidentialité@@', ]; diff --git a/src/User/resources/i18n/hr/usuario.php b/src/User/resources/i18n/hr/usuario.php index 62ade06..fd3e6ba 100644 --- a/src/User/resources/i18n/hr/usuario.php +++ b/src/User/resources/i18n/hr/usuario.php @@ -17,12 +17,15 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', + 'privacy policy' => '@@@@', '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'A new confirmation link has been sent' => '', 'A password will be generated automatically if not provided' => '', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'Account' => '', 'Account confirmation' => '', 'Account details' => '', @@ -83,6 +86,7 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data privacy' => '', 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', @@ -111,7 +115,6 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', - 'I agree 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' => '', @@ -189,6 +192,7 @@ return [ 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Submit' => '', 'Switch identities is disabled.' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', @@ -223,6 +227,7 @@ return [ 'Unable to update block status.' => '', 'Unblock' => '', 'Unconfirmed' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', 'Update' => '', 'Update assignments' => '', 'Update permission' => '', @@ -266,11 +271,11 @@ return [ 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', 'Your consent is required to register' => '', + 'Your consent is required to work with this site' => '', 'Your email address has been changed' => '', 'Your password has expired, you must change it now' => '', '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. ' => '@@@@', diff --git a/src/User/resources/i18n/hu/usuario.php b/src/User/resources/i18n/hu/usuario.php index 57e9ca3..4d03f21 100644 --- a/src/User/resources/i18n/hu/usuario.php +++ b/src/User/resources/i18n/hu/usuario.php @@ -109,7 +109,7 @@ return [ 'Gravatar email' => 'Gravatar e-mail', 'Hello' => 'Helló', 'Here you can download your personal data in a comma separated values format.' => 'Itt személyes adatait vesszővel elválasztott formátumban töltheti le.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Egyetértek személyes adataim feldolgozásával és cookie-k használatával a webhely működésének megkönnyítése érdekében. További információért olvassa el a {privacyPolicy}', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Egyetértek személyes adataim feldolgozásával és cookie-k használatával a webhely működésének megkönnyítése érdekében. További információért olvassa el a {privacyPolicy}@@', 'If you already registered, sign in and connect this account on settings page' => 'Ha már regisztráltál, jelentkezz be és kösd be ezt a fiókot a beállítások oldalán', 'If you cannot click the link, please try pasting the text into your browser' => 'Ha nem tud kattintani a linkre, kérjük, próbálja meg a szöveg beillesztését a böngészőbe', 'If you did not make this request you can ignore this email' => 'Ha ezt a kérelmet nem hajtotta végre, figyelmen kívül hagyhatja ezt az e-mailt', @@ -265,14 +265,19 @@ return [ 'Your password has expired, you must change it now' => 'A jelszava lejárt, most módosítania kell', 'Your personal information has been removed' => 'Személyes adatait eltávolítottuk', 'Your profile has been updated' => 'A profilja frissítve lett', - 'privacy policy' => 'Adatvédelmi irányelvek', + 'privacy policy' => '@@Adatvédelmi irányelvek@@', '{0, date, MMM dd, YYYY HH:mm}' => '{0, dátum, MMM dd, ÉÉÉÉ HH: mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, dátum, MMMM dd, ÉÉÉÉ HH: mm}', '{0} cannot be blank.' => '{0} nem lehet üres.', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', + 'Data privacy' => '', 'Rule class name' => '', 'Select rule...' => '', + 'Submit' => '', 'Two factor authentication protects you in case of stolen credentials' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'Your consent is required to work with this site' => '', 'A message has been sent to your email address. ' => '@@Üzenet érkezett az e-mail címedre.@@', 'An email has been sent with instructions for resetting your password' => '@@E-mailt küldtek a jelszó visszaállításával kapcsolatos utasításokkal@@', 'Awesome, almost there. ' => '@@Hurrá, majdnem kész.@@', diff --git a/src/User/resources/i18n/it/usuario.php b/src/User/resources/i18n/it/usuario.php index 1e18790..f3329cb 100644 --- a/src/User/resources/i18n/it/usuario.php +++ b/src/User/resources/i18n/it/usuario.php @@ -109,7 +109,7 @@ return [ 'Gravatar email' => 'Email di Gravatar', 'Hello' => 'Ciao', 'Here you can download your personal data in a comma separated values format.' => 'Da qui puoi scaricare i tuoi dati in formato CSV.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Consento al trattamento dei miei dati personali e all\'uso dei cookie per agevolare le attività di questo sito. Per ulteriori informazioni leggere la nostra {privacyPolicy}', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Consento al trattamento dei miei dati personali e all\'uso dei cookie per agevolare le attività di questo sito. Per ulteriori informazioni leggere la nostra {privacyPolicy}@@', 'If you already registered, sign in and connect this account on settings page' => 'Se sei già registrato accedi e collega questo account nella pagina delle impostazioni', 'If you cannot click the link, please try pasting the text into your browser' => 'Se non puoi fare click sul link prova a copiare ed incollare il testo nel browser', 'If you did not make this request you can ignore this email' => 'Se non hai effettuato tu la richiesta puoi ignorare questa email', @@ -268,10 +268,15 @@ return [ 'Your password has expired, you must change it now' => 'La tua password è scaduta, devi cambiarla', 'Your personal information has been removed' => 'I tuoi dati personali sono stati rimossi', 'Your profile has been updated' => 'Il tuo profilo è stato aggiornato', - 'privacy policy' => 'politica della privacy', + 'privacy policy' => '@@politica della privacy@@', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM YYYY HH:mm}', '{0} cannot be blank.' => '{0} non può essere vuoto.', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', + 'Data privacy' => '', + 'Submit' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'Your consent is required to work with this site' => '', '{0, date, MMM dd, YYYY HH:mm}' => '', 'An email has been sent with instructions for resetting your password' => '@@È stata inviata un\'email con le istruzioni per azzerare la tua password@@', ]; diff --git a/src/User/resources/i18n/kk/usuario.php b/src/User/resources/i18n/kk/usuario.php index 62ade06..fd3e6ba 100644 --- a/src/User/resources/i18n/kk/usuario.php +++ b/src/User/resources/i18n/kk/usuario.php @@ -17,12 +17,15 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', + 'privacy policy' => '@@@@', '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'A new confirmation link has been sent' => '', 'A password will be generated automatically if not provided' => '', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'Account' => '', 'Account confirmation' => '', 'Account details' => '', @@ -83,6 +86,7 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data privacy' => '', 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', @@ -111,7 +115,6 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', - 'I agree 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' => '', @@ -189,6 +192,7 @@ return [ 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Submit' => '', 'Switch identities is disabled.' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', @@ -223,6 +227,7 @@ return [ 'Unable to update block status.' => '', 'Unblock' => '', 'Unconfirmed' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', 'Update' => '', 'Update assignments' => '', 'Update permission' => '', @@ -266,11 +271,11 @@ return [ 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', 'Your consent is required to register' => '', + 'Your consent is required to work with this site' => '', 'Your email address has been changed' => '', 'Your password has expired, you must change it now' => '', '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. ' => '@@@@', diff --git a/src/User/resources/i18n/lt/usuario.php b/src/User/resources/i18n/lt/usuario.php index 62ade06..fd3e6ba 100644 --- a/src/User/resources/i18n/lt/usuario.php +++ b/src/User/resources/i18n/lt/usuario.php @@ -17,12 +17,15 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', + 'privacy policy' => '@@@@', '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'A new confirmation link has been sent' => '', 'A password will be generated automatically if not provided' => '', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'Account' => '', 'Account confirmation' => '', 'Account details' => '', @@ -83,6 +86,7 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data privacy' => '', 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', @@ -111,7 +115,6 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', - 'I agree 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' => '', @@ -189,6 +192,7 @@ return [ 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Submit' => '', 'Switch identities is disabled.' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', @@ -223,6 +227,7 @@ return [ 'Unable to update block status.' => '', 'Unblock' => '', 'Unconfirmed' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', 'Update' => '', 'Update assignments' => '', 'Update permission' => '', @@ -266,11 +271,11 @@ return [ 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', 'Your consent is required to register' => '', + 'Your consent is required to work with this site' => '', 'Your email address has been changed' => '', 'Your password has expired, you must change it now' => '', '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. ' => '@@@@', diff --git a/src/User/resources/i18n/nl/usuario.php b/src/User/resources/i18n/nl/usuario.php index 634de5e..a6f8877 100644 --- a/src/User/resources/i18n/nl/usuario.php +++ b/src/User/resources/i18n/nl/usuario.php @@ -109,7 +109,7 @@ return [ 'Gravatar email' => 'Gravatar email', 'Hello' => 'Hallo', 'Here you can download your personal data in a comma separated values format.' => 'Hier kan je al jouw persoonlijke data downloaden in een komma\'s gescheiden formaat.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Ik ga akkoord met het verwerken van mijn persoonlijke data en het gebruik van cookies om de werking van deze website te vergemakkelijken. Voor meer, lees onze {privacyPolicy}', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Ik ga akkoord met het verwerken van mijn persoonlijke data en het gebruik van cookies om de werking van deze website te vergemakkelijken. Voor meer, lees onze {privacyPolicy}@@', 'If you already registered, sign in and connect this account on settings page' => 'Als je reeds geregistreerd bent, meldt je aan en verbind deze account via de instellingen pagina', 'If you cannot click the link, please try pasting the text into your browser' => 'Als je niet op deze link kan klikken, kopieer en plak de tekst in jouw browser', 'If you did not make this request you can ignore this email' => 'Als je deze aanvraag niet deed mag je deze email negeren', @@ -265,14 +265,19 @@ return [ 'Your password has expired, you must change it now' => 'Jouw wachtwoord is vervallen. Gelieve het onmiddelijk te wijzigen', 'Your personal information has been removed' => 'Jouw persoonlijke gegevens werden verwijderd', 'Your profile has been updated' => 'Jouw profiel werd geupdate', - 'privacy policy' => 'privacy policy', + 'privacy policy' => '@@privacy policy@@', '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, MMM dd, YYYY HH:mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, MMMM dd, YYYY HH:mm}\'', '{0} cannot be blank.' => '{0} kan niet leeg zijn.', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', + 'Data privacy' => '', 'Rule class name' => '', 'Select rule...' => '', + 'Submit' => '', 'Two factor authentication protects you in case of stolen credentials' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'Your consent is required to work with this site' => '', 'A message has been sent to your email address. ' => '@@Een bericht werd naar jouw emailadres verzonden@@', 'An email has been sent with instructions for resetting your password' => '@@Er werd een email verstuurd met instructies om jouw wachtwoord te resetten@@', 'Awesome, almost there. ' => '@@Super, bijna klaar.@@', diff --git a/src/User/resources/i18n/pl/usuario.php b/src/User/resources/i18n/pl/usuario.php index a8ef1f3..df94c64 100644 --- a/src/User/resources/i18n/pl/usuario.php +++ b/src/User/resources/i18n/pl/usuario.php @@ -109,7 +109,7 @@ return [ 'Gravatar email' => 'Email z Gravatara', 'Hello' => 'Witaj', 'Here you can download your personal data in a comma separated values format.' => 'Tutaj możesz pobrać swoje dane osobowe w formacie CSV.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Zgadzam się na przetwarzanie moich danych osobowych i na użycie cookies w celu zapewnienia możliwości poprawnego działania tego serwisu. Aby dowiedzieć się więcej na ten temat, zapoznaj się z naszą {privacyPolicy}.', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Zgadzam się na przetwarzanie moich danych osobowych i na użycie cookies w celu zapewnienia możliwości poprawnego działania tego serwisu. Aby dowiedzieć się więcej na ten temat, zapoznaj się z naszą {privacyPolicy}.@@', 'If you already registered, sign in and connect this account on settings page' => 'Jeśli jesteś już zarejestrowany, zaloguj się i podłącz to konto na stronie ustawień', 'If you cannot click the link, please try pasting the text into your browser' => 'Jeśli kliknięcie w link nie działa, spróbuj skopiować go i wkleić w pasku adresu przeglądarki', 'If you did not make this request you can ignore this email' => 'Jeśli nie jesteś autorem tego żądania, prosimy o zignorowanie emaila.', @@ -265,14 +265,19 @@ return [ 'Your password has expired, you must change it now' => 'Twoje hasło zostało zdezaktualizowane, musisz je teraz zmienić', 'Your personal information has been removed' => 'Twoje dane osobowe zostały usunięte', 'Your profile has been updated' => 'Twój profil został zaktualizowany', - 'privacy policy' => 'polityką prywatności', + 'privacy policy' => '@@polityką prywatności@@', '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, dd MMM YYYY, HH:mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM YYYY, HH:mm}', '{0} cannot be blank.' => '{0} nie może pozostać bez wartości', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', + 'Data privacy' => '', 'Rule class name' => '', 'Select rule...' => '', + 'Submit' => '', 'Two factor authentication protects you in case of stolen credentials' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'Your consent is required to work with this site' => '', 'An email has been sent with instructions for resetting your password' => '@@Email z instrukcją resetowania hasła został wysłany@@', 'Disable Two-Factor Auth' => '@@Wyłącz uwierzytelnianie dwuetapowe@@', 'Enable Two-factor auth' => '@@Włącz uwierzytelnianie dwuetapowe@@', diff --git a/src/User/resources/i18n/pt-BR/usuario.php b/src/User/resources/i18n/pt-BR/usuario.php index 201c930..48a3b61 100644 --- a/src/User/resources/i18n/pt-BR/usuario.php +++ b/src/User/resources/i18n/pt-BR/usuario.php @@ -109,7 +109,7 @@ return [ 'Gravatar email' => 'E-mail do Gravatar', 'Hello' => 'Olá', 'Here you can download your personal data in a comma separated values format.' => 'Aqui você pode baixar seus dados pessoais em um formato de valores separados por vírgulas.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Concordo com o processamento de meus dados pessoais e o uso de cookies para facilitar a operação deste site. Para mais informações, leia nossa {privacyPolicy}', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Concordo com o processamento de meus dados pessoais e o uso de cookies para facilitar a operação deste site. Para mais informações, leia nossa {privacyPolicy}@@', 'If you already registered, sign in and connect this account on settings page' => 'Se você já se registrou, faça login e conecte esta conta na página de configurações', 'If you cannot click the link, please try pasting the text into your browser' => 'Se você não pode clicar no link, tente colar o texto em seu navegador', 'If you did not make this request you can ignore this email' => 'Se você não fez essa solicitação, ignore este e-mail', @@ -265,14 +265,19 @@ return [ 'Your password has expired, you must change it now' => 'Sua senha expirou, você deve alterá-la agora', 'Your personal information has been removed' => 'Suas informações pessoais foram removidas', 'Your profile has been updated' => 'Seu perfil foi atualizado', - 'privacy policy' => 'política de Privacidade', + 'privacy policy' => '@@política de Privacidade@@', '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, MMM dd, YYYY HH:mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, MMMM dd, YYYY HH:mm}', '{0} cannot be blank.' => '{0} não pode estar em branco', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', + 'Data privacy' => '', 'Rule class name' => '', 'Select rule...' => '', + 'Submit' => '', 'Two factor authentication protects you in case of stolen credentials' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'Your consent is required to work with this site' => '', 'A message has been sent to your email address. ' => '@@Uma mensagem foi enviada para o seu endereço de e-mail.@@', 'An email has been sent with instructions for resetting your password' => '@@Um e-mail foi enviado com instruções para redefinir sua senha@@', 'Awesome, almost there. ' => '@@Incrível, quase lá.@@', diff --git a/src/User/resources/i18n/pt-PT/usuario.php b/src/User/resources/i18n/pt-PT/usuario.php index e8d547f..0f27d1c 100644 --- a/src/User/resources/i18n/pt-PT/usuario.php +++ b/src/User/resources/i18n/pt-PT/usuario.php @@ -103,7 +103,7 @@ return [ 'Forgot password?' => 'Esqueceu a sua senha?', 'Hello' => 'Olá', 'Here you can download your personal data in a comma separated values format.' => 'Aqui pode descarregar os seus dados pessoais num ficheiro separado por virgulas.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Eu aceito o processamento dos meus dados pessoais e o uso de cookies para facilitar as operações neste site. Para mais informações leia a nossa {privacyPolicy}', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Eu aceito o processamento dos meus dados pessoais e o uso de cookies para facilitar as operações neste site. Para mais informações leia a nossa {privacyPolicy}@@', 'If you already registered, sign in and connect this account on settings page' => 'Se já se registou, entre e associe esta conta nas definições', 'If you cannot click the link, please try pasting the text into your browser' => 'Se não conseguir abrir o link, por favor tente colá-lo no seu browser', 'If you did not make this request you can ignore this email' => 'Se não fez este pedido pode ignorar este email', @@ -254,24 +254,29 @@ return [ 'Your password has expired, you must change it now' => 'A sua password expirou, deve alterá-la agora', 'Your personal information has been removed' => 'Os seus dados pessoais foram removidos', 'Your profile has been updated' => 'O seu perfil foi atualziado', - 'privacy policy' => 'politica de privacidade', + 'privacy policy' => '@@politica de privacidade@@', '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '{0} cannot be blank.' => '{0} não pode ficar vazio.', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', '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.' => '', 'Children' => '', 'Class' => '', + 'Data privacy' => '', 'Email' => '', 'Gravatar email' => '', 'Items' => '', 'Password' => '', 'Rule class name' => '', 'Select rule...' => '', + 'Submit' => '', 'Two factor authentication protects you in case of stolen credentials' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', 'VKontakte' => '', 'Website' => '', 'Yandex' => '', + 'Your consent is required to work with this site' => '', '{0, date, MMMM dd, YYYY HH:mm}' => '', 'A message has been sent to your email address. ' => '@@@@', 'An email has been sent with instructions for resetting your password' => '@@Foi enviado um email com as instruções para restaurar a sua password@@', diff --git a/src/User/resources/i18n/ro/usuario.php b/src/User/resources/i18n/ro/usuario.php index 3fff21e..ba3d113 100644 --- a/src/User/resources/i18n/ro/usuario.php +++ b/src/User/resources/i18n/ro/usuario.php @@ -109,7 +109,7 @@ return [ 'Gravatar email' => 'Gravatar email', 'Hello' => 'buna', 'Here you can download your personal data in a comma separated values format.' => 'Aici puteți descărca datele personale într-un format de valori separate prin virgulă.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Sunt de acord cu prelucrarea datelor mele personale și utilizarea cookie-urilor pentru a facilita funcționarea acestui site. Pentru mai multe informații, citiți {privacyPolicy}', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Sunt de acord cu prelucrarea datelor mele personale și utilizarea cookie-urilor pentru a facilita funcționarea acestui site. Pentru mai multe informații, citiți {privacyPolicy}@@', 'If you already registered, sign in and connect this account on settings page' => 'Dacă v-ați înregistrat deja, conectați-vă și conectați-l pe pagina de setări', 'If you cannot click the link, please try pasting the text into your browser' => 'Dacă nu puteți da clic pe link, încercați să inserați textul în browser', 'If you did not make this request you can ignore this email' => 'Dacă nu ați făcut această solicitare, puteți ignora acest e-mail', @@ -265,14 +265,19 @@ return [ 'Your password has expired, you must change it now' => 'Parola dvs. a expirat, trebuie să o modificați acum', 'Your personal information has been removed' => 'Informațiile dvs. personale au fost eliminate', 'Your profile has been updated' => 'Profilul dvs. a fost actualizat', - 'privacy policy' => 'politica de confidentialitate', + 'privacy policy' => '@@politica de confidentialitate@@', '{0, date, MMM dd, YYYY HH:mm}' => '{0, data, MMM dd, AAAA HH: mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, data, MMMM dd, AAAA HH: mm}', '{0} cannot be blank.' => '{0} nu poate fi gol.', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'An email with instructions to create a new password has been sent to {email} if it is associated with an {appName} account. Your existing password has not been changed.' => '', + 'Data privacy' => '', 'Rule class name' => '', 'Select rule...' => '', + 'Submit' => '', 'Two factor authentication protects you in case of stolen credentials' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'Your consent is required to work with this site' => '', 'A message has been sent to your email address. ' => '@@A fost trimis un mesaj la adresa dvs. de e-mail.@@', 'An email has been sent with instructions for resetting your password' => '@@A fost trimis un e-mail cu instrucțiuni pentru resetarea parolei@@', 'Awesome, almost there. ' => '@@Minunat, aproape gata.@@', diff --git a/src/User/resources/i18n/ru/usuario.php b/src/User/resources/i18n/ru/usuario.php index e3a7d7d..0d9850b 100644 --- a/src/User/resources/i18n/ru/usuario.php +++ b/src/User/resources/i18n/ru/usuario.php @@ -110,7 +110,7 @@ return [ 'Gravatar email' => 'Email для Gravatar', 'Hello' => 'Здравствуйте', 'Here you can download your personal data in a comma separated values format.' => 'Здесь вы можете загрузить свои персональные данные в формате значений, разделенных запятыми.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Я соглашаюсь на обработку моих персональных данных и использование файлов cookie для облегчения работы этого сайта. Для получения дополнительной информации ознакомьтесь с нашей {privacyPolicy}', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Я соглашаюсь на обработку моих персональных данных и использование файлов cookie для облегчения работы этого сайта. Для получения дополнительной информации ознакомьтесь с нашей {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' => 'Если вы получили это сообщение по ошибке, просто проигнорируйте или удалите его', @@ -269,10 +269,15 @@ return [ 'Your password has expired, you must change it now' => 'Срок действия вашего пароля истек, сейчас вы должны изменить его', 'Your personal information has been removed' => 'Ваша персональная информация удалена', 'Your profile has been updated' => 'Настройки профиля были успешно сохранены', - 'privacy policy' => 'политикой конфиденциальности', + 'privacy policy' => '@@политикой конфиденциальности@@', '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, d MMM YYYY в HH:mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, d MMMM YYYY в HH:mm}', '{0} cannot be blank.' => '{0} не может быть пустым.', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Data privacy' => '', + 'Submit' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'Your consent is required to work with this site' => '', 'A message has been sent to your email address. ' => '@@Сообщение было отправлено на вашу электронную почту@@', 'An email has been sent with instructions for resetting your password' => '@@Вам отправлено письмо с инструкциями по смене пароля@@', 'Awesome, almost there. ' => '@@Замечательно, почти готово!@@', diff --git a/src/User/resources/i18n/th/usuario.php b/src/User/resources/i18n/th/usuario.php index 62ade06..fd3e6ba 100644 --- a/src/User/resources/i18n/th/usuario.php +++ b/src/User/resources/i18n/th/usuario.php @@ -17,12 +17,15 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', + 'privacy policy' => '@@@@', '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'A new confirmation link has been sent' => '', 'A password will be generated automatically if not provided' => '', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'Account' => '', 'Account confirmation' => '', 'Account details' => '', @@ -83,6 +86,7 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data privacy' => '', 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', @@ -111,7 +115,6 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', - 'I agree 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' => '', @@ -189,6 +192,7 @@ return [ 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Submit' => '', 'Switch identities is disabled.' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', @@ -223,6 +227,7 @@ return [ 'Unable to update block status.' => '', 'Unblock' => '', 'Unconfirmed' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', 'Update' => '', 'Update assignments' => '', 'Update permission' => '', @@ -266,11 +271,11 @@ return [ 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', 'Your consent is required to register' => '', + 'Your consent is required to work with this site' => '', 'Your email address has been changed' => '', 'Your password has expired, you must change it now' => '', '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. ' => '@@@@', diff --git a/src/User/resources/i18n/tr-TR/usuario.php b/src/User/resources/i18n/tr-TR/usuario.php index 62ade06..fd3e6ba 100644 --- a/src/User/resources/i18n/tr-TR/usuario.php +++ b/src/User/resources/i18n/tr-TR/usuario.php @@ -17,12 +17,15 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', + 'privacy policy' => '@@@@', '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'A new confirmation link has been sent' => '', 'A password will be generated automatically if not provided' => '', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'Account' => '', 'Account confirmation' => '', 'Account details' => '', @@ -83,6 +86,7 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data privacy' => '', 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', @@ -111,7 +115,6 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', - 'I agree 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' => '', @@ -189,6 +192,7 @@ return [ 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Submit' => '', 'Switch identities is disabled.' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', @@ -223,6 +227,7 @@ return [ 'Unable to update block status.' => '', 'Unblock' => '', 'Unconfirmed' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', 'Update' => '', 'Update assignments' => '', 'Update permission' => '', @@ -266,11 +271,11 @@ return [ 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', 'Your consent is required to register' => '', + 'Your consent is required to work with this site' => '', 'Your email address has been changed' => '', 'Your password has expired, you must change it now' => '', '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. ' => '@@@@', diff --git a/src/User/resources/i18n/uk/usuario.php b/src/User/resources/i18n/uk/usuario.php index 19831df..ddadcb9 100644 --- a/src/User/resources/i18n/uk/usuario.php +++ b/src/User/resources/i18n/uk/usuario.php @@ -17,7 +17,6 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ - '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, MMM dd, YYYY HH:mm}', '(not set)' => '{не задано}', 'A confirmation message has been sent to your new email address' => 'Підтверджуюче повідомлення надіслано на Вашу нову електронну адресу', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => 'На Вашу електронну адресу було надіслано повідомлення. Воно містить посилання, по якому Ви маєте перейти, щоб підтвердити реєстрацію', @@ -111,7 +110,7 @@ return [ 'Gravatar email' => 'Gravatar email', 'Hello' => 'Привіт', 'Here you can download your personal data in a comma separated values format.' => 'Тут Ви можете скачати Ваші персональні дані у форматі CSV.', - 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => 'Я даю згоду на обробку моїх персональних даних та на використання cookie даним сайтом. Для більш детальної інформації ознайомтесь з {privacyPolicy}', + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@Я даю згоду на обробку моїх персональних даних та на використання cookie даним сайтом. Для більш детальної інформації ознайомтесь з {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' => 'Якщо Ви не робили запит - можете ігнорувати дане повідомлення.', @@ -163,7 +162,6 @@ return [ 'Profile settings' => 'Налаштування профілю', 'Recover your password' => 'Відновити Ваш пароль', 'Recovery link is invalid or expired. Please try requesting a new one.' => 'Посилання для відновлення пароля невірне або застаріле. Будь ласка, спробуйте створити новий запит.', - 'Recovery message sent' => '', 'Registration IP' => 'IP реєстрації', 'Registration on this website is disabled' => 'Реєстрація на даному сайті не дозволена', 'Registration time' => 'Час реєстрації', @@ -270,32 +268,38 @@ return [ 'Your password has expired, you must change it now' => 'Ваш пароль застарів, Ви маєте змінити його зараз', 'Your personal information has been removed' => 'Ваші персональні дані видалені', 'Your profile has been updated' => 'Ваш профіль оновлено', - 'privacy policy' => 'політика конфіденційності', + 'privacy policy' => '@@політика конфіденційності@@', + '{0, date, MMM dd, YYYY HH:mm}' => '{0, date, MMM dd, YYYY HH:mm}', '{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, MMMM dd, YYYY HH:mm}', '{0} cannot be blank.' => '{0} не може бути порожнім.', - 'A message has been sent to your email address. ' => 'На вашу електронну адресу надіслано повідомлення', - 'An email has been sent with instructions for resetting your password' => 'Лист з інструкціями по зміні пароля надіслано на електронну адресу', - 'Awesome, almost there. ' => 'Чудово, майже все.', - 'Class "{0}" does not exist' => 'Клас "{0}" не існує', - 'Disable Two-Factor Auth' => 'Вимкнути двофакторну аутентифікацію', - 'Enable Two-factor auth' => 'Увімкнути двофакторну аутентифікацію', - '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}' => 'Я даю згоду на обробку моїх персональних даних та на використання cookie даним сайтом. Для більш детальної інформації ознайомтесь з {privacyPolicy}', - '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}' => 'Я даю згоду на обробку моїх персональних даних та на використання cookie даним сайтом. Для більш детальної інформації ознайомтесь з {privacyPolicy}', - 'Invalid two-factor code' => 'Невірний код двофакторної авторизації', - 'Last login' => 'Останній вхід', - 'Registration ip' => 'IP реєстрації', - 'Rule class can not be instantiated' => 'Клас Правила не може бути ініційований', - 'Rule class must extend "yii\\rbac\\Rule"' => 'Клас Правила має розширювати "yii\\rbac\\Rule"', - 'This will disable two-factor auth. Are you sure?' => 'Це вимкне двофакторну аутентифікацію. Ви впевнені?', - 'Two Factor Authentication' => 'Двофакторна аутентифікація', - 'Two factor authentication protects you against stolen credentials' => 'Двофакторна аутентифікація дає Вам додатковий захист даних авторизації', - 'Two factor successfully enabled.' => 'Двофакторна аутентифікація успішно підключена', - 'Two-Factor Authentication' => 'Двофакторна аутентифікація', - 'Two-factor auth protects you against stolen credentials' => 'Двофакторна аутентифікація дає Вам додатковий захист даних авторизації', - 'Two-factor authentication code' => 'Код двофакторної аутентифікації', - 'Two-factor authorization has been disabled.' => 'Двофакторна аутентифікація відключена', - 'Two-factor code' => 'Двофакторний код', - 'Unable to disable two-factor authorization.' => 'Неможливо відключити двофакторну авторизацію.', - 'We couldn\'t re-send the mail to confirm your address. ' => 'Ми не змогли надіслати email для підтвердження Вашої електронної адреси.', - 'We have sent confirmation links to both old and new email addresses. ' => 'Ми надіслали повідомлення з підтверджуючими посиланнями на обидві Ваші електронні адреси: стару і нову.', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', + 'Data privacy' => '', + 'Recovery message sent' => '', + 'Submit' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', + 'Your consent is required to work with this site' => '', + 'A message has been sent to your email address. ' => '@@На вашу електронну адресу надіслано повідомлення@@', + 'An email has been sent with instructions for resetting your password' => '@@Лист з інструкціями по зміні пароля надіслано на електронну адресу@@', + 'Awesome, almost there. ' => '@@Чудово, майже все.@@', + 'Class "{0}" does not exist' => '@@Клас "{0}" не існує@@', + 'Disable Two-Factor Auth' => '@@Вимкнути двофакторну аутентифікацію@@', + 'Enable Two-factor auth' => '@@Увімкнути двофакторну аутентифікацію@@', + '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}' => '@@Я даю згоду на обробку моїх персональних даних та на використання cookie даним сайтом. Для більш детальної інформації ознайомтесь з {privacyPolicy}@@', + 'Invalid two-factor code' => '@@Невірний код двофакторної авторизації@@', + 'Last login' => '@@Останній вхід@@', + 'Registration ip' => '@@IP реєстрації@@', + 'Rule class can not be instantiated' => '@@Клас Правила не може бути ініційований@@', + 'Rule class must extend "yii\\rbac\\Rule"' => '@@Клас Правила має розширювати "yii\\rbac\\Rule"@@', + 'This will disable two-factor auth. Are you sure?' => '@@Це вимкне двофакторну аутентифікацію. Ви впевнені?@@', + 'Two Factor Authentication' => '@@Двофакторна аутентифікація@@', + 'Two factor authentication protects you against stolen credentials' => '@@Двофакторна аутентифікація дає Вам додатковий захист даних авторизації@@', + 'Two factor successfully enabled.' => '@@Двофакторна аутентифікація успішно підключена@@', + 'Two-Factor Authentication' => '@@Двофакторна аутентифікація@@', + 'Two-factor auth protects you against stolen credentials' => '@@Двофакторна аутентифікація дає Вам додатковий захист даних авторизації@@', + 'Two-factor authentication code' => '@@Код двофакторної аутентифікації@@', + 'Two-factor authorization has been disabled.' => '@@Двофакторна аутентифікація відключена@@', + 'Two-factor code' => '@@Двофакторний код@@', + 'Unable to disable two-factor authorization.' => '@@Неможливо відключити двофакторну авторизацію.@@', + 'We couldn\'t re-send the mail to confirm your address. ' => '@@Ми не змогли надіслати email для підтвердження Вашої електронної адреси.@@', + 'We have sent confirmation links to both old and new email addresses. ' => '@@Ми надіслали повідомлення з підтверджуючими посиланнями на обидві Ваші електронні адреси: стару і нову.@@', ]; diff --git a/src/User/resources/i18n/vi/usuario.php b/src/User/resources/i18n/vi/usuario.php index 62ade06..fd3e6ba 100644 --- a/src/User/resources/i18n/vi/usuario.php +++ b/src/User/resources/i18n/vi/usuario.php @@ -17,12 +17,15 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', + 'privacy policy' => '@@@@', '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'A new confirmation link has been sent' => '', 'A password will be generated automatically if not provided' => '', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'Account' => '', 'Account confirmation' => '', 'Account details' => '', @@ -83,6 +86,7 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data privacy' => '', 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', @@ -111,7 +115,6 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', - 'I agree 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' => '', @@ -189,6 +192,7 @@ return [ 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Submit' => '', 'Switch identities is disabled.' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', @@ -223,6 +227,7 @@ return [ 'Unable to update block status.' => '', 'Unblock' => '', 'Unconfirmed' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', 'Update' => '', 'Update assignments' => '', 'Update permission' => '', @@ -266,11 +271,11 @@ return [ 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', 'Your consent is required to register' => '', + 'Your consent is required to work with this site' => '', 'Your email address has been changed' => '', 'Your password has expired, you must change it now' => '', '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. ' => '@@@@', diff --git a/src/User/resources/i18n/zh-CN/usuario.php b/src/User/resources/i18n/zh-CN/usuario.php index 62ade06..fd3e6ba 100644 --- a/src/User/resources/i18n/zh-CN/usuario.php +++ b/src/User/resources/i18n/zh-CN/usuario.php @@ -17,12 +17,15 @@ * NOTE: this file must be saved in UTF-8 encoding. */ return [ + 'I agree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@', + 'privacy policy' => '@@@@', '{0, date, MMM dd, YYYY HH:mm}' => '@@@@', '(not set)' => '', 'A confirmation message has been sent to your new email address' => '', 'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => '', 'A new confirmation link has been sent' => '', 'A password will be generated automatically if not provided' => '', + 'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '', 'Account' => '', 'Account confirmation' => '', 'Account details' => '', @@ -83,6 +86,7 @@ return [ 'Credentials will be sent to the user by email' => '', 'Current password' => '', 'Current password is not valid' => '', + 'Data privacy' => '', 'Data processing consent' => '', 'Delete' => '', 'Delete account' => '', @@ -111,7 +115,6 @@ return [ 'Gravatar email' => '', 'Hello' => '', 'Here you can download your personal data in a comma separated values format.' => '', - 'I agree 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' => '', @@ -189,6 +192,7 @@ return [ 'Sign in' => '', 'Sign up' => '', 'Something went wrong' => '', + 'Submit' => '', 'Switch identities is disabled.' => '', 'Thank you for signing up on {0}' => '', 'Thank you, registration is now complete.' => '', @@ -223,6 +227,7 @@ return [ 'Unable to update block status.' => '', 'Unblock' => '', 'Unconfirmed' => '', + 'Unfortunately, you can not work with this site without giving us consent to process your data.' => '', 'Update' => '', 'Update assignments' => '', 'Update permission' => '', @@ -266,11 +271,11 @@ return [ 'Your account on {0} has been created' => '', 'Your confirmation token is invalid or expired' => '', 'Your consent is required to register' => '', + 'Your consent is required to work with this site' => '', 'Your email address has been changed' => '', 'Your password has expired, you must change it now' => '', '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. ' => '@@@@', diff --git a/src/User/resources/views/settings/gdpr-consent.php b/src/User/resources/views/settings/gdpr-consent.php new file mode 100644 index 0000000..a7b69ae --- /dev/null +++ b/src/User/resources/views/settings/gdpr-consent.php @@ -0,0 +1,35 @@ + + +
+
+ $model->formName(), + ] + ); ?> + + + +
+
diff --git a/tests/_app/controllers/SiteController.php b/tests/_app/controllers/SiteController.php index 913af9f..d0357eb 100644 --- a/tests/_app/controllers/SiteController.php +++ b/tests/_app/controllers/SiteController.php @@ -2,10 +2,29 @@ namespace app\controllers; +use Da\User\Filter\AccessRuleFilter; +use yii\filters\AccessControl; use yii\web\Controller; class SiteController extends Controller { + public function behaviors() + { + return [ + 'access' => [ + 'class' => AccessControl::className(), + 'ruleConfig' => [ + 'class' => AccessRuleFilter::className(), + ], + 'rules' => [ + [ + 'allow' => true, + ], + ], + ], + ]; + } + public function actionIndex() { return $this->render('index'); diff --git a/tests/_fixtures/data/user.php b/tests/_fixtures/data/user.php index 476be9e..b8772fb 100644 --- a/tests/_fixtures/data/user.php +++ b/tests/_fixtures/data/user.php @@ -14,6 +14,7 @@ return [ 'created_at' => $time, 'updated_at' => $time, 'confirmed_at' => $time, + 'gdpr_consent' => false, ], 'unconfirmed' => [ 'id' => 2, diff --git a/tests/functional/GdprCest.php b/tests/functional/GdprCest.php index b0de920..f6f2625 100644 --- a/tests/functional/GdprCest.php +++ b/tests/functional/GdprCest.php @@ -142,10 +142,10 @@ class GdprCest $I->see('Export my data', 'h3'); $I->see('Delete my account', 'h3'); $I->amOnRoute('/user/settings/gdpr-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'); } @@ -163,5 +163,22 @@ class GdprCest $I->amLoggedInAs(1); $I->amOnRoute('/user/settings/privacy'); $I->seeResponseCodeIs(404); + $I->amOnRoute('/user/settings/privacy'); + $I->see('Not Found'); + } + + public function testForcedConsentRequirement(FunctionalTester $I) + { + $this->_prepareModule(false,false); + /** @var Module $module */ + $module = Yii::$app->getModule('user'); + $module->gdprRequireConsentToAll = true; + $I->amGoingTo('Try to access a page without giving data processing consent'); + $I->amLoggedInAs(1); + $I->amOnRoute('/site/index'); + $I->seeElement('.give-consent-panel'); + $I->checkOption('#dynamicmodel-gdpr_consent'); + $I->click('Submit'); + $I->see('Profile settings'); } }