Merge branch 'master' into 381-events-afterregister-and-beforeregis
This commit is contained in:
79
.github/workflows/php.yml
vendored
Normal file
79
.github/workflows/php.yml
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
name: Build
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
operating-system: ['ubuntu-latest']
|
||||
php-versions: ['8.1', '8.0','7.4']
|
||||
|
||||
services:
|
||||
mariadb:
|
||||
image: mariadb:latest
|
||||
ports:
|
||||
- 3306:3306
|
||||
env:
|
||||
MYSQL_USER: user
|
||||
MYSQL_PASSWORD: password
|
||||
MYSQL_DATABASE: yii2-usuario-test
|
||||
MYSQL_ROOT_PASSWORD: password
|
||||
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
|
||||
|
||||
steps:
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, intl, gd
|
||||
ini-values: post_max_size=256M, max_execution_time=180
|
||||
coverage: xdebug
|
||||
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
|
||||
- name: Verify MariaDB connection
|
||||
run: |
|
||||
while ! mysqladmin ping -h"127.0.0.1" --silent; do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
- name: Validate PHP version
|
||||
run: php -v
|
||||
|
||||
- name: Cache Composer packages
|
||||
id: composer-cache
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: vendor
|
||||
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-php-
|
||||
|
||||
|
||||
- name: Verify db connection & databases
|
||||
run: mysql -e "SHOW DATABASES;" -h127.0.0.1 -uroot -ppassword
|
||||
|
||||
- name: Install
|
||||
run: composer install --prefer-dist --no-interaction
|
||||
|
||||
- name: Run migrations
|
||||
run: php tests/_app/yii.php migrate/up --interactive=0 --migrationPath=@yii/rbac/migrations
|
||||
|
||||
- name: Run tests
|
||||
run: XDEBUG_MODE=coverage php vendor/bin/codecept run --coverage --coverage-xml
|
||||
|
||||
- name: Archive failed tests artifacts - test output & log
|
||||
uses: actions/upload-artifact@v2
|
||||
if: failure()
|
||||
with:
|
||||
name: test-outputs-php-${{ matrix.php-versions }}
|
||||
path: tests/_output
|
||||
|
||||
|
||||
65
.travis.yml
65
.travis.yml
@ -1,65 +0,0 @@
|
||||
|
||||
# faster builds on new travis setup not using sudo
|
||||
sudo: false
|
||||
|
||||
language: php
|
||||
|
||||
php:
|
||||
- 5.6
|
||||
- 7.1
|
||||
- 7.2
|
||||
- 7.3
|
||||
- 7.4
|
||||
- nightly
|
||||
|
||||
services:
|
||||
- mysql
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
allow_failures:
|
||||
- php: nightly
|
||||
|
||||
# cache vendor dirs
|
||||
# cache:
|
||||
# directories:
|
||||
# - vendor
|
||||
# - $HOME/.composer/cache
|
||||
|
||||
install:
|
||||
- |
|
||||
if [[ $TRAVIS_PHP_VERSION != '7.1' && $TRAVIS_PHP_VERSION != '7.2' && $TRAVIS_PHP_VERSION != hhv* ]]; then
|
||||
# disable xdebug for performance reasons when code coverage is not needed
|
||||
# note: xdebug on hhvm is disabled by default
|
||||
phpenv config-rm xdebug.ini || echo "xdebug is not installed"
|
||||
fi
|
||||
- travis_retry composer self-update && composer --version
|
||||
- export PATH="$HOME/.composer/vendor/bin:$PATH"
|
||||
- COMPOSER_MEMORY_LIMIT=-1 travis_retry composer install --prefer-dist --no-interaction
|
||||
|
||||
before_script:
|
||||
- php -r "echo INTL_ICU_VERSION . \"\n\";"
|
||||
- php -r "echo INTL_ICU_DATA_VERSION . \"\n\";"
|
||||
- mysql --version
|
||||
|
||||
# initialize database
|
||||
- mysql -e 'CREATE DATABASE `yii2-usuario-test`;';
|
||||
- php tests/_app/yii.php migrate/up --interactive=0
|
||||
- php tests/_app/yii.php migrate/up --interactive=0 --migrationPath=@yii/rbac/migrations
|
||||
|
||||
# enable code coverage on PHP 7.2, only one PHP version needs to generate coverage data
|
||||
- |
|
||||
if [ $TRAVIS_PHP_VERSION = '7.2' ]; then
|
||||
CODECEPTION_FLAGS="--coverage-xml"
|
||||
fi
|
||||
|
||||
script:
|
||||
- composer validate --no-check-lock
|
||||
- vendor/bin/codecept run $CODECEPTION_FLAGS
|
||||
|
||||
after_script:
|
||||
- |
|
||||
if [ $TRAVIS_PHP_VERSION = '7.2' ]; then
|
||||
travis_retry wget https://scrutinizer-ci.com/ocular.phar
|
||||
php ocular.phar code-coverage:upload --format=php-clover tests/_output/coverage.xml
|
||||
fi
|
||||
18
CHANGELOG.md
18
CHANGELOG.md
@ -1,11 +1,27 @@
|
||||
# CHANGELOG
|
||||
|
||||
## work in progress
|
||||
## 1.6.0 work in progress
|
||||
|
||||
**WARNING**: this release (long time due) makes a step forward in PHP
|
||||
compatibility, leaving behind obsolete versions. While yii2-usuario should
|
||||
still work without issues on 5.6, from now on testing and development will
|
||||
look forward and manitain only >=7.4 versions.
|
||||
|
||||
- Fix replace non-working travis build with working github actions build (TonisOrmisson)
|
||||
- Fix user login events not triggered on ajax requests (TonisOrmisson)
|
||||
- Enh: Added minimum requirements when a new password is automatically generated (MatteoF96)
|
||||
- Fix #380: Avoid rewriting AccessRule::matchRole (maxxer)
|
||||
- Fix #378: Add module attribute 'disableIpLogging' (jkmssoft)
|
||||
- Enh #387: Added Persian translation (hadi-aj)
|
||||
- Fix #384: Delete flash messages after consuming (cgsmith)
|
||||
- Fix #381: Renamed events in `UserEvent` to avoid conflicts with events in `FormEvent` (Slayvin)
|
||||
- Enh: Added SK translations (snickom)
|
||||
- Fix: allow `password_changed_at` to be saved when reseting password (p4blojf)
|
||||
- Fix #430: Moved `EVENT_BEFORE_PROFILE_UPDATE` to correct place (eluhr)
|
||||
- Ehn #456: Added filter to allow forcing 2FA for specific user roles (acordeddu)
|
||||
- Ehn #412: Allow role names to support UTF-8 chars (4khobta)
|
||||
- Ehn #448: Remove deprecated SwiftMailer, use SymfonyMailer instead (TonisOrmisson)
|
||||
- Ehn #428: Translations of the placeholders in the login widget (anapaulaxenon)
|
||||
|
||||
## 1.5.1 April 5, 2020
|
||||
- Fix #370: Extending view fix (effsoft)
|
||||
|
||||
@ -6,7 +6,7 @@ Yii 2 Usuario Extension
|
||||
[](https://packagist.org/packages/2amigos/yii2-usuario)
|
||||
[](https://packagist.org/packages/2amigos/yii2-usuario)
|
||||
[](https://packagist.org/packages/2amigos/yii2-usuario)
|
||||
[](https://travis-ci.org/2amigos/yii2-usuario)
|
||||
[](https://github.com/2amigos/yii2-usuario/actions/)
|
||||
[](//packagist.org/packages/2amigos/yii2-usuario)
|
||||
[](https://scrutinizer-ci.com/g/2amigos/yii2-usuario/?branch=master)
|
||||
|
||||
|
||||
@ -4,8 +4,8 @@ paths:
|
||||
log: tests/_output
|
||||
data: tests/_data
|
||||
helpers: tests/_support
|
||||
settings:
|
||||
bootstrap: _bootstrap.php
|
||||
settings:
|
||||
colors: true
|
||||
memory_limit: 1024M
|
||||
modules:
|
||||
@ -13,11 +13,12 @@ modules:
|
||||
Db:
|
||||
dsn: 'mysql:host=127.0.0.1;dbname=yii2-usuario-test'
|
||||
user: 'root'
|
||||
password: ''
|
||||
password: 'password'
|
||||
dump: tests/_data/schema.sql
|
||||
Yii2:
|
||||
configFile: 'tests/_app/config/test.php'
|
||||
cleanup: false
|
||||
transaction: false
|
||||
coverage:
|
||||
enabled: true
|
||||
whitelist:
|
||||
|
||||
@ -44,14 +44,17 @@
|
||||
"2amigos/yii2-selectize-widget": "^1.1",
|
||||
"yiisoft/yii2-authclient": "^2.1",
|
||||
"yiisoft/yii2-httpclient": "^2.0",
|
||||
"yiisoft/yii2-bootstrap": "^2.0",
|
||||
"yiisoft/yii2-swiftmailer": "^2.0"
|
||||
"yiisoft/yii2-bootstrap": "^2.0"
|
||||
},
|
||||
"suggest": {
|
||||
"yiisoft/yii2-symfonymailer": "A mailer driver is needed to send e-mails. Older versions use abandoned Swiftmailer which can be replaced with symfonymailer",
|
||||
"2amigos/2fa-library": "Needed if you want to enable 2 Factor Authentication. Require version ^1.0",
|
||||
"2amigos/qrcode-library": "Needed if you want to enable 2FA with QR Code generation. Require version ^1.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"php": ">=7.4",
|
||||
|
||||
"yiisoft/yii2-symfonymailer": "~2.0.0",
|
||||
"friendsofphp/php-cs-fixer": "^2.3",
|
||||
"squizlabs/php_codesniffer": "*",
|
||||
"phpmd/phpmd": "@stable",
|
||||
@ -79,6 +82,9 @@
|
||||
},
|
||||
"fxp-asset": {
|
||||
"enabled": false
|
||||
},
|
||||
"allow-plugins": {
|
||||
"yiisoft/yii2-composer": true
|
||||
}
|
||||
},
|
||||
"conflict": {
|
||||
|
||||
6
docs/events/user-events.md
Normal file → Executable file
6
docs/events/user-events.md
Normal file → Executable file
@ -21,6 +21,8 @@ On Controllers
|
||||
- **UserEvent::EVENT_AFTER_UNBLOCK**: Occurs after a user is being un-blocked
|
||||
- **UserEvent::EVENT_BEFORE_SWITCH_IDENTITY**: Occurs before a user is being impersonated by admin
|
||||
- **UserEvent::EVENT_AFTER_SWITCH_IDENTITY**: Occurs after a user his being impersonated by admin
|
||||
- **SessionEvent::EVENT_BEFORE_TERMINATE_USER_SESSIONS**
|
||||
- **SessionEvent::EVENT_AFTER_TERMINATE_USER_SESSIONS**
|
||||
|
||||
|
||||
- **RegistrationController**
|
||||
@ -41,6 +43,10 @@ On Controllers
|
||||
- **UserEvent::EVENT_BEFORE_DELETE**: Occurs before the user account is deleted
|
||||
- **UserEvent::EVENT_AFTER_DELETE**: Occurs after the user account is deleted
|
||||
|
||||
- **SessionController**
|
||||
- **SessionEvent::EVENT_BEFORE_TERMINATE_USER_SESSIONS**: Occurs before the user sessions is terminated
|
||||
- **SessionEvent::EVENT_AFTER_TERMINATE_USER_SESSIONS**: Occurs after the user sessions is terminated
|
||||
|
||||
On Models
|
||||
---------
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@ Put this in your migration:
|
||||
$auth = Yii::$app->authManager;
|
||||
|
||||
// create a role named "administrator"
|
||||
$administratorRole = $auth->createRole('administrator');
|
||||
$administratorRole = $auth->createRole('admin');
|
||||
$administratorRole->description = 'Administrator';
|
||||
$auth->add($administratorRole);
|
||||
|
||||
@ -65,7 +65,7 @@ Put this in your migration:
|
||||
|
||||
// delete admin-user and administrator role
|
||||
$administratorRole = $auth->getRole("administrator");
|
||||
$user = \Da\User\Model\User::findOne(['name'=>"admin"]);
|
||||
$user = \Da\User\Model\User::findOne(['username'=>"admin"]);
|
||||
$auth->revoke($administratorRole, $user->id);
|
||||
$user->delete();
|
||||
$auth->remove($administratorRole);
|
||||
|
||||
60
docs/helpful-guides/how-to-use-session-history.md
Executable file
60
docs/helpful-guides/how-to-use-session-history.md
Executable file
@ -0,0 +1,60 @@
|
||||
How to enable session history
|
||||
============================
|
||||
|
||||
Session history list user sessions.
|
||||
|
||||
User can delete all sessions except current.
|
||||
|
||||
Configure Module and Application
|
||||
--------------------------------
|
||||
|
||||
```php
|
||||
|
||||
// ...
|
||||
|
||||
'modules' => [
|
||||
'user' => [
|
||||
'class' => Da\User\Module::class,
|
||||
'enableSessionHistory' => true,
|
||||
]
|
||||
],
|
||||
|
||||
// ...
|
||||
|
||||
'components' => [
|
||||
'session' => Da\User\Service\SessionHistory\SessionHistoryDecorator::class,
|
||||
]
|
||||
|
||||
// ...
|
||||
|
||||
'container' => [
|
||||
'singletons' => [
|
||||
Da\User\Service\SessionHistory\TerminateSessionsServiceInterface::class => Da\User\Service\SessionHistory\TerminateSessionsService::class
|
||||
]
|
||||
]
|
||||
|
||||
// ...
|
||||
|
||||
'controllerMap' => [
|
||||
'migrate' => [
|
||||
...
|
||||
'migrationNamespaces' => [
|
||||
'Da\User\Migration\Session',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
```
|
||||
|
||||
Additionally for upping migration can use
|
||||
```
|
||||
./yii migrate --migrationNamespaces=Da\\User\\Migration\Session
|
||||
```
|
||||
|
||||
Setting user screenshot:
|
||||

|
||||
|
||||
Admin screenshot:
|
||||

|
||||
|
||||
© [2amigos](http://www.2amigos.us/) 2013-2019
|
||||
BIN
docs/helpful-guides/session-history/admin.png
Executable file
BIN
docs/helpful-guides/session-history/admin.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 145 KiB |
BIN
docs/helpful-guides/session-history/settings.png
Executable file
BIN
docs/helpful-guides/session-history/settings.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 137 KiB |
1
docs/index.md
Normal file → Executable file
1
docs/index.md
Normal file → Executable file
@ -188,6 +188,7 @@ Helpful Guides
|
||||
- [How to Switch Identities](helpful-guides/how-to-switch-identities.md)
|
||||
- [Separate Frontend and Backend Sessions](helpful-guides/separate-frontend-and-backend-sessions.md)
|
||||
- [Social Network Authentication](helpful-guides/social-network-authentication.md)
|
||||
- [How to Enable session history](helpful-guides/how-to-use-session-history.md)
|
||||
|
||||
Contributing
|
||||
------------
|
||||
|
||||
46
docs/installation/configuration-options.md
Normal file → Executable file
46
docs/installation/configuration-options.md
Normal file → Executable file
@ -3,6 +3,22 @@ Configuration Options
|
||||
|
||||
The module comes with a set of attributes to configure. The following is the list of all available options:
|
||||
|
||||
#### enableSessionHistory (Type: `boolean, integer`, Default value: `false`)
|
||||
|
||||
If this option is to `true`, session history will be kept, [more](../helpful-guides/how-to-use-session-history.md).
|
||||
|
||||
#### numberSessionHistory (Type: `boolean, integer`, Default value: `false`)
|
||||
|
||||
Number of expired storing records `session history`, values:
|
||||
- `false` Store all records without deleting
|
||||
- `integer` Count of records for storing
|
||||
|
||||
#### timeoutSessionHistory (Type: `boolean, integer`, Default value: `false`)
|
||||
|
||||
How long store `session history` after expiring, values:
|
||||
- `false` Store all records without deleting
|
||||
- `integer` Time for storing after expiring in seconds
|
||||
|
||||
#### enableTwoFactorAuthentication (type: `boolean`, default: `false`)
|
||||
|
||||
Setting this attribute will allow users to configure their login process with two-factor authentication.
|
||||
@ -12,6 +28,24 @@ Setting this attribute will allow users to configure their login process with tw
|
||||
By default, Google Authenticator App for two-factor authentication cycles in periods of 30 seconds. In order to allow
|
||||
a bigger period so to avoid out of sync issues.
|
||||
|
||||
#### twoFactorAuthenticationForcedPermissions (type: `array`, default: `[]`)
|
||||
|
||||
The list of permissions for which two factor authentication is mandatory. In order to perform the check in every action you must configure a filter into your config file like this:
|
||||
|
||||
use Da\User\Filter\TwoFactorAuthenticationEnforceFilter;
|
||||
...
|
||||
'on beforeAction' => function() {
|
||||
Yii::$app->controller->attachBehavior(
|
||||
'enforceTwoFactorAuthentication',[
|
||||
'class' => TwoFactorAuthenticationEnforceFilter::class,
|
||||
'except' => ['login', 'logout', 'account', 'two-factor', 'two-factor-enable'],
|
||||
]
|
||||
);
|
||||
},
|
||||
...
|
||||
This will redirect the user to their account page until the two factor authentication is enabled.
|
||||
|
||||
|
||||
#### enableGdprCompliance (type: `boolean`, default: `false`)
|
||||
|
||||
Setting this attribute enables a serie of measures to comply with EU GDPR regulation, like data consent, right to be forgotten and data portability.
|
||||
@ -220,5 +254,17 @@ Set to `true` to restrict user assignments to roles only.
|
||||
|
||||
If `true` registration and last login IPs are not logged into users table, instead a dummy 127.0.0.1 is used
|
||||
|
||||
#### minPasswordRequirements (type: `array`, default: `['lower' => 1, 'digit' => 1, 'upper' => 1]`)
|
||||
|
||||
Minimum requirements when a new password is automatically generated.
|
||||
Array structure: `"requirement" => minimum_number_characters`.
|
||||
|
||||
Possible array keys:
|
||||
- lower: minimum number of lowercase characters;
|
||||
- upper: minimum number of uppercase characters;
|
||||
- digit: minimum number of digits;
|
||||
- special: minimum number of special characters;
|
||||
- min: minimum number of characters (= minimum length).
|
||||
|
||||
|
||||
© [2amigos](http://www.2amigos.us/) 2013-2019
|
||||
|
||||
8
src/User/Bootstrap.php
Normal file → Executable file
8
src/User/Bootstrap.php
Normal file → Executable file
@ -16,7 +16,9 @@ use Da\User\Contracts\AuthManagerInterface;
|
||||
use Da\User\Controller\SecurityController;
|
||||
use Da\User\Event\FormEvent;
|
||||
use Da\User\Helper\ClassMapHelper;
|
||||
use Da\User\Model\SessionHistory;
|
||||
use Da\User\Model\User;
|
||||
use Da\User\Search\SessionHistorySearch;
|
||||
use Yii;
|
||||
use yii\authclient\Collection;
|
||||
use yii\base\Application;
|
||||
@ -128,7 +130,7 @@ class Bootstrap implements BootstrapInterface
|
||||
$model = is_array($definition) ? $definition['class'] : $definition;
|
||||
$name = substr($class, strrpos($class, '\\') + 1);
|
||||
$modelClassMap[$class] = $model;
|
||||
if (in_array($name, ['User', 'Profile', 'Token', 'SocialNetworkAccount'])) {
|
||||
if (in_array($name, ['User', 'Profile', 'Token', 'SocialNetworkAccount', 'SessionHistory'])) {
|
||||
$di->set(
|
||||
"Da\\User\\Query\\{$name}Query",
|
||||
function () use ($model) {
|
||||
@ -315,10 +317,12 @@ class Bootstrap implements BootstrapInterface
|
||||
'Assignment' => 'Da\User\Model\Assignment',
|
||||
'Permission' => 'Da\User\Model\Permission',
|
||||
'Role' => 'Da\User\Model\Role',
|
||||
'SessionHistory' => SessionHistory::class,
|
||||
// --- search
|
||||
'UserSearch' => 'Da\User\Search\UserSearch',
|
||||
'PermissionSearch' => 'Da\User\Search\PermissionSearch',
|
||||
'RoleSearch' => 'Da\User\Search\RoleSearch',
|
||||
'SessionHistorySearch' => SessionHistorySearch::class,
|
||||
// --- forms
|
||||
'RegistrationForm' => 'Da\User\Form\RegistrationForm',
|
||||
'ResendForm' => 'Da\User\Form\ResendForm',
|
||||
@ -338,11 +342,13 @@ class Bootstrap implements BootstrapInterface
|
||||
'Assignment',
|
||||
'Permission',
|
||||
'Role',
|
||||
'SessionHistory'
|
||||
],
|
||||
'Da\User\Search' => [
|
||||
'UserSearch',
|
||||
'PermissionSearch',
|
||||
'RoleSearch',
|
||||
'SessionHistorySearch',
|
||||
],
|
||||
'Da\User\Form' => [
|
||||
'RegistrationForm',
|
||||
|
||||
41
src/User/Controller/AdminController.php
Normal file → Executable file
41
src/User/Controller/AdminController.php
Normal file → Executable file
@ -17,9 +17,11 @@ use Da\User\Filter\AccessRuleFilter;
|
||||
use Da\User\Model\Profile;
|
||||
use Da\User\Model\User;
|
||||
use Da\User\Query\UserQuery;
|
||||
use Da\User\Search\SessionHistorySearch;
|
||||
use Da\User\Search\UserSearch;
|
||||
use Da\User\Service\PasswordExpireService;
|
||||
use Da\User\Service\PasswordRecoveryService;
|
||||
use Da\User\Service\SessionHistory\TerminateUserSessionsService;
|
||||
use Da\User\Service\SwitchIdentityService;
|
||||
use Da\User\Service\UserBlockService;
|
||||
use Da\User\Service\UserConfirmationService;
|
||||
@ -66,7 +68,7 @@ class AdminController extends Controller
|
||||
*/
|
||||
public function beforeAction($action)
|
||||
{
|
||||
if (in_array($action->id, ['index', 'update', 'update-profile', 'info', 'assignments'], true)) {
|
||||
if (in_array($action->id, ['index', 'update', 'update-profile', 'info', 'assignments', 'session-history'], true)) {
|
||||
Url::remember('', 'actions-redirect');
|
||||
}
|
||||
|
||||
@ -88,6 +90,7 @@ class AdminController extends Controller
|
||||
'switch-identity' => ['post'],
|
||||
'password-reset' => ['post'],
|
||||
'force-password-change' => ['post'],
|
||||
'terminate-sessions' => ['post'],
|
||||
],
|
||||
],
|
||||
'access' => [
|
||||
@ -101,6 +104,11 @@ class AdminController extends Controller
|
||||
'actions' => ['switch-identity'],
|
||||
'roles' => ['@'],
|
||||
],
|
||||
[
|
||||
'allow' => $this->getModule()->enableSessionHistory,
|
||||
'actions' => ['session-history', 'terminate-sessions'],
|
||||
'roles' => ['admin'],
|
||||
],
|
||||
[
|
||||
'allow' => true,
|
||||
'roles' => ['admin'],
|
||||
@ -189,8 +197,8 @@ class AdminController extends Controller
|
||||
$this->make(AjaxRequestModelValidator::class, [$profile])->validate();
|
||||
|
||||
if ($profile->load(Yii::$app->request->post())) {
|
||||
if ($profile->save()) {
|
||||
$this->trigger(UserEvent::EVENT_BEFORE_PROFILE_UPDATE, $event);
|
||||
if ($profile->save()) {
|
||||
Yii::$app->getSession()->setFlash('success', Yii::t('usuario', 'Profile details have been updated'));
|
||||
$this->trigger(UserEvent::EVENT_AFTER_PROFILE_UPDATE, $event);
|
||||
|
||||
@ -346,4 +354,33 @@ class AdminController extends Controller
|
||||
}
|
||||
$this->redirect(['index']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display list session history
|
||||
*/
|
||||
public function actionSessionHistory($id)
|
||||
{
|
||||
$searchModel = new SessionHistorySearch([
|
||||
'user_id' => $id,
|
||||
]);
|
||||
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
|
||||
|
||||
$user = $this->userQuery->where(['id' => $id])->one();
|
||||
|
||||
return $this->render('_session-history', [
|
||||
'searchModel' => $searchModel,
|
||||
'dataProvider' => $dataProvider,
|
||||
'user' => $user,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Terminate all session user
|
||||
*/
|
||||
public function actionTerminateSessions($id)
|
||||
{
|
||||
$this->make(TerminateUserSessionsService::class, [$id])->run();
|
||||
|
||||
return $this->redirect(Url::previous('actions-redirect'));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
/**
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
@ -116,23 +116,33 @@ class SecurityController extends Controller
|
||||
return $this->goHome();
|
||||
}
|
||||
|
||||
/** @var LoginForm $form */
|
||||
/**
|
||||
* @var LoginForm $form
|
||||
*/
|
||||
$form = $this->make(LoginForm::class);
|
||||
|
||||
/** @var FormEvent $event */
|
||||
/**
|
||||
* @var FormEvent $event
|
||||
*/
|
||||
$event = $this->make(FormEvent::class, [$form]);
|
||||
|
||||
if (Yii::$app->request->isAjax && $form->load(Yii::$app->request->post())) {
|
||||
Yii::$app->response->format = Response::FORMAT_JSON;
|
||||
|
||||
return ActiveForm::validate($form);
|
||||
$errors = ActiveForm::validate($form);
|
||||
if (empty($errors)) {
|
||||
return $errors;
|
||||
}
|
||||
$this->trigger(FormEvent::EVENT_FAILED_LOGIN, $event);
|
||||
return $errors;
|
||||
}
|
||||
|
||||
if ($form->load(Yii::$app->request->post())) {
|
||||
if ($this->module->enableTwoFactorAuthentication && $form->validate()) {
|
||||
if ($form->getUser()->auth_tf_enabled) {
|
||||
Yii::$app->session->set('credentials', ['login' => $form->login, 'pwd' => $form->password]);
|
||||
$user = $form->getUser();
|
||||
|
||||
if ($user->auth_tf_enabled) {
|
||||
Yii::$app->session->set('credentials', ['login' => $form->login, 'pwd' => $form->password]);
|
||||
return $this->redirect(['confirm']);
|
||||
}
|
||||
}
|
||||
@ -148,11 +158,8 @@ class SecurityController extends Controller
|
||||
|
||||
return $this->goBack();
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->trigger(FormEvent::EVENT_FAILED_LOGIN, $event);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->render(
|
||||
'login',
|
||||
@ -174,13 +181,17 @@ class SecurityController extends Controller
|
||||
}
|
||||
|
||||
$credentials = Yii::$app->session->get('credentials');
|
||||
/** @var LoginForm $form */
|
||||
/**
|
||||
* @var LoginForm $form
|
||||
*/
|
||||
$form = $this->make(LoginForm::class);
|
||||
$form->login = $credentials['login'];
|
||||
$form->password = $credentials['pwd'];
|
||||
$form->setScenario('2fa');
|
||||
|
||||
/** @var FormEvent $event */
|
||||
/**
|
||||
* @var FormEvent $event
|
||||
*/
|
||||
$event = $this->make(FormEvent::class, [$form]);
|
||||
|
||||
if (Yii::$app->request->isAjax && $form->load(Yii::$app->request->post())) {
|
||||
@ -240,4 +251,5 @@ class SecurityController extends Controller
|
||||
|
||||
$this->make(SocialNetworkAccountConnectService::class, [$this, $client])->run();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
142
src/User/Controller/SettingsController.php
Normal file → Executable file
142
src/User/Controller/SettingsController.php
Normal file → Executable file
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
/**
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
@ -26,7 +26,9 @@ use Da\User\Module;
|
||||
use Da\User\Query\ProfileQuery;
|
||||
use Da\User\Query\SocialNetworkAccountQuery;
|
||||
use Da\User\Query\UserQuery;
|
||||
use Da\User\Search\SessionHistorySearch;
|
||||
use Da\User\Service\EmailChangeService;
|
||||
use Da\User\Service\SessionHistory\TerminateUserSessionsService;
|
||||
use Da\User\Service\TwoFactorQrCodeUriGeneratorService;
|
||||
use Da\User\Traits\ContainerAwareTrait;
|
||||
use Da\User\Traits\ModuleAwareTrait;
|
||||
@ -91,7 +93,8 @@ class SettingsController extends Controller
|
||||
'actions' => [
|
||||
'disconnect' => ['post'],
|
||||
'delete' => ['post'],
|
||||
'two-factor-disable' => ['post']
|
||||
'two-factor-disable' => ['post'],
|
||||
'terminate-sessions' => ['post'],
|
||||
],
|
||||
],
|
||||
'access' => [
|
||||
@ -111,7 +114,7 @@ class SettingsController extends Controller
|
||||
'delete',
|
||||
'two-factor',
|
||||
'two-factor-enable',
|
||||
'two-factor-disable'
|
||||
'two-factor-disable',
|
||||
],
|
||||
'roles' => ['@'],
|
||||
],
|
||||
@ -120,6 +123,11 @@ class SettingsController extends Controller
|
||||
'actions' => ['confirm'],
|
||||
'roles' => ['?', '@'],
|
||||
],
|
||||
[
|
||||
'allow' => $this->getModule()->enableSessionHistory,
|
||||
'actions' => ['session-history', 'terminate-sessions'],
|
||||
'roles' => ['@'],
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
@ -138,7 +146,11 @@ class SettingsController extends Controller
|
||||
$profile->link('user', Yii::$app->user->identity);
|
||||
}
|
||||
|
||||
/** @var ProfileEvent $event */
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @var ProfileEvent $event
|
||||
*/
|
||||
$event = $this->make(ProfileEvent::class, [$profile]);
|
||||
|
||||
$this->make(AjaxRequestModelValidator::class, [$profile])->validate();
|
||||
@ -170,9 +182,12 @@ class SettingsController extends Controller
|
||||
if (!$this->module->enableGdprCompliance) {
|
||||
throw new NotFoundHttpException();
|
||||
}
|
||||
return $this->render('privacy', [
|
||||
return $this->render(
|
||||
'privacy',
|
||||
[
|
||||
'module' => $this->module
|
||||
]);
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -189,7 +204,11 @@ class SettingsController extends Controller
|
||||
if (!$this->module->enableGdprCompliance) {
|
||||
throw new NotFoundHttpException();
|
||||
}
|
||||
/** @var GdprDeleteForm $form */
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @var GdprDeleteForm $form
|
||||
*/
|
||||
$form = $this->make(GdprDeleteForm::class);
|
||||
|
||||
$user = $form->getUser();
|
||||
@ -211,21 +230,25 @@ class SettingsController extends Controller
|
||||
$security = $this->make(SecurityHelper::class);
|
||||
$anonymReplacement = $this->module->gdprAnonymizePrefix . $user->id;
|
||||
|
||||
$user->updateAttributes([
|
||||
$user->updateAttributes(
|
||||
[
|
||||
'email' => $anonymReplacement . "@example.com",
|
||||
'username' => $anonymReplacement,
|
||||
'gdpr_deleted' => 1,
|
||||
'blocked_at' => time(),
|
||||
'auth_key' => $security->generateRandomString()
|
||||
]);
|
||||
$user->profile->updateAttributes([
|
||||
]
|
||||
);
|
||||
$user->profile->updateAttributes(
|
||||
[
|
||||
'public_email' => $anonymReplacement . "@example.com",
|
||||
'name' => $anonymReplacement,
|
||||
'gravatar_email' => $anonymReplacement . "@example.com",
|
||||
'location' => $anonymReplacement,
|
||||
'website' => $anonymReplacement . ".tld",
|
||||
'bio' => Yii::t('usuario', 'Deleted by GDPR request')
|
||||
]);
|
||||
]
|
||||
);
|
||||
}
|
||||
$this->trigger(GdprEvent::EVENT_AFTER_DELETE, $event);
|
||||
|
||||
@ -234,14 +257,21 @@ class SettingsController extends Controller
|
||||
return $this->goHome();
|
||||
}
|
||||
|
||||
return $this->render('gdpr-delete', [
|
||||
return $this->render(
|
||||
'gdpr-delete',
|
||||
[
|
||||
'model' => $form,
|
||||
]);
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function actionGdprConsent()
|
||||
{
|
||||
/** @var User $user */
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @var User $user
|
||||
*/
|
||||
$user = Yii::$app->user->identity;
|
||||
if ($user->gdpr_consent) {
|
||||
return $this->redirect(['profile']);
|
||||
@ -249,30 +279,40 @@ class SettingsController extends Controller
|
||||
$model = new DynamicModel(['gdpr_consent']);
|
||||
$model->addRule('gdpr_consent', 'boolean');
|
||||
$model->addRule('gdpr_consent', 'default', ['value' => 0, 'skipOnEmpty' => false]);
|
||||
$model->addRule('gdpr_consent', 'compare', [
|
||||
$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([
|
||||
$user->updateAttributes(
|
||||
[
|
||||
'gdpr_consent' => 1,
|
||||
'gdpr_consent_date' => time(),
|
||||
]);
|
||||
]
|
||||
);
|
||||
return $this->redirect(['profile']);
|
||||
}
|
||||
|
||||
return $this->render('gdpr-consent', [
|
||||
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.
|
||||
*
|
||||
* @throws NotFoundHttpException if gdpr compliance is not enabled
|
||||
* @throws \Exception
|
||||
* @throws \Throwable
|
||||
@ -317,7 +357,11 @@ class SettingsController extends Controller
|
||||
|
||||
public function actionAccount()
|
||||
{
|
||||
/** @var SettingsForm $form */
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @var SettingsForm $form
|
||||
*/
|
||||
$form = $this->make(SettingsForm::class);
|
||||
$event = $this->make(UserEvent::class, [$form->getUser()]);
|
||||
|
||||
@ -384,7 +428,11 @@ class SettingsController extends Controller
|
||||
throw new NotFoundHttpException(Yii::t('usuario', 'Not found'));
|
||||
}
|
||||
|
||||
/** @var User $user */
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @var User $user
|
||||
*/
|
||||
$user = Yii::$app->user->identity;
|
||||
$event = $this->make(UserEvent::class, [$user]);
|
||||
Yii::$app->user->logout();
|
||||
@ -400,7 +448,11 @@ class SettingsController extends Controller
|
||||
|
||||
public function actionTwoFactor($id)
|
||||
{
|
||||
/** @var User $user */
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @var User $user
|
||||
*/
|
||||
$user = $this->userQuery->whereId($id)->one();
|
||||
|
||||
if (null === $user) {
|
||||
@ -416,7 +468,11 @@ class SettingsController extends Controller
|
||||
{
|
||||
Yii::$app->response->format = Response::FORMAT_JSON;
|
||||
|
||||
/** @var User $user */
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @var User $user
|
||||
*/
|
||||
$user = $this->userQuery->whereId($id)->one();
|
||||
|
||||
if (null === $user) {
|
||||
@ -443,7 +499,11 @@ class SettingsController extends Controller
|
||||
|
||||
public function actionTwoFactorDisable($id)
|
||||
{
|
||||
/** @var User $user */
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @var User $user
|
||||
*/
|
||||
$user = $this->userQuery->whereId($id)->one();
|
||||
|
||||
if (null === $user) {
|
||||
@ -463,6 +523,32 @@ class SettingsController extends Controller
|
||||
$this->redirect(['account']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display list session history.
|
||||
*/
|
||||
public function actionSessionHistory()
|
||||
{
|
||||
$searchModel = new SessionHistorySearch([
|
||||
'user_id' => Yii::$app->user->id,
|
||||
]);
|
||||
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
|
||||
|
||||
return $this->render('session-history', [
|
||||
'searchModel' => $searchModel,
|
||||
'dataProvider' => $dataProvider,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Terminate all session user
|
||||
*/
|
||||
public function actionTerminateSessions()
|
||||
{
|
||||
$this->make(TerminateUserSessionsService::class, [Yii::$app->user->id])->run();
|
||||
|
||||
return $this->redirect(['session-history']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
* @throws ForbiddenHttpException
|
||||
@ -473,7 +559,11 @@ class SettingsController extends Controller
|
||||
*/
|
||||
protected function disconnectSocialNetwork($id)
|
||||
{
|
||||
/** @var SocialNetworkAccount $account */
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @var SocialNetworkAccount $account
|
||||
*/
|
||||
$account = $this->socialNetworkAccountQuery->whereId($id)->one();
|
||||
|
||||
if ($account === null) {
|
||||
|
||||
37
src/User/Event/SessionEvent.php
Executable file
37
src/User/Event/SessionEvent.php
Executable file
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Da\User\Event;
|
||||
|
||||
use Da\User\Model\User;
|
||||
use yii\base\Event;
|
||||
|
||||
/**
|
||||
* @property-read User $user
|
||||
*/
|
||||
class SessionEvent extends Event
|
||||
{
|
||||
const EVENT_BEFORE_TERMINATE_USER_SESSIONS = 'beforeTerminateUserSessions';
|
||||
const EVENT_AFTER_TERMINATE_USER_SESSIONS = 'afterTerminateUserSessions';
|
||||
|
||||
protected $user;
|
||||
|
||||
public function __construct(User $user, array $config = [])
|
||||
{
|
||||
$this->user = $user;
|
||||
parent::__construct($config);
|
||||
}
|
||||
|
||||
public function getUser()
|
||||
{
|
||||
return $this->user;
|
||||
}
|
||||
}
|
||||
50
src/User/Filter/TwoFactorAuthenticationEnforceFilter.php
Normal file
50
src/User/Filter/TwoFactorAuthenticationEnforceFilter.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Da\User\Filter;
|
||||
|
||||
use Da\User\Model\User;
|
||||
use Da\User\Module;
|
||||
use Yii;
|
||||
use yii\base\ActionFilter;
|
||||
use Da\User\Traits\AuthManagerAwareTrait;
|
||||
|
||||
|
||||
class TwoFactorAuthenticationEnforceFilter extends ActionFilter
|
||||
{
|
||||
use AuthManagerAwareTrait;
|
||||
|
||||
public function beforeAction($action)
|
||||
{
|
||||
/** @var Module $module */
|
||||
$module = Yii::$app->getModule('user');
|
||||
|
||||
$enableTwoFactorAuthentication = $module->enableTwoFactorAuthentication;
|
||||
// If enableTwoFactorAuthentication is set to false do nothing
|
||||
if (!$enableTwoFactorAuthentication) {
|
||||
return parent::beforeAction($action);
|
||||
}
|
||||
|
||||
if (Yii::$app->user->isGuest) {
|
||||
// Not our business
|
||||
return parent::beforeAction($action);
|
||||
}
|
||||
|
||||
$permissions = $module->twoFactorAuthenticationForcedPermissions;
|
||||
$itemsByUser = array_keys($this->getAuthManager()->getItemsByUser(Yii::$app->user->identity->id));
|
||||
if(!empty(array_intersect($permissions, $itemsByUser))){
|
||||
Yii::$app->session->setFlash('warning', Yii::t('usuario', 'Your role requires 2FA, you won\'t be able to use the application until you enable it'));
|
||||
return Yii::$app->response->redirect(['/user/settings/account'])->send();
|
||||
}
|
||||
|
||||
return parent::beforeAction($action);
|
||||
}
|
||||
}
|
||||
@ -11,8 +11,10 @@
|
||||
|
||||
namespace Da\User\Helper;
|
||||
|
||||
use Yii;
|
||||
use yii\base\Exception;
|
||||
use yii\base\Security;
|
||||
use yii\base\InvalidConfigException;
|
||||
|
||||
class SecurityHelper
|
||||
{
|
||||
@ -60,25 +62,48 @@ class SecurityHelper
|
||||
return $this->security->validatePassword($password, $hash);
|
||||
}
|
||||
|
||||
public function generatePassword($length)
|
||||
public function generatePassword($length, $minPasswordRequirements = null)
|
||||
{
|
||||
$sets = [
|
||||
'abcdefghjkmnpqrstuvwxyz',
|
||||
'ABCDEFGHJKMNPQRSTUVWXYZ',
|
||||
'23456789',
|
||||
'lower' => 'abcdefghjkmnpqrstuvwxyz',
|
||||
'upper' => 'ABCDEFGHJKMNPQRSTUVWXYZ',
|
||||
'digit' => '123456789',
|
||||
'special' => '!#$%&*+,-.:;<=>?@_~'
|
||||
];
|
||||
$all = '';
|
||||
$password = '';
|
||||
foreach ($sets as $set) {
|
||||
|
||||
if (!isset($minPasswordRequirements)) {
|
||||
if (isset(Yii::$app->getModule('user')->minPasswordRequirements)) {
|
||||
$minPasswordRequirements = Yii::$app->getModule('user')->minPasswordRequirements;
|
||||
}
|
||||
else {
|
||||
$minPasswordRequirements = [
|
||||
'lower' => 1,
|
||||
'digit' => 1,
|
||||
'upper' => 1,
|
||||
];
|
||||
}
|
||||
}
|
||||
if (isset($minPasswordRequirements['min']) && $length < $minPasswordRequirements['min']) {
|
||||
$length = $minPasswordRequirements['min'];
|
||||
}
|
||||
foreach ($sets as $setKey => $set) {
|
||||
if (isset($minPasswordRequirements[$setKey])) {
|
||||
for ($i = 0; $i < $minPasswordRequirements[$setKey]; $i++) {
|
||||
$password .= $set[array_rand(str_split($set))];
|
||||
}
|
||||
}
|
||||
$all .= $set;
|
||||
}
|
||||
|
||||
$passwordLength = strlen($password);
|
||||
if ($passwordLength > $length) {
|
||||
throw new InvalidConfigException('The minimum length is incompatible with other minimum requirements.');
|
||||
}
|
||||
$all = str_split($all);
|
||||
for ($i = 0; $i < $length - count($sets); ++$i) {
|
||||
for ($i = 0; $i < $length - $passwordLength; ++$i) {
|
||||
$password .= $all[array_rand($all)];
|
||||
}
|
||||
|
||||
$password = str_shuffle($password);
|
||||
|
||||
return $password;
|
||||
|
||||
73
src/User/Migration/Session/m000000_000001_create_session_history_table.php
Executable file
73
src/User/Migration/Session/m000000_000001_create_session_history_table.php
Executable file
@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Da\User\Migration\Session;
|
||||
|
||||
use Da\User\Helper\MigrationHelper;
|
||||
use yii\db\Migration;
|
||||
|
||||
|
||||
class m000000_000001_create_session_history_table extends Migration
|
||||
{
|
||||
const SESSION_HISTORY_TABLE = '{{%session_history}}';
|
||||
const USER_TABLE = '{{%user}}';
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function safeUp()
|
||||
{
|
||||
$this->createTable(self::SESSION_HISTORY_TABLE, [
|
||||
'user_id' => $this->integer(),
|
||||
'session_id' => $this->string()->null(),
|
||||
'user_agent' => $this->string()->notNull(),
|
||||
'ip' => $this->string(45)->notNull(),
|
||||
'created_at' => $this->integer()->notNull(),
|
||||
'updated_at' => $this->integer()->notNull(),
|
||||
]);
|
||||
|
||||
$this->createIndex(
|
||||
'{{%session_history_user_id}}',
|
||||
self::SESSION_HISTORY_TABLE,
|
||||
['user_id']
|
||||
);
|
||||
|
||||
$this->createIndex(
|
||||
'{{%session_history_session_id}}',
|
||||
self::SESSION_HISTORY_TABLE,
|
||||
['session_id']
|
||||
);
|
||||
|
||||
$this->createIndex(
|
||||
'{{%session_history_updated_at}}',
|
||||
self::SESSION_HISTORY_TABLE,
|
||||
['updated_at']
|
||||
);
|
||||
|
||||
$this->addForeignKey(
|
||||
'{{%fk_user_session_history}}',
|
||||
self::SESSION_HISTORY_TABLE,
|
||||
'user_id',
|
||||
self::USER_TABLE,
|
||||
'id',
|
||||
'CASCADE',
|
||||
MigrationHelper::isMicrosoftSQLServer($this->db->driverName) ? 'NO ACTION' : 'RESTRICT'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function safeDown()
|
||||
{
|
||||
$this->dropTable(self::SESSION_HISTORY_TABLE);
|
||||
}
|
||||
}
|
||||
@ -97,7 +97,7 @@ abstract class AbstractAuthItem extends Model
|
||||
return [
|
||||
['itemName', 'safe'],
|
||||
['name', 'required'],
|
||||
['name', 'match', 'pattern' => '/^\w[\w.:\-]+\w$/'],
|
||||
['name', 'match', 'pattern' => '/^\w[\w.:\-]+\w$/u'],
|
||||
[['name', 'description', 'rule'], 'trim'],
|
||||
[
|
||||
'name',
|
||||
|
||||
110
src/User/Model/SessionHistory.php
Executable file
110
src/User/Model/SessionHistory.php
Executable file
@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Da\User\Model;
|
||||
|
||||
use Da\User\Module;
|
||||
use Da\User\Query\SessionHistoryQuery;
|
||||
use Da\User\Traits\ModuleAwareTrait;
|
||||
use Yii;
|
||||
use yii\behaviors\TimestampBehavior;
|
||||
use yii\db\ActiveRecord;
|
||||
use yii\db\ActiveQuery;
|
||||
|
||||
/**
|
||||
* @property int $user_id
|
||||
* @property string $session_id
|
||||
* @property string $user_agent
|
||||
* @property string $ip
|
||||
* @property int $created_at
|
||||
* @property int $updated_at
|
||||
*
|
||||
* @property User $user
|
||||
* @property bool $isActive
|
||||
*
|
||||
* Dependencies:
|
||||
* @property-read Module $module
|
||||
*/
|
||||
class SessionHistory extends ActiveRecord
|
||||
{
|
||||
use ModuleAwareTrait;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function tableName()
|
||||
{
|
||||
return '{{%session_history}}';
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function behaviors()
|
||||
{
|
||||
return [
|
||||
[
|
||||
'class' => TimestampBehavior::class,
|
||||
'updatedAtAttribute' => false,
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function attributeLabels()
|
||||
{
|
||||
return [
|
||||
'user_id' => Yii::t('usuario', 'User ID'),
|
||||
'session_id' => Yii::t('usuario', 'Session ID'),
|
||||
'user_agent' => Yii::t('usuario', 'User agent'),
|
||||
'ip' => Yii::t('usuario', 'IP'),
|
||||
'created_at' => Yii::t('usuario', 'Created at'),
|
||||
'updated_at' => Yii::t('usuario', 'Last activity'),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool Whether the session is an active or not.
|
||||
*/
|
||||
public function getIsActive()
|
||||
{
|
||||
return isset($this->session_id) && $this->updated_at + $this->getModule()->rememberLoginLifespan > time();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ActiveQuery
|
||||
*/
|
||||
public function getUser()
|
||||
{
|
||||
return $this->hasOne($this->module->classMap['User'], ['id' => 'user_id']);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function beforeSave($insert)
|
||||
{
|
||||
if ($insert && empty($this->session_id)) {
|
||||
$this->setAttribute('session_id', Yii::$app->session->getId());
|
||||
}
|
||||
|
||||
return parent::beforeSave($insert);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public static function primaryKey()
|
||||
{
|
||||
return ['user_id', 'session_id'];
|
||||
}
|
||||
|
||||
public static function find()
|
||||
{
|
||||
return new SessionHistoryQuery(static::class);
|
||||
}
|
||||
}
|
||||
52
src/User/Module.php
Normal file → Executable file
52
src/User/Module.php
Normal file → Executable file
@ -22,6 +22,21 @@ use yii\helpers\Html;
|
||||
*/
|
||||
class Module extends BaseModule
|
||||
{
|
||||
/**
|
||||
* @var bool Enable the 'session history' function
|
||||
* Using with {@see SessionHistoryDecorator}
|
||||
*/
|
||||
public $enableSessionHistory = false;
|
||||
/**
|
||||
* @var int|bool The number of 'session history' records will be stored for user
|
||||
* if equals false records will not be deleted
|
||||
*/
|
||||
public $numberSessionHistory = false;
|
||||
/**
|
||||
* @var int|bool The time after which the expired 'session history' will be deleted
|
||||
* if equals false records will not be deleted
|
||||
*/
|
||||
public $timeoutSessionHistory = false;
|
||||
/**
|
||||
* @var bool whether to enable european G.D.P.R. compliance.
|
||||
* This will add a few elements to comply with european general data protection regulation.
|
||||
@ -81,6 +96,10 @@ class Module extends BaseModule
|
||||
* @var bool whether to enable two factor authentication or not
|
||||
*/
|
||||
public $enableTwoFactorAuthentication = false;
|
||||
/**
|
||||
* @var array list of permissions for which two factor authentication is mandatory
|
||||
*/
|
||||
public $twoFactorAuthenticationForcedPermissions = [];
|
||||
/**
|
||||
* @var int cycles of key generation are set on 30 sec. To avoid sync issues, increased validity up to 60 sec.
|
||||
* @see http://2fa-library.readthedocs.io/en/latest/
|
||||
@ -211,6 +230,23 @@ class Module extends BaseModule
|
||||
*/
|
||||
public $disableIpLogging = false;
|
||||
|
||||
/**
|
||||
* @var array Minimum requirements when a new password is automatically generated.
|
||||
* Array structure: `requirement => minimum number characters`.
|
||||
*
|
||||
* Possible array keys:
|
||||
* - lower: minimum number of lowercase characters;
|
||||
* - upper: minimum number of uppercase characters;
|
||||
* - digit: minimum number of digits;
|
||||
* - special: minimum number of special characters;
|
||||
* - min: minimum number of characters (= minimum length).
|
||||
*/
|
||||
public $minPasswordRequirements = [
|
||||
'lower' => 1,
|
||||
'digit' => 1,
|
||||
'upper' => 1,
|
||||
];
|
||||
|
||||
/**
|
||||
* @return string with the hit to be used with the give consent checkbox
|
||||
*/
|
||||
@ -230,4 +266,20 @@ class Module extends BaseModule
|
||||
|
||||
return $this->gdprConsentMessage ?: $defaultConsentMessage;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function hasNumberSessionHistory()
|
||||
{
|
||||
return $this->numberSessionHistory !== false && $this->numberSessionHistory > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function hasTimeoutSessionHistory()
|
||||
{
|
||||
return $this->timeoutSessionHistory !== false && $this->timeoutSessionHistory > 0;
|
||||
}
|
||||
}
|
||||
|
||||
158
src/User/Query/SessionHistoryCondition.php
Executable file
158
src/User/Query/SessionHistoryCondition.php
Executable file
@ -0,0 +1,158 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Da\User\Query;
|
||||
|
||||
use Da\User\Traits\ModuleAwareTrait;
|
||||
use yii\web\Session;
|
||||
use Yii;
|
||||
|
||||
class SessionHistoryCondition
|
||||
{
|
||||
use ModuleAwareTrait;
|
||||
|
||||
private $session;
|
||||
|
||||
public function __construct(Session $session)
|
||||
{
|
||||
$this->session = $session;
|
||||
}
|
||||
|
||||
public function unbindSession()
|
||||
{
|
||||
return ['session_id' => null];
|
||||
}
|
||||
|
||||
public function bySession($sessionId)
|
||||
{
|
||||
return ['session_id' => $sessionId];
|
||||
}
|
||||
|
||||
public function byUser($userId)
|
||||
{
|
||||
return [
|
||||
'user_id' => $userId,
|
||||
];
|
||||
}
|
||||
|
||||
public function byUserSession($userId, $sessionId)
|
||||
{
|
||||
return [
|
||||
'user_id' => $userId,
|
||||
'session_id' => $sessionId,
|
||||
];
|
||||
}
|
||||
|
||||
public function inactive($userId = null)
|
||||
{
|
||||
$where = [
|
||||
'AND',
|
||||
['session_id' => null]
|
||||
];
|
||||
|
||||
if (isset($userId)) {
|
||||
$where[] = $this->byUser($userId);
|
||||
}
|
||||
|
||||
return $where;
|
||||
}
|
||||
|
||||
public function expired($userId = null)
|
||||
{
|
||||
$where = [
|
||||
'AND',
|
||||
['<', 'updated_at', $this->getExpiredTime()]
|
||||
];
|
||||
|
||||
if (isset($userId)) {
|
||||
$where[] = $this->byUser($userId);
|
||||
}
|
||||
|
||||
return $where;
|
||||
}
|
||||
|
||||
public function expiredInactive($userId = null)
|
||||
{
|
||||
return [
|
||||
'OR',
|
||||
$this->expired($userId),
|
||||
$this->inactive($userId),
|
||||
];
|
||||
}
|
||||
|
||||
public function shouldDeleteBefore($updatedAt, $userId)
|
||||
{
|
||||
$condition = ['<', 'updated_at', $updatedAt];
|
||||
if ($updatedAt > $this->getExpiredTime()) {
|
||||
$condition = [
|
||||
'OR',
|
||||
[
|
||||
'AND',
|
||||
$this->inactive(),
|
||||
$condition,
|
||||
],
|
||||
$this->expired()
|
||||
];
|
||||
}
|
||||
|
||||
return [
|
||||
'AND',
|
||||
$this->byUser($userId),
|
||||
$condition,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getExpiredTime()
|
||||
{
|
||||
$module = $this->getModule();
|
||||
$time = time() - max($module->rememberLoginLifespan, $this->session->getTimeout());
|
||||
if (false === $module->hasTimeoutSessionHistory()) {
|
||||
return $time;
|
||||
}
|
||||
|
||||
return $time - $module->timeoutSessionHistory;
|
||||
}
|
||||
|
||||
public function inactiveData()
|
||||
{
|
||||
return [
|
||||
'session_id' => null,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function currentUserData()
|
||||
{
|
||||
return [
|
||||
'user_id' => Yii::$app->user->id,
|
||||
'session_id' => Yii::$app->session->getId(),
|
||||
'user_agent' => Yii::$app->request->userAgent,
|
||||
'ip' => Yii::$app->request->userIP,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function currentUserCondition()
|
||||
{
|
||||
return [
|
||||
'user_id' => Yii::$app->user->id,
|
||||
'session_id' => Yii::$app->session->getId(),
|
||||
'user_agent' => Yii::$app->request->userAgent,
|
||||
];
|
||||
}
|
||||
}
|
||||
82
src/User/Query/SessionHistoryQuery.php
Executable file
82
src/User/Query/SessionHistoryQuery.php
Executable file
@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Da\User\Query;
|
||||
|
||||
use Da\User\Traits\ModuleAwareTrait;
|
||||
use yii\db\ActiveQuery;
|
||||
use Yii;
|
||||
|
||||
class SessionHistoryQuery extends ActiveQuery
|
||||
{
|
||||
use ModuleAwareTrait;
|
||||
|
||||
public function whereUserId($userId)
|
||||
{
|
||||
return $this->andWhere($this->getCondition()->byUser($userId));
|
||||
}
|
||||
|
||||
public function whereActive()
|
||||
{
|
||||
return $this->andWhere(['IS NOT', 'session_id', null]);
|
||||
}
|
||||
|
||||
public function whereInActive($userId)
|
||||
{
|
||||
return $this->andWhere($this->getCondition()->inactive($userId));
|
||||
}
|
||||
|
||||
|
||||
public function whereExpired($userId)
|
||||
{
|
||||
return $this->andWhere($this->getCondition()->expired($userId));
|
||||
}
|
||||
|
||||
public function whereExpiredInActive($userId)
|
||||
{
|
||||
return $this->andWhere($this->getCondition()->expiredInactive($userId));
|
||||
}
|
||||
|
||||
public function selectSessionId()
|
||||
{
|
||||
return $this->select(['session_id']);
|
||||
}
|
||||
|
||||
public function whereUserSession($userId, $sessionId)
|
||||
{
|
||||
return $this->andWhere($this->getCondition()->byUserSession(
|
||||
$userId,
|
||||
$sessionId
|
||||
));
|
||||
}
|
||||
|
||||
public function whereCurrentUser()
|
||||
{
|
||||
return $this->andWhere($this->getCondition()->currentUserCondition());
|
||||
}
|
||||
|
||||
public function oldestUpdatedTimeActiveSession($userId)
|
||||
{
|
||||
return $this->whereExpiredInActive($userId)
|
||||
->select(['updated_at'])
|
||||
->limit(1)
|
||||
->offset($this->getModule()->numberSessionHistory)
|
||||
->orderBy(['updated_at' => SORT_DESC])->scalar();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return SessionHistoryCondition
|
||||
*/
|
||||
protected function getCondition()
|
||||
{
|
||||
return Yii::$container->get(SessionHistoryCondition::class);
|
||||
}
|
||||
}
|
||||
74
src/User/Search/SessionHistorySearch.php
Executable file
74
src/User/Search/SessionHistorySearch.php
Executable file
@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Da\User\Search;
|
||||
|
||||
use Da\User\Model\SessionHistory;
|
||||
use Da\User\Traits\ContainerAwareTrait;
|
||||
use yii\base\InvalidConfigException;
|
||||
use yii\base\InvalidParamException;
|
||||
use yii\data\ActiveDataProvider;
|
||||
|
||||
|
||||
class SessionHistorySearch extends SessionHistory
|
||||
{
|
||||
use ContainerAwareTrait;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
[['user_agent', 'ip'], 'safe'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $params
|
||||
*
|
||||
* @throws InvalidConfigException
|
||||
* @throws InvalidParamException
|
||||
*
|
||||
* @return ActiveDataProvider
|
||||
*/
|
||||
public function search($params)
|
||||
{
|
||||
$query = SessionHistory::find()->andWhere([
|
||||
'user_id' => $this->user_id,
|
||||
]);
|
||||
|
||||
/** @var ActiveDataProvider $dataProvider */
|
||||
$dataProvider = $this->make(
|
||||
ActiveDataProvider::class,
|
||||
[],
|
||||
[
|
||||
'query' => $query,
|
||||
'sort' => [
|
||||
'defaultOrder' => [
|
||||
'updated_at' => SORT_DESC
|
||||
],
|
||||
]
|
||||
]
|
||||
);
|
||||
|
||||
$this->load($params);
|
||||
|
||||
if (!$this->validate()) {
|
||||
return $dataProvider;
|
||||
}
|
||||
|
||||
$query->andFilterWhere(['like', 'user_agent', $this->user_agent])
|
||||
->andFilterWhere(['like', 'ip', $this->ip]);
|
||||
|
||||
return $dataProvider;
|
||||
}
|
||||
}
|
||||
@ -31,6 +31,6 @@ class ResetPasswordService implements ServiceInterface
|
||||
public function run()
|
||||
{
|
||||
$this->model->password = $this->password;
|
||||
return (bool)$this->model->save(false, ['password_hash']);
|
||||
return (bool)$this->model->save(false, ['password_hash','password_changed_at']);
|
||||
}
|
||||
}
|
||||
|
||||
43
src/User/Service/SessionHistory/DBTerminateSessionsService.php
Executable file
43
src/User/Service/SessionHistory/DBTerminateSessionsService.php
Executable file
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Da\User\Service\SessionHistory;
|
||||
|
||||
|
||||
use yii\web\DbSession;
|
||||
|
||||
class DBTerminateSessionsService implements TerminateSessionsServiceInterface
|
||||
{
|
||||
protected $sessionIds;
|
||||
protected $dbSession;
|
||||
protected $fieldName;
|
||||
|
||||
public function __construct(array $sessionIds, DbSession $dbSession, $fieldName = 'id')
|
||||
{
|
||||
$this->sessionIds = $sessionIds;
|
||||
$this->dbSession = $dbSession;
|
||||
$this->fieldName = $fieldName;
|
||||
}
|
||||
|
||||
public function run()
|
||||
{
|
||||
if (in_array(session_id(), $this->sessionIds)) {
|
||||
session_write_close();
|
||||
}
|
||||
|
||||
$this->dbSession->db->createCommand()->delete(
|
||||
$this->dbSession->sessionTable,
|
||||
[$this->fieldName => $this->sessionIds]
|
||||
)->execute();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
461
src/User/Service/SessionHistory/SessionHistoryDecorator.php
Executable file
461
src/User/Service/SessionHistory/SessionHistoryDecorator.php
Executable file
@ -0,0 +1,461 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Da\User\Service\SessionHistory;
|
||||
|
||||
use Da\User\Model\SessionHistory;
|
||||
use Da\User\Query\SessionHistoryCondition;
|
||||
use Da\User\Query\SessionHistoryQuery;
|
||||
use Da\User\Traits\ModuleAwareTrait;
|
||||
use Yii;
|
||||
use yii\db\Exception;
|
||||
use yii\web\Session;
|
||||
use yii\base\InvalidArgumentException as BaseInvalidArgumentException;
|
||||
|
||||
/**
|
||||
* Decorator for the {@see Session} class for storing the 'session history'
|
||||
*
|
||||
* Not decorated methods:
|
||||
* {@see Session::open()}
|
||||
* {@see Session::close()}
|
||||
* {@see Session::destroy()}
|
||||
* {@see Session::get()}
|
||||
* {@see Session::set()}
|
||||
*/
|
||||
class SessionHistoryDecorator extends Session
|
||||
{
|
||||
use ModuleAwareTrait;
|
||||
|
||||
public $sessionHistoryTable = '{{%session_history}}';
|
||||
|
||||
/**
|
||||
* @var Session
|
||||
*/
|
||||
public $session;
|
||||
|
||||
public $condition;
|
||||
|
||||
public function __construct(
|
||||
Session $session,
|
||||
SessionHistoryCondition $historyCondition,
|
||||
$config = []
|
||||
) {
|
||||
$this->session = $session;
|
||||
$this->condition = $historyCondition;
|
||||
|
||||
parent::__construct($config);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getUseCustomStorage()
|
||||
{
|
||||
return $this->session->getUseCustomStorage();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getIsActive()
|
||||
{
|
||||
return $this->session->getIsActive();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getHasSessionId()
|
||||
{
|
||||
return $this->session->getHasSessionId();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function setHasSessionId($value)
|
||||
{
|
||||
return $this->session->setHasSessionId($value);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getId()
|
||||
{
|
||||
return $this->session->getId();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function setId($value)
|
||||
{
|
||||
return $this->session->setId($value);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function regenerateID($deleteOldSession = false)
|
||||
{
|
||||
return $this->getDb()->transaction(function () use ($deleteOldSession) {
|
||||
$oldSid = session_id();
|
||||
if (false === $this->session->regenerateID($deleteOldSession)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (false === $this->getModule()->enableSessionHistory) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$user = Yii::$app->user;
|
||||
if ($user->getIsGuest()) {
|
||||
$this->unbindSessionHistory($oldSid);
|
||||
} else {
|
||||
$this->getDB()->createCommand()
|
||||
->delete(
|
||||
$this->sessionHistoryTable,
|
||||
$this->condition->byUserSession($user->getId(), $oldSid)
|
||||
)->execute();
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getName()
|
||||
{
|
||||
return $this->session->getName();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function setName($value)
|
||||
{
|
||||
return $this->session->setName($value);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getSavePath()
|
||||
{
|
||||
return $this->session->getSavePath();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function setSavePath($value)
|
||||
{
|
||||
return $this->session->setSavePath($value);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getCookieParams()
|
||||
{
|
||||
return $this->session->getCookieParams();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function setCookieParams(array $value)
|
||||
{
|
||||
return $this->session->setCookieParams($value);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getUseCookies()
|
||||
{
|
||||
return $this->session->getUseCookies();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function setUseCookies($value)
|
||||
{
|
||||
return $this->session->setUseCookies($value);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getGCProbability()
|
||||
{
|
||||
return $this->session->getGCProbability();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function setGCProbability($value)
|
||||
{
|
||||
return $this->session->setGCProbability($value);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getUseTransparentSessionID()
|
||||
{
|
||||
return $this->session->getUseTransparentSessionID();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function setUseTransparentSessionID($value)
|
||||
{
|
||||
return $this->session->setUseTransparentSessionID($value);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getTimeout()
|
||||
{
|
||||
return $this->session->getTimeout();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function setTimeout($value)
|
||||
{
|
||||
return $this->session->setTimeout($value);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function openSession($savePath, $sessionName)
|
||||
{
|
||||
return $this->session->openSession($savePath, $sessionName);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function closeSession()
|
||||
{
|
||||
return $this->session->closeSession();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function readSession($id)
|
||||
{
|
||||
return $this->session->readSession($id);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function writeSession($id, $data)
|
||||
{
|
||||
return $this->session->writeSession($id, $data) &&
|
||||
(
|
||||
false === $this->getModule()->enableSessionHistory ||
|
||||
$this->getDb()->transaction(function () use ($id, $data) {
|
||||
if (Yii::$app->user->getIsGuest()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$updatedAt = ['updated_at' => time()];
|
||||
|
||||
$model = $this->getHistoryQuery()
|
||||
->whereCurrentUser()
|
||||
->one();
|
||||
if (isset($model)) {
|
||||
$model->updateAttributes($updatedAt);
|
||||
$result = true;
|
||||
} else {
|
||||
$model = Yii::createObject([
|
||||
'class' => SessionHistory::class,
|
||||
] + $this->condition->currentUserData() + $updatedAt);
|
||||
if (!$result = $model->save()) {
|
||||
throw new BaseInvalidArgumentException(
|
||||
print_r($model->errors, 1)
|
||||
);
|
||||
}
|
||||
|
||||
$this->displacementHistory($model->user_id);
|
||||
}
|
||||
|
||||
return $result;
|
||||
})
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function destroySession($id)
|
||||
{
|
||||
return $this->session->destroySession($id) &&
|
||||
(
|
||||
false === $this->getModule()->enableSessionHistory ||
|
||||
$this->getDb()->transaction(function () use ($id) {
|
||||
$this->unbindSessionHistory($id);
|
||||
|
||||
return true;
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function gcSession($maxLifetime)
|
||||
{
|
||||
return $this->session->gcSession($maxLifetime) &&
|
||||
(
|
||||
false === $this->getModule()->enableSessionHistory ||
|
||||
$this->getDb()->transaction(function () use ($maxLifetime) {
|
||||
$this->getDb()->createCommand()->update(
|
||||
$this->sessionHistoryTable,
|
||||
$this->condition->inactiveData(),
|
||||
$this->condition->expired()
|
||||
)->execute();
|
||||
return true;
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getIterator()
|
||||
{
|
||||
return $this->session->getIterator();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getCount()
|
||||
{
|
||||
return $this->session->getCount();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function count()
|
||||
{
|
||||
return $this->session->count();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function remove($key)
|
||||
{
|
||||
return $this->session->remove($key);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function removeAll()
|
||||
{
|
||||
return $this->session->removeAll();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function has($key)
|
||||
{
|
||||
return $this->session->has($key);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getFlash($key, $defaultValue = null, $delete = false)
|
||||
{
|
||||
return $this->session->getFlash($key, $defaultValue, $delete);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getAllFlashes($delete = false)
|
||||
{
|
||||
return $this->session->getAllFlashes($delete);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function setFlash($key, $value = true, $removeAfterAccess = true)
|
||||
{
|
||||
return $this->session->setFlash($key, $value, $removeAfterAccess);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function addFlash($key, $value = true, $removeAfterAccess = true)
|
||||
{
|
||||
return $this->session->addFlash($key, $value, $removeAfterAccess);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function removeFlash($key)
|
||||
{
|
||||
return $this->session->removeFlash($key);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function removeAllFlashes()
|
||||
{
|
||||
return $this->session->removeAllFlashes();
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function hasFlash($key)
|
||||
{
|
||||
return $this->session->hasFlash($key);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function offsetExists($offset)
|
||||
{
|
||||
return $this->session->offsetExists($offset);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function offsetGet($offset)
|
||||
{
|
||||
return $this->session->offsetGet($offset);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function offsetSet($offset, $item)
|
||||
{
|
||||
return $this->session->offsetSet($offset, $item);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function offsetUnset($offset)
|
||||
{
|
||||
return $this->session->offsetUnset($offset);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function setCacheLimiter($cacheLimiter)
|
||||
{
|
||||
return $this->session->setCacheLimiter($cacheLimiter);
|
||||
}
|
||||
|
||||
/** @inheritdoc */
|
||||
public function getCacheLimiter()
|
||||
{
|
||||
return $this->session->getCacheLimiter();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $id
|
||||
* @return bool
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function unbindSessionHistory($id)
|
||||
{
|
||||
return (bool)$this->getDb()->createCommand()->update(
|
||||
$this->sessionHistoryTable,
|
||||
$this->condition->unbindSession(),
|
||||
$this->condition->bySession($id)
|
||||
)->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param int $userId
|
||||
* @return bool
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function displacementHistory($userId)
|
||||
{
|
||||
$module = $this->getModule();
|
||||
|
||||
if (false === $module->hasNumberSessionHistory()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$updatedAt = $this->getHistoryQuery()
|
||||
->oldestUpdatedTimeActiveSession($userId);
|
||||
|
||||
if (!$updatedAt) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$this->getDB()->createCommand()->delete(
|
||||
$this->sessionHistoryTable,
|
||||
$this->condition->shouldDeleteBefore(intval($updatedAt), $userId)
|
||||
)->execute();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return SessionHistoryQuery
|
||||
*/
|
||||
protected function getHistoryQuery()
|
||||
{
|
||||
return Yii::$container->get(SessionHistoryQuery::class);
|
||||
}
|
||||
|
||||
protected function getDb()
|
||||
{
|
||||
return Yii::$app->getDb();
|
||||
}
|
||||
}
|
||||
48
src/User/Service/SessionHistory/TerminateSessionsService.php
Executable file
48
src/User/Service/SessionHistory/TerminateSessionsService.php
Executable file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Da\User\Service\SessionHistory;
|
||||
|
||||
|
||||
class TerminateSessionsService implements TerminateSessionsServiceInterface
|
||||
{
|
||||
protected $sessionIds;
|
||||
|
||||
public function __construct(array $sessionIds)
|
||||
{
|
||||
$this->sessionIds = $sessionIds;
|
||||
}
|
||||
|
||||
public function run()
|
||||
{
|
||||
$currentSessionId = session_id();
|
||||
if (session_status() === PHP_SESSION_ACTIVE) {
|
||||
session_write_close();
|
||||
}
|
||||
|
||||
foreach ($this->sessionIds as $sessionId) {
|
||||
if ($sessionId === $currentSessionId) {
|
||||
$currentSessionId = null;
|
||||
}
|
||||
|
||||
session_id($sessionId);
|
||||
session_start();
|
||||
session_destroy();
|
||||
}
|
||||
|
||||
if ($currentSessionId) {
|
||||
session_id($currentSessionId);
|
||||
}
|
||||
session_start();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
19
src/User/Service/SessionHistory/TerminateSessionsServiceInterface.php
Executable file
19
src/User/Service/SessionHistory/TerminateSessionsServiceInterface.php
Executable file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Da\User\Service\SessionHistory;
|
||||
|
||||
|
||||
use Da\User\Contracts\ServiceInterface;
|
||||
|
||||
interface TerminateSessionsServiceInterface extends ServiceInterface
|
||||
{
|
||||
}
|
||||
105
src/User/Service/SessionHistory/TerminateUserSessionsService.php
Executable file
105
src/User/Service/SessionHistory/TerminateUserSessionsService.php
Executable file
@ -0,0 +1,105 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Da\User\Service\SessionHistory;
|
||||
|
||||
|
||||
use Da\User\Contracts\ServiceInterface;
|
||||
use Da\User\Event\SessionEvent;
|
||||
use Da\User\Model\SessionHistory;
|
||||
use Da\User\Model\User;
|
||||
use Da\User\Traits\ContainerAwareTrait;
|
||||
use Da\User\Traits\ModuleAwareTrait;
|
||||
use yii\web\Session;
|
||||
use Yii;
|
||||
|
||||
class TerminateUserSessionsService implements ServiceInterface
|
||||
{
|
||||
use ContainerAwareTrait;
|
||||
use ModuleAwareTrait;
|
||||
|
||||
protected $userId;
|
||||
protected $session;
|
||||
protected $excludeCurrentSession;
|
||||
|
||||
public function __construct($userId, Session $session, $excludeCurrentSession = true)
|
||||
{
|
||||
$this->userId = intval($userId);
|
||||
$this->session = $session;
|
||||
$this->excludeCurrentSession = $excludeCurrentSession;
|
||||
}
|
||||
|
||||
public function run()
|
||||
{
|
||||
$user = $this->getUser($this->userId);
|
||||
$sessionIds = $this->getSessionIds($user->id);
|
||||
|
||||
Yii::$app->db->transaction(function () use ($sessionIds, $user) {
|
||||
/** @var SessionEvent $event */
|
||||
$event = $this->make(SessionEvent::class, [$user]);
|
||||
|
||||
$user->trigger(SessionEvent::EVENT_BEFORE_TERMINATE_USER_SESSIONS, $event);
|
||||
|
||||
$this->make(TerminateSessionsServiceInterface::class, [$sessionIds])->run();
|
||||
|
||||
$user->updateAttributes([
|
||||
'auth_key' => Yii::$app->security->generateRandomString(),
|
||||
]);
|
||||
|
||||
if ($this->excludeCurrentUser()) {
|
||||
Yii::$app->user->switchIdentity(
|
||||
$user,
|
||||
$this->getModule()->rememberLoginLifespan
|
||||
);
|
||||
}
|
||||
|
||||
$user->trigger(SessionEvent::EVENT_AFTER_TERMINATE_USER_SESSIONS, $event);
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $userId
|
||||
* @return User
|
||||
*/
|
||||
protected function getUser($userId)
|
||||
{
|
||||
return ($this->make(User::class))::findOne($userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $userId
|
||||
* @return int[]
|
||||
*/
|
||||
protected function getSessionIds($userId)
|
||||
{
|
||||
/** @var SessionHistory $sessionHistory */
|
||||
$sessionHistory = $this->make(SessionHistory::class);
|
||||
$sessionIds = $sessionHistory::find()->whereUserId($userId)->whereActive()->selectSessionId()->column();
|
||||
|
||||
if ($this->excludeCurrentUser()) {
|
||||
foreach ($sessionIds as $key => $sessionId) {
|
||||
if ($sessionId === $this->session->id) {
|
||||
unset($sessionIds[$key]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $sessionIds;
|
||||
}
|
||||
|
||||
protected function excludeCurrentUser()
|
||||
{
|
||||
return $this->excludeCurrentSession && $this->userId === Yii::$app->user->id;
|
||||
}
|
||||
}
|
||||
@ -57,7 +57,7 @@ class UserCreateService implements ServiceInterface
|
||||
$model->confirmed_at = time();
|
||||
$model->password = !empty($model->password)
|
||||
? $model->password
|
||||
: $this->securityHelper->generatePassword(8);
|
||||
: $this->securityHelper->generatePassword(8, $this->getModule('user')->minPasswordRequirements);
|
||||
|
||||
/** @var UserEvent $event */
|
||||
$event = $this->make(UserEvent::class, [$model]);
|
||||
@ -87,6 +87,7 @@ class UserCreateService implements ServiceInterface
|
||||
$model->addError('username', $error_msg);
|
||||
}
|
||||
$transaction->rollBack();
|
||||
Yii::error($error_msg, 'usuario');
|
||||
return false;
|
||||
}
|
||||
$transaction->commit();
|
||||
|
||||
@ -51,7 +51,7 @@ class UserRegisterService implements ServiceInterface
|
||||
try {
|
||||
$model->confirmed_at = $this->getModule()->enableEmailConfirmation ? null : time();
|
||||
$model->password = $this->getModule()->generatePasswords
|
||||
? $this->securityHelper->generatePassword(8)
|
||||
? $this->securityHelper->generatePassword(8, $this->getModule('user')->minPasswordRequirements)
|
||||
: $model->password;
|
||||
|
||||
$event = $this->make(UserEvent::class, [$model]);
|
||||
|
||||
85
src/User/Widget/SessionStatusWidget.php
Executable file
85
src/User/Widget/SessionStatusWidget.php
Executable file
@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Da\User\Widget;
|
||||
|
||||
use Da\User\Model\SessionHistory;
|
||||
use Da\User\Traits\ContainerAwareTrait;
|
||||
use Yii;
|
||||
use yii\base\InvalidConfigException;
|
||||
use yii\base\InvalidParamException;
|
||||
use yii\base\Widget;
|
||||
use yii\helpers\ArrayHelper;
|
||||
|
||||
class SessionStatusWidget extends Widget
|
||||
{
|
||||
use ContainerAwareTrait;
|
||||
|
||||
/**
|
||||
* @var SessionHistory
|
||||
*/
|
||||
public $model;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* @throws InvalidConfigException
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
parent::init();
|
||||
if (!$this->model instanceof SessionHistory) {
|
||||
throw new InvalidConfigException(
|
||||
__CLASS__ . '::$userId should be instanceof ' . SessionHistory::class
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* @throws InvalidParamException
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
if ($this->model->getIsActive()) {
|
||||
if ($this->model->session_id === Yii::$app->session->id) {
|
||||
$value = Yii::t('usuario', 'Current');
|
||||
} else {
|
||||
$value = Yii::t('usuario', 'Active');
|
||||
}
|
||||
} else {
|
||||
$value = Yii::t('usuario', 'Inactive');
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns available auth items to be attached to the user.
|
||||
*
|
||||
* @param int|null type of auth items or null to return all
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getAvailableItems($type = null)
|
||||
{
|
||||
return ArrayHelper::map(
|
||||
$this->getAuthManager()->getItems($type),
|
||||
'name',
|
||||
function ($item) {
|
||||
return empty($item->description)
|
||||
? $item->name
|
||||
: $item->name . ' (' . $item->description . ')';
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -17,9 +17,6 @@
|
||||
* 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.' => '',
|
||||
@ -31,6 +28,7 @@ return [
|
||||
'Account details' => '',
|
||||
'Account details have been updated' => '',
|
||||
'Account settings' => '',
|
||||
'Active' => '',
|
||||
'Already registered? Sign in!' => '',
|
||||
'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.' => '',
|
||||
'An error occurred processing your request' => '',
|
||||
@ -84,6 +82,7 @@ return [
|
||||
'Create new rule' => '',
|
||||
'Created at' => '',
|
||||
'Credentials will be sent to the user by email' => '',
|
||||
'Current' => '',
|
||||
'Current password' => '',
|
||||
'Current password is not valid' => '',
|
||||
'Data privacy' => '',
|
||||
@ -115,6 +114,8 @@ 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}' => '',
|
||||
'IP' => '',
|
||||
'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' => '',
|
||||
@ -122,6 +123,7 @@ return [
|
||||
'In order to complete your registration, please click the link below' => '',
|
||||
'In order to complete your request, please click the link below' => '',
|
||||
'In order to finish your registration, we need you to enter following fields' => '',
|
||||
'Inactive' => '',
|
||||
'Information' => '',
|
||||
'Invalid login or password' => '',
|
||||
'Invalid or expired link' => '',
|
||||
@ -131,6 +133,7 @@ return [
|
||||
'It will be deleted forever' => '',
|
||||
'Items' => '',
|
||||
'Joined on {0, date}' => '',
|
||||
'Last activity' => '',
|
||||
'Last login IP' => '',
|
||||
'Last login time' => '',
|
||||
'Last password change' => '',
|
||||
@ -189,11 +192,15 @@ return [
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '',
|
||||
'Select rule...' => '',
|
||||
'Send password recovery email' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Sign in' => '',
|
||||
'Sign up' => '',
|
||||
'Something went wrong' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Switch identities is disabled.' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Thank you for signing up on {0}' => '',
|
||||
'Thank you, registration is now complete.' => '',
|
||||
'The "recaptcha" component must be configured.' => '',
|
||||
@ -235,7 +242,9 @@ return [
|
||||
'Update rule' => '',
|
||||
'Update user account' => '',
|
||||
'Updated at' => '',
|
||||
'User ID' => '',
|
||||
'User account could not be created.' => '',
|
||||
'User agent' => '',
|
||||
'User block status has been updated.' => '',
|
||||
'User could not be registered.' => '',
|
||||
'User has been confirmed' => '',
|
||||
@ -276,32 +285,11 @@ return [
|
||||
'Your password has expired, you must change it now' => '',
|
||||
'Your personal information has been removed' => '',
|
||||
'Your profile has been updated' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'privacy policy' => '',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '',
|
||||
'{0} cannot be blank.' => '',
|
||||
'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' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@',
|
||||
'Invalid two-factor code' => '@@@@',
|
||||
'Last login' => '@@@@',
|
||||
'Registration ip' => '@@@@',
|
||||
'Rule class can not be instantiated' => '@@@@',
|
||||
'Rule class must extend "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. ' => '@@@@',
|
||||
'We have sent confirmation links to both old and new email addresses. ' => '@@@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
];
|
||||
|
||||
@ -17,9 +17,6 @@
|
||||
* 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.' => '',
|
||||
@ -31,6 +28,7 @@ return [
|
||||
'Account details' => '',
|
||||
'Account details have been updated' => '',
|
||||
'Account settings' => '',
|
||||
'Active' => '',
|
||||
'Already registered? Sign in!' => '',
|
||||
'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.' => '',
|
||||
'An error occurred processing your request' => '',
|
||||
@ -84,6 +82,7 @@ return [
|
||||
'Create new rule' => '',
|
||||
'Created at' => '',
|
||||
'Credentials will be sent to the user by email' => '',
|
||||
'Current' => '',
|
||||
'Current password' => '',
|
||||
'Current password is not valid' => '',
|
||||
'Data privacy' => '',
|
||||
@ -115,6 +114,8 @@ return [
|
||||
'Gravatar email' => '',
|
||||
'Hello' => '',
|
||||
'Here you can download your personal data in a comma separated values format.' => '',
|
||||
'IP' => '',
|
||||
'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' => '',
|
||||
@ -122,6 +123,7 @@ return [
|
||||
'In order to complete your registration, please click the link below' => '',
|
||||
'In order to complete your request, please click the link below' => '',
|
||||
'In order to finish your registration, we need you to enter following fields' => '',
|
||||
'Inactive' => '',
|
||||
'Information' => '',
|
||||
'Invalid login or password' => '',
|
||||
'Invalid or expired link' => '',
|
||||
@ -131,6 +133,7 @@ return [
|
||||
'It will be deleted forever' => '',
|
||||
'Items' => '',
|
||||
'Joined on {0, date}' => '',
|
||||
'Last activity' => '',
|
||||
'Last login IP' => '',
|
||||
'Last login time' => '',
|
||||
'Last password change' => '',
|
||||
@ -189,11 +192,15 @@ return [
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '',
|
||||
'Select rule...' => '',
|
||||
'Send password recovery email' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Sign in' => '',
|
||||
'Sign up' => '',
|
||||
'Something went wrong' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Switch identities is disabled.' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Thank you for signing up on {0}' => '',
|
||||
'Thank you, registration is now complete.' => '',
|
||||
'The "recaptcha" component must be configured.' => '',
|
||||
@ -235,7 +242,9 @@ return [
|
||||
'Update rule' => '',
|
||||
'Update user account' => '',
|
||||
'Updated at' => '',
|
||||
'User ID' => '',
|
||||
'User account could not be created.' => '',
|
||||
'User agent' => '',
|
||||
'User block status has been updated.' => '',
|
||||
'User could not be registered.' => '',
|
||||
'User has been confirmed' => '',
|
||||
@ -276,32 +285,11 @@ return [
|
||||
'Your password has expired, you must change it now' => '',
|
||||
'Your personal information has been removed' => '',
|
||||
'Your profile has been updated' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'privacy policy' => '',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '',
|
||||
'{0} cannot be blank.' => '',
|
||||
'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' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@',
|
||||
'Invalid two-factor code' => '@@@@',
|
||||
'Last login' => '@@@@',
|
||||
'Registration ip' => '@@@@',
|
||||
'Rule class can not be instantiated' => '@@@@',
|
||||
'Rule class must extend "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. ' => '@@@@',
|
||||
'We have sent confirmation links to both old and new email addresses. ' => '@@@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
];
|
||||
|
||||
@ -17,70 +17,9 @@
|
||||
* 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.'
|
||||
=> 'Eine Email mit Hinweisen, wie ein Kennwort erstellt wurde an {email} gesendet, '.
|
||||
'sofern es mit dem Konto {appName} verbunden ist. Das aktuelle Kennwort wurde nicht geändert.',
|
||||
'Are you sure you wish the user to change their password at next login?'
|
||||
=> 'Bist Du sicher, dass der Benutzer sein Kennwort beim nächsten Anmelden ändern soll?',
|
||||
'Back to privacy settings' => 'Zurück zu Privatsphäre-Einstellungen',
|
||||
'Data processing consent' => 'Zustimmung zur Datenverarbeitung',
|
||||
'Delete my account' => 'Mein Benutzerkonto löschen',
|
||||
'Delete personal data' => 'Persönliche Daten löschen',
|
||||
'Deleted by GDPR request' => 'Gelöscht gemäß DSGVO-Anforderung',
|
||||
'Disable two factor authentication' => 'Zwei-Faktor-Authentifizierung deaktivieren',
|
||||
'Download my data' => 'Eigene Daten herunterladen',
|
||||
'Enable two factor authentication' => 'Zwei-Faktor-Authentifizierung aktivieren',
|
||||
'Export my data' => 'Eigene Daten exportieren',
|
||||
'Force password change at next login' => 'Kennwort-Änderung beim nächsten Anmelden erzwingen',
|
||||
'Here you can download your personal data in a comma separated values format.'
|
||||
=> 'Hier kannst Du 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}',
|
||||
'Invalid password' => 'Ungültiges Kennwort',
|
||||
'Invalid two factor authentication code' => 'Ungültiger Zwei-Faktor-Authentifizierungs-Code',
|
||||
'Last login IP' => 'Letzte Anmeldung von IP',
|
||||
'Last login time' => 'Letzte Anmeldung',
|
||||
'Last password change' => 'Letzte Kennwort-Änderung',
|
||||
'Once you have deleted your data, you will not longer be able to sign in with this account.'
|
||||
=> 'Wenn Du die eigenen Daten gelöscht hast, kannst Du Dich mit diesem Benutzernamen nicht mehr anmelden.',
|
||||
'Password age' => 'Kennwort-Alter',
|
||||
'Privacy' => 'Privatsphäre',
|
||||
'Privacy settings' => 'Privatsphäre-Einstellungen',
|
||||
'Rule class name' => 'Regel-Klassen-Name',
|
||||
'Select rule...' => 'Regel auswählen...',
|
||||
'There was an error in saving user' => 'Fehler beim Speichern des Benutzers',
|
||||
'This will disable two factor authentication. Are you sure?'
|
||||
=> 'Hiermit deaktivierst Du die Zwei-Faktor-Authentifizierung. Bist Du sicher?',
|
||||
'This will remove your personal data from this site. You will no longer be able to sign in.'
|
||||
=> 'Hiermit löschst Du Deine persönlichen Daten von diesem Service. '.
|
||||
'Du wirst Dich dann nicht mehr anmelden können.',
|
||||
'Two Factor Authentication (2FA)' => 'Zwei-Faktor-Authentifizierung (2FA)',
|
||||
'Two factor authentication code' => 'Zwei-Faktor-Authentifizierungs-Code',
|
||||
'Two factor authentication has been disabled.' => 'Zwei-Faktor-Authentifizierung wurde deaktiviert',
|
||||
'Two factor authentication protects you in case of stolen credentials'
|
||||
=> 'Zwei-Faktor-Authentifizierung schützt Dich bei gestohlenen Zugangsdaten',
|
||||
'Two factor authentication successfully enabled.' => 'Zwei-Faktor-Authentifizierung wurde erfolgreich aktiviert',
|
||||
'Unable to disable Two factor authentication.'
|
||||
=> 'Fehler beim Deaktivieren der Zwei-Faktor-Authentifizierung',
|
||||
'User will be required to change password at next login'
|
||||
=> 'Der Benutzer muss bei der nächsten Aneldung sein kennwort ändern',
|
||||
'You are about to delete all your personal data from this site.'
|
||||
=> 'Du löschst damit alle persönlichen Daten von diesem Service',
|
||||
'Your consent is required to register' => 'Du musst Deine Zustimmung registrieren',
|
||||
'Your password has expired, you must change it now' => 'Dein Kennwort ist abgelaufen. Du musst es nun ändern',
|
||||
'Your personal information has been removed' => 'Deine persönlichen Daten wurden gelöscht',
|
||||
'privacy policy' => 'Datenschutzrichtlinie',
|
||||
'A message has been sent to your email address. ' => 'Eine Nachricht wurde an Deine E-Mail Adresse gesendet',
|
||||
'(not set)' => '(nicht gesetzt)',
|
||||
'A confirmation message has been sent to your new email address'
|
||||
=> 'Eine Bestätigungsnachricht wurde an Deine neue E-Mail Adresse gesendet',
|
||||
'A message has been sent to your email address. It contains a confirmation link that you must '.
|
||||
'click to complete registration.'
|
||||
=> 'Eine Nachricht wurde an Deine E-Mail-Adresse gesendet. '.
|
||||
'Sie enthält einen Bestätigungslink den Du anklicken musst, um die Registrierung abzuschließen.',
|
||||
'A confirmation message has been sent to your new email address' => 'Eine Bestätigungsnachricht wurde an Deine neue E-Mail Adresse gesendet',
|
||||
'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => 'Eine Nachricht wurde an Deine E-Mail-Adresse gesendet. Sie enthält einen Bestätigungslink den Du anklicken musst, um die Registrierung abzuschließen.',
|
||||
'A new confirmation link has been sent' => 'Ein neuer Bestätigungs-Link wurde versendet',
|
||||
'A password will be generated automatically if not provided' => 'Leer lassen, um automatisch ein Passwort zu generieren',
|
||||
'Account' => 'Konto',
|
||||
@ -89,12 +28,14 @@ return [
|
||||
'Account details have been updated' => 'Kontodetails gespeichert',
|
||||
'Account settings' => 'Kontoeinstellungen',
|
||||
'Already registered? Sign in!' => 'Bereits registriert? Zur Anmeldung!',
|
||||
'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.' => 'Eine Email mit Hinweisen, wie ein Kennwort erstellt wurde an {email} gesendet, sofern es mit dem Konto {appName} verbunden ist. Das aktuelle Kennwort wurde nicht geändert.',
|
||||
'An error occurred processing your request' => 'Es ist ein Fehler aufgetreten',
|
||||
'Are you sure you want to block this user?' => 'Bist Du sicher, dass Du diesen Benutzer blockieren willst?',
|
||||
'Are you sure you want to confirm this user?' => 'Bist Du sicher, dass Du diesen Benutzer bestätigen willst?',
|
||||
'Are you sure you want to delete this user?' => 'Bist Du sicher, dass Du diesen Benutzer löschen willst?',
|
||||
'Are you sure you want to switch to this user for the rest of this Session?' => 'Bist Du sicher, dass Du zu diesem Benutzer zu wechseln willst für den Rest dieser Session?',
|
||||
'Are you sure you want to unblock this user?' => 'Bist Du sicher, dass Du diesen Benutzer wieder freischalten willst?',
|
||||
'Are you sure you wish the user to change their password at next login?' => 'Bist Du sicher, dass der Benutzer sein Kennwort beim nächsten Anmelden ändern soll?',
|
||||
'Are you sure you wish to send a password recovery email to this user?' => 'Bist Du sicher, dass Du eine Passwortwiederherstellungs-Mail an diesen Benutzer senden möchtest?',
|
||||
'Are you sure? Deleted user can not be restored' => 'Bist Du sicher? Gelöschte Benutzer können nicht wiederhergestellt werden',
|
||||
'Are you sure? There is no going back' => 'Bist Du sicher? Es gibt kein Zurück',
|
||||
@ -110,6 +51,7 @@ return [
|
||||
'Authorization rule has been updated.' => 'Berechtigungsregel wurde gespeichert.',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => 'Fast geschafft. Nun musst Du nur noch den Aktivierungslink anklicken, der an Deine neue E-Mail Adresse gesendet wurde.',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => 'Fast geschafft. Nun musst Du nur noch den Aktivierungslink anklicken, der an Deine alte E-Mail Adresse gesendet wurde.',
|
||||
'Back to privacy settings' => 'Zurück zu Privatsphäre-Einstellungen',
|
||||
'Bio' => 'Bio',
|
||||
'Block' => 'Blockieren',
|
||||
'Block status' => 'Blockadestatus',
|
||||
@ -140,24 +82,35 @@ return [
|
||||
'Credentials will be sent to the user by email' => 'Die Zugangsdaten werden dem Nutzer per E-Mail gesendet',
|
||||
'Current password' => 'Aktuelles Passwort',
|
||||
'Current password is not valid' => 'Das aktuelle Passwort ist nicht korrekt',
|
||||
'Data processing consent' => 'Zustimmung zur Datenverarbeitung',
|
||||
'Delete' => 'Löschen',
|
||||
'Delete account' => 'Konto Löschen',
|
||||
'Delete my account' => 'Mein Benutzerkonto löschen',
|
||||
'Delete personal data' => 'Persönliche Daten löschen',
|
||||
'Deleted by GDPR request' => 'Gelöscht gemäß DSGVO-Anforderung',
|
||||
'Description' => 'Beschreibung',
|
||||
'Didn\'t receive confirmation message?' => 'Bestätigungs-Mail nicht empfangen?',
|
||||
'Disable two factor authentication' => 'Zwei-Faktor-Authentifizierung deaktivieren',
|
||||
'Disconnect' => 'Trennen',
|
||||
'Don\'t have an account? Sign up!' => 'Du hast noch kein Konto? Registrieren!',
|
||||
'Download my data' => 'Eigene Daten herunterladen',
|
||||
'Email' => 'E-Mail',
|
||||
'Email (public)' => 'E-Mail (öffentlich)',
|
||||
'Enable' => 'aktivieren',
|
||||
'Enable two factor authentication' => 'Zwei-Faktor-Authentifizierung aktivieren',
|
||||
'Error occurred while changing password' => 'Fehler beim Ändern des Passworts',
|
||||
'Error occurred while confirming user' => 'Fehler beim Bestätigen des Benutzers',
|
||||
'Error occurred while deleting user' => 'Fehler beim Löschen des Benutzers',
|
||||
'Error sending registration message to "{email}". Please try again later.' => 'Fehler beim Senden der Registrierungsnachricht an "{email}". Bitte später noch einmal probieren.',
|
||||
'Error sending welcome message to "{email}". Please try again later.' => 'Fehler beim Senden der Willkommensnachricht an "{email}". Bitte später noch einmal probieren.',
|
||||
'Export my data' => 'Eigene Daten exportieren',
|
||||
'Finish' => 'Fertig',
|
||||
'Force password change at next login' => 'Kennwort-Änderung beim nächsten Anmelden erzwingen',
|
||||
'Forgot password?' => 'Passwort vergessen?',
|
||||
'Gravatar email' => 'Gravatar E-Mail',
|
||||
'Hello' => 'Hallo',
|
||||
'Here you can download your personal data in a comma separated values format.' => 'Hier kannst Du 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}',
|
||||
'If you already registered, sign in and connect this account on settings page' => 'Wenn Du Dich bereits registriert hast, melde Dich an und verbinde dieses Konto auf der Einstellungs-Seite',
|
||||
'If you cannot click the link, please try pasting the text into your browser' => 'Wenn Du den Link nicht anklicken kannst, versuche, diesen in Deine 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',
|
||||
@ -168,10 +121,15 @@ return [
|
||||
'Information' => 'Information',
|
||||
'Invalid login or password' => 'Falscher Login oder falsches Passwort',
|
||||
'Invalid or expired link' => 'Falscher oder abgelaufener Link',
|
||||
'Invalid password' => 'Ungültiges Kennwort',
|
||||
'Invalid two factor authentication code' => 'Ungültiger Zwei-Faktor-Authentifizierungs-Code',
|
||||
'Invalid value' => 'Falscher Wert',
|
||||
'It will be deleted forever' => 'Es wird dauerhaft gelöscht',
|
||||
'Items' => 'Elemente',
|
||||
'Joined on {0, date}' => 'Mitglies seit {0, date}',
|
||||
'Last login IP' => 'Letzte Anmeldung von IP',
|
||||
'Last login time' => 'Letzte Anmeldung',
|
||||
'Last password change' => 'Letzte Kennwort-Änderung',
|
||||
'Location' => 'Ort',
|
||||
'Login' => 'Anmelden',
|
||||
'Logout' => 'Abmelden',
|
||||
@ -188,12 +146,16 @@ return [
|
||||
'Not blocked' => 'Nicht geblockt',
|
||||
'Not found' => 'Nicht gefunden',
|
||||
'Once you delete your account, there is no going back' => 'Wenn Du Dein Konto gelöscht hast, gibt es kein zurück mehr',
|
||||
'Once you have deleted your data, you will not longer be able to sign in with this account.' => 'Wenn Du die eigenen Daten gelöscht hast, kannst Du Dich mit diesem Benutzernamen nicht mehr anmelden.',
|
||||
'Password' => 'Passwort',
|
||||
'Password age' => 'Kennwort-Alter',
|
||||
'Password has been changed' => 'Passwort wurde geändert',
|
||||
'Permissions' => 'Berechtigungen',
|
||||
'Please be certain' => 'Bist Du wirklich sicher?',
|
||||
'Please click the link below to complete your password reset' => 'Bitte klicke den Link unten, um Deine Passwort-Wiederherstellung abzuschließen',
|
||||
'Please fix following errors:' => 'Bitte behebe die folgenden Fehler',
|
||||
'Privacy' => 'Privatsphäre',
|
||||
'Privacy settings' => 'Privatsphäre-Einstellungen',
|
||||
'Profile' => 'Profil',
|
||||
'Profile details' => 'Profildetails',
|
||||
'Profile details have been updated' => 'Profildetails wurden gespeichert',
|
||||
@ -213,6 +175,7 @@ return [
|
||||
'Roles' => 'Rollen',
|
||||
'Rule' => 'Regel',
|
||||
'Rule class must extend "yii\\rbac\\Rule".' => 'Regelklasse muss "yii\\rbac\\Rule" erweitern.',
|
||||
'Rule class name' => 'Regel-Klassen-Name',
|
||||
'Rule name' => 'Regelname',
|
||||
'Rule name {0} is already in use' => 'Regelname {0} bereits in Benutzung',
|
||||
'Rule {0} does not exists' => 'Regel {0} existiert nicht',
|
||||
@ -220,6 +183,7 @@ return [
|
||||
'Rules' => 'Regeln',
|
||||
'Save' => 'Speichern',
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => 'Scanne den Qr-Code mit der Google Authenticator App, dann füge den temporären Schlüssel in das Feld und sende es ab.',
|
||||
'Select rule...' => 'Regel auswählen...',
|
||||
'Send password recovery email' => 'Sende Mail zur Passwortwiederherstellung',
|
||||
'Sign in' => 'Anmelden',
|
||||
'Sign up' => 'Registrieren',
|
||||
@ -231,16 +195,25 @@ return [
|
||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => 'Dein Aktivierungslink ist falsch oder abgelaufen. Bitte fordere einen neuen an.',
|
||||
'The verification code is incorrect.' => 'Der Verifizierungsschlüssel ist ungültig.',
|
||||
'There is neither role nor permission with name "{0}"' => 'Es gibt weder eine Rolle noch eine Berechtigung mit dem Namen "{0}"',
|
||||
'There was an error in saving user' => 'Fehler beim Speichern des Benutzers',
|
||||
'This account has already been connected to another user' => 'Dieses Konto wurde bereits von einem anderen Benutzer verbunden',
|
||||
'This email address has already been taken' => 'Die E-Mail Adresse ist bereits vergeben',
|
||||
'This username has already been taken' => 'Dieser Benutzername ist bereits vergeben',
|
||||
'This will disable two factor authentication. Are you sure?' => 'Hiermit deaktivierst Du die Zwei-Faktor-Authentifizierung. Bist Du sicher?',
|
||||
'This will remove your personal data from this site. You will no longer be able to sign in.' => 'Hiermit löschst Du Deine persönlichen Daten von diesem Service. Du wirst Dich dann nicht mehr anmelden können.',
|
||||
'Time zone' => 'Zeitzone',
|
||||
'Time zone is not valid' => 'Zeitzone ist ungültig',
|
||||
'Two Factor Authentication (2FA)' => 'Zwei-Faktor-Authentifizierung (2FA)',
|
||||
'Two factor authentication code' => 'Zwei-Faktor-Authentifizierungs-Code',
|
||||
'Two factor authentication has been disabled.' => 'Zwei-Faktor-Authentifizierung wurde deaktiviert',
|
||||
'Two factor authentication protects you in case of stolen credentials' => 'Zwei-Faktor-Authentifizierung schützt Dich bei gestohlenen Zugangsdaten',
|
||||
'Two factor authentication successfully enabled.' => 'Zwei-Faktor-Authentifizierung wurde erfolgreich aktiviert',
|
||||
'Unable to confirm user. Please, try again.' => 'Der Benutzer konnte nicht bestätigt werden. Bitte versuche es nochmal.',
|
||||
'Unable to create an account.' => 'Konto konnte nicht erstellt werden',
|
||||
'Unable to create authorization item.' => 'Authorization Item konnte nicht erstellt werden',
|
||||
'Unable to create new authorization rule.' => 'Es ist nicht möglich, eine neue Authentifizierungsregel zu erstellen.',
|
||||
'Unable to delete user. Please, try again later.' => 'Benutzer konnte nicht gelöscht werden.',
|
||||
'Unable to disable Two factor authentication.' => 'Fehler beim Deaktivieren der Zwei-Faktor-Authentifizierung',
|
||||
'Unable to remove authorization item.' => 'Authentifizierung-Item konnte nicht gelöscht werden.',
|
||||
'Unable to send confirmation link' => 'Konnte Bestätigungslink nicht versenden',
|
||||
'Unable to send recovery message to the user' => 'Wiederherstellungsnachricht konnte nicht an den Benutzer zu gesendet werden.',
|
||||
@ -264,6 +237,7 @@ return [
|
||||
'User has been deleted' => 'Benutzer wurde gelöscht',
|
||||
'User is not found' => 'Benutzer wurde nicht gefunden',
|
||||
'User not found.' => 'Benutzer nicht gefunden.',
|
||||
'User will be required to change password at next login' => 'Der Benutzer muss bei der nächsten Aneldung sein kennwort ändern',
|
||||
'Username' => 'Benutzername',
|
||||
'Users' => 'Benutzer',
|
||||
'VKontakte' => 'VKontakte',
|
||||
@ -276,6 +250,7 @@ return [
|
||||
'Website' => 'Webseite',
|
||||
'Welcome to {0}' => 'Willkommen auf {0}',
|
||||
'Yandex' => 'Yandex',
|
||||
'You are about to delete all your personal data from this site.' => 'Du löschst damit alle persönlichen Daten von diesem Service',
|
||||
'You can assign multiple roles or permissions to user by using the form below' => 'Du kannst mehrere Rollen oder Berechtigungen zuweisen',
|
||||
'You can connect multiple accounts to be able to log in using them' => 'Du kannst mehrere Konten verbinden und sich mit diesen anmelden',
|
||||
'You cannot remove your own account' => 'Du kannst Dein eigenes Konto nicht löschen',
|
||||
@ -289,9 +264,39 @@ return [
|
||||
'Your account has been created and a message with further instructions has been sent to your email' => 'Dein Konto wurde erstellt und eine Nachricht mit weiteren Anweisungen wurde an Deine E-Mail Adresse gesendet',
|
||||
'Your account on {0} has been created' => 'Ihr Konto auf {0} wurde erstellt',
|
||||
'Your confirmation token is invalid or expired' => 'Dein Bestätigungs-Token ist falsch oder abgelaufen',
|
||||
'Your consent is required to register' => 'Du musst Deine Zustimmung registrieren',
|
||||
'Your email address has been changed' => 'Deine E-Mail Adresse wurde geändert',
|
||||
'Your password has expired, you must change it now' => 'Dein Kennwort ist abgelaufen. Du musst es nun ändern',
|
||||
'Your personal information has been removed' => 'Deine persönlichen Daten wurden gelöscht',
|
||||
'Your profile has been updated' => 'Dein Profil wurde gespeichert',
|
||||
'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.',
|
||||
'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' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'A message has been sent to your email address. ' => '@@Eine Nachricht wurde an Deine E-Mail Adresse gesendet@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '',
|
||||
'Active' => '',
|
||||
'Current' => '',
|
||||
'Data privacy' => '',
|
||||
'IP' => '',
|
||||
'Inactive' => '',
|
||||
'Last activity' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||
'User ID' => '',
|
||||
'User agent' => '',
|
||||
'Your consent is required to work with this site' => '',
|
||||
'A message has been sent to your email address. ' => '@@Eine Nachricht wurde an Deine E-Mail Adresse gesendet@@',
|
||||
];
|
||||
|
||||
@ -18,31 +18,26 @@
|
||||
*/
|
||||
return [
|
||||
'(not set)' => '(nicht gesetzt)',
|
||||
'A confirmation message has been sent to your new email address'
|
||||
=> 'Eine Bestätigungsnachricht wurde an Ihre neue E-Mail Adresse versendet',
|
||||
'A message has been sent to your email address. It contains a confirmation link that you must '.
|
||||
'click to complete registration.'
|
||||
=> 'Eine Nachricht wurde an Ihre E-Mail-Adresse gesendet. '.
|
||||
'Sie enthält einen Bestätigungslink den Sie anklicken müssen, um die Registrierung abzuschließen.',
|
||||
'A new confirmation link has been sent' => 'Ein neuer Bestätigungs-Link wurde versendet',
|
||||
'A confirmation message has been sent to your new email address' => 'Eine Bestätigungsnachricht wurde an Ihre neue E-Mail-Adresse versendet',
|
||||
'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => 'Eine Nachricht wurde an Ihre E-Mail-Adresse gesendet. Sie enthält einen Bestätigungslink, den Sie anklicken müssen, um die Registrierung abzuschließen.',
|
||||
'A new confirmation link has been sent' => 'Ein neuer Bestätigungslink wurde versendet',
|
||||
'A password will be generated automatically if not provided' => 'Leer lassen, um automatisch ein Passwort zu generieren',
|
||||
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => 'Gemäß der europäischen Datenschutzgrundverordnung (DSGVO) benötigen wir Ihre Zustimmung, um mit Ihren personenbezogenen Daten zu arbeiten.',
|
||||
'Account' => 'Konto',
|
||||
'Account confirmation' => 'Kontobestätigung',
|
||||
'Account details' => 'Kontodetails',
|
||||
'Account details have been updated' => 'Kontodetails gespeichert',
|
||||
'Account settings' => 'Kontoeinstellungen',
|
||||
'Already registered? Sign in!' => 'Bereits registriert? Zur Anmeldung!',
|
||||
'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.' =>
|
||||
'Eine E-Mail mit Hinweisen, wie ein Kennwort erstellt wird wurde an {email} gesendet, '.
|
||||
'sofern es mit dem Konto {appName} verbunden ist. Das aktuelle Kennwort wurde nicht geändert.',
|
||||
'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.' => 'Eine E-Mail mit Hinweisen, wie ein Kennwort erstellt wird, wurde an {email} gesendet, sofern es mit dem Konto {appName} verbunden ist. Das aktuelle Kennwort wurde nicht geändert.',
|
||||
'An error occurred processing your request' => 'Es ist ein Fehler aufgetreten',
|
||||
'Are you sure you want to block this user?' => 'Sind Sie sicher, dass Sie diesen Benutzer blockieren wollen?',
|
||||
'Are you sure you want to confirm this user?' => 'Sind Sie sicher, dass Sie diesen Benutzer bestätigen wollen?',
|
||||
'Are you sure you want to delete this user?' => 'Sind Sie sicher, dass Sie diesen Benutzer löschen wollen?',
|
||||
'Are you sure you want to switch to this user for the rest of this Session?' => 'Sind Sie sicher, dass Sie zu diesem Benutzer zu wechseln möchten für den Rest dieser Session?',
|
||||
'Are you sure you want to switch to this user for the rest of this Session?' => 'Sind Sie sicher, dass Sie zu diesem Benutzer für den Rest der Session wechseln möchten?',
|
||||
'Are you sure you want to unblock this user?' => 'Sind Sie sicher, dass Sie diesen Benutzer wieder freischalten wollen?',
|
||||
'Are you sure you wish the user to change their password at next login?' => 'Sind Sie sicher, dass der benutzer sein Kennwort beim nächsten Anmeldenändern soll?',
|
||||
'Are you sure you wish to send a password recovery email to this user?' => 'Sind Sie sicher, dass Sie eine Passwortwiederherstellungs-Mail an diesen Benutzer senden möchten?',
|
||||
'Are you sure you wish the user to change their password at next login?' => 'Sind Sie sicher, dass der Benutzer sein Kennwort beim nächsten Anmelden ändern soll?',
|
||||
'Are you sure you wish to send a password recovery email to this user?' => 'Sind Sie sicher, dass Sie eine E-Mail zur Passwortwiederherstellung an diesen Benutzer senden möchten?',
|
||||
'Are you sure? Deleted user can not be restored' => 'Sind Sie sicher? Gelöschte Benutzer können nicht wiederhergestellt werden',
|
||||
'Are you sure? There is no going back' => 'Sind Sie sicher? Es gibt kein Zurück',
|
||||
'Assignments' => 'Zuordnungen',
|
||||
@ -55,15 +50,15 @@ return [
|
||||
'Authorization rule has been added.' => 'Berechtigungsregel wurde hinzugefügt.',
|
||||
'Authorization rule has been removed.' => 'Berechtigungsregel wurde entfernt.',
|
||||
'Authorization rule has been updated.' => 'Berechtigungsregel wurde gespeichert.',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => 'Fast geschafft. Nun müssen Sie nur noch den Aktivierungslink besuchen, der an ihre neue E-Mail Adresse gesendet wurde.',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => 'Fast geschafft. Nun müssen Sie nur noch den Aktivierungslink besuchen, der an ihre alte E-Mail Adresse gesendet wurde.',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => 'Fast geschafft. Nun müssen Sie nur noch den Aktivierungslink besuchen, der an ihre neue E-Mail-Adresse gesendet wurde.',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => 'Fast geschafft. Nun müssen Sie nur noch den Aktivierungslink besuchen, der an ihre alte E-Mail-Adresse gesendet wurde.',
|
||||
'Back to privacy settings' => 'Zurück zu Privatsphäre-Einstellungen',
|
||||
'Bio' => 'Bio',
|
||||
'Block' => 'Blockieren',
|
||||
'Block status' => 'Blockadestatus',
|
||||
'Block status' => 'Blockstatus',
|
||||
'Blocked at {0, date, MMMM dd, YYYY HH:mm}' => 'Blockiert am {0, date, dd. MMMM YYYY, HH:mm}',
|
||||
'Cancel' => 'Abbrechen',
|
||||
'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => 'Kann die Rolle "{0}" nicht zuordnen da der AuthManager in der Console Application nicht konfiguriert ist.',
|
||||
'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => 'Kann die Rolle "{0}" nicht zuordnen da, der AuthManager in der Konsolen Applikation nicht konfiguriert ist.',
|
||||
'Change your avatar at Gravatar.com' => 'Ändern Sie ihren Avatar auf Gravatar.com',
|
||||
'Children' => 'Unterelemente',
|
||||
'Class' => 'Klasse',
|
||||
@ -88,6 +83,7 @@ return [
|
||||
'Credentials will be sent to the user by email' => 'Die Zugangsdaten werden dem Nutzer per E-Mail versendet',
|
||||
'Current password' => 'Aktuelles Passwort',
|
||||
'Current password is not valid' => 'Das aktuelle Passwort ist nicht korrekt',
|
||||
'Data privacy' => 'Datenschutz',
|
||||
'Data processing consent' => 'Zustimmung zur Datenverarbeitung',
|
||||
'Delete' => 'Löschen',
|
||||
'Delete account' => 'Konto Löschen',
|
||||
@ -116,15 +112,14 @@ 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}@@',
|
||||
'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',
|
||||
'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 dieser Webseite zu. Weitere Informationen stehen in unserer {privacyPolicy}',
|
||||
'If you already registered, sign in and connect this account on settings page' => 'Wenn Sie bereits registriert sind, melden Sie sich an und verbinden Sie dieses Konto auf der Einstellungsseite',
|
||||
'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 Browserleiste 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',
|
||||
'Impersonate this user' => 'Wechsle zu diesem Benutzer',
|
||||
'In order to complete your registration, please click the link below' => 'Um Ihre Registrierung abzuschliessen, klicken Sie bitte auf den Link unten',
|
||||
'In order to complete your registration, please click the link below' => 'Um Ihre Registrierung abzuschließen, klicken Sie bitte auf den folgenden Link',
|
||||
'In order to complete your request, please click the link below' => 'Um Ihre Anfrage abzuschliessen, klicken Sie bitte auf den Link unten',
|
||||
'In order to finish your registration, we need you to enter following fields' => 'Um Ihre Registrierung abzuschliessen, müssen Sie noch die folgenden Felder ausfüllen',
|
||||
'Information' => 'Information',
|
||||
'Invalid login or password' => 'Falscher Login oder falsches Passwort',
|
||||
'Invalid or expired link' => 'Falscher oder abgelaufener link',
|
||||
'Invalid password' => 'Ungültiges Kennwort',
|
||||
@ -135,7 +130,7 @@ return [
|
||||
'Joined on {0, date}' => 'Mitglied seit {0, date}',
|
||||
'Last login IP' => 'Letzte Anmeldung von IP',
|
||||
'Last login time' => 'Letzte Anmeldung',
|
||||
'Last password change' => 'Letzte Kennwort-Änderung',
|
||||
'Last password change' => 'Letzte Passwortänderung',
|
||||
'Location' => 'Ort',
|
||||
'Login' => 'Anmelden',
|
||||
'Logout' => 'Abmelden',
|
||||
@ -158,25 +153,25 @@ return [
|
||||
'Password has been changed' => 'Passwort wurde geändert',
|
||||
'Permissions' => 'Berechtigungen',
|
||||
'Please be certain' => 'Sind Sie sich wirklich sicher?',
|
||||
'Please click the link below to complete your password reset' => 'Bitte klicken Sie auf den Link unten um ihre Passwort-Wiederherstellung abzuschliessen',
|
||||
'Please click the link below to complete your password reset' => 'Bitte klicken Sie auf den folgenden Link, um das Zurücksetzen Ihres Passworts abzuschließen',
|
||||
'Please fix following errors:' => 'Bitte beheben Sie die folgenden Fehler',
|
||||
'Privacy' => 'Privatsphäre',
|
||||
'Privacy settings' => 'Privatsphäre-Einstellungen',
|
||||
'Profile' => 'Profil',
|
||||
'Profile details' => 'Profildetails',
|
||||
'Profile details have been updated' => 'Profildetails wurden gespeichert',
|
||||
'Profile settings' => 'Profileinstellungen',
|
||||
'Profile details' => 'Profil-Details',
|
||||
'Profile details have been updated' => 'Profil-Details wurden gespeichert',
|
||||
'Profile settings' => 'Profil-Einstellungen',
|
||||
'Recover your password' => 'Passwort wiederherstellen',
|
||||
'Recovery link is invalid or expired. Please try requesting a new one.' => 'Wiederherstellungs-Link ist falsch oder abgelaufen. Bitte fordern Sie einen neuen an',
|
||||
'Recovery message sent' => 'Wiederherstellungs-Nachricht wurde gesendet',
|
||||
'Recovery link is invalid or expired. Please try requesting a new one.' => 'Wiederherstellungslink ist falsch oder abgelaufen. Bitte fordern Sie einen neuen an',
|
||||
'Recovery message sent' => 'Wiederherstellungsnachricht gesendet',
|
||||
'Registration IP' => 'Registrierungs-IP',
|
||||
'Registration on this website is disabled' => 'Die Registrierung auf dieser Webseite ist deaktiviert',
|
||||
'Registration time' => 'Registrierungszeit',
|
||||
'Remember me next time' => 'Anmeldung für das nächste mal merken',
|
||||
'Remember me next time' => 'Anmeldung für das nächste Mal merken',
|
||||
'Request new confirmation message' => 'Neuen Wiederherstellungs-Link anfordern',
|
||||
'Required "key" cannot be empty.' => 'Erforderlicher "key" darf nicht leer sein.',
|
||||
'Required "secret" cannot be empty.' => 'Erforderliches "secret" darf nicht leer sein.',
|
||||
'Reset your password' => 'Passwort wiederherstellen',
|
||||
'Reset your password' => 'Ihr Passwort zurücksetzen',
|
||||
'Role "{0}" not found. Creating it.' => 'Rolle "{0}" nicht gefunden. Erstelle diese.',
|
||||
'Roles' => 'Rollen',
|
||||
'Rule' => 'Regel',
|
||||
@ -194,6 +189,7 @@ return [
|
||||
'Sign in' => 'Anmelden',
|
||||
'Sign up' => 'Registrieren',
|
||||
'Something went wrong' => 'Etwas ist schief gelaufen',
|
||||
'Submit' => 'Absenden',
|
||||
'Switch identities is disabled.' => 'Identitäten wechseln ist deaktiviert.',
|
||||
'Thank you for signing up on {0}' => 'Danke für ihre Registrierung auf {0}',
|
||||
'Thank you, registration is now complete.' => 'Danke, ihre Registrierung ist nun abgeschlossen.',
|
||||
@ -201,22 +197,22 @@ return [
|
||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => 'Ihr Aktivierungslink ist falsch oder abgelaufen. Bitte fordern Sie einen neuen an.',
|
||||
'The verification code is incorrect.' => 'Der Verifizierungsschlüssel ist ungültig.',
|
||||
'There is neither role nor permission with name "{0}"' => 'Es gibt weder eine Rolle noch eine Berechtigung mit dem Namen "{0}"',
|
||||
'There was an error in saving user' => 'Fehler beim Speichern des Benutzers',
|
||||
'There was an error in saving user' => 'Es gab einen Fehler beim Speichern des Benutzers',
|
||||
'This account has already been connected to another user' => 'Dieses Konto wurde bereits von einem anderen Benutzer verbunden',
|
||||
'This email address has already been taken' => 'Die E-Mail Adresse ist bereits vergeben',
|
||||
'This email address has already been taken' => 'Die E-Mail-Adresse ist bereits vergeben',
|
||||
'This username has already been taken' => 'Dieser Benutzername ist bereits vergeben',
|
||||
'This will disable two factor authentication. Are you sure?' => 'Hiermit deaktivieren Sie die Zwei-Faktor-Authentifizierung. Sind Sie sicher?',
|
||||
'This will remove your personal data from this site. You will no longer be able to sign in.' => 'Hiermit löschen Sie Ihre persönlichen Daten von diesem Service. Sie werden sich nun nicht mehr anmelden können.',
|
||||
'This will remove your personal data from this site. You will no longer be able to sign in.' => 'Hiermit löschen Sie Ihre persönlichen Daten von dieser Webseite. Sie werden sich nun nicht mehr anmelden können.',
|
||||
'Time zone' => 'Zeitzone',
|
||||
'Time zone is not valid' => 'Zeitzone ist ungültig',
|
||||
'Two Factor Authentication (2FA)' => 'Zwei-Faktor-Authentifizierung (2FA)',
|
||||
'Two factor authentication code' => 'Zwei-Faktor-Authentifizierungs-Code',
|
||||
'Two factor authentication has been disabled.' => 'Zwei-Faktor-Authentifizierung wurde deaktiviert',
|
||||
'Two factor authentication protects you in case of stolen credentials' => 'Zwei-Faktor-Authentifizierung schützt Sie bei gestohlenen Zugangsdaten',
|
||||
'Two factor authentication protects you in case of stolen credentials' => 'Zwei-Faktor-Authentifizierung schützt Sie im Fall von gestohlenen Zugangsdaten',
|
||||
'Two factor authentication successfully enabled.' => 'Zwei-Faktor-Authentifizierung wurde erfolgreich aktiviert',
|
||||
'Unable to confirm user. Please, try again.' => 'Der Benutzer konnte nicht bestätigt werden. Bitte versuchen Sie es erneut.',
|
||||
'Unable to create an account.' => 'Konto konnte nicht erstellt werden',
|
||||
'Unable to create authorization item.' => 'Authorization Item konnte nicht erstellt werden',
|
||||
'Unable to create authorization item.' => 'Authentifizierungselement kann nicht erstellt werden',
|
||||
'Unable to create new authorization rule.' => 'Unfähig eine neue Authentifizierungsregel zu erstellen.',
|
||||
'Unable to delete user. Please, try again later.' => 'Benutzer konnte nicht gelöscht werden.',
|
||||
'Unable to disable Two factor authentication.' => 'Fehler beim Deaktivieren der Zwei-Faktor-Authentifizierung',
|
||||
@ -228,6 +224,7 @@ return [
|
||||
'Unable to update block status.' => 'Konnte den Block-Status nicht ändern',
|
||||
'Unblock' => 'Freischalten',
|
||||
'Unconfirmed' => 'Unbestätigt',
|
||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => 'Leider können Sie nicht mit dieser Seite arbeiten, ohne uns die Zustimmung zur Verarbeitung Ihrer Daten zu geben.',
|
||||
'Update' => 'Bearbeiten',
|
||||
'Update assignments' => 'Zuweisung ändern',
|
||||
'Update permission' => 'Berechtigung ändern',
|
||||
@ -243,24 +240,24 @@ return [
|
||||
'User has been deleted' => 'Benutzer wurde gelöscht',
|
||||
'User is not found' => 'Benutzer wurde nicht gefunden',
|
||||
'User not found.' => 'Benutzer nicht gefunden.',
|
||||
'User will be required to change password at next login' => 'Der Benutzer wird bei der nchsten Aneldung zur Kennwort-Änderungen gezwungen',
|
||||
'User will be required to change password at next login' => 'Der Benutzer wird bei der nächsten Aneldung zur Kennwort-Änderungen gezwungen',
|
||||
'Username' => 'Benutzername',
|
||||
'Users' => 'Benutzer',
|
||||
'VKontakte' => 'VKontakte',
|
||||
'Verification failed. Please, enter new code.' => 'Verifizierung fehlgeschlagen. Bitte einen neuen Schlüssel eingeben.',
|
||||
'We couldn\'t re-send the mail to confirm your address. Please, verify is the correct email or if it has been confirmed already.' => 'Wir konnten die Mail zur Bestätigung Ihrer Adresse nicht noch einmal senden. Bitte kontrollieren Sie ob die E-Mail-Adresse korrekt ist oder diese bereits bestätigt wurde.',
|
||||
'We have generated a password for you' => 'Ein Passwort wurde für Sie generiert',
|
||||
'We have received a request to change the email address for your account on {0}' => 'Wir haben eine Anfrage, ihre E-Mail Adresse auf {0} zu verändern, bekommen',
|
||||
'We have received a request to change the email address for your account on {0}' => 'Wir haben eine Anfrage, ihre E-Mail-Adresse auf {0} zu verändern, bekommen',
|
||||
'We have received a request to reset the password for your account on {0}' => 'Wir haben eine Anfrage, ihr Passwort auf {0} wiederherzustellen, bekommen',
|
||||
'We have sent confirmation links to both old and new email addresses. You must click both links to complete your request.' => 'Wir haben Ihnen Bestätigungslinks an die alte und neue E-Mail-Adresse geschickt. Sie müssen beide Links anklicken um die Anfrage fertigzustellen.',
|
||||
'Website' => 'Webseite',
|
||||
'Welcome to {0}' => 'Willkommen auf {0}',
|
||||
'Yandex' => 'Yandex',
|
||||
'You are about to delete all your personal data from this site.' => 'Sie löschen damit alle persönlichen Daten von diesem Service',
|
||||
'You can assign multiple roles or permissions to user by using the form below' => 'Sie können mehrere Rollen oder Berechtigungen zuweisen',
|
||||
'You are about to delete all your personal data from this site.' => 'Sie löschen damit alle persönlichen Daten von dieser Webseite',
|
||||
'You can assign multiple roles or permissions to user by using the form below' => 'Sie können dem Benutzer mehrere Rollen oder Berechtigungen zuweisen, indem Sie das folgende Formular verwenden',
|
||||
'You can connect multiple accounts to be able to log in using them' => 'Sie können mehrere Konten verbinden und sich mit diesen anmelden',
|
||||
'You cannot remove your own account' => 'Sie können ihr eigenes Konto nicht löschen',
|
||||
'You need to confirm your email address' => 'Sie müssen ihre E-Mail Adresse bestätigen',
|
||||
'You need to confirm your email address' => 'Sie müssen ihre E-Mail-Adresse bestätigen',
|
||||
'Your account details have been updated' => 'Ihre Kontodetails wurden gespeichert',
|
||||
'Your account has been blocked' => 'Ihr Konto wurde blockiert',
|
||||
'Your account has been blocked.' => 'Ihr Konto wurde blockiert.',
|
||||
@ -269,14 +266,35 @@ return [
|
||||
'Your account has been created' => 'Ihr Konto wurde erstellt',
|
||||
'Your account has been created and a message with further instructions has been sent to your email' => 'Ihr Konto wurde erstellt und eine Nachricht mit weiteren Anweisungen wurde an ihre E-Mail Adresse versendet',
|
||||
'Your account on {0} has been created' => 'Ihr Konto auf {0} wurde erstellt',
|
||||
'Your confirmation token is invalid or expired' => 'Ihr Bestätigungs-Token ist falsch oder abgelaufen',
|
||||
'Your confirmation token is invalid or expired' => 'Ihr Bestätigungstoken ist falsch oder abgelaufen',
|
||||
'Your consent is required to register' => 'Sie müssen Ihre Zustimmung registrieren',
|
||||
'Your email address has been changed' => 'Ihre E-Mail Adresse wurde geändert',
|
||||
'Your password has expired, you must change it now' => 'Ihr Kennwort ist abgelaufen. Sie müssen es nun ändern',
|
||||
'Your consent is required to work with this site' => 'Ihre Zustimmung ist erforderlich, um mit dieser Website zu arbeiten',
|
||||
'Your email address has been changed' => 'Ihre E-Mail-Adresse wurde geändert',
|
||||
'Your password has expired, you must change it now' => 'Ihr Passwort ist abgelaufen, Sie müssen es jetzt ä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.',
|
||||
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '',
|
||||
'Active' => '',
|
||||
'Current' => '',
|
||||
'Data privacy' => '',
|
||||
'IP' => '',
|
||||
'Inactive' => '',
|
||||
'Last activity' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||
'User ID' => '',
|
||||
'User agent' => '',
|
||||
'Your consent is required to work with this site' => '',
|
||||
'Information' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
];
|
||||
|
||||
@ -112,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',
|
||||
@ -273,11 +273,25 @@ 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.',
|
||||
'Active' => '',
|
||||
'Current' => '',
|
||||
'IP' => '',
|
||||
'Inactive' => '',
|
||||
'Last activity' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Status' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'User ID' => '',
|
||||
'User agent' => '',
|
||||
'Your consent is required to work with this site' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'{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@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
'Two factor authentication protects you against stolen credentials' => '@@La autenticación de dos factores le protege del robo de credenciales@@',
|
||||
];
|
||||
|
||||
@ -109,6 +109,7 @@ 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',
|
||||
@ -264,18 +265,29 @@ 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.' => '',
|
||||
'Active' => '',
|
||||
'Authentication rule class {0} can not be instantiated' => '',
|
||||
'Current' => '',
|
||||
'Data privacy' => '',
|
||||
'IP' => '',
|
||||
'Inactive' => '',
|
||||
'Last activity' => '',
|
||||
'Rule class must extend "yii\\rbac\\Rule".' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||
'User ID' => '',
|
||||
'User agent' => '',
|
||||
'VKontakte' => '',
|
||||
'Yandex' => '',
|
||||
'Your consent is required to work with this site' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'{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@@',
|
||||
];
|
||||
|
||||
@ -17,55 +17,29 @@
|
||||
* 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' => 'مشخصات حساب کاربری',
|
||||
'Account details have been updated' => 'جزئیات حساب کاربری بروز شد',
|
||||
'Account settings' => 'تنظیمات حساب کاربری',
|
||||
'Already registered? Sign in!' => 'قبلاً ثبت نام کرده اید ؟ پس وارد شوید!',
|
||||
'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.' => '',
|
||||
'An error occurred processing your request' => 'در زمان پردازش درخواست شما خطایی رخ داد',
|
||||
'Are you sure you want to block this user?' => 'آیا از مسدود کردن این کاربر اطمینان دارید ؟',
|
||||
'Are you sure you want to confirm this user?' => 'آیا از تایید این کاربر اطمینان دارید؟',
|
||||
'Are you sure you want to delete this user?' => 'آیا از حذف این کاربر اطمینان دارید؟',
|
||||
'Are you sure you want to switch to this user for the rest of this Session?' => '',
|
||||
'Are you sure you want to unblock this user?' => 'آیا از آزاد سازی این کاربر اطمینان دارید؟',
|
||||
'Are you sure you wish the user to change their password at next login?' => '',
|
||||
'Are you sure you wish to send a password recovery email to this user?' => '',
|
||||
'Are you sure? Deleted user can not be restored' => 'مطمئن هستید؟ امکان بازیابی اکانت پاک شده وجود ندارد',
|
||||
'Are you sure? There is no going back' => '',
|
||||
'Assignments' => 'تکالیف',
|
||||
'Assignments have been updated' => '',
|
||||
'Auth item with such name already exists' => '',
|
||||
'Authentication rule class {0} can not be instantiated' => '',
|
||||
'Authorization item successfully created.' => '',
|
||||
'Authorization item successfully removed.' => '',
|
||||
'Authorization item successfully updated.' => '',
|
||||
'Authorization rule has been added.' => '',
|
||||
'Authorization rule has been removed.' => '',
|
||||
'Authorization rule has been updated.' => '',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '',
|
||||
'Back to privacy settings' => '',
|
||||
'Bio' => 'بیوگرافی',
|
||||
'Block' => 'مسدود',
|
||||
'Block status' => 'وضعیت انسداد',
|
||||
'Blocked at {0, date, MMMM dd, YYYY HH:mm}' => 'مسدود شده در تاریخ {0, date, MMMM dd, YYYY HH:mm}',
|
||||
'Cancel' => '',
|
||||
'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => '',
|
||||
'Change your avatar at Gravatar.com' => 'نمایه خود را در Gavatar.com تغییر دهید',
|
||||
'Children' => '',
|
||||
'Class' => '',
|
||||
'Close' => '',
|
||||
'Complete password reset on {0}' => 'تنظیم مجدد رمز عبور را در {0} کامل کنید',
|
||||
'Confirm' => 'تایید',
|
||||
'Confirm account on {0}' => 'حساب کاربری را در {0} تایید کن',
|
||||
@ -79,87 +53,48 @@ return [
|
||||
'Continue' => 'ادامه',
|
||||
'Create' => 'ایجاد کردن',
|
||||
'Create a user account' => 'ایجاد حساب کاربری',
|
||||
'Create new permission' => '',
|
||||
'Create new role' => '',
|
||||
'Create new rule' => '',
|
||||
'Created at' => '',
|
||||
'Credentials will be sent to the user by email' => 'مشخصات کاربری از طریق ایمیل به کاربر ارسال خواهد شد',
|
||||
'Current password' => 'رمز عبور فعلی',
|
||||
'Current password is not valid' => 'رمز عبور فعلی معتبر نیست',
|
||||
'Data privacy' => '',
|
||||
'Data processing consent' => '',
|
||||
'Delete' => 'حذف کردن',
|
||||
'Delete account' => '',
|
||||
'Delete my account' => '',
|
||||
'Delete personal data' => '',
|
||||
'Deleted by GDPR request' => '',
|
||||
'Description' => '',
|
||||
'Didn\'t receive confirmation message?' => 'ایمیل فعال سازی را دریافت نکرده اید؟',
|
||||
'Disable two factor authentication' => '',
|
||||
'Disconnect' => 'قطع ارتباط',
|
||||
'Don\'t have an account? Sign up!' => 'هنوز حساب کاربری ندارید؟ پس ثبت نام کنید!',
|
||||
'Download my data' => '',
|
||||
'Email' => 'ایمیل',
|
||||
'Email (public)' => 'ایمیل (عمومی)',
|
||||
'Enable' => '',
|
||||
'Enable two factor authentication' => '',
|
||||
'Error occurred while changing password' => 'در طول تغییر گذرواژه خطا رخ داد',
|
||||
'Error occurred while confirming user' => 'در طول فعال سازی شناسه کاربری خطا رخ داد',
|
||||
'Error occurred while deleting user' => 'در زمان حذف کاربر خطایی رخ داد',
|
||||
'Error sending registration message to "{email}". Please try again later.' => '',
|
||||
'Error sending welcome message to "{email}". Please try again later.' => '',
|
||||
'Export my data' => '',
|
||||
'Finish' => 'پایان',
|
||||
'Force password change at next login' => '',
|
||||
'Forgot password?' => 'رمز عبور خود را فراموش کرده اید؟',
|
||||
'Gravatar email' => 'ایمیل گاواتار',
|
||||
'Hello' => 'سلام',
|
||||
'Here you can download your personal data in a comma separated values format.' => '',
|
||||
'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' => 'اگر شما این ایمیل را درخواست نداده اید پس می توانید آن را نادیده بگیرید',
|
||||
'Impersonate this user' => '',
|
||||
'In order to complete your registration, please click the link below' => 'برای کامل کردن ثبت نام خود لطفا بر روی لینک زیر کلیک کنید',
|
||||
'In order to complete your request, please click the link below' => 'برای کامل کردن درخواست خود لطفا بر روی لینک زیر کلیک کنید',
|
||||
'In order to finish your registration, we need you to enter following fields' => '',
|
||||
'Information' => 'اطلاعات',
|
||||
'Invalid login or password' => 'نام کاربری یا رمز عبور نامعتبر است',
|
||||
'Invalid or expired link' => 'لینک فعال سازی معتبر نیست یا منقضی شده است',
|
||||
'Invalid password' => '',
|
||||
'Invalid two factor authentication code' => '',
|
||||
'Invalid value' => '',
|
||||
'It will be deleted forever' => '',
|
||||
'Items' => '',
|
||||
'Joined on {0, date}' => 'عضو شده در {0, date}',
|
||||
'Last login IP' => '',
|
||||
'Last login time' => '',
|
||||
'Last password change' => '',
|
||||
'Location' => 'موقعیت',
|
||||
'Login' => 'ورود',
|
||||
'Logout' => 'خروج',
|
||||
'Manage users' => 'مدیریت کاربران',
|
||||
'Name' => 'نام',
|
||||
'Networks' => 'شبکه ها',
|
||||
'Never' => '',
|
||||
'New email' => 'ایمیل جدید',
|
||||
'New password' => 'رمز عبور جدید',
|
||||
'New permission' => 'اجازه دسترسی جدید',
|
||||
'New role' => 'نقش جدید',
|
||||
'New rule' => '',
|
||||
'New user' => 'کاربر جدید',
|
||||
'Not blocked' => 'مسدود نشده',
|
||||
'Not found' => '',
|
||||
'Once you delete your account, there is no going back' => '',
|
||||
'Once you have deleted your data, you will not longer be able to sign in with this account.' => '',
|
||||
'Password' => 'رمز عبور',
|
||||
'Password age' => '',
|
||||
'Password has been changed' => 'رمز عبور تغییر پیدا کرد',
|
||||
'Permissions' => 'اجازه دسترسی',
|
||||
'Please be certain' => '',
|
||||
'Please click the link below to complete your password reset' => 'لطفا برای کامل کردن روند بازیابی رمز عبور بر روی لینک زیر کلیک کنید',
|
||||
'Please fix following errors:' => 'لطفا خطا های زیر را بر طرف کنید :',
|
||||
'Privacy' => '',
|
||||
'Privacy settings' => '',
|
||||
'Profile' => 'پروفایل',
|
||||
'Profile details' => 'مشخصات پروفایل',
|
||||
'Profile details have been updated' => 'مشخصات پروفایل بروز شد',
|
||||
@ -168,15 +103,141 @@ return [
|
||||
'Recovery link is invalid or expired. Please try requesting a new one.' => 'ایمیل تنظیم مجدد رمز عبور معتبر نیست یا منقضی شده است. لطفا دوباره درخواست دهید تا ایمیل جدیدی برایتان ارسال شود.',
|
||||
'Recovery message sent' => 'ایمیل تنظیم مجدد رمز عبور ارسال شد',
|
||||
'Registration IP' => 'آدرس ای پی ثبت نام',
|
||||
'Registration on this website is disabled' => '',
|
||||
'Registration time' => 'تاریخ ثبت نام',
|
||||
'Remember me next time' => 'دفعه بعد مرا به یاد بسپار',
|
||||
'Request new confirmation message' => 'درخواست ایمیل فعال سازی جدید',
|
||||
'Reset your password' => 'بازیابی رمز عبور',
|
||||
'Roles' => 'نقش ها',
|
||||
'Save' => 'ذخیره',
|
||||
'Sign in' => 'ورود',
|
||||
'Sign up' => 'ثبت نام',
|
||||
'Something went wrong' => 'چیز اشتباهی رخ داد',
|
||||
'Thank you for signing up on {0}' => 'با تشکر از ثبت نام شما در {0}',
|
||||
'Thank you, registration is now complete.' => 'متشکریم ، ثبت نام شما کامل شد.',
|
||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => 'لینک تایید معتبر نیست یا منقضی شده است. لطفا دوباره درخواست دهید تا ایمیل جدیدی برایتان ارسال شود.',
|
||||
'This account has already been connected to another user' => 'این اکانت قبلا به حساب کاربری دیگری متصل شده است',
|
||||
'This email address has already been taken' => 'این آدرس ایمیل قبلا ثبت شده است',
|
||||
'This username has already been taken' => 'این نام کاربری قبلا ثبت شده است',
|
||||
'Time zone' => 'موقعیت زمانی',
|
||||
'Time zone is not valid' => 'موقعبت زمانی معتبر نیست',
|
||||
'Unblock' => 'آزاد سازی',
|
||||
'Unconfirmed' => 'تایید نشده',
|
||||
'Update' => 'بروزرسانی',
|
||||
'Update user account' => 'اکانت کاربر را بروز کنید',
|
||||
'User has been confirmed' => 'کاربر تایید شد',
|
||||
'User has been created' => 'کاربر ساخته شد',
|
||||
'User has been deleted' => 'کاربر حذف شد',
|
||||
'User is not found' => 'کاربر پیدا نشد',
|
||||
'User not found.' => 'کاربر پیدا نشد.',
|
||||
'Username' => 'نام کاربری',
|
||||
'Users' => 'کاربرها',
|
||||
'We have received a request to change the email address for your account on {0}' => 'ما درخواستی برای تغییر آدرس ایمیل اکانت شما در {0} دریافت کرده ایم',
|
||||
'We have received a request to reset the password for your account on {0}' => 'ما درخواستی برای تنظیم مجدد رمز عبور برای حساب کاربری شما در {0} دریافت کردیم',
|
||||
'Website' => 'وب سایت',
|
||||
'Welcome to {0}' => 'خوش آمدید به {0}',
|
||||
'Yandex' => 'یاندکس',
|
||||
'You can assign multiple roles or permissions to user by using the form below' => 'شما می توانید نقش ها یا مجوز دسترسی های متعددی را از طریق فرم زیر به کاربر تخصیص دهید',
|
||||
'You can connect multiple accounts to be able to log in using them' => 'شما می توانید حساب کاربری متعددی را برای اینکه بتوانید با آنها وارد شوید به سیستم متصل کنید',
|
||||
'You need to confirm your email address' => 'شما باید ایمیل خود را تایید کنید',
|
||||
'Your account details have been updated' => 'مشخصات حساب کاربری شما بروز شد',
|
||||
'Your account has been blocked' => 'اکانت شما مسدود شده است',
|
||||
'Your account has been blocked.' => 'اکانت شما مسدود شده است.',
|
||||
'Your account has been connected' => 'حساب کاربری شما متصل شد',
|
||||
'Your account has been created' => 'اکانت شما ساخته شد',
|
||||
'Your account has been created and a message with further instructions has been sent to your email' => 'اکانت شما ساخته شد و ایمیلی حاوی دستورالعمل های بعدی به شما ارسال شد',
|
||||
'Your account on {0} has been created' => 'حساب کاربری شما در {0} ساخته شد',
|
||||
'Your confirmation token is invalid or expired' => 'لینک تایید شما معتبر نیست یا منقضی شده است',
|
||||
'Your email address has been changed' => 'آدرس ایمیل شما تغییر کرد',
|
||||
'Your profile has been updated' => 'پروفایل شما بروز شد',
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM, YYYY HH:mm}',
|
||||
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '',
|
||||
'Account' => '',
|
||||
'Account confirmation' => '',
|
||||
'Account details' => '',
|
||||
'Account details have been updated' => '',
|
||||
'Account settings' => '',
|
||||
'Active' => '',
|
||||
'Already registered? Sign in!' => '',
|
||||
'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.' => '',
|
||||
'Are you sure you want to switch to this user for the rest of this Session?' => '',
|
||||
'Are you sure you wish the user to change their password at next login?' => '',
|
||||
'Are you sure you wish to send a password recovery email to this user?' => '',
|
||||
'Are you sure? There is no going back' => '',
|
||||
'Assignments have been updated' => '',
|
||||
'Auth item with such name already exists' => '',
|
||||
'Authentication rule class {0} can not be instantiated' => '',
|
||||
'Authorization item successfully created.' => '',
|
||||
'Authorization item successfully removed.' => '',
|
||||
'Authorization item successfully updated.' => '',
|
||||
'Authorization rule has been added.' => '',
|
||||
'Authorization rule has been removed.' => '',
|
||||
'Authorization rule has been updated.' => '',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => '',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => '',
|
||||
'Back to privacy settings' => '',
|
||||
'Cancel' => '',
|
||||
'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => '',
|
||||
'Children' => '',
|
||||
'Class' => '',
|
||||
'Close' => '',
|
||||
'Create new permission' => '',
|
||||
'Create new role' => '',
|
||||
'Create new rule' => '',
|
||||
'Created at' => '',
|
||||
'Credentials will be sent to the user by email' => '',
|
||||
'Current' => '',
|
||||
'Current password' => '',
|
||||
'Current password is not valid' => '',
|
||||
'Data privacy' => '',
|
||||
'Data processing consent' => '',
|
||||
'Delete account' => '',
|
||||
'Delete my account' => '',
|
||||
'Delete personal data' => '',
|
||||
'Deleted by GDPR request' => '',
|
||||
'Description' => '',
|
||||
'Disable two factor authentication' => '',
|
||||
'Download my data' => '',
|
||||
'Enable' => '',
|
||||
'Enable two factor authentication' => '',
|
||||
'Error sending registration message to "{email}". Please try again later.' => '',
|
||||
'Error sending welcome message to "{email}". Please try again later.' => '',
|
||||
'Export my data' => '',
|
||||
'Force password change at next login' => '',
|
||||
'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}' => '',
|
||||
'IP' => '',
|
||||
'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' => '',
|
||||
'Impersonate this user' => '',
|
||||
'In order to finish your registration, we need you to enter following fields' => '',
|
||||
'Inactive' => '',
|
||||
'Information' => '',
|
||||
'Invalid login or password' => '',
|
||||
'Invalid or expired link' => '',
|
||||
'Invalid password' => '',
|
||||
'Invalid two factor authentication code' => '',
|
||||
'Invalid value' => '',
|
||||
'It will be deleted forever' => '',
|
||||
'Items' => '',
|
||||
'Joined on {0, date}' => '',
|
||||
'Last activity' => '',
|
||||
'Last login IP' => '',
|
||||
'Last login time' => '',
|
||||
'Last password change' => '',
|
||||
'Never' => '',
|
||||
'New rule' => '',
|
||||
'Not found' => '',
|
||||
'Once you delete your account, there is no going back' => '',
|
||||
'Once you have deleted your data, you will not longer be able to sign in with this account.' => '',
|
||||
'Password age' => '',
|
||||
'Please be certain' => '',
|
||||
'Privacy' => '',
|
||||
'Privacy settings' => '',
|
||||
'Registration on this website is disabled' => '',
|
||||
'Required "key" cannot be empty.' => '',
|
||||
'Required "secret" cannot be empty.' => '',
|
||||
'Reset your password' => 'بازیابی رمز عبور',
|
||||
'Role "{0}" not found. Creating it.' => '',
|
||||
'Roles' => 'نقش ها',
|
||||
'Rule' => '',
|
||||
'Rule class must extend "yii\\rbac\\Rule".' => '',
|
||||
'Rule class name' => '',
|
||||
@ -185,29 +246,28 @@ return [
|
||||
'Rule {0} does not exists' => '',
|
||||
'Rule {0} not found.' => '',
|
||||
'Rules' => '',
|
||||
'Save' => 'ذخیره',
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '',
|
||||
'Select rule...' => '',
|
||||
'Send password recovery email' => '',
|
||||
'Sign in' => 'ورود',
|
||||
'Sign up' => 'ثبت نام',
|
||||
'Something went wrong' => 'چیز اشتباهی رخ داد',
|
||||
'Submit' => '',
|
||||
'Switch identities is disabled.' => '',
|
||||
'Thank you for signing up on {0}' => 'با تشکر از ثبت نام شما در {0}',
|
||||
'Thank you, registration is now complete.' => 'متشکریم ، ثبت نام شما کامل شد.',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Sign in' => '',
|
||||
'Sign up' => '',
|
||||
'Something went wrong' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Switch identities is disabled.' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Thank you for signing up on {0}' => '',
|
||||
'Thank you, registration is now complete.' => '',
|
||||
'The "recaptcha" component must be configured.' => '',
|
||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => 'لینک تایید معتبر نیست یا منقضی شده است. لطفا دوباره درخواست دهید تا ایمیل جدیدی برایتان ارسال شود.',
|
||||
'The verification code is incorrect.' => '',
|
||||
'There is neither role nor permission with name "{0}"' => '',
|
||||
'There was an error in saving user' => '',
|
||||
'This account has already been connected to another user' => 'این اکانت قبلا به حساب کاربری دیگری متصل شده است',
|
||||
'This email address has already been taken' => 'این آدرس ایمیل قبلا ثبت شده است',
|
||||
'This username has already been taken' => 'این نام کاربری قبلا ثبت شده است',
|
||||
'This will disable two factor authentication. Are you sure?' => '',
|
||||
'This will remove your personal data from this site. You will no longer be able to sign in.' => '',
|
||||
'Time zone' => 'موقعیت زمانی',
|
||||
'Time zone is not valid' => 'موقعبت زمانی معتبر نیست',
|
||||
'Two Factor Authentication (2FA)' => '',
|
||||
'Two factor authentication code' => '',
|
||||
'Two factor authentication has been disabled.' => '',
|
||||
@ -225,83 +285,32 @@ return [
|
||||
'Unable to update authorization item.' => '',
|
||||
'Unable to update authorization rule.' => '',
|
||||
'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' => '',
|
||||
'Update role' => '',
|
||||
'Update rule' => '',
|
||||
'Update user account' => 'اکانت کاربر را بروز کنید',
|
||||
'Updated at' => '',
|
||||
'User ID' => '',
|
||||
'User account could not be created.' => '',
|
||||
'User agent' => '',
|
||||
'User block status has been updated.' => '',
|
||||
'User could not be registered.' => '',
|
||||
'User has been confirmed' => 'کاربر تایید شد',
|
||||
'User has been created' => 'کاربر ساخته شد',
|
||||
'User has been deleted' => 'کاربر حذف شد',
|
||||
'User is not found' => 'کاربر پیدا نشد',
|
||||
'User not found.' => 'کاربر پیدا نشد.',
|
||||
'User will be required to change password at next login' => '',
|
||||
'Username' => 'نام کاربری',
|
||||
'Users' => 'کاربرها',
|
||||
'VKontakte' => '',
|
||||
'Verification failed. Please, enter new code.' => '',
|
||||
'We couldn\'t re-send the mail to confirm your address. Please, verify is the correct email or if it has been confirmed already.' => '',
|
||||
'We have generated a password for you' => '',
|
||||
'We have received a request to change the email address for your account on {0}' => 'ما درخواستی برای تغییر آدرس ایمیل اکانت شما در {0} دریافت کرده ایم',
|
||||
'We have received a request to reset the password for your account on {0}' => 'ما درخواستی برای تنظیم مجدد رمز عبور برای حساب کاربری شما در {0} دریافت کردیم',
|
||||
'We have sent confirmation links to both old and new email addresses. You must click both links to complete your request.' => '',
|
||||
'Website' => 'وب سایت',
|
||||
'Welcome to {0}' => 'خوش آمدید به {0}',
|
||||
'Yandex' => 'یاندکس',
|
||||
'You are about to delete all your personal data from this site.' => '',
|
||||
'You can assign multiple roles or permissions to user by using the form below' => 'شما می توانید نقش ها یا مجوز دسترسی های متعددی را از طریق فرم زیر به کاربر تخصیص دهید',
|
||||
'You can connect multiple accounts to be able to log in using them' => 'شما می توانید حساب کاربری متعددی را برای اینکه بتوانید با آنها وارد شوید به سیستم متصل کنید',
|
||||
'You cannot remove your own account' => '',
|
||||
'You need to confirm your email address' => 'شما باید ایمیل خود را تایید کنید',
|
||||
'Your account details have been updated' => 'مشخصات حساب کاربری شما بروز شد',
|
||||
'Your account has been blocked' => 'اکانت شما مسدود شده است',
|
||||
'Your account has been blocked.' => 'اکانت شما مسدود شده است.',
|
||||
'Your account has been completely deleted' => '',
|
||||
'Your account has been connected' => 'حساب کاربری شما متصل شد',
|
||||
'Your account has been created' => 'اکانت شما ساخته شد',
|
||||
'Your account has been created and a message with further instructions has been sent to your email' => 'اکانت شما ساخته شد و ایمیلی حاوی دستورالعمل های بعدی به شما ارسال شد',
|
||||
'Your account on {0} has been created' => 'حساب کاربری شما در {0} ساخته شد',
|
||||
'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' => 'پروفایل شما بروز شد',
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM, YYYY HH:mm}',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'privacy policy' => '',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||
'{0} cannot be blank.' => '',
|
||||
'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' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@',
|
||||
'Invalid two-factor code' => '@@@@',
|
||||
'Last login' => '@@@@',
|
||||
'Registration ip' => 'ای پی ثبت نام',
|
||||
'Rule class can not be instantiated' => '@@@@',
|
||||
'Rule class must extend "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. ' => '@@@@',
|
||||
'We have sent confirmation links to both old and new email addresses. ' => '@@@@',
|
||||
];
|
||||
|
||||
@ -17,9 +17,6 @@
|
||||
* 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.' => '',
|
||||
@ -31,6 +28,7 @@ return [
|
||||
'Account details' => '',
|
||||
'Account details have been updated' => '',
|
||||
'Account settings' => '',
|
||||
'Active' => '',
|
||||
'Already registered? Sign in!' => '',
|
||||
'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.' => '',
|
||||
'An error occurred processing your request' => '',
|
||||
@ -84,6 +82,7 @@ return [
|
||||
'Create new rule' => '',
|
||||
'Created at' => '',
|
||||
'Credentials will be sent to the user by email' => '',
|
||||
'Current' => '',
|
||||
'Current password' => '',
|
||||
'Current password is not valid' => '',
|
||||
'Data privacy' => '',
|
||||
@ -115,6 +114,8 @@ 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}' => '',
|
||||
'IP' => '',
|
||||
'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' => '',
|
||||
@ -122,6 +123,7 @@ return [
|
||||
'In order to complete your registration, please click the link below' => '',
|
||||
'In order to complete your request, please click the link below' => '',
|
||||
'In order to finish your registration, we need you to enter following fields' => '',
|
||||
'Inactive' => '',
|
||||
'Information' => '',
|
||||
'Invalid login or password' => '',
|
||||
'Invalid or expired link' => '',
|
||||
@ -131,6 +133,7 @@ return [
|
||||
'It will be deleted forever' => '',
|
||||
'Items' => '',
|
||||
'Joined on {0, date}' => '',
|
||||
'Last activity' => '',
|
||||
'Last login IP' => '',
|
||||
'Last login time' => '',
|
||||
'Last password change' => '',
|
||||
@ -189,11 +192,15 @@ return [
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '',
|
||||
'Select rule...' => '',
|
||||
'Send password recovery email' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Sign in' => '',
|
||||
'Sign up' => '',
|
||||
'Something went wrong' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Switch identities is disabled.' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Thank you for signing up on {0}' => '',
|
||||
'Thank you, registration is now complete.' => '',
|
||||
'The "recaptcha" component must be configured.' => '',
|
||||
@ -235,7 +242,9 @@ return [
|
||||
'Update rule' => '',
|
||||
'Update user account' => '',
|
||||
'Updated at' => '',
|
||||
'User ID' => '',
|
||||
'User account could not be created.' => '',
|
||||
'User agent' => '',
|
||||
'User block status has been updated.' => '',
|
||||
'User could not be registered.' => '',
|
||||
'User has been confirmed' => '',
|
||||
@ -276,32 +285,11 @@ return [
|
||||
'Your password has expired, you must change it now' => '',
|
||||
'Your personal information has been removed' => '',
|
||||
'Your profile has been updated' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'privacy policy' => '',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '',
|
||||
'{0} cannot be blank.' => '',
|
||||
'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' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@',
|
||||
'Invalid two-factor code' => '@@@@',
|
||||
'Last login' => '@@@@',
|
||||
'Registration ip' => '@@@@',
|
||||
'Rule class can not be instantiated' => '@@@@',
|
||||
'Rule class must extend "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. ' => '@@@@',
|
||||
'We have sent confirmation links to both old and new email addresses. ' => '@@@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
];
|
||||
|
||||
@ -110,6 +110,7 @@ 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',
|
||||
@ -268,14 +269,25 @@ 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.' => '',
|
||||
'Active' => '',
|
||||
'Current' => '',
|
||||
'Data privacy' => '',
|
||||
'IP' => '',
|
||||
'Inactive' => '',
|
||||
'Last activity' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||
'User ID' => '',
|
||||
'User agent' => '',
|
||||
'Your consent is required to work with this site' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'{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é@@',
|
||||
];
|
||||
|
||||
@ -17,9 +17,6 @@
|
||||
* 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.' => '',
|
||||
@ -31,6 +28,7 @@ return [
|
||||
'Account details' => '',
|
||||
'Account details have been updated' => '',
|
||||
'Account settings' => '',
|
||||
'Active' => '',
|
||||
'Already registered? Sign in!' => '',
|
||||
'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.' => '',
|
||||
'An error occurred processing your request' => '',
|
||||
@ -84,6 +82,7 @@ return [
|
||||
'Create new rule' => '',
|
||||
'Created at' => '',
|
||||
'Credentials will be sent to the user by email' => '',
|
||||
'Current' => '',
|
||||
'Current password' => '',
|
||||
'Current password is not valid' => '',
|
||||
'Data privacy' => '',
|
||||
@ -115,6 +114,8 @@ return [
|
||||
'Gravatar email' => '',
|
||||
'Hello' => '',
|
||||
'Here you can download your personal data in a comma separated values format.' => '',
|
||||
'IP' => '',
|
||||
'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' => '',
|
||||
@ -122,6 +123,7 @@ return [
|
||||
'In order to complete your registration, please click the link below' => '',
|
||||
'In order to complete your request, please click the link below' => '',
|
||||
'In order to finish your registration, we need you to enter following fields' => '',
|
||||
'Inactive' => '',
|
||||
'Information' => '',
|
||||
'Invalid login or password' => '',
|
||||
'Invalid or expired link' => '',
|
||||
@ -131,6 +133,7 @@ return [
|
||||
'It will be deleted forever' => '',
|
||||
'Items' => '',
|
||||
'Joined on {0, date}' => '',
|
||||
'Last activity' => '',
|
||||
'Last login IP' => '',
|
||||
'Last login time' => '',
|
||||
'Last password change' => '',
|
||||
@ -189,11 +192,15 @@ return [
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '',
|
||||
'Select rule...' => '',
|
||||
'Send password recovery email' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Sign in' => '',
|
||||
'Sign up' => '',
|
||||
'Something went wrong' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Switch identities is disabled.' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Thank you for signing up on {0}' => '',
|
||||
'Thank you, registration is now complete.' => '',
|
||||
'The "recaptcha" component must be configured.' => '',
|
||||
@ -235,7 +242,9 @@ return [
|
||||
'Update rule' => '',
|
||||
'Update user account' => '',
|
||||
'Updated at' => '',
|
||||
'User ID' => '',
|
||||
'User account could not be created.' => '',
|
||||
'User agent' => '',
|
||||
'User block status has been updated.' => '',
|
||||
'User could not be registered.' => '',
|
||||
'User has been confirmed' => '',
|
||||
@ -276,32 +285,11 @@ return [
|
||||
'Your password has expired, you must change it now' => '',
|
||||
'Your personal information has been removed' => '',
|
||||
'Your profile has been updated' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'privacy policy' => '',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '',
|
||||
'{0} cannot be blank.' => '',
|
||||
'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' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@',
|
||||
'Invalid two-factor code' => '@@@@',
|
||||
'Last login' => '@@@@',
|
||||
'Registration ip' => '@@@@',
|
||||
'Rule class can not be instantiated' => '@@@@',
|
||||
'Rule class must extend "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. ' => '@@@@',
|
||||
'We have sent confirmation links to both old and new email addresses. ' => '@@@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
];
|
||||
|
||||
@ -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,27 +265,41 @@ 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.' => '',
|
||||
'Active' => '',
|
||||
'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.' => '',
|
||||
'Current' => '',
|
||||
'Data privacy' => '',
|
||||
'IP' => '',
|
||||
'Inactive' => '',
|
||||
'Last activity' => '',
|
||||
'Rule class name' => '',
|
||||
'Select rule...' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'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.' => '',
|
||||
'User ID' => '',
|
||||
'User agent' => '',
|
||||
'Your consent is required to work with this site' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'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.@@',
|
||||
'Disable Two-Factor Auth' => '@@Letiltja a kétütemű hitelesítést@@',
|
||||
'Enable Two-factor auth' => '@@Engedélyezze a kétütemű hitelesítést@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'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}' => '@@Aggregálom a személyes adataim feldolgozását és a cookie-k használatát a webhely működésének megkönnyítése érdekében. További információért olvassa el a {privacyPolicy}@@',
|
||||
'Invalid two-factor code' => '@@Érvénytelen kétütemű kód@@',
|
||||
'Last login' => '@@Utolsó bejelentkezés@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
'This will disable two-factor auth. Are you sure?' => '@@Ez letiltja a kétütemű hitelesítést. biztos vagy ebben?@@',
|
||||
'Two Factor Authentication' => '@@Két tényező hitelesítés@@',
|
||||
'Two factor authentication protects you against stolen credentials' => '@@Két tényező-hitelesítés megvédi az ellopott hitelesítő adatokat@@',
|
||||
|
||||
@ -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.' => 'È stato inviato un messaggio al tuo indirizzo email. Contiene un collegamento di verifica che devi aprire per completare la registrazione.',
|
||||
'A new confirmation link has been sent' => 'È stato inviato un nuovo link di conferma',
|
||||
'A password will be generated automatically if not provided' => 'La password verrà generata automaticamente se non fornita',
|
||||
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => 'Come descritto nel Regolamento Europeo per la Protezione dei Dati (GDPR), è necessario il tuo consenso per l\'utilizzo dei dati personali.',
|
||||
'Account' => 'Account',
|
||||
'Account confirmation' => 'Conferma account',
|
||||
'Account details' => 'Dettagli account',
|
||||
'Account details have been updated' => 'I dettagli del tuo account sono stati aggiornati',
|
||||
'Account settings' => 'Impostazioni account',
|
||||
'Already registered? Sign in!' => 'Già registrato? Accedi!',
|
||||
'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.' => 'Una mail con le istruzioni per creare una nuova password è stata inviata all\'indirizzo {email} se associato a un account {appName}. La tua password non è ancora stata cambiata.',
|
||||
'An error occurred processing your request' => 'Si è verificato un errore durante l\'elaborazione della richiesta',
|
||||
'Are you sure you want to block this user?' => 'Sicuro di voler bloccare questo utente?',
|
||||
'Are you sure you want to confirm this user?' => 'Sicuro di voler confermare questo utente?',
|
||||
@ -81,6 +83,7 @@ return [
|
||||
'Credentials will be sent to the user by email' => 'Le credenziali verranno inviate all\'utente via email',
|
||||
'Current password' => 'Password attuale',
|
||||
'Current password is not valid' => 'La password attuale non è valida',
|
||||
'Data privacy' => 'Data privacy',
|
||||
'Data processing consent' => 'Consenso al trattamento dei dati',
|
||||
'Delete' => 'Elimina',
|
||||
'Delete account' => 'Elimina account',
|
||||
@ -109,7 +112,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',
|
||||
@ -187,6 +190,7 @@ return [
|
||||
'Sign in' => 'Accedi',
|
||||
'Sign up' => 'Registrati',
|
||||
'Something went wrong' => 'È successo qualcosa di strano',
|
||||
'Submit' => 'Invia',
|
||||
'Switch identities is disabled.' => 'Il cambio identità è disabilitato',
|
||||
'Thank you for signing up on {0}' => 'Grazie per esserti registrato su {0}',
|
||||
'Thank you, registration is now complete.' => 'Grazie, la tua registrazione è completa.',
|
||||
@ -205,7 +209,7 @@ return [
|
||||
'Two Factor Authentication (2FA)' => 'Autenticazione a due fattori (2FA)',
|
||||
'Two factor authentication code' => 'Codice di autenticazione a due fattori',
|
||||
'Two factor authentication has been disabled.' => 'Autenticazione a due fattori disabilitata.',
|
||||
'Two factor authentication protects you in case of stolen credentials' => 'L\'autenticazione a due fattura ti protegge in caso di furto di credenziali',
|
||||
'Two factor authentication protects you in case of stolen credentials' => 'L\'autenticazione a due fattori ti protegge in caso di furto di credenziali',
|
||||
'Two factor authentication successfully enabled.' => 'Autenticazione a due fattori abilitata con successo.',
|
||||
'Unable to confirm user. Please, try again.' => 'Impossibile confermare l\'utente, per favore ritenta.',
|
||||
'Unable to create an account.' => 'Impossibile creare l\'account.',
|
||||
@ -221,6 +225,7 @@ return [
|
||||
'Unable to update block status.' => 'Impossibile aggiornare lo stato di blocco.',
|
||||
'Unblock' => 'Sblocca',
|
||||
'Unconfirmed' => 'Non confermato',
|
||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => 'Siamo spiacenti è richiesto il consenso all\'utilizzo dei dati personali per navigare sul sito.',
|
||||
'Update' => 'Modifica',
|
||||
'Update assignments' => 'Modifica assegnamenti',
|
||||
'Update permission' => 'Modifica permessi',
|
||||
@ -264,19 +269,34 @@ return [
|
||||
'Your account on {0} has been created' => 'Il tuo account presso {0} è stato creato',
|
||||
'Your confirmation token is invalid or expired' => 'Il token di conferma non è valido o è scaduto',
|
||||
'Your consent is required to register' => 'È richiesto il tuo consenso per la registrazione',
|
||||
'Your consent is required to work with this site' => 'È richiesto il tuo consenso per navigare sul sito',
|
||||
'Your email address has been changed' => 'Il tuo indirizzo email è stato cambiato',
|
||||
'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@@',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => 'Il tuo ruolo richiede l\'autenticazione a due fattori, non potrai usare l\'applicazione finché non l\'avrai abilitata',
|
||||
'privacy policy' => 'politica della privacy',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '{0, date, MMM dd, YYYY HH:mm}',
|
||||
'{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.' => 'Come descritto nel Regolamento Europeo per la Protezione dei Dati (GDPR), è necessario il tuo consenso per l\'utilizzo dei dati personali.',
|
||||
'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.' => 'Una mail con le istruzioni per creare una nuova password è stata inviata all\'indirizzo {email} se associato a un account {appName}. La tua password non è ancora stata cambiata.',
|
||||
'Data privacy' => 'Data privacy',
|
||||
'Submit' => 'Invia',
|
||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => 'Siamo spiacenti è richiesto il consenso all\'utilizzo dei dati personali per navigare sul sito.',
|
||||
'Your consent is required to work with this site' => 'È richiesto il tuo consenso per navigare sul sito',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '{0, date, MMM dd, YYYY HH:mm}',
|
||||
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '',
|
||||
'Active' => '',
|
||||
'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.' => '',
|
||||
'Current' => '',
|
||||
'Data privacy' => '',
|
||||
'IP' => '',
|
||||
'Inactive' => '',
|
||||
'Last activity' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||
'User ID' => '',
|
||||
'User agent' => '',
|
||||
'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@@',
|
||||
'Now you can resume the login process' => '@@Ora puoi riprendere il processo di autenticazione@@',
|
||||
];
|
||||
|
||||
@ -17,9 +17,6 @@
|
||||
* 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.' => '',
|
||||
@ -31,6 +28,7 @@ return [
|
||||
'Account details' => '',
|
||||
'Account details have been updated' => '',
|
||||
'Account settings' => '',
|
||||
'Active' => '',
|
||||
'Already registered? Sign in!' => '',
|
||||
'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.' => '',
|
||||
'An error occurred processing your request' => '',
|
||||
@ -84,6 +82,7 @@ return [
|
||||
'Create new rule' => '',
|
||||
'Created at' => '',
|
||||
'Credentials will be sent to the user by email' => '',
|
||||
'Current' => '',
|
||||
'Current password' => '',
|
||||
'Current password is not valid' => '',
|
||||
'Data privacy' => '',
|
||||
@ -115,6 +114,8 @@ return [
|
||||
'Gravatar email' => '',
|
||||
'Hello' => '',
|
||||
'Here you can download your personal data in a comma separated values format.' => '',
|
||||
'IP' => '',
|
||||
'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' => '',
|
||||
@ -122,6 +123,7 @@ return [
|
||||
'In order to complete your registration, please click the link below' => '',
|
||||
'In order to complete your request, please click the link below' => '',
|
||||
'In order to finish your registration, we need you to enter following fields' => '',
|
||||
'Inactive' => '',
|
||||
'Information' => '',
|
||||
'Invalid login or password' => '',
|
||||
'Invalid or expired link' => '',
|
||||
@ -131,6 +133,7 @@ return [
|
||||
'It will be deleted forever' => '',
|
||||
'Items' => '',
|
||||
'Joined on {0, date}' => '',
|
||||
'Last activity' => '',
|
||||
'Last login IP' => '',
|
||||
'Last login time' => '',
|
||||
'Last password change' => '',
|
||||
@ -189,11 +192,15 @@ return [
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '',
|
||||
'Select rule...' => '',
|
||||
'Send password recovery email' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Sign in' => '',
|
||||
'Sign up' => '',
|
||||
'Something went wrong' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Switch identities is disabled.' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Thank you for signing up on {0}' => '',
|
||||
'Thank you, registration is now complete.' => '',
|
||||
'The "recaptcha" component must be configured.' => '',
|
||||
@ -235,7 +242,9 @@ return [
|
||||
'Update rule' => '',
|
||||
'Update user account' => '',
|
||||
'Updated at' => '',
|
||||
'User ID' => '',
|
||||
'User account could not be created.' => '',
|
||||
'User agent' => '',
|
||||
'User block status has been updated.' => '',
|
||||
'User could not be registered.' => '',
|
||||
'User has been confirmed' => '',
|
||||
@ -276,32 +285,11 @@ return [
|
||||
'Your password has expired, you must change it now' => '',
|
||||
'Your personal information has been removed' => '',
|
||||
'Your profile has been updated' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'privacy policy' => '',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '',
|
||||
'{0} cannot be blank.' => '',
|
||||
'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' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@',
|
||||
'Invalid two-factor code' => '@@@@',
|
||||
'Last login' => '@@@@',
|
||||
'Registration ip' => '@@@@',
|
||||
'Rule class can not be instantiated' => '@@@@',
|
||||
'Rule class must extend "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. ' => '@@@@',
|
||||
'We have sent confirmation links to both old and new email addresses. ' => '@@@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
];
|
||||
|
||||
@ -17,9 +17,6 @@
|
||||
* 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.' => '',
|
||||
@ -31,6 +28,7 @@ return [
|
||||
'Account details' => '',
|
||||
'Account details have been updated' => '',
|
||||
'Account settings' => '',
|
||||
'Active' => '',
|
||||
'Already registered? Sign in!' => '',
|
||||
'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.' => '',
|
||||
'An error occurred processing your request' => '',
|
||||
@ -84,6 +82,7 @@ return [
|
||||
'Create new rule' => '',
|
||||
'Created at' => '',
|
||||
'Credentials will be sent to the user by email' => '',
|
||||
'Current' => '',
|
||||
'Current password' => '',
|
||||
'Current password is not valid' => '',
|
||||
'Data privacy' => '',
|
||||
@ -115,6 +114,8 @@ 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}' => '',
|
||||
'IP' => '',
|
||||
'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' => '',
|
||||
@ -122,6 +123,7 @@ return [
|
||||
'In order to complete your registration, please click the link below' => '',
|
||||
'In order to complete your request, please click the link below' => '',
|
||||
'In order to finish your registration, we need you to enter following fields' => '',
|
||||
'Inactive' => '',
|
||||
'Information' => '',
|
||||
'Invalid login or password' => '',
|
||||
'Invalid or expired link' => '',
|
||||
@ -131,6 +133,7 @@ return [
|
||||
'It will be deleted forever' => '',
|
||||
'Items' => '',
|
||||
'Joined on {0, date}' => '',
|
||||
'Last activity' => '',
|
||||
'Last login IP' => '',
|
||||
'Last login time' => '',
|
||||
'Last password change' => '',
|
||||
@ -189,11 +192,15 @@ return [
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '',
|
||||
'Select rule...' => '',
|
||||
'Send password recovery email' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Sign in' => '',
|
||||
'Sign up' => '',
|
||||
'Something went wrong' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Switch identities is disabled.' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Thank you for signing up on {0}' => '',
|
||||
'Thank you, registration is now complete.' => '',
|
||||
'The "recaptcha" component must be configured.' => '',
|
||||
@ -235,7 +242,9 @@ return [
|
||||
'Update rule' => '',
|
||||
'Update user account' => '',
|
||||
'Updated at' => '',
|
||||
'User ID' => '',
|
||||
'User account could not be created.' => '',
|
||||
'User agent' => '',
|
||||
'User block status has been updated.' => '',
|
||||
'User could not be registered.' => '',
|
||||
'User has been confirmed' => '',
|
||||
@ -276,32 +285,11 @@ return [
|
||||
'Your password has expired, you must change it now' => '',
|
||||
'Your personal information has been removed' => '',
|
||||
'Your profile has been updated' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'privacy policy' => '',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '',
|
||||
'{0} cannot be blank.' => '',
|
||||
'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' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@',
|
||||
'Invalid two-factor code' => '@@@@',
|
||||
'Last login' => '@@@@',
|
||||
'Registration ip' => '@@@@',
|
||||
'Rule class can not be instantiated' => '@@@@',
|
||||
'Rule class must extend "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. ' => '@@@@',
|
||||
'We have sent confirmation links to both old and new email addresses. ' => '@@@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
];
|
||||
|
||||
@ -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,30 +265,44 @@ 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.' => '',
|
||||
'Active' => '',
|
||||
'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.' => '',
|
||||
'Current' => '',
|
||||
'Data privacy' => '',
|
||||
'IP' => '',
|
||||
'Inactive' => '',
|
||||
'Last activity' => '',
|
||||
'Rule class name' => '',
|
||||
'Select rule...' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'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.' => '',
|
||||
'User ID' => '',
|
||||
'User agent' => '',
|
||||
'Your consent is required to work with this site' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'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.@@',
|
||||
'Class "{0}" does not exist' => '@@Class "{0} bestaat niet@@',
|
||||
'Disable Two-Factor Auth' => '@@Tweetraps authenticatie uitschakelen@@',
|
||||
'Enable Two-factor auth' => '@@Tweetraps authenticatie inschakelen@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'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}' => '@@Ik ga akkoord dat mijn persoonlijke data en cookies worden verwerkt voor het gebruik van deze website. Voor meer informatie lees onze {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}' => '@@Ik ga akkoord dat mijn persoonlijke data en cookies worden verwerkt voor het gebruik van deze website. Voor meer informatie lees onze {privacyPolicy}@@',
|
||||
'Invalid two-factor code' => '@@Ongeldige tweetraps authenticatie code@@',
|
||||
'Last login' => '@@Laatste login@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
'Registration ip' => '@@Registratie IP@@',
|
||||
'Rule class can not be instantiated' => '@@Registratie IP@@',
|
||||
'Rule class must extend "yii\\rbac\\Rule"' => '@@Regel klasse moet worden uitgebreid met "yii\\rbac\\Rule"@@',
|
||||
|
||||
@ -1,297 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'(not set)' => '-',
|
||||
'A confirmation message has been sent to your new email address' => 'Een bevestigingsbericht is verzonden naar je nieuwe e-mailadres',
|
||||
'A message has been sent to your email address. It contains a confirmation link that you must click to complete registration.' => 'Een email met een bevestigingslink werd verzonden naar je emailadres. Klik op de link om de registratie te voltooien.',
|
||||
'A new confirmation link has been sent' => 'Een nieuwe bevestigingslink is verzonden',
|
||||
'A password will be generated automatically if not provided' => 'Een wachtwoord wordt automatisch gegenereerd als er dit niet wordt opgegeven',
|
||||
'Account' => 'Account',
|
||||
'Account confirmation' => 'Accountbevestiging',
|
||||
'Account details' => 'Accountdetails',
|
||||
'Account details have been updated' => 'Accountdetails werden bijgewerkt',
|
||||
'Account settings' => 'Account-instellingen',
|
||||
'Already registered? Sign in!' => 'AL geregistreerd? Log in!',
|
||||
'An email has been sent with instructions for resetting your password' => 'Er is een email verstuurd met instructies om je wachtwoord te herstellen',
|
||||
'An error occurred processing your request' => 'Er is een fout opgetreden bij het verwerken van je aanvraag',
|
||||
'Are you sure you want to block this user?' => 'Weet je zeker dat je deze gebruiker wil blokkeren?',
|
||||
'Are you sure you want to confirm this user?' => 'Weet je zeker dat je deze gebruiker wil bevestigen?',
|
||||
'Are you sure you want to delete this user?' => 'Wet je zeker dat je deze gebrukiker wil verwijderen?',
|
||||
'Are you sure you want to switch to this user for the rest of this Session?' => 'Weet je zeker dat je als deze gebruiker wil verder gaan voor deze sessie?',
|
||||
'Are you sure you want to unblock this user?' => 'Weet je zeker dat je deze gebruiker wil activeren?',
|
||||
'Are you sure you wish the user to change their password at next login?' => 'Weet je zeker dat de gebruiker zijn wachtwoord moet wijzigen bij de volgende keer dat deze inlogt?',
|
||||
'Are you sure you wish to send a password recovery email to this user?' => 'Weet je zeker dat je een wachtwoord herstel-email naar deze gebruiker wil verzenden?',
|
||||
'Are you sure? Deleted user can not be restored' => 'Weet je het zeker? Een verwijderde gebruiker kan niet worden hersteld!',
|
||||
'Are you sure? There is no going back' => 'Weet je het zeker? Dit kan niet ongedaan gemaakt worden!',
|
||||
'Assignments' => 'Toewijzingen',
|
||||
'Assignments have been updated' => 'Toewijzingen zijn bijgewerkt',
|
||||
'Auth item with such name already exists' => 'Auth item met deze naam bestaat al',
|
||||
'Authentication rule class {0} can not be instantiated' => 'Authenticatie regel klasse {0} kan niet worden geïnstantieerd',
|
||||
'Authorization item successfully created.' => 'Authorisatie item met succes aangemaakt',
|
||||
'Authorization item successfully removed.' => 'Authorisatie item met succes verwijderd',
|
||||
'Authorization item successfully updated.' => 'Authorisatie item met succes geüpdatet',
|
||||
'Authorization rule has been added.' => 'Authorisatie regel werd toegevoegd',
|
||||
'Authorization rule has been removed.' => 'Authorisatie regel werd verwijderd',
|
||||
'Authorization rule has been updated.' => 'Authorisatie regel werd geüpdatet',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => 'Super, bijna klaar. Open alleen nog de bevestigingslink in de mail die naar jouw nieuwe emailadres gestuurd is',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => 'Super, bijna klaar. Open alleen nog de bevestigingslink in de mail die naar jouw oude emailadres gestuurd is',
|
||||
'Back to privacy settings' => 'Terug naar privcay settings',
|
||||
'Bio' => 'Biografie',
|
||||
'Block' => 'Blokkeer',
|
||||
'Block status' => 'Blokkering',
|
||||
'Blocked at {0, date, MMMM dd, YYYY HH:mm}' => 'Geblokkeerd op {0, date, MMMM dd, YYYY HH:mm}',
|
||||
'Cancel' => 'Annuleren',
|
||||
'Cannot assign role \'{0}\' as the AuthManager is not configured on your console application.' => 'Kan rol {0} niet toewijzen doordat de AuthManager niet geconfigureerd is op de console-applicatie',
|
||||
'Change your avatar at Gravatar.com' => 'Wijzig je avatar op Gravatar.com',
|
||||
'Children' => 'Kinderen',
|
||||
'Class' => 'Klasse',
|
||||
'Close' => 'Sluiten',
|
||||
'Complete password reset on {0}' => 'Voltooi het herstellen van je wachtwoord op {0}',
|
||||
'Confirm' => 'Bevestig',
|
||||
'Confirm account on {0}' => 'Bevestig account op {0}',
|
||||
'Confirm email change on {0}' => 'Bevestig email-wijziging op {0}',
|
||||
'Confirmation' => 'Bevestiging',
|
||||
'Confirmation status' => 'Bevestigingsstatus',
|
||||
'Confirmation time' => 'Tijdstip bevestiging',
|
||||
'Confirmed' => 'Bevestigd',
|
||||
'Confirmed at {0, date, MMMM dd, YYYY HH:mm}' => 'Bevestigd op {0, date, MMMM dd, YYYY HH:mm}',
|
||||
'Connect' => 'Verbinden',
|
||||
'Continue' => 'Verder',
|
||||
'Create' => 'Maak aan',
|
||||
'Create a user account' => 'Maak een gebruikersaccount aan',
|
||||
'Create new permission' => 'Maak een nieuwe permissie aan',
|
||||
'Create new role' => 'Maak een nieuw rol aan',
|
||||
'Create new rule' => 'maak een nieuwe regel aan',
|
||||
'Created at' => 'Gemaakt op',
|
||||
'Credentials will be sent to the user by email' => 'Inloggevens worden via mail naar de gebruiker verzonden',
|
||||
'Current password' => 'Huidig wachtwoord',
|
||||
'Current password is not valid' => 'Huidig wachtwoord is niet geldig',
|
||||
'Data processing consent' => 'Toestemming gegevensverwerking',
|
||||
'Delete' => 'Verwijder',
|
||||
'Delete account' => 'Verwijder account',
|
||||
'Delete my account' => 'Verwijder mijn account',
|
||||
'Delete personal data' => 'Verwijder mijn persoonlijke gegevens',
|
||||
'Deleted by GDPR request' => 'Verwijderd vanwege mijn AVG verzoek',
|
||||
'Description' => 'Omschrijving',
|
||||
'Didn\'t receive confirmation message?' => 'Geen bevestigings-email ontvangen?',
|
||||
'Disable two factor authentication' => '2 traps authenticatie uitschakelen',
|
||||
'Disconnect' => 'Verbreek verbindig',
|
||||
'Don\'t have an account? Sign up!' => 'Geen account? Meld je aan',
|
||||
'Download my data' => 'Download mijn gegevens',
|
||||
'Email' => 'Email',
|
||||
'Email (public)' => 'Email (publiek)',
|
||||
'Enable' => 'Schakel in',
|
||||
'Enable two factor authentication' => 'Schakel 2 traps authenticatie in',
|
||||
'Error occurred while changing password' => 'Fout bij wijzigen van het wachtwoord',
|
||||
'Error occurred while confirming user' => 'Fout bij bevestigen van de gebruiker',
|
||||
'Error occurred while deleting user' => 'Fout bij verwijderen van de gebruiker',
|
||||
'Error sending registration message to \'{email}\'. Please try again later.' => 'Er is een fout opgetreden bij verzenden van de registratie-email naar \'{email}\'. Probeer later nog eens.',
|
||||
'Error sending welcome message to \'{email}\'. Please try again later.' => 'Er is een fout opgetreden bij verzenden van de welkomst-email naar \'{email}\'. Probeer later nog eens.',
|
||||
'Export my data' => 'Exporteer mijn gegevens',
|
||||
'Finish' => 'beëindig',
|
||||
'Force password change at next login' => 'Forceer wachtwoord-herstel bij volgende login',
|
||||
'Forgot password?' => 'Wachtwoord vergeten?',
|
||||
'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-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}',
|
||||
'If you already registered, sign in and connect this account on settings page' => 'Als je al 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' => 'Kopieer en plak deze tekst in jouw browser als je niet op deze link kan klikken',
|
||||
'If you did not make this request you can ignore this email' => 'Als je deze aanvraag niet hebt gedaan kan je deze email negeren',
|
||||
'Impersonate this user' => 'Ga verder als deze gebruiker',
|
||||
'In order to complete your registration, please click the link below' => 'Klik op onderstaande link om je registratie te voltooien',
|
||||
'In order to complete your request, please click the link below' => 'Klik op onderstaande link om je registratie te voltooien',
|
||||
'In order to finish your registration, we need you to enter following fields' => 'De volgende velden moeten verplicht worden ingevuld voor je registrate',
|
||||
'Information' => 'Informatie',
|
||||
'Invalid login or password' => 'Ongeldige login of wachtwoord',
|
||||
'Invalid or expired link' => 'Ongeldige of vervallen link',
|
||||
'Invalid password' => 'Ongeldig wachtwoord',
|
||||
'Invalid two factor authentication code' => 'Ongeldige 2 traps authenticatie code',
|
||||
'Invalid value' => 'Ongeldige waarde',
|
||||
'It will be deleted forever' => 'Het zal voor altijd verwijderd worden',
|
||||
'Items' => 'Items',
|
||||
'Joined on {0, date}' => 'Aangemeld op {0, date}',
|
||||
'Last login IP' => 'Laatste login IP',
|
||||
'Last login time' => 'Laatste login',
|
||||
'Last password change' => 'Laatste wachtwoordwijziging',
|
||||
'Location' => 'Locatie',
|
||||
'Login' => 'Log in',
|
||||
'Logout' => 'Log uit',
|
||||
'Manage users' => 'Beheer gebruikers',
|
||||
'Name' => 'Naam',
|
||||
'Networks' => 'Netwerken',
|
||||
'Never' => 'Nooit',
|
||||
'New email' => 'Nieuwe email',
|
||||
'New password' => 'Nieuw wachtwoord',
|
||||
'New permission' => 'Nieuwe permissies',
|
||||
'New role' => 'Nieuwe rol',
|
||||
'New rule' => 'Nieuwe regel',
|
||||
'New user' => 'Nieuwe gebruiker',
|
||||
'Not blocked' => 'Niet geblokkeerd',
|
||||
'Not found' => 'Niet gevonden',
|
||||
'Once you delete your account, there is no going back' => 'Als je jouw account verwijdert kan dit niet ongedaan gemaakt worden',
|
||||
'Once you have deleted your data, you will not longer be able to sign in with this account.' => 'Als je jouw data verwijdert is inloggen met deze account niet meer mogelijk.',
|
||||
'Password' => 'Wachtwoord',
|
||||
'Password age' => 'Ouderdeom wachtwoord',
|
||||
'Password has been changed' => 'Wachtwoord is gewijzigd',
|
||||
'Permissions' => 'Machtigingen',
|
||||
'Please be certain' => 'Weet je het zeker?',
|
||||
'Please click the link below to complete your password reset' => 'Klik op onderstaande link om je wachtwoordherstel te voltooien',
|
||||
'Please fix following errors:' => 'Los de volgende fouten op:',
|
||||
'Privacy' => 'Privacy',
|
||||
'Privacy settings' => 'Privacy-instellingen',
|
||||
'Profile' => 'Profiel',
|
||||
'Profile details' => 'Profieldetails',
|
||||
'Profile details have been updated' => 'Profieldetails werden geüpdatet',
|
||||
'Profile settings' => 'Profiel-instellingen',
|
||||
'Recover your password' => 'Herstel je wachtwoord',
|
||||
'Recovery link is invalid or expired. Please try requesting a new one.' => 'Herstel-link is ongeldig of vervallen. Vraag een nieuwe aan',
|
||||
'Recovery message sent' => 'Herstelbericht is verzonden',
|
||||
'Registration IP' => 'Registratie IP',
|
||||
'Registration on this website is disabled' => 'Registratie is gedeactiveerd op deze website',
|
||||
'Registration time' => 'Registratietijdstip',
|
||||
'Remember me next time' => 'Onthoud mij',
|
||||
'Request new confirmation message' => 'Vraag een nieuw bevestigingsbericht aan',
|
||||
'Required \'key\' cannot be empty.' => 'Verplicht veld \'key\' kan niet leeg zijn.',
|
||||
'Required \'secret\' cannot be empty.' => 'Verplicht veld \'geheim\' kan niet leeg zijn.',
|
||||
'Reset your password' => 'Reset jouw wachtwoord',
|
||||
'Role \'{0}\' not found. Creating it.' => 'Rol \'{0}\' kan niet worden gevonden. Het wordt aangemaakt',
|
||||
'Roles' => 'Rollen',
|
||||
'Rule' => 'Regel',
|
||||
'Rule class must extend \'yii\rbac\Rule\'.' => 'Regel class moet \'yii\rbac\Rule\' extenden.',
|
||||
'Rule name' => 'Regel naam',
|
||||
'Rule name {0} is already in use' => 'Regel met naam \'{0}\' is al in gebruik',
|
||||
'Rule {0} does not exists' => 'Regel {0} bestaat niet',
|
||||
'Rule {0} not found.' => 'Regel {0} werd niet gevonden',
|
||||
'Rules' => 'Regels',
|
||||
'Save' => 'Opslaan',
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => 'Scan de QR coe met Google Authenticator (of vergelijkbare app), voer de tijdelijke code in en klik op verzenden.',
|
||||
'Send password recovery email' => 'Verzend wachtwoord herstel-email',
|
||||
'Sign in' => 'Aanmelden',
|
||||
'Sign up' => 'Registreren',
|
||||
'Something went wrong' => 'Er ging iets mis',
|
||||
'Switch identities is disabled.' => 'Identiteit-wisselen is niet ingeschakeld',
|
||||
'Thank you for signing up on {0}' => 'Bedankt voor je registratie op {0}',
|
||||
'Thank you, registration is now complete.' => 'Bedankt, je registratie is voltooid.',
|
||||
'The \'recaptcha\' component must be configured.' => 'De \'recaptcha\' component moet worden geconfigureerd.',
|
||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => 'De bevestigingslink is ongeldig of verlopen. Vraag een nieuwe aan.',
|
||||
'The verification code is incorrect.' => 'De bevestigingscode is ongeldig',
|
||||
'There is neither role nor permission with name \'{0}\'' => 'Er is geen rol of machtiging met de naam \'{0}\'',
|
||||
'There was an error in saving user' => 'Er was een fout bij het opslaan van de gebruiker',
|
||||
'This account has already been connected to another user' => 'Dit account is al verbonden met een andere gebruiker',
|
||||
'This email address has already been taken' => 'Dit emailadres is al in gebruik',
|
||||
'This username has already been taken' => 'Deze gebruikersnaam is al in gebruik',
|
||||
'This will disable two factor authentication. Are you sure?' => 'Dit zal de 2 traps authenticatie uitschakelen. Ben je zeker?',
|
||||
'This will remove your personal data from this site. You will no longer be able to sign in.' => 'Dit zal jouw persoonlijke data van de website wissen. Je zal niet langer kunnen inloggen.',
|
||||
'Time zone' => 'Tijdzone',
|
||||
'Time zone is not valid' => 'Tijdzone is niet geldig',
|
||||
'Two Factor Authentication (2FA)' => '2 traps authenticatie (2FA)',
|
||||
'Two factor authentication code' => '2 traps authenticatie code',
|
||||
'Two factor authentication has been disabled.' => '2 traps authenticatie is uitgeschakeld',
|
||||
'Two factor authentication protects you against stolen credentials' => '2 traps authenticatie beschermt je tegen gestolen inloggegevens',
|
||||
'Two factor authentication successfully enabled.' => '2 traps authenticatie met succes ingeschakeld',
|
||||
'Unable to confirm user. Please, try again.' => 'Kan de gebruiker niet bevestigen. Probeer opnieuw.',
|
||||
'Unable to create an account.' => 'Kan geen account aanmaken.',
|
||||
'Unable to create authorization item.' => 'Kan geen authorisatie-item aanmaken',
|
||||
'Unable to create new authorization rule.' => 'Kan geen authorisatieregel aanmaken',
|
||||
'Unable to delete user. Please, try again later.' => 'Kan de gebruiker niet wissen. Probeer later opnieuw.',
|
||||
'Unable to disable Two factor authentication.' => 'Kan de 2 traps authenticatie niet uitschakelen.',
|
||||
'Unable to remove authorization item.' => 'Kan het authorisatie item niet wissen.',
|
||||
'Unable to send confirmation link' => 'Kan de bevestigingsmail niet versturen',
|
||||
'Unable to send recovery message to the user' => 'Kan de herstel-mail niet naar de gebruiker versturen',
|
||||
'Unable to update authorization item.' => 'Kan het authorisatie-item niet aanpassen.',
|
||||
'Unable to update authorization rule.' => 'Kan de authorisatieregel niet aanpassen.',
|
||||
'Unable to update block status.' => 'Kan de geblokkeerstatus niet aanpassen',
|
||||
'Unblock' => 'Maak actief',
|
||||
'Unconfirmed' => 'Niet bevestigd',
|
||||
'Update' => 'Update',
|
||||
'Update assignments' => 'Update toewijzingen',
|
||||
'Update permission' => 'Update machtigingen',
|
||||
'Update role' => 'Update rol',
|
||||
'Update rule' => 'Update regel',
|
||||
'Update user account' => 'Update gebruikersaccount',
|
||||
'Updated at' => 'geüpdatet op',
|
||||
'User account could not be created.' => 'Gebruikers-account kan niet worden aangemaakt.',
|
||||
'User block status has been updated.' => 'Blokkering gebruiker is aangepast.',
|
||||
'User could not be registered.' => 'Gebruiker kan niet worden geregistreerd.',
|
||||
'User has been confirmed' => 'Gebruiker is bevestigd',
|
||||
'User has been created' => 'Gebruiker is aangemaakt',
|
||||
'User has been deleted' => 'Gebruiker is verwijderd',
|
||||
'User is not found' => 'Gebruiker niet gevonden',
|
||||
'User not found.' => 'Gebruiker niet gevonden',
|
||||
'User will be required to change password at next login' => 'Gebruiker zal verplicht worden zijn wachtwoord aan te passen bij volgende login',
|
||||
'Username' => 'Gebruikersnaam',
|
||||
'Users' => 'Gebruikers',
|
||||
'VKontakte' => 'VKontakte',
|
||||
'Verification failed. Please, enter new code.' => 'Bevestiging mislukt. Geef een nieuwe code op.',
|
||||
'We couldn\'t re-send the mail to confirm your address. Please, verify is the correct email or if it has been confirmed already.' => 'Het was niet mogelijk een email te sturen om je adres te bevestigen. Controleer het email-adres en controleer of het niet al bevestigd is.',
|
||||
'We have generated a password for you' => 'Er is een wachtwoord voor je ingesteld',
|
||||
'We have received a request to change the email address for your account on {0}' => 'We ontvingen een aanvraag om het email-adres te wijzigen voor je account op {0}',
|
||||
'We have received a request to reset the password for your account on {0}' => 'Wij ontvingen een aanvraag om je wachtwoord te herstellen voor je account op {0}',
|
||||
'We have sent confirmation links to both old and new email addresses. You must click both links to complete your request.' => 'Er is een bevestigingslink naar zowel je oude als je nieuwe email adres gestuurd. Je moet beiden links openen om de aanvraag te voltooien.',
|
||||
'Website' => 'Website',
|
||||
'Welcome to {0}' => 'Welkom bij {0}',
|
||||
'Yandex' => 'Yandex',
|
||||
'You are about to delete all your personal data from this site.' => 'Je staat op het punt om al je persoonlijke gegevens te wissen van deze website',
|
||||
'You can assign multiple roles or permissions to user by using the form below' => 'Je kan meerdere rollen of machtigingen toewijzen aan de gebruiker doormiddel van onderstaand formulier',
|
||||
'You can connect multiple accounts to be able to log in using them' => 'Je kan meerdere accounts verbinden om met deze accounts in te loggen',
|
||||
'You cannot remove your own account' => 'Je kan je eigen account niet verwijderen.',
|
||||
'You need to confirm your email address' => 'Je moet je email-adres nog bevestigen',
|
||||
'Your account details have been updated' => 'Je account-details werden bijgewerkt',
|
||||
'Your account has been blocked' => 'Je account is geblokkeerd',
|
||||
'Your account has been blocked.' => 'Je account is geblokkeerd.',
|
||||
'Your account has been completely deleted' => 'Je account is volledig verwijderd',
|
||||
'Your account has been connected' => 'Je account is verbonden',
|
||||
'Your account has been created' => 'Je account is aangemaakt',
|
||||
'Your account has been created and a message with further instructions has been sent to your email' => 'Je account is aangemaakt en een bericht met verdere instructies is naar je e-mailadres verzonden',
|
||||
'Your account on {0} has been created' => 'Je account op {0} is aangemaakt',
|
||||
'Your confirmation token is invalid or expired' => 'Je bevestigingscode is ongeldig of verlopen',
|
||||
'Your consent is required to register' => 'Je moet akkoord gaan met je toestemming om te registreren',
|
||||
'Your email address has been changed' => 'Je email adres werd gewijzigd',
|
||||
'Your password has expired, you must change it now' => 'Je wachtwoord is verlopen. Het moet nu gewijzigd worden',
|
||||
'Your personal information has been removed' => 'Je persoonlijke gegevens zijn verwijderd',
|
||||
'Your profile has been updated' => 'Je profiel is bijgewerkt',
|
||||
'privacy policy' => 'privacy policy',
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM, YYYY HH:mm}',
|
||||
'{0} cannot be blank.' => '{0} kan niet leeg zijn.',
|
||||
'A message has been sent to your email address. ' => '@@@@',
|
||||
'Awesome, almost there. ' => '@@@@',
|
||||
'Class \'{0}\' does not exist' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@',
|
||||
'Invalid two-factor code' => '@@@@',
|
||||
'Last login' => '@@@@',
|
||||
'Registration ip' => '@@@@',
|
||||
'Rule class can not be instantiated' => '@@@@',
|
||||
'Rule class must extend \'yii\rbac\Rule\'' => '@@@@',
|
||||
'This will disable two-factor auth. Are you sure?' => '@@@@',
|
||||
'Two Factor Authentication' => '@@@@',
|
||||
'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. ' => '@@@@',
|
||||
'We have sent confirmation links to both old and new email addresses. ' => '@@@@',
|
||||
];
|
||||
@ -91,7 +91,7 @@ return [
|
||||
'Didn\'t receive confirmation message?' => 'Nie otrzymałeś emaila aktywacyjnego?',
|
||||
'Disable two factor authentication' => 'Wyłącz uwierzytelnianie dwuetapowe',
|
||||
'Disconnect' => 'Odłącz',
|
||||
'Don\'t have an account? Sign up!' => 'Nie masz jeszcze konto? Zarejestruj się!',
|
||||
'Don\'t have an account? Sign up!' => 'Nie masz jeszcze konta? Zarejestruj się!',
|
||||
'Download my data' => 'Pobierz swoje dane',
|
||||
'Email' => 'Email',
|
||||
'Email (public)' => 'Email (publiczny)',
|
||||
@ -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,27 +265,38 @@ 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.' => '',
|
||||
'Active' => '',
|
||||
'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.' => '',
|
||||
'Current' => '',
|
||||
'Data privacy' => '',
|
||||
'IP' => '',
|
||||
'Inactive' => '',
|
||||
'Last activity' => '',
|
||||
'Rule class name' => '',
|
||||
'Select rule...' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'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.' => '',
|
||||
'User ID' => '',
|
||||
'User agent' => '',
|
||||
'Your consent is required to work with this site' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'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@@',
|
||||
'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}' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Invalid two-factor code' => '@@Nieprawidłowy kod uwierzytelniania dwuetapowego@@',
|
||||
'Last login' => '@@Data ostatniego logowania@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
'This will disable two-factor auth. Are you sure?' => '@@To wyłączy uwierzytelnianie dwuetapowe. Czy jesteś pewny?@@',
|
||||
'Two Factor Authentication' => '@@Uwierzytelnianie dwuetapowe@@',
|
||||
'Two factor authentication protects you against stolen credentials' => '@@Uwierzytelnianie dwuetapowe chroni Cię przed kradzieżą danych logowania@@',
|
||||
|
||||
@ -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,30 +265,44 @@ 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.' => '',
|
||||
'Active' => '',
|
||||
'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.' => '',
|
||||
'Current' => '',
|
||||
'Data privacy' => '',
|
||||
'IP' => '',
|
||||
'Inactive' => '',
|
||||
'Last activity' => '',
|
||||
'Rule class name' => '',
|
||||
'Select rule...' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'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.' => '',
|
||||
'User ID' => '',
|
||||
'User agent' => '',
|
||||
'Your consent is required to work with this site' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'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á.@@',
|
||||
'Class "{0}" does not exist' => '@@A classe "{0}" não existe@@',
|
||||
'Disable Two-Factor Auth' => '@@Desabilitar autenticação em dois fatores@@',
|
||||
'Enable Two-factor auth' => '@@Habilitar autenticação em dois fatores@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'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}' => '@@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 nosso {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}' => '@@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 nosso {privacyPolicy}@@',
|
||||
'Invalid two-factor code' => '@@Código de dois fatores inválido@@',
|
||||
'Last login' => '@@Último login@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
'Registration ip' => '@@IP de registro@@',
|
||||
'Rule class can not be instantiated' => '@@A classe de regras não pode ser instanciada@@',
|
||||
'Rule class must extend "yii\\rbac\\Rule"' => '@@A classe de regras deve estender de "yii\\rbac\\Rule"@@',
|
||||
|
||||
@ -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,54 +254,42 @@ 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@@',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '@@@@',
|
||||
'privacy policy' => 'politica de privacidade',
|
||||
'{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.' => '',
|
||||
'Active' => '',
|
||||
'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' => '',
|
||||
'Current' => '',
|
||||
'Data privacy' => '',
|
||||
'Email' => '',
|
||||
'Gravatar email' => '',
|
||||
'IP' => '',
|
||||
'Inactive' => '',
|
||||
'Items' => '',
|
||||
'Last activity' => '',
|
||||
'Password' => '',
|
||||
'Rule class name' => '',
|
||||
'Select rule...' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'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.' => '',
|
||||
'User ID' => '',
|
||||
'User agent' => '',
|
||||
'VKontakte' => '',
|
||||
'Website' => '',
|
||||
'Yandex' => '',
|
||||
'Your consent is required to work with this site' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||
'{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@@',
|
||||
'Awesome, almost there. ' => '@@@@',
|
||||
'Class "{0}" does not exist' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@',
|
||||
'Invalid two-factor code' => '@@@@',
|
||||
'Last login' => '@@@@',
|
||||
'Registration ip' => '@@@@',
|
||||
'Rule class can not be instantiated' => '@@@@',
|
||||
'Rule class must extend "yii\\rbac\\Rule"' => '@@@@',
|
||||
'This will disable two-factor auth. Are you sure?' => '@@@@',
|
||||
'Two Factor Authentication' => '@@@@',
|
||||
'Two factor authentication protects you against stolen credentials' => '@@Autenticação de dois passos protege-o do roubo de credenciais de acesso@@',
|
||||
'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. ' => '@@@@',
|
||||
'We have sent confirmation links to both old and new email addresses. ' => '@@@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
];
|
||||
|
||||
@ -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,29 +265,43 @@ 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.' => '',
|
||||
'Active' => '',
|
||||
'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.' => '',
|
||||
'Current' => '',
|
||||
'Data privacy' => '',
|
||||
'IP' => '',
|
||||
'Inactive' => '',
|
||||
'Last activity' => '',
|
||||
'Rule class name' => '',
|
||||
'Select rule...' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'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.' => '',
|
||||
'User ID' => '',
|
||||
'User agent' => '',
|
||||
'Your consent is required to work with this site' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'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.@@',
|
||||
'Disable Two-Factor Auth' => '@@Dezactivați autentificarea cu două factori@@',
|
||||
'Enable Two-factor auth' => '@@Activați Auth@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'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}' => '@@Am agregat prelucrarea datelor mele personale și utilizarea cookie-urilor pentru a facilita funcționarea acestui site. Pentru mai multe informații, citiți {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}' => '@@Am agregat prelucrarea datelor mele personale și utilizarea cookie-urilor pentru a facilita funcționarea acestui site. Pentru mai multe informații, citiți {privacyPolicy}@@',
|
||||
'Invalid two-factor code' => '@@Cod de două factori nevalid@@',
|
||||
'Last login' => '@@Ultima logare@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
'This will disable two-factor auth. Are you sure?' => '@@Aceasta va dezactiva auth-ul cu două factori. Esti sigur?@@',
|
||||
'Two Factor Authentication' => '@@Două autentificare cu factori@@',
|
||||
'Two factor authentication protects you against stolen credentials' => '@@Autentificarea cu două factori vă protejează împotriva acreditărilor furate@@',
|
||||
|
||||
21
src/User/resources/i18n/ru/usuario.php
Normal file → Executable file
21
src/User/resources/i18n/ru/usuario.php
Normal file → Executable file
@ -27,6 +27,7 @@ return [
|
||||
'Account details' => 'Детали аккаунта',
|
||||
'Account details have been updated' => 'Аккаунт был обновлен',
|
||||
'Account settings' => 'Настройки аккаунта',
|
||||
'Active' => 'Активно',
|
||||
'Already registered? Sign in!' => 'Уже зарегистрированы? Войдите!',
|
||||
'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.' => 'Письмо с инструкциями по созданию нового пароля было выслано на {email}, в случае если данный адрес связан с {appName} аккаунтом',
|
||||
'An error occurred processing your request' => 'Во время выполнения запроса произошла ошибка',
|
||||
@ -80,6 +81,7 @@ return [
|
||||
'Create new rule' => 'Создать правило',
|
||||
'Created at' => 'Дата создания',
|
||||
'Credentials will be sent to the user by email' => 'Данные для входа будут отправлены пользователю на почту',
|
||||
'Current' => 'Текущий',
|
||||
'Current password' => 'Текущий пароль',
|
||||
'Current password is not valid' => 'Текущий пароль введён неправильно',
|
||||
'Data processing consent' => 'Cогласие на обработку данных',
|
||||
@ -110,7 +112,8 @@ 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}',
|
||||
'IP' => 'IP',
|
||||
'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' => 'Если вы получили это сообщение по ошибке, просто проигнорируйте или удалите его',
|
||||
@ -118,6 +121,7 @@ return [
|
||||
'In order to complete your registration, please click the link below' => 'Чтобы активировать свой аккаунт, пожалуйста, нажмите на ссылку ниже',
|
||||
'In order to complete your request, please click the link below' => 'Чтобы завершить запрос, нажмите на ссылку ниже',
|
||||
'In order to finish your registration, we need you to enter following fields' => 'Чтобы закончить регистрацию, заполните следующие поля',
|
||||
'Inactive' => 'Не активно',
|
||||
'Information' => 'Информация',
|
||||
'Invalid login or password' => 'Неправильный логин или пароль',
|
||||
'Invalid or expired link' => 'Ссылка неправильна или устарела',
|
||||
@ -127,6 +131,7 @@ return [
|
||||
'It will be deleted forever' => 'Он будет удалён навсегда',
|
||||
'Items' => 'Элементы',
|
||||
'Joined on {0, date}' => 'Зарегистрирован {0, date}',
|
||||
'Last activity' => 'Последняя активность',
|
||||
'Last login IP' => 'IP последнего входа',
|
||||
'Last login time' => 'Время последнего входа',
|
||||
'Last password change' => 'Последняя смена пароля',
|
||||
@ -185,10 +190,15 @@ return [
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => 'Просканируйте QR-код приложением Google Authenticator App, затем вставьте временный код в поле и отправьте.',
|
||||
'Select rule...' => 'Выберите правило...',
|
||||
'Send password recovery email' => 'Отправить письмо с восстановлением пароля',
|
||||
'Session ID' => 'ID сесии',
|
||||
'Session history' => 'История сессий',
|
||||
'Sign in' => 'Войти',
|
||||
'Sign up' => 'Зарегистрироваться',
|
||||
'Something went wrong' => 'Что-то пошло не так',
|
||||
'Status' => 'Статус',
|
||||
'Submit' => 'Подтвердить',
|
||||
'Switch identities is disabled.' => 'Переключение на другой аккаунт отключено.',
|
||||
'Terminate all sessions' => 'Прекратить другие сеансы',
|
||||
'Thank you for signing up on {0}' => 'Спасибо за регистрацию на сайте {0}',
|
||||
'Thank you, registration is now complete.' => 'Поздравляем, регистрация успешно завершена!',
|
||||
'The "recaptcha" component must be configured.' => 'Необходимо настроить компонент "recaptcha"',
|
||||
@ -229,7 +239,9 @@ return [
|
||||
'Update rule' => 'Изменить правило',
|
||||
'Update user account' => 'Обновить аккаунт пользователя',
|
||||
'Updated at' => 'Дата редактирования',
|
||||
'User ID' => 'ID пользователя',
|
||||
'User account could not be created.' => 'Не удалось создать аккаунт для пользователя.',
|
||||
'User agent' => 'User agent',
|
||||
'User block status has been updated.' => 'Статус блокировки пользователя обновлён.',
|
||||
'User could not be registered.' => 'Не удалось зарегистрировать пользователя.',
|
||||
'User has been confirmed' => 'Пользователь был активирован',
|
||||
@ -265,11 +277,12 @@ return [
|
||||
'Your account on {0} has been created' => 'Ваш аккаунт на сайте "{0}" был успешно создан',
|
||||
'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' => 'Ваш email был успешно изменён',
|
||||
'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} не может быть пустым.',
|
||||
@ -278,15 +291,17 @@ return [
|
||||
'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' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'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}' => '@@@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Invalid two-factor code' => '@@Неверный код двухфакторной авторизации@@',
|
||||
'Last login' => '@@Последний вход@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
'Registration ip' => '@@IP при регистрации@@',
|
||||
'Rule class can not be instantiated' => '@@Класс правила не может быть создан@@',
|
||||
'Rule class must extend "yii\\rbac\\Rule"' => '@@Класс правила должен наследоваться от "yii\\rbac\\Rule"@@',
|
||||
|
||||
282
src/User/resources/i18n/sk/usuario.php
Normal file
282
src/User/resources/i18n/sk/usuario.php
Normal file
@ -0,0 +1,282 @@
|
||||
<?php
|
||||
/**
|
||||
* Message translations.
|
||||
*
|
||||
* This file is automatically generated by 'yii message/extract' command.
|
||||
* It contains the localizable messages extracted from source code.
|
||||
* You may modify this file by translating the extracted messages.
|
||||
*
|
||||
* Each array element represents the translation (value) of a message (key).
|
||||
* If the value is empty, the message is considered as not translated.
|
||||
* Messages that no longer need translation will have their translations
|
||||
* enclosed between a pair of '@@' marks.
|
||||
*
|
||||
* Message string can be used with plural forms format. Check i18n section
|
||||
* of the guide for details.
|
||||
*
|
||||
* NOTE: this file must be saved in UTF-8 encoding.
|
||||
*/
|
||||
return [
|
||||
'(not set)' => '(prázdne)',
|
||||
'A confirmation message has been sent to your new email address'
|
||||
=> 'Na Vašu novú e-mailovú adresu bola odoslaná potvrdzujúca správa',
|
||||
'A message has been sent to your email address. It contains a confirmation link that you must '.
|
||||
'click to complete registration.'
|
||||
=> 'Na Vašu e-mailovú adresu bola odoslaná správa. '.
|
||||
'Obsahuje potvrdzovací odkaz, na ktorý musíte kliknúť, aby ste dokončili registráciu.',
|
||||
'A new confirmation link has been sent' => 'Bol odoslaný nový potvrdzovací odkaz',
|
||||
'A password will be generated automatically if not provided' => 'Ak chcete automaticky generovať heslo, nechajte pole prázdne',
|
||||
'Account' => 'Účet',
|
||||
'Account confirmation' => 'Potvrdenie účtu',
|
||||
'Account details' => 'Detail účtu',
|
||||
'Account details have been updated' => 'Nastavenia účtu boli aktualizované',
|
||||
'Account settings' => 'Nastavenia účtu',
|
||||
'Already registered? Sign in!' => 'Už ste registrovaný? Prihláste sa!',
|
||||
'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.' =>
|
||||
'E-mail s pokynmi na vytvorenie hesla bol odoslaný na adresu {email},'.
|
||||
'za predpokladu, že je prepojený s účtom {appName}. Aktuálne heslo sa nezmenilo.',
|
||||
'An error occurred processing your request' => 'Pri spracovaní Vašej žiadosti sa vyskytla chyba',
|
||||
'Are you sure you want to block this user?' => 'Naozaj chcete zablokovať tohto používateľa?',
|
||||
'Are you sure you want to confirm this user?' => 'Naozaj chcete potvrdiť tohto používateľa?',
|
||||
'Are you sure you want to delete this user?' => 'Naozaj chcete tohto používateľa odstrániť?',
|
||||
'Are you sure you want to switch to this user for the rest of this Session?' => 'Naozaj chcete na tohto používateľa prepnúť na zvyšok tejto relácie?',
|
||||
'Are you sure you want to unblock this user?' => 'Naozaj chcete tohto používateľa znova aktivovať?',
|
||||
'Are you sure you wish the user to change their password at next login?' => 'Naozaj chcete, aby používateľ zmenil svoje heslo pri ďalšom prihlásení?',
|
||||
'Are you sure you wish to send a password recovery email to this user?' => 'Naozaj chcete tomuto používateľovi poslať e-mail na obnovenie hesla?',
|
||||
'Are you sure? Deleted user can not be restored' => 'Si si istý? Odstránených používateľov nie je možné obnoviť',
|
||||
'Are you sure? There is no going back' => 'Si si istý? Už niet cesty späť',
|
||||
'Assignments' => 'Priradenia',
|
||||
'Assignments have been updated' => 'Priradenia boli aktualizované',
|
||||
'Auth item with such name already exists' => 'Autorizácia s týmto menom už existuje',
|
||||
'Authentication rule class {0} can not be instantiated' => 'Nie je možné vytvoriť inštanciu pravidla overovania triedy {0}',
|
||||
'Authorization item successfully created.' => 'Autorizácia bola úspešne vytvorená',
|
||||
'Authorization item successfully removed.' => 'Autorizácia bola úspešne odstránená',
|
||||
'Authorization item successfully updated.' => 'Autorizácia bola úspešne uložená',
|
||||
'Authorization rule has been added.' => 'Bolo pridané autorizačné pravidlo.',
|
||||
'Authorization rule has been removed.' => 'Pravidlo autorizácie bolo odstránené.',
|
||||
'Authorization rule has been updated.' => 'Pravidlo autorizácie bolo uložené.',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your new email address.' => 'Takmer to máte. Teraz stačí navštíviť aktivačný odkaz, ktorý bol odoslaný na Vašu novú e-mailovú adresu.',
|
||||
'Awesome, almost there. Now you need to click the confirmation link sent to your old email address.' => 'Takmer to máte. Všetko, čo musíte urobiť, je navštíviť aktivačný odkaz, ktorý bol odoslaný na Vašu starú e-mailovú adresu.',
|
||||
'Back to privacy settings' => 'Späť na nastavenia ochrany osobných údajov',
|
||||
'Bio' => 'Bio',
|
||||
'Block' => 'Zablokovať',
|
||||
'Block status' => 'Stav blokácie',
|
||||
'Blocked at {0, date, MMMM dd, YYYY HH:mm}' => 'Zablokovaný {0, date, dd. MMMM YYYY, HH:mm}',
|
||||
'Cancel' => 'Zrušiť',
|
||||
'Cannot assign role "{0}" as the AuthManager is not configured on your console application.' => 'Nemôžeme priradiť rolu "{0}", pretože AuthManager nie je nakonfigurovaný v konzolovej aplikácii.',
|
||||
'Change your avatar at Gravatar.com' => 'Zmeniť Váš Avatar cez Gravatar.com',
|
||||
'Children' => 'Dieťa',
|
||||
'Class' => 'Trieda',
|
||||
'Close' => 'Zavrieť',
|
||||
'Complete password reset on {0}' => 'Dokončenie obnovenia hesla dňa {0}',
|
||||
'Confirm' => 'Potvrdiť',
|
||||
'Confirm account on {0}' => 'Účet potvrdený {0}',
|
||||
'Confirm email change on {0}' => 'Potvrdiť zmenu e-mailu na {0}',
|
||||
'Confirmation' => 'Potvrdenie',
|
||||
'Confirmation status' => 'Stav potvrdenia',
|
||||
'Confirmation time' => 'Čas potvrdenia',
|
||||
'Confirmed' => 'Potvrdené',
|
||||
'Confirmed at {0, date, MMMM dd, YYYY HH:mm}' => 'Potvrdené o{0, date, dd. MMMM YYYY, HH::mm}',
|
||||
'Connect' => 'Pripojiť',
|
||||
'Continue' => 'Pokračovať',
|
||||
'Create' => 'Vytvoriť',
|
||||
'Create a user account' => 'Vytvoriť nové honto',
|
||||
'Create new permission' => 'Vytvoriť nové povolenie',
|
||||
'Create new role' => 'Vytvoriť novú rolu',
|
||||
'Create new rule' => 'Vytvoriť nové pravidlo',
|
||||
'Created at' => 'Vytvorené',
|
||||
'Credentials will be sent to the user by email' => 'Prístupové údaje sa používateľovi zasielajú e-mailom',
|
||||
'Current password' => 'Aktuálne heslo',
|
||||
'Current password is not valid' => 'Aktuálne heslo nie je správne',
|
||||
'Data processing consent' => 'Súhlas so spracovaním údajov',
|
||||
'Delete' => 'Vymazať',
|
||||
'Delete account' => 'Vymazať účet',
|
||||
'Delete my account' => 'Odstrániť môj používateľský účet',
|
||||
'Delete personal data' => 'Vymazať osobné údaje',
|
||||
'Deleted by GDPR request' => 'Vymazané podľa požiadaviek GDPR',
|
||||
'Description' => 'Popis',
|
||||
'Didn\'t receive confirmation message?' => 'Potvrdzovací e-mail nebol prijatý?',
|
||||
'Disable two factor authentication' => 'Deaktivujte dvojfaktorovú autentifikáciu',
|
||||
'Disconnect' => 'Odpojiť',
|
||||
'Don\'t have an account? Sign up!' => 'Ešte nemáte účet? Zaregistrovať sa!',
|
||||
'Download my data' => 'Stiahnite si svoje vlastné údaje',
|
||||
'Email' => 'E-Mail',
|
||||
'Email (public)' => 'E-Mail (verejný)',
|
||||
'Enable' => 'aktivovať',
|
||||
'Enable two factor authentication' => 'Povoliť dvojfaktorové overenie',
|
||||
'Error occurred while changing password' => 'Chyba pri zmene hesla',
|
||||
'Error occurred while confirming user' => 'Nepodarilo sa potvrdiť používateľa',
|
||||
'Error occurred while deleting user' => 'Chyba pri mazaní používateľa',
|
||||
'Error sending registration message to "{email}". Please try again later.' => 'Nepodarilo sa odoslať registračnú správu na "{email}". Skúste neskôr prosím.',
|
||||
'Error sending welcome message to "{email}". Please try again later.' => 'Chyba pri odosielaní uvítacej správy na „{email}“. Skúste neskôr prosím.',
|
||||
'Export my data' => 'Exportujte svoje vlastné údaje',
|
||||
'Finish' => 'Hotovo',
|
||||
'Force password change at next login' => 'Vynútiť zmenu hesla pri ďalšom prihlásení',
|
||||
'Forgot password?' => 'Zabudli ste heslo?',
|
||||
'Gravatar email' => 'Gravatarový e-mail',
|
||||
'Hello' => 'Dobrý deň',
|
||||
'Here you can download your personal data in a comma separated values format.' => 'Tu si môžete stiahnuť svoje osobné údaje vo formáte oddelenom čiarkami',
|
||||
'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}' => 'Súhlasím so spracovaním mojich osobných údajov a používaním súborov cookie s cieľom zjednodušiť užívateľa tejto služby. Ďalšie informácie sú k dispozícii na našej {privacyPolicy}',
|
||||
'If you already registered, sign in and connect this account on settings page' => 'Ak ste sa už zaregistrovali, prihláste sa a pripojte daný účet na stránke nastavení',
|
||||
'If you cannot click the link, please try pasting the text into your browser' => 'Ak na odkaz nemôžete kliknúť, skúste ho pridať na panel prehľadávača',
|
||||
'If you did not make this request you can ignore this email' => 'Ak ste túto žiadosť nepodali, môžete tento e-mail ignorovať',
|
||||
'Impersonate this user' => 'Prepnúť na tohto používateľa',
|
||||
'In order to complete your registration, please click the link below' => 'Pre dokončenie registrácie kliknite na odkaz dole',
|
||||
'In order to complete your request, please click the link below' => 'Ak chcete dokončiť svoju požiadavku, kliknite na odkaz nižšie',
|
||||
'In order to finish your registration, we need you to enter following fields' => 'Aby ste mohli dokončiť svoju registráciu, musíte vyplniť nasledujúce polia',
|
||||
'Information' => 'Informácia',
|
||||
'Invalid login or password' => 'Nesprávne prihlasovacie meno alebo heslo',
|
||||
'Invalid or expired link' => 'Nesprávne alebo už expirovaný odkaz',
|
||||
'Invalid password' => 'Nesprávne heslo',
|
||||
'Invalid two factor authentication code' => 'Nesprávny kód dvoj-faktorového prihlásenia',
|
||||
'Invalid value' => 'Nesprávna hodnota',
|
||||
'It will be deleted forever' => 'Vymazanie je nenávratné',
|
||||
'Items' => 'Položky',
|
||||
'Joined on {0, date}' => 'Pripojené {0, date}',
|
||||
'Last login IP' => 'Posledné IP prihlásenia',
|
||||
'Last login time' => 'Posledné prihlásenie',
|
||||
'Last password change' => 'Posledná zmena hesla',
|
||||
'Location' => 'Umiestnenie',
|
||||
'Login' => 'Prihlasovacie meno',
|
||||
'Logout' => 'Odhlásenie',
|
||||
'Manage users' => 'Správa užívateľov',
|
||||
'Name' => 'Meno',
|
||||
'Networks' => 'Siete',
|
||||
'Never' => 'Nikdy',
|
||||
'New email' => 'Nový E-Mail',
|
||||
'New password' => 'Nové heslo',
|
||||
'New permission' => 'Nové povolenie',
|
||||
'New role' => 'Nová rola',
|
||||
'New rule' => 'Nové pravidlo',
|
||||
'New user' => 'Nový užívateľ',
|
||||
'Not blocked' => 'Odblokovaný',
|
||||
'Not found' => 'Nenájdené',
|
||||
'Once you delete your account, there is no going back' => 'Po odstránení účtu už niet cesty späť',
|
||||
'Once you have deleted your data, you will not longer be able to sign in with this account.' => 'Ak ste odstránili svoje vlastné údaje, pomocou tohto používateľského mena sa už nemôžete prihlásiť.',
|
||||
'Password' => 'Heslo',
|
||||
'Password age' => 'Platnosť hesla',
|
||||
'Password has been changed' => 'Heslo bolo zmenene',
|
||||
'Permissions' => 'Povolenia',
|
||||
'Please be certain' => 'Si si naozaj istý?',
|
||||
'Please click the link below to complete your password reset' => 'Obnovu hesla dokončíte kliknutím na nasledujúci odkaz',
|
||||
'Please fix following errors:' => 'Opravte nasledujúce chyby:',
|
||||
'Privacy' => 'Súkromie',
|
||||
'Privacy settings' => 'Nastavenia ochrany osobných údajov',
|
||||
'Profile' => 'Profil',
|
||||
'Profile details' => 'Detail profilu',
|
||||
'Profile details have been updated' => 'Detail profilu bol aktualizovaný',
|
||||
'Profile settings' => 'Nastavenie profilu',
|
||||
'Recover your password' => 'Obnovoť Vaše heslo',
|
||||
'Recovery link is invalid or expired. Please try requesting a new one.' => 'Odkaz na obnovenie je nesprávny alebo jeho platnosť uplynula. Vyžiadajte si nový',
|
||||
'Recovery message sent' => 'Správa o obnovení bola odoslaná',
|
||||
'Registration IP' => 'Registračná IP',
|
||||
'Registration on this website is disabled' => 'Registrácia na tomto webe je deaktivovaná',
|
||||
'Registration time' => 'Čas registrácie',
|
||||
'Remember me next time' => 'Zapamätať si prihlásenie',
|
||||
'Request new confirmation message' => 'Vyžiadajte si nový odkaz na obnovenie',
|
||||
'Required "key" cannot be empty.' => 'Požadovaný "kľúč" nemôže byť prázdny.',
|
||||
'Required "secret" cannot be empty.' => 'Povinné "tajomstvo" nemôže byť prázdne.',
|
||||
'Reset your password' => 'Obnoviť heslo',
|
||||
'Role "{0}" not found. Creating it.' => 'Rola "{0}" sa nenašla. Vytvorte ju.',
|
||||
'Roles' => 'Role',
|
||||
'Rule' => 'Pravidlo',
|
||||
'Rule class must extend "yii\\rbac\\Rule".' => 'Trieda pravidla musí obsahovať výraz "yii\\rbac \\Rule".',
|
||||
'Rule class name' => 'Názov triedy pravidla',
|
||||
'Rule name' => 'Názov pravidla',
|
||||
'Rule name {0} is already in use' => 'Názov pravidla {0} sa už používa',
|
||||
'Rule {0} does not exists' => 'Pravidlo {0} neexistuje',
|
||||
'Rule {0} not found.' => 'Pravidlo {0} sa nenašlo.',
|
||||
'Rules' => 'Pravidlá',
|
||||
'Save' => 'Uložiť',
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => 'Naskenujte Qr kód pomocou aplikácie Google Authenticator, potom vložte dočasný kľúč do poľa a odošlite ho.',
|
||||
'Select rule...' => 'Vyberte pravidlo ...',
|
||||
'Send password recovery email' => 'Pošlite e-mail na obnovenie hesla',
|
||||
'Sign in' => 'Prihlásenie',
|
||||
'Sign up' => 'Registrácia',
|
||||
'Something went wrong' => 'Niečo sa pokazilo',
|
||||
'Switch identities is disabled.' => 'Prepínanie identít je deaktivované.',
|
||||
'Thank you for signing up on {0}' => 'Ďakujeme za registráciu dňa {0}',
|
||||
'Thank you, registration is now complete.' => 'Ďakujeme, Vaša registrácia je teraz dokončená.',
|
||||
'The "recaptcha" component must be configured.' => 'Musí byť nakonfigurovaný komponent „recaptcha“',
|
||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => 'Váš aktivačný odkaz je nesprávny alebo jeho platnosť uplynula. Vyžiadajte si nový.',
|
||||
'The verification code is incorrect.' => 'Overovací kľúč je neplatný',
|
||||
'There is neither role nor permission with name "{0}"' => 'S menom "{0}" neexistuje ani rola, ani autorizácia.',
|
||||
'There was an error in saving user' => 'Chyba pri ukladaní používateľa',
|
||||
'This account has already been connected to another user' => 'Tento účet už bol pripojený iným používateľom',
|
||||
'This email address has already been taken' => 'Emailová adresa je už použitá',
|
||||
'This username has already been taken' => 'Toto uživateľské meno je už obsadené',
|
||||
'This will disable two factor authentication. Are you sure?' => 'Týmto sa deaktivuje dvojfaktorová autentifikácia. Si si istý?',
|
||||
'This will remove your personal data from this site. You will no longer be able to sign in.' => 'Týmto vymažete svoje osobné údaje z tejto služby. Už sa nebudete môcť prihlásiť.',
|
||||
'Time zone' => 'Časové pásmo',
|
||||
'Time zone is not valid' => 'Časové pásmo je nesprávne',
|
||||
'Two Factor Authentication (2FA)' => 'Dvoj-faktorové prihlásenie (2FA)',
|
||||
'Two factor authentication code' => 'Kód dvoj-faktorového prihlásenia',
|
||||
'Two factor authentication has been disabled.' => 'Dvoj-faktorové prihlásenie bolo deaktivované',
|
||||
'Two factor authentication protects you in case of stolen credentials' => 'Dvoj-faktorové prihlásenie Vás chráni pred únikom prihlasovacích údajov',
|
||||
'Two factor authentication successfully enabled.' => 'Dvoj-faktorové prihlásenie bolo úspešne aktivované',
|
||||
'Unable to confirm user. Please, try again.' => 'Používateľa nebolo možné potvrdiť. Prosím skúste znova.',
|
||||
'Unable to create an account.' => 'Účet sa nepodarilo vytvoriť.',
|
||||
'Unable to create authorization item.' => 'Položku autorizácie sa nepodarilo vytvoriť',
|
||||
'Unable to create new authorization rule.' => 'Nie je možné vytvoriť nové pravidlo overovania.',
|
||||
'Unable to delete user. Please, try again later.' => 'Používateľa sa nepodarilo odstrániť.',
|
||||
'Unable to disable Two factor authentication.' => 'Chyba pri deaktivácii dvoj-faktorovej autentifikácie',
|
||||
'Unable to remove authorization item.' => 'Položku autorizácie sa nepodarilo vymazať.',
|
||||
'Unable to send confirmation link' => 'Nepodarilo sa odoslať odkaz na potvrdenie',
|
||||
'Unable to send recovery message to the user' => 'Používateľovi sa nepodarilo odoslať správu na obnovenie.',
|
||||
'Unable to update authorization item.' => 'Nepodarilo sa aktualizovať položku autorizácie.',
|
||||
'Unable to update authorization rule.' => 'Pravidlo autorizácie sa nepodarilo uložiť.',
|
||||
'Unable to update block status.' => 'Stav blokovania sa nepodarilo zmeniť',
|
||||
'Unblock' => 'Odblokovať',
|
||||
'Unconfirmed' => 'Nepotvrdený',
|
||||
'Update' => 'Aktualizovať',
|
||||
'Update assignments' => 'Aktualizovať priradenie',
|
||||
'Update permission' => 'Aktualizovať povolenie',
|
||||
'Update role' => 'Aktualizovať rolu',
|
||||
'Update rule' => 'Aktualizovať pravidlo',
|
||||
'Update user account' => 'Aktualizovať účet',
|
||||
'Updated at' => 'Aktualizované',
|
||||
'User account could not be created.' => 'Používateľský účet sa nepodarilo vytvoriť.',
|
||||
'User block status has been updated.' => 'Stav používateľa bol uložený',
|
||||
'User could not be registered.' => 'Používateľa sa nepodarilo zaregistrovať.',
|
||||
'User has been confirmed' => 'Užívateľ bol potvrdený',
|
||||
'User has been created' => 'Používateľ bol vytvorený',
|
||||
'User has been deleted' => 'Používateľ bol odstránený',
|
||||
'User is not found' => 'Používateľ sa nenašiel',
|
||||
'User not found.' => 'Užívateľ Nenájdený.',
|
||||
'User will be required to change password at next login' => 'Používateľ bude nútený zmeniť svoje heslo pri ďalšom prihlásení',
|
||||
'Username' => 'Prihlasovacie meno',
|
||||
'Users' => 'Užívatelia',
|
||||
'VKontakte' => 'VKontakte',
|
||||
'Verification failed. Please, enter new code.' => 'Overenie zlyhalo. Zadajte nový kľúč.',
|
||||
'We couldn\'t re-send the mail to confirm your address. Please, verify is the correct email or if it has been confirmed already.' => 'E-mail sa nám nepodarilo znova odoslať, aby sme potvrdili Vašu adresu. Skontrolujte, či je e-mailová adresa správna alebo či už bola potvrdená.',
|
||||
'We have generated a password for you' => 'Bolo pre vás vygenerované heslo',
|
||||
'We have received a request to change the email address for your account on {0}' => 'Dostali sme žiadosť o zmenu Vašej e-mailovej adresy na {0}',
|
||||
'We have received a request to reset the password for your account on {0}' => 'Dňa {0} sme dostali žiadosť o obnovenie hesla.',
|
||||
'We have sent confirmation links to both old and new email addresses. You must click both links to complete your request.' => 'Poslali sme vám potvrdzovacie odkazy na starú a novú e-mailovú adresu. Na dokončenie žiadosti musíte kliknúť na oba odkazy.',
|
||||
'Website' => 'Webstránka',
|
||||
'Welcome to {0}' => 'Vitajte v {0}',
|
||||
'Yandex' => 'Yandex',
|
||||
'You are about to delete all your personal data from this site.' => 'Z tejto služby odstránite všetky osobné údaje',
|
||||
'You can assign multiple roles or permissions to user by using the form below' => 'Užívateľovi môžete pomocou nasledujúceho formulára priradiť viacero rolí alebo povolení',
|
||||
'You can connect multiple accounts to be able to log in using them' => 'Môžete prepojiť viac účtov a prihlásiť sa pomocou nich',
|
||||
'You cannot remove your own account' => 'Nemôžete vymazať svoj vlastný účet',
|
||||
'You need to confirm your email address' => 'Musíte potvrdiť svoju e-mailovú adresu',
|
||||
'Your account details have been updated' => 'Vaše nastavenie účtu bolo aktualizované',
|
||||
'Your account has been blocked' => 'Váš účet bol zablokovaný',
|
||||
'Your account has been blocked.' => 'Váš účet bol zablokovaný.',
|
||||
'Your account has been completely deleted' => 'Váš účet bol úplne odstránený',
|
||||
'Your account has been connected' => 'Váš účet bol pripojený',
|
||||
'Your account has been created' => 'Váš účet bol vytvorený',
|
||||
'Your account has been created and a message with further instructions has been sent to your email' => 'Váš účet bol vytvorený a na váš e-mail bola odoslaná správa s ďalšími pokynmi',
|
||||
'Your account on {0} has been created' => 'Váš účet dňa {0} bol vytvorený',
|
||||
'Your confirmation token is invalid or expired' => 'Váš potvrdzovací token je neplatný alebo jeho platnosť vypršala',
|
||||
'Your consent is required to register' => 'Na registráciu sa vyžaduje váš súhlas',
|
||||
'Your email address has been changed' => 'Vaša emailová adresa bola zmenená',
|
||||
'Your password has expired, you must change it now' => 'Vaše heslo vypršalo, musíte si ho teraz zmeniť',
|
||||
'Your personal information has been removed' => 'Vaše osobné údaje boli odstránené',
|
||||
'Your profile has been updated' => 'Váš profil bol aktualizovaný',
|
||||
'privacy policy' => 'Zásady ochrany osobných údajov',
|
||||
'{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} nesmie byť prázdne.',
|
||||
];
|
||||
@ -17,9 +17,6 @@
|
||||
* 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.' => '',
|
||||
@ -31,6 +28,7 @@ return [
|
||||
'Account details' => '',
|
||||
'Account details have been updated' => '',
|
||||
'Account settings' => '',
|
||||
'Active' => '',
|
||||
'Already registered? Sign in!' => '',
|
||||
'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.' => '',
|
||||
'An error occurred processing your request' => '',
|
||||
@ -84,6 +82,7 @@ return [
|
||||
'Create new rule' => '',
|
||||
'Created at' => '',
|
||||
'Credentials will be sent to the user by email' => '',
|
||||
'Current' => '',
|
||||
'Current password' => '',
|
||||
'Current password is not valid' => '',
|
||||
'Data privacy' => '',
|
||||
@ -115,6 +114,8 @@ return [
|
||||
'Gravatar email' => '',
|
||||
'Hello' => '',
|
||||
'Here you can download your personal data in a comma separated values format.' => '',
|
||||
'IP' => '',
|
||||
'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' => '',
|
||||
@ -122,6 +123,7 @@ return [
|
||||
'In order to complete your registration, please click the link below' => '',
|
||||
'In order to complete your request, please click the link below' => '',
|
||||
'In order to finish your registration, we need you to enter following fields' => '',
|
||||
'Inactive' => '',
|
||||
'Information' => '',
|
||||
'Invalid login or password' => '',
|
||||
'Invalid or expired link' => '',
|
||||
@ -131,6 +133,7 @@ return [
|
||||
'It will be deleted forever' => '',
|
||||
'Items' => '',
|
||||
'Joined on {0, date}' => '',
|
||||
'Last activity' => '',
|
||||
'Last login IP' => '',
|
||||
'Last login time' => '',
|
||||
'Last password change' => '',
|
||||
@ -189,11 +192,15 @@ return [
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '',
|
||||
'Select rule...' => '',
|
||||
'Send password recovery email' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Sign in' => '',
|
||||
'Sign up' => '',
|
||||
'Something went wrong' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Switch identities is disabled.' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Thank you for signing up on {0}' => '',
|
||||
'Thank you, registration is now complete.' => '',
|
||||
'The "recaptcha" component must be configured.' => '',
|
||||
@ -235,7 +242,9 @@ return [
|
||||
'Update rule' => '',
|
||||
'Update user account' => '',
|
||||
'Updated at' => '',
|
||||
'User ID' => '',
|
||||
'User account could not be created.' => '',
|
||||
'User agent' => '',
|
||||
'User block status has been updated.' => '',
|
||||
'User could not be registered.' => '',
|
||||
'User has been confirmed' => '',
|
||||
@ -276,32 +285,11 @@ return [
|
||||
'Your password has expired, you must change it now' => '',
|
||||
'Your personal information has been removed' => '',
|
||||
'Your profile has been updated' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'privacy policy' => '',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '',
|
||||
'{0} cannot be blank.' => '',
|
||||
'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' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@',
|
||||
'Invalid two-factor code' => '@@@@',
|
||||
'Last login' => '@@@@',
|
||||
'Registration ip' => '@@@@',
|
||||
'Rule class can not be instantiated' => '@@@@',
|
||||
'Rule class must extend "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. ' => '@@@@',
|
||||
'We have sent confirmation links to both old and new email addresses. ' => '@@@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
];
|
||||
|
||||
@ -17,9 +17,6 @@
|
||||
* 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.' => '',
|
||||
@ -31,6 +28,7 @@ return [
|
||||
'Account details' => '',
|
||||
'Account details have been updated' => '',
|
||||
'Account settings' => '',
|
||||
'Active' => '',
|
||||
'Already registered? Sign in!' => '',
|
||||
'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.' => '',
|
||||
'An error occurred processing your request' => '',
|
||||
@ -84,6 +82,7 @@ return [
|
||||
'Create new rule' => '',
|
||||
'Created at' => '',
|
||||
'Credentials will be sent to the user by email' => '',
|
||||
'Current' => '',
|
||||
'Current password' => '',
|
||||
'Current password is not valid' => '',
|
||||
'Data privacy' => '',
|
||||
@ -115,6 +114,8 @@ 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}' => '',
|
||||
'IP' => '',
|
||||
'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' => '',
|
||||
@ -122,6 +123,7 @@ return [
|
||||
'In order to complete your registration, please click the link below' => '',
|
||||
'In order to complete your request, please click the link below' => '',
|
||||
'In order to finish your registration, we need you to enter following fields' => '',
|
||||
'Inactive' => '',
|
||||
'Information' => '',
|
||||
'Invalid login or password' => '',
|
||||
'Invalid or expired link' => '',
|
||||
@ -131,6 +133,7 @@ return [
|
||||
'It will be deleted forever' => '',
|
||||
'Items' => '',
|
||||
'Joined on {0, date}' => '',
|
||||
'Last activity' => '',
|
||||
'Last login IP' => '',
|
||||
'Last login time' => '',
|
||||
'Last password change' => '',
|
||||
@ -189,11 +192,15 @@ return [
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '',
|
||||
'Select rule...' => '',
|
||||
'Send password recovery email' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Sign in' => '',
|
||||
'Sign up' => '',
|
||||
'Something went wrong' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Switch identities is disabled.' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Thank you for signing up on {0}' => '',
|
||||
'Thank you, registration is now complete.' => '',
|
||||
'The "recaptcha" component must be configured.' => '',
|
||||
@ -235,7 +242,9 @@ return [
|
||||
'Update rule' => '',
|
||||
'Update user account' => '',
|
||||
'Updated at' => '',
|
||||
'User ID' => '',
|
||||
'User account could not be created.' => '',
|
||||
'User agent' => '',
|
||||
'User block status has been updated.' => '',
|
||||
'User could not be registered.' => '',
|
||||
'User has been confirmed' => '',
|
||||
@ -276,32 +285,11 @@ return [
|
||||
'Your password has expired, you must change it now' => '',
|
||||
'Your personal information has been removed' => '',
|
||||
'Your profile has been updated' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'privacy policy' => '',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '',
|
||||
'{0} cannot be blank.' => '',
|
||||
'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' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@',
|
||||
'Invalid two-factor code' => '@@@@',
|
||||
'Last login' => '@@@@',
|
||||
'Registration ip' => '@@@@',
|
||||
'Rule class can not be instantiated' => '@@@@',
|
||||
'Rule class must extend "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. ' => '@@@@',
|
||||
'We have sent confirmation links to both old and new email addresses. ' => '@@@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
];
|
||||
|
||||
@ -110,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' => 'Якщо Ви не робили запит - можете ігнорувати дане повідомлення.',
|
||||
@ -273,20 +273,34 @@ return [
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, MMMM dd, 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.' => '',
|
||||
'Active' => '',
|
||||
'Current' => '',
|
||||
'Data privacy' => '',
|
||||
'IP' => '',
|
||||
'Inactive' => '',
|
||||
'Last activity' => '',
|
||||
'Recovery message sent' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||
'User ID' => '',
|
||||
'User agent' => '',
|
||||
'Your consent is required to work with this site' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'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' => '@@Увімкнути двофакторну аутентифікацію@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'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' => '@@Останній вхід@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
'Registration ip' => '@@IP реєстрації@@',
|
||||
'Rule class can not be instantiated' => '@@Клас Правила не може бути ініційований@@',
|
||||
'Rule class must extend "yii\\rbac\\Rule"' => '@@Клас Правила має розширювати "yii\\rbac\\Rule"@@',
|
||||
|
||||
@ -17,9 +17,6 @@
|
||||
* 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.' => '',
|
||||
@ -31,6 +28,7 @@ return [
|
||||
'Account details' => '',
|
||||
'Account details have been updated' => '',
|
||||
'Account settings' => '',
|
||||
'Active' => '',
|
||||
'Already registered? Sign in!' => '',
|
||||
'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.' => '',
|
||||
'An error occurred processing your request' => '',
|
||||
@ -84,6 +82,7 @@ return [
|
||||
'Create new rule' => '',
|
||||
'Created at' => '',
|
||||
'Credentials will be sent to the user by email' => '',
|
||||
'Current' => '',
|
||||
'Current password' => '',
|
||||
'Current password is not valid' => '',
|
||||
'Data privacy' => '',
|
||||
@ -115,6 +114,8 @@ 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}' => '',
|
||||
'IP' => '',
|
||||
'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' => '',
|
||||
@ -122,6 +123,7 @@ return [
|
||||
'In order to complete your registration, please click the link below' => '',
|
||||
'In order to complete your request, please click the link below' => '',
|
||||
'In order to finish your registration, we need you to enter following fields' => '',
|
||||
'Inactive' => '',
|
||||
'Information' => '',
|
||||
'Invalid login or password' => '',
|
||||
'Invalid or expired link' => '',
|
||||
@ -131,6 +133,7 @@ return [
|
||||
'It will be deleted forever' => '',
|
||||
'Items' => '',
|
||||
'Joined on {0, date}' => '',
|
||||
'Last activity' => '',
|
||||
'Last login IP' => '',
|
||||
'Last login time' => '',
|
||||
'Last password change' => '',
|
||||
@ -189,11 +192,15 @@ return [
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '',
|
||||
'Select rule...' => '',
|
||||
'Send password recovery email' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Sign in' => '',
|
||||
'Sign up' => '',
|
||||
'Something went wrong' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Switch identities is disabled.' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Thank you for signing up on {0}' => '',
|
||||
'Thank you, registration is now complete.' => '',
|
||||
'The "recaptcha" component must be configured.' => '',
|
||||
@ -235,7 +242,9 @@ return [
|
||||
'Update rule' => '',
|
||||
'Update user account' => '',
|
||||
'Updated at' => '',
|
||||
'User ID' => '',
|
||||
'User account could not be created.' => '',
|
||||
'User agent' => '',
|
||||
'User block status has been updated.' => '',
|
||||
'User could not be registered.' => '',
|
||||
'User has been confirmed' => '',
|
||||
@ -276,32 +285,11 @@ return [
|
||||
'Your password has expired, you must change it now' => '',
|
||||
'Your personal information has been removed' => '',
|
||||
'Your profile has been updated' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'privacy policy' => '',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '',
|
||||
'{0} cannot be blank.' => '',
|
||||
'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' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@',
|
||||
'Invalid two-factor code' => '@@@@',
|
||||
'Last login' => '@@@@',
|
||||
'Registration ip' => '@@@@',
|
||||
'Rule class can not be instantiated' => '@@@@',
|
||||
'Rule class must extend "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. ' => '@@@@',
|
||||
'We have sent confirmation links to both old and new email addresses. ' => '@@@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
];
|
||||
|
||||
@ -17,9 +17,6 @@
|
||||
* 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.' => '',
|
||||
@ -31,6 +28,7 @@ return [
|
||||
'Account details' => '',
|
||||
'Account details have been updated' => '',
|
||||
'Account settings' => '',
|
||||
'Active' => '',
|
||||
'Already registered? Sign in!' => '',
|
||||
'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.' => '',
|
||||
'An error occurred processing your request' => '',
|
||||
@ -84,6 +82,7 @@ return [
|
||||
'Create new rule' => '',
|
||||
'Created at' => '',
|
||||
'Credentials will be sent to the user by email' => '',
|
||||
'Current' => '',
|
||||
'Current password' => '',
|
||||
'Current password is not valid' => '',
|
||||
'Data privacy' => '',
|
||||
@ -115,6 +114,8 @@ 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}' => '',
|
||||
'IP' => '',
|
||||
'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' => '',
|
||||
@ -122,6 +123,7 @@ return [
|
||||
'In order to complete your registration, please click the link below' => '',
|
||||
'In order to complete your request, please click the link below' => '',
|
||||
'In order to finish your registration, we need you to enter following fields' => '',
|
||||
'Inactive' => '',
|
||||
'Information' => '',
|
||||
'Invalid login or password' => '',
|
||||
'Invalid or expired link' => '',
|
||||
@ -131,6 +133,7 @@ return [
|
||||
'It will be deleted forever' => '',
|
||||
'Items' => '',
|
||||
'Joined on {0, date}' => '',
|
||||
'Last activity' => '',
|
||||
'Last login IP' => '',
|
||||
'Last login time' => '',
|
||||
'Last password change' => '',
|
||||
@ -189,11 +192,15 @@ return [
|
||||
'Scan the QrCode with Google Authenticator App, then insert its temporary code on the box and submit.' => '',
|
||||
'Select rule...' => '',
|
||||
'Send password recovery email' => '',
|
||||
'Session ID' => '',
|
||||
'Session history' => '',
|
||||
'Sign in' => '',
|
||||
'Sign up' => '',
|
||||
'Something went wrong' => '',
|
||||
'Status' => '',
|
||||
'Submit' => '',
|
||||
'Switch identities is disabled.' => '',
|
||||
'Terminate all sessions' => '',
|
||||
'Thank you for signing up on {0}' => '',
|
||||
'Thank you, registration is now complete.' => '',
|
||||
'The "recaptcha" component must be configured.' => '',
|
||||
@ -235,7 +242,9 @@ return [
|
||||
'Update rule' => '',
|
||||
'Update user account' => '',
|
||||
'Updated at' => '',
|
||||
'User ID' => '',
|
||||
'User account could not be created.' => '',
|
||||
'User agent' => '',
|
||||
'User block status has been updated.' => '',
|
||||
'User could not be registered.' => '',
|
||||
'User has been confirmed' => '',
|
||||
@ -276,32 +285,11 @@ return [
|
||||
'Your password has expired, you must change it now' => '',
|
||||
'Your personal information has been removed' => '',
|
||||
'Your profile has been updated' => '',
|
||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||
'privacy policy' => '',
|
||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||
'{0, date, MMMM dd, YYYY HH:mm}' => '',
|
||||
'{0} cannot be blank.' => '',
|
||||
'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' => '@@@@',
|
||||
'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}' => '@@@@',
|
||||
'I aggree processing of my personal data and the use of cookies to facilitate the operation of this site. For more information read our {privacyPolicy}' => '@@@@',
|
||||
'Invalid two-factor code' => '@@@@',
|
||||
'Last login' => '@@@@',
|
||||
'Registration ip' => '@@@@',
|
||||
'Rule class can not be instantiated' => '@@@@',
|
||||
'Rule class must extend "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. ' => '@@@@',
|
||||
'We have sent confirmation links to both old and new email addresses. ' => '@@@@',
|
||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||
'Now you can resume the login process' => '@@@@',
|
||||
];
|
||||
|
||||
68
src/User/resources/views/admin/_session-history.php
Executable file
68
src/User/resources/views/admin/_session-history.php
Executable file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Da\User\Widget\SessionStatusWidget;
|
||||
use yii\helpers\Html;
|
||||
use yii\grid\GridView;
|
||||
use yii\widgets\Pjax;
|
||||
use Da\User\Model\SessionHistory;
|
||||
use Da\User\Search\SessionHistorySearch;
|
||||
use yii\web\View;
|
||||
use yii\data\ActiveDataProvider;
|
||||
|
||||
/**
|
||||
* @var $this View
|
||||
* @var $searchModel SessionHistorySearch
|
||||
* @var $dataProvider ActiveDataProvider
|
||||
*/
|
||||
?>
|
||||
|
||||
<?php $this->beginContent('@Da/User/resources/views/admin/update.php', ['user' => $user]) ?>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<?= Html::a(
|
||||
Yii::t('usuario', 'Terminate all sessions'),
|
||||
['/user/admin/terminate-sessions', 'id' => $user->id],
|
||||
[
|
||||
'class' => 'btn btn-danger btn-xs pull-right',
|
||||
'data-method' => 'post'
|
||||
]
|
||||
) ?>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<?php Pjax::begin(); ?>
|
||||
|
||||
<?= GridView::widget([
|
||||
'dataProvider' => $dataProvider,
|
||||
'filterModel' => $searchModel,
|
||||
'columns' => [
|
||||
'user_agent',
|
||||
'ip',
|
||||
[
|
||||
'contentOptions' => [
|
||||
'class' => 'text-nowrap',
|
||||
],
|
||||
'label' => Yii::t('usuario', 'Status'),
|
||||
'value' => function (SessionHistory $model) {
|
||||
return SessionStatusWidget::widget(['model' => $model]);
|
||||
},
|
||||
],
|
||||
[
|
||||
'attribute' => 'updated_at',
|
||||
'format' => 'datetime'
|
||||
],
|
||||
],
|
||||
]); ?>
|
||||
<?php Pjax::end(); ?>
|
||||
|
||||
<?php $this->endContent() ?>
|
||||
10
src/User/resources/views/admin/update.php
Normal file → Executable file
10
src/User/resources/views/admin/update.php
Normal file → Executable file
@ -13,6 +13,7 @@ use Da\User\Model\User;
|
||||
use yii\bootstrap\Nav;
|
||||
use yii\helpers\Html;
|
||||
use yii\web\View;
|
||||
use Da\User\Module as UserModule;
|
||||
|
||||
/**
|
||||
* @var View $this
|
||||
@ -24,12 +25,14 @@ $this->title = Yii::t('usuario', 'Update user account');
|
||||
$this->params['breadcrumbs'][] = ['label' => Yii::t('usuario', 'Users'), 'url' => ['index']];
|
||||
$this->params['breadcrumbs'][] = $this->title;
|
||||
|
||||
/** @var UserModule $module */
|
||||
$module = Yii::$app->getModule('user');
|
||||
?>
|
||||
<div class="clearfix"></div>
|
||||
<?= $this->render(
|
||||
'/shared/_alert',
|
||||
[
|
||||
'module' => Yii::$app->getModule('user'),
|
||||
'module' => $module,
|
||||
]
|
||||
) ?>
|
||||
|
||||
@ -67,6 +70,11 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
'label' => Yii::t('usuario', 'Assignments'),
|
||||
'url' => ['/user/admin/assignments', 'id' => $user->id],
|
||||
],
|
||||
[
|
||||
'label' => Yii::t('usuario', 'Session history'),
|
||||
'url' => ['/user/admin/session-history', 'id' => $user->id],
|
||||
'visible' => $module->enableSessionHistory,
|
||||
],
|
||||
'<hr>',
|
||||
[
|
||||
'label' => Yii::t('usuario', 'Confirm'),
|
||||
|
||||
10
src/User/resources/views/settings/_menu.php
Normal file → Executable file
10
src/User/resources/views/settings/_menu.php
Normal file → Executable file
@ -11,9 +11,12 @@
|
||||
|
||||
use yii\helpers\Html;
|
||||
use yii\widgets\Menu;
|
||||
use Da\User\Module as UserModule;
|
||||
use Da\User\Model\User;
|
||||
|
||||
/** @var \Da\User\Model\User $user */
|
||||
/** @var User $user */
|
||||
$user = Yii::$app->user->identity;
|
||||
/** @var UserModule $module */
|
||||
$module = Yii::$app->getModule('user');
|
||||
$networksVisible = count(Yii::$app->authClientCollection->clients) > 0;
|
||||
|
||||
@ -41,6 +44,11 @@ $networksVisible = count(Yii::$app->authClientCollection->clients) > 0;
|
||||
'items' => [
|
||||
['label' => Yii::t('usuario', 'Profile'), 'url' => ['/user/settings/profile']],
|
||||
['label' => Yii::t('usuario', 'Account'), 'url' => ['/user/settings/account']],
|
||||
[
|
||||
'label' => Yii::t('usuario', 'Session history'),
|
||||
'url' => ['/user/settings/session-history'],
|
||||
'visible' => $module->enableSessionHistory,
|
||||
],
|
||||
['label' => Yii::t('usuario', 'Privacy'),
|
||||
'url' => ['/user/settings/privacy'],
|
||||
'visible' => $module->enableGdprCompliance
|
||||
|
||||
79
src/User/resources/views/settings/session-history.php
Executable file
79
src/User/resources/views/settings/session-history.php
Executable file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the 2amigos/yii2-usuario project.
|
||||
*
|
||||
* (c) 2amigOS! <http://2amigos.us/>
|
||||
*
|
||||
* For the full copyright and license information, please view
|
||||
* the LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use yii\helpers\Html;
|
||||
use yii\grid\GridView;
|
||||
use yii\widgets\Pjax;
|
||||
use Da\User\Model\SessionHistory;
|
||||
use Da\User\Search\SessionHistorySearch;
|
||||
use yii\web\View;
|
||||
use yii\data\ActiveDataProvider;
|
||||
use Da\User\Widget\SessionStatusWidget;
|
||||
|
||||
/**
|
||||
* @var $this View
|
||||
* @var $searchModel SessionHistorySearch
|
||||
* @var $dataProvider ActiveDataProvider
|
||||
*/
|
||||
|
||||
$this->title = Yii::t('usuario', 'Session history');
|
||||
$this->params['breadcrumbs'][] = $this->title;
|
||||
?>
|
||||
|
||||
<?= $this->render('/shared/_alert', ['module' => Yii::$app->getModule('user')]) ?>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<?= $this->render('/settings/_menu') ?>
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<?= Html::encode($this->title) ?>
|
||||
<?= Html::a(
|
||||
Yii::t('usuario', 'Terminate all sessions'),
|
||||
['/user/settings/terminate-sessions'],
|
||||
[
|
||||
'class' => 'btn btn-danger btn-xs pull-right',
|
||||
'data-method' => 'post'
|
||||
]
|
||||
) ?>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<?php Pjax::begin(); ?>
|
||||
|
||||
<?= GridView::widget([
|
||||
'dataProvider' => $dataProvider,
|
||||
'filterModel' => $searchModel,
|
||||
'columns' => [
|
||||
'user_agent',
|
||||
'ip',
|
||||
[
|
||||
'contentOptions' => [
|
||||
'class' => 'text-nowrap',
|
||||
],
|
||||
'label' => Yii::t('usuario', 'Status'),
|
||||
'value' => function (SessionHistory $model) {
|
||||
return SessionStatusWidget::widget(['model' => $model]);
|
||||
},
|
||||
],
|
||||
[
|
||||
'attribute' => 'updated_at',
|
||||
'format' => 'datetime'
|
||||
],
|
||||
],
|
||||
]); ?>
|
||||
<?php Pjax::end(); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -35,9 +35,9 @@ use yii\widgets\ActiveForm;
|
||||
]
|
||||
) ?>
|
||||
|
||||
<?= $form->field($model, 'login')->textInput(['placeholder' => 'Login']) ?>
|
||||
<?= $form->field($model, 'login')->textInput(['placeholder' => Yii::t('usuario', 'Login')]) ?>
|
||||
|
||||
<?= $form->field($model, 'password')->passwordInput(['placeholder' => 'Password']) ?>
|
||||
<?= $form->field($model, 'password')->passwordInput(['placeholder' => Yii::t('usuario', 'Password')]) ?>
|
||||
|
||||
<?= $form->field($model, 'rememberMe')->checkbox() ?>
|
||||
|
||||
|
||||
@ -2,9 +2,9 @@
|
||||
|
||||
$db = [
|
||||
'class' => 'yii\db\Connection',
|
||||
'dsn' => 'mysql:host=localhost;dbname=yii2-usuario-test',
|
||||
'dsn' => 'mysql:host=127.0.0.1;dbname=yii2-usuario-test',
|
||||
'username' => 'root',
|
||||
'password' => '',
|
||||
'password' => 'password',
|
||||
'charset' => 'utf8',
|
||||
];
|
||||
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
use Da\User\Filter\TwoFactorAuthenticationEnforceFilter;
|
||||
|
||||
return [
|
||||
'id' => 'yii2-user-tests',
|
||||
'basePath' => dirname(__DIR__),
|
||||
@ -24,7 +26,11 @@ return [
|
||||
],
|
||||
'db' => require __DIR__ . '/db.php',
|
||||
'mailer' => [
|
||||
'useFileTransport' => true,
|
||||
'messageClass' => \yii\symfonymailer\Message::class,
|
||||
[
|
||||
'class' => \yii\symfonymailer\Mailer::class,
|
||||
],
|
||||
'useFileTransport' => false
|
||||
],
|
||||
'urlManager' => [
|
||||
'showScriptName' => true,
|
||||
@ -47,4 +53,12 @@ return [
|
||||
],
|
||||
],
|
||||
'params' => [],
|
||||
'on beforeAction' => function() {
|
||||
Yii::$app->controller->attachBehavior(
|
||||
'enforceTwoFactorAuthentication',[
|
||||
'class' => TwoFactorAuthenticationEnforceFilter::class,
|
||||
'except' => ['login', 'logout','account','two-factor', 'two-factor-enable'],
|
||||
]
|
||||
);
|
||||
},
|
||||
];
|
||||
|
||||
11
tests/_fixtures/AssignmentFixture.php
Normal file
11
tests/_fixtures/AssignmentFixture.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace tests\_fixtures;
|
||||
|
||||
use yii\test\ActiveFixture;
|
||||
|
||||
class AssignmentFixture extends ActiveFixture
|
||||
{
|
||||
public $modelClass = 'Da\User\Model\Assignment';
|
||||
public $tableName = 'auth_assignment';
|
||||
}
|
||||
11
tests/_fixtures/PermissionFixture.php
Normal file
11
tests/_fixtures/PermissionFixture.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace tests\_fixtures;
|
||||
|
||||
use yii\test\ActiveFixture;
|
||||
|
||||
class PermissionFixture extends ActiveFixture
|
||||
{
|
||||
public $modelClass = 'Da\User\Model\Permission';
|
||||
public $tableName = 'auth_item';
|
||||
}
|
||||
8
tests/_fixtures/data/auth_assignment.php
Normal file
8
tests/_fixtures/data/auth_assignment.php
Normal file
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'auth_assignment' => [
|
||||
'item_name' => 'admin',
|
||||
'user_id' => '1',
|
||||
],
|
||||
];
|
||||
9
tests/_fixtures/data/auth_item.php
Normal file
9
tests/_fixtures/data/auth_item.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'auth_item' => [
|
||||
'name' => 'admin',
|
||||
'type' => 1,
|
||||
'description' => 'test admin',
|
||||
],
|
||||
];
|
||||
@ -73,4 +73,17 @@ return [
|
||||
'updated_at' => $time,
|
||||
'confirmed_at' => $time,
|
||||
],
|
||||
'user_with_2fa_enabled' => [
|
||||
'id' => 7,
|
||||
'username' => 'user2fa',
|
||||
'email' => 'user2faenabled@example.com',
|
||||
'password_hash' => '$2y$13$qY.ImaYBppt66qez6B31QO92jc5DYVRzo5NxM1ivItkW74WsSG6Ui',
|
||||
'auth_key' => '39HU0m5lpjWtqstFVGFjj6lFb7UZDeRq',
|
||||
'auth_tf_key' => '',
|
||||
'auth_tf_enabled' => true,
|
||||
'created_at' => $time,
|
||||
'updated_at' => $time,
|
||||
'confirmed_at' => $time,
|
||||
'gdpr_consent' => false,
|
||||
],
|
||||
];
|
||||
|
||||
@ -97,12 +97,12 @@ class GdprCest
|
||||
$I->amOnRoute('/user/registration/register');
|
||||
$this->register($I, 'tester@example.com', 'tester', 'tester');
|
||||
$I->see('Your account has been created and a message with further instructions has been sent to your email');
|
||||
$user = $I->grabRecord(User::className(), ['email' => 'tester@example.com']);
|
||||
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRMATION]);
|
||||
/** @var yii\swiftmailer\Message $message */
|
||||
$user = $I->grabRecord(User::class, ['email' => 'tester@example.com']);
|
||||
$token = $I->grabRecord(Token::class, ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRMATION]);
|
||||
/** @var \yii\mail\MessageInterface $message */
|
||||
$message = $I->grabLastSentEmail();
|
||||
$I->assertArrayHasKey($user->email, $message->getTo());
|
||||
$I->assertStringContainsString(Html::encode($token->getUrl()), utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString())));
|
||||
$I->assertStringContainsString(Html::encode($token->getUrl()), utf8_encode(quoted_printable_decode($message->toString())));
|
||||
$I->assertFalse($user->isConfirmed);
|
||||
}
|
||||
|
||||
@ -118,12 +118,12 @@ class GdprCest
|
||||
$I->amOnRoute('/user/registration/register');
|
||||
$this->register($I, 'tester@example.com', 'tester');
|
||||
$I->see('Your account has been created');
|
||||
$user = $I->grabRecord(User::className(), ['email' => 'tester@example.com']);
|
||||
$user = $I->grabRecord(User::class, ['email' => 'tester@example.com']);
|
||||
$I->assertEquals('tester', $user->username);
|
||||
/** @var yii\swiftmailer\Message $message */
|
||||
/** @var \yii\mail\MessageInterface $message */
|
||||
$message = $I->grabLastSentEmail();
|
||||
$I->assertArrayHasKey($user->email, $message->getTo());
|
||||
$I->assertStringContainsString('We have generated a password for you', utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString())));
|
||||
$I->assertStringContainsString('We have generated a password for you', utf8_encode(quoted_printable_decode($message->toString())));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -36,14 +36,14 @@ $I->fillField('#recoveryform-email', $user->email);
|
||||
$I->click('Continue');
|
||||
|
||||
$I->see('An email with instructions to create a new password has been sent to ' . $user->email);
|
||||
$user = $I->grabRecord(User::className(), ['email' => $user->email]);
|
||||
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_RECOVERY]);
|
||||
/** @var yii\swiftmailer\Message $message */
|
||||
$user = $I->grabRecord(User::class, ['email' => $user->email]);
|
||||
$token = $I->grabRecord(Token::class, ['user_id' => $user->id, 'type' => Token::TYPE_RECOVERY]);
|
||||
/** @var \yii\mail\MessageInterface $message */
|
||||
$message = $I->grabLastSentEmail();
|
||||
$I->assertArrayHasKey($user->email, $message->getTo());
|
||||
$I->assertStringContainsString(
|
||||
Html::encode($token->getUrl()),
|
||||
utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString()))
|
||||
utf8_encode(quoted_printable_decode($message->toString()))
|
||||
);
|
||||
|
||||
$I->amGoingTo('reset password with invalid token');
|
||||
|
||||
@ -68,12 +68,12 @@ class RegistrationCest
|
||||
$I->amOnRoute('/user/registration/register');
|
||||
$this->register($I, 'tester@example.com', 'tester', 'tester');
|
||||
$I->see('Your account has been created and a message with further instructions has been sent to your email');
|
||||
$user = $I->grabRecord(User::className(), ['email' => 'tester@example.com']);
|
||||
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRMATION]);
|
||||
/** @var yii\swiftmailer\Message $message */
|
||||
$user = $I->grabRecord(User::class, ['email' => 'tester@example.com']);
|
||||
$token = $I->grabRecord(Token::class, ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRMATION]);
|
||||
/** @var \yii\mail\MessageInterface $message */
|
||||
$message = $I->grabLastSentEmail();
|
||||
$I->assertArrayHasKey($user->email, $message->getTo());
|
||||
$I->assertStringContainsString(Html::encode($token->getUrl()), utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString())));
|
||||
$I->assertStringContainsString(Html::encode($token->getUrl()), utf8_encode(quoted_printable_decode($message->toString())));
|
||||
$I->assertFalse($user->isConfirmed);
|
||||
}
|
||||
|
||||
@ -91,10 +91,10 @@ class RegistrationCest
|
||||
$I->see('Your account has been created');
|
||||
$user = $I->grabRecord(User::className(), ['email' => 'tester@example.com']);
|
||||
$I->assertEquals('tester', $user->username);
|
||||
/** @var yii\swiftmailer\Message $message */
|
||||
/** @var \yii\mail\MessageInterface $message */
|
||||
$message = $I->grabLastSentEmail();
|
||||
$I->assertArrayHasKey($user->email, $message->getTo());
|
||||
$I->assertStringContainsString('We have generated a password for you', utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString())));
|
||||
$I->assertStringContainsString('We have generated a password for you', utf8_encode(quoted_printable_decode($message->toString())));
|
||||
}
|
||||
|
||||
protected function register(FunctionalTester $I, $email, $username = null, $password = null) {
|
||||
|
||||
@ -34,12 +34,12 @@ $I->click('Save');
|
||||
$I->seeRecord(User::className(), ['email' => $user->email, 'unconfirmed_email' => 'new_user@example.com']);
|
||||
|
||||
$I->see('A confirmation message has been sent to your new email address');
|
||||
$user = $I->grabRecord(User::className(), ['id' => $user->id]);
|
||||
$token = $I->grabRecord(Token::className(), ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRM_NEW_EMAIL]);
|
||||
/** @var yii\swiftmailer\Message $message */
|
||||
$user = $I->grabRecord(User::class, ['id' => $user->id]);
|
||||
$token = $I->grabRecord(Token::class, ['user_id' => $user->id, 'type' => Token::TYPE_CONFIRM_NEW_EMAIL]);
|
||||
/** @var \yii\mail\MessageInterface $message */
|
||||
$message = $I->grabLastSentEmail();
|
||||
$I->assertArrayHasKey($user->unconfirmed_email, $message->getTo());
|
||||
$I->assertStringContainsString(Html::encode($token->getUrl()), utf8_encode(quoted_printable_decode($message->getSwiftMessage()->toString())));
|
||||
$I->assertStringContainsString(Html::encode($token->getUrl()), utf8_encode(quoted_printable_decode($message->toString())));
|
||||
Yii::$app->user->logout();
|
||||
|
||||
$I->amGoingTo('log in using new email address before clicking the confirmation link');
|
||||
|
||||
55
tests/functional/TwoFactorAuthenticationCept.php
Normal file
55
tests/functional/TwoFactorAuthenticationCept.php
Normal file
@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @var Codeception\Scenario
|
||||
*/
|
||||
|
||||
use tests\_fixtures\UserFixture;
|
||||
use tests\_fixtures\PermissionFixture;
|
||||
use tests\_fixtures\AssignmentFixture;
|
||||
use tests\_fixtures\ProfileFixture;
|
||||
|
||||
|
||||
$I = new FunctionalTester($scenario);
|
||||
$I->wantTo('ensure that two factor authentication check works');
|
||||
$I->haveFixtures(['user' => UserFixture::className()]);
|
||||
$I->haveFixtures(['permission' => PermissionFixture::className()]);
|
||||
$I->haveFixtures(['assignment' => AssignmentFixture::className()]);
|
||||
|
||||
$I->amGoingTo('try to login with user having two factor authentication enabled');
|
||||
Yii::$app->getModule('user')->enableTwoFactorAuthentication = true;
|
||||
$I->amOnRoute('/user/security/login');
|
||||
$user = $I->grabFixture('user', 'user_with_2fa_enabled');
|
||||
$I->fillField('#loginform-login', $user->email);
|
||||
$I->fillField('#loginform-password', 'qwerty');
|
||||
$I->click('Sign in');
|
||||
$I->expectTo('See form to insert two factor authentication code');
|
||||
$I->see('Two factor authentication code');
|
||||
|
||||
|
||||
$I->amGoingTo('try to login with user permission admin, having two factor authentication disabled');
|
||||
Yii::$app->getModule('user')->enableTwoFactorAuthentication = true;
|
||||
Yii::$app->getModule('user')->twoFactorAuthenticationForcedPermissions = ['admin'];
|
||||
$I->haveFixtures(['user' => UserFixture::className(), 'profile' => ProfileFixture::className()]);
|
||||
$I->amOnRoute('/user/security/login');
|
||||
$user = $I->grabFixture('user', 'user');
|
||||
$I->fillField('#loginform-login', $user->email);
|
||||
$I->fillField('#loginform-password', 'qwerty');
|
||||
$I->click('Sign in');
|
||||
$I->expectTo('The user must be forced to enable two factor authentication');
|
||||
$I->see('Your role requires 2FA, you won\'t be able to use the application until you enable it');
|
||||
Yii::$app->user->logout();
|
||||
|
||||
$I->amGoingTo('try to login with correct credentials when two factor authentication is disabled on the module');
|
||||
Yii::$app->getModule('user')->enableTwoFactorAuthentication = false;
|
||||
$I->amOnRoute('/user/security/login');
|
||||
$I->amGoingTo('try to login with correct credentials');
|
||||
$user = $I->grabFixture('user', 'user');
|
||||
$I->fillField('#loginform-login', $user->email);
|
||||
$I->fillField('#loginform-password', 'qwerty');
|
||||
$I->click('Sign in');
|
||||
$I->dontSee('Login');
|
||||
$I->see('Logout');
|
||||
|
||||
|
||||
|
||||
160
tests/unit/GeneratePasswordTest.php
Normal file
160
tests/unit/GeneratePasswordTest.php
Normal file
@ -0,0 +1,160 @@
|
||||
<?php
|
||||
|
||||
use Da\User\Helper\SecurityHelper;
|
||||
use yii\base\Security;
|
||||
|
||||
/**
|
||||
* Testing for the `SecurityHelper.generatePassword()` function.
|
||||
* Note that this test considers these sets of characters:
|
||||
* $sets = [
|
||||
* 'lower' => 'abcdefghjkmnpqrstuvwxyz',
|
||||
* 'upper' => 'ABCDEFGHJKMNPQRSTUVWXYZ',
|
||||
* 'digit' => '123456789',
|
||||
* 'special' => '!#$%&*+,-.:;<=>?@_~'
|
||||
* ];
|
||||
*/
|
||||
class GeneratePasswordTest extends \Codeception\Test\Unit
|
||||
{
|
||||
const ITERATIONS = 10000;
|
||||
|
||||
// Test with minPasswordRequirements equal to null (get default value/parameter)
|
||||
public function testNullParameter ()
|
||||
{
|
||||
$length = 8;
|
||||
$minPasswordRequirements = null;
|
||||
// Helper
|
||||
$securityHelper = new SecurityHelper(new Security()); // Empty security (it does not matter)
|
||||
// Check password correctness
|
||||
$ok = true;
|
||||
for ($i = 0; $i < self::ITERATIONS; $i++) {
|
||||
$password = $securityHelper->generatePassword($length, $minPasswordRequirements);
|
||||
$result = preg_match('/\A(?=(.*\d){1})(?=(?:[^a-z]*[a-z]){1})(?=(?:[^A-Z]*[A-Z]){1})[0-9a-zA-Z!#$%&*+,-.:;<=>?@_~]{8,}\z/', $password);
|
||||
if ($result === 0) {
|
||||
$ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->assertTrue($ok);
|
||||
}
|
||||
|
||||
// Test with minPasswordRequirements equal to an empty array (= password without requirements)
|
||||
public function testEmptyParameter ()
|
||||
{
|
||||
$length = 8;
|
||||
$minPasswordRequirements = [];
|
||||
// Helper
|
||||
$securityHelper = new SecurityHelper(new Security()); // Empty security (it does not matter)
|
||||
// Check password correctness
|
||||
$ok = true;
|
||||
for ($i = 0; $i < self::ITERATIONS; $i++) {
|
||||
$password = $securityHelper->generatePassword($length, $minPasswordRequirements);
|
||||
$result = preg_match('/\A[0-9a-zA-Z!#$%&*+,-.:;<=>?@_~]{8,}\z/', $password);
|
||||
if ($result === 0) {
|
||||
$ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->assertTrue($ok);
|
||||
}
|
||||
|
||||
// Test with many lowercase characters, one uppercase character, one digit and one special character
|
||||
public function testManyLowercaseCharacter ()
|
||||
{
|
||||
// Function parameters
|
||||
$length = 8;
|
||||
$minPasswordRequirements = [
|
||||
'min' => 10,
|
||||
'special' => 1,
|
||||
'digit' => 1,
|
||||
'upper' => 1,
|
||||
'lower' => 5
|
||||
];
|
||||
// Helper
|
||||
$securityHelper = new SecurityHelper(new Security()); // Empty security (it does not matter)
|
||||
// Check password correctness
|
||||
$ok = true;
|
||||
for ($i = 0; $i < self::ITERATIONS; $i++) {
|
||||
$password = $securityHelper->generatePassword($length, $minPasswordRequirements);
|
||||
$result = preg_match('/\A(?=(.*\d){1})(?=(?:[^a-z]*[a-z]){5})(?=(?:[^A-Z]*[A-Z]){1})(?=(?:[0-9a-zA-Z]*[!#$%&*+,-.:;<=>?@_~]){1})[0-9a-zA-Z!#$%&*+,-.:;<=>?@_~]{10,}\z/', $password);
|
||||
if ($result === 0) {
|
||||
$ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->assertTrue($ok);
|
||||
}
|
||||
|
||||
// Test with many special characters, one uppercase character, one digit
|
||||
public function testManySpecialCharacter ()
|
||||
{
|
||||
// Function parameters
|
||||
$length = 10;
|
||||
$minPasswordRequirements = [
|
||||
'min' => 10,
|
||||
'special' => 6,
|
||||
'digit' => 1,
|
||||
'upper' => 1,
|
||||
];
|
||||
// Helper
|
||||
$securityHelper = new SecurityHelper(new Security()); // Empty security (it does not matter)
|
||||
// Check password correctness
|
||||
$ok = true;
|
||||
for ($i = 0; $i < self::ITERATIONS; $i++) {
|
||||
$password = $securityHelper->generatePassword($length, $minPasswordRequirements);
|
||||
$result = preg_match('/\A(?=(.*\d){1})(?=(?:[^A-Z]*[A-Z]){1})(?=(?:[0-9a-zA-Z]*[!#$%&*+,-.:;<=>?@_~]){6})[0-9a-zA-Z!#$%&*+,-.:;<=>?@_~]{10,}\z/', $password);
|
||||
if ($result === 0) {
|
||||
$ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->assertTrue($ok);
|
||||
}
|
||||
|
||||
// Test with a long password and no requirements
|
||||
public function testLongPassword ()
|
||||
{
|
||||
// Function parameters
|
||||
$length = 20;
|
||||
$minPasswordRequirements = [];
|
||||
// Helper
|
||||
$securityHelper = new SecurityHelper(new Security()); // Empty security (it does not matter)
|
||||
// Check password correctness
|
||||
$ok = true;
|
||||
for ($i = 0; $i < self::ITERATIONS; $i++) {
|
||||
$password = $securityHelper->generatePassword($length, $minPasswordRequirements);
|
||||
$result = preg_match('/\A[0-9a-zA-Z!#$%&*+,-.:;<=>?@_~]{20,}\z/', $password);
|
||||
if ($result === 0) {
|
||||
$ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->assertTrue($ok);
|
||||
}
|
||||
|
||||
// Test with random requirements
|
||||
public function testRandomRequirements ()
|
||||
{
|
||||
// Function parameters
|
||||
$length = 8;
|
||||
$minPasswordRequirements = [
|
||||
'min' => 10,
|
||||
'special' => 4,
|
||||
'digit' => 3,
|
||||
'upper' => 2,
|
||||
'lower' => 1
|
||||
];
|
||||
// Helper
|
||||
$securityHelper = new SecurityHelper(new Security()); // Empty security (it does not matter)
|
||||
// Check password correctness
|
||||
$ok = true;
|
||||
for ($i = 0; $i < self::ITERATIONS; $i++) {
|
||||
$password = $securityHelper->generatePassword($length, $minPasswordRequirements);
|
||||
$result = preg_match('/\A(?=(.*\d){3})(?=(?:[^a-z]*[a-z]){1})(?=(?:[^A-Z]*[A-Z]){2})(?=(?:[0-9a-zA-Z]*[!#$%&*+,-.:;<=>?@_~]){4})[0-9a-zA-Z!#$%&*+,-.:;<=>?@_~]{10,}\z/', $password);
|
||||
if ($result === 0) {
|
||||
$ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$this->assertTrue($ok);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user