Merge branch 'acordeddu-2fa-channels-email-sms'
This commit is contained in:
@ -1,6 +1,7 @@
|
|||||||
# CHANGELOG
|
# CHANGELOG
|
||||||
|
|
||||||
## 1.6.0 work in progress
|
## 1.6.0 work in progress
|
||||||
|
|
||||||
**WARNING**: this release (long time due) makes a step forward in PHP
|
**WARNING**: this release (long time due) makes a step forward in PHP
|
||||||
compatibility, leaving behind obsolete versions. While yii2-usuario should
|
compatibility, leaving behind obsolete versions. While yii2-usuario should
|
||||||
still work without issues on 5.6, from now on testing and development will
|
still work without issues on 5.6, from now on testing and development will
|
||||||
@ -27,6 +28,7 @@ There's a change in flash messages handling, please see #391
|
|||||||
- Ehn #428: Translations of the placeholders in the login widget (anapaulaxenon)
|
- Ehn #428: Translations of the placeholders in the login widget (anapaulaxenon)
|
||||||
- Update PHP-CS-Fixer configuration to new version (maxxer)
|
- Update PHP-CS-Fixer configuration to new version (maxxer)
|
||||||
- Fix #391: Always create flash messages, allow `enableFlashMessages` only to dictate display (ajmedway)
|
- Fix #391: Always create flash messages, allow `enableFlashMessages` only to dictate display (ajmedway)
|
||||||
|
- Ehn #458: Multiple 2FA channels (email, sms) (acordeddu)
|
||||||
|
|
||||||
## 1.5.1 April 5, 2020
|
## 1.5.1 April 5, 2020
|
||||||
|
|
||||||
|
|||||||
@ -44,7 +44,8 @@
|
|||||||
"2amigos/yii2-selectize-widget": "^1.1",
|
"2amigos/yii2-selectize-widget": "^1.1",
|
||||||
"yiisoft/yii2-authclient": "^2.1",
|
"yiisoft/yii2-authclient": "^2.1",
|
||||||
"yiisoft/yii2-httpclient": "^2.0",
|
"yiisoft/yii2-httpclient": "^2.0",
|
||||||
"yiisoft/yii2-bootstrap": "^2.0"
|
"yiisoft/yii2-bootstrap": "^2.0",
|
||||||
|
"yetopen/yii2-sms-sender-interface": "^0.1.1"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"yiisoft/yii2-symfonymailer": "A mailer driver is needed to send e-mails. Older versions use abandoned Swiftmailer which can be replaced with symfonymailer",
|
"yiisoft/yii2-symfonymailer": "A mailer driver is needed to send e-mails. Older versions use abandoned Swiftmailer which can be replaced with symfonymailer",
|
||||||
|
|||||||
@ -28,6 +28,42 @@ 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
|
By default, Google Authenticator App for two-factor authentication cycles in periods of 30 seconds. In order to allow
|
||||||
a bigger period so to avoid out of sync issues.
|
a bigger period so to avoid out of sync issues.
|
||||||
|
|
||||||
|
#### twoFactorAuthenticationValidators (type: `array`)
|
||||||
|
|
||||||
|
An array of arrays of channels availables for two factor authentication. The keys in the arrays have the following meaning:
|
||||||
|
class: it will be the validator class with namespace;
|
||||||
|
name: the name that will be displayed in the section to the user;
|
||||||
|
configurationUrl: the url to the action that will dispaly the configuration form for the validator;
|
||||||
|
codeDurationTime: time duration of the code in session in seconds (not applicable for Google authenticator);
|
||||||
|
smsSender: the reference to SmsSenderInterface for managing SMS send;
|
||||||
|
enabled: true if you want to enable the channel, false otherwise.
|
||||||
|
|
||||||
|
The following is the default configuration:
|
||||||
|
|
||||||
|
'google-authenticator'=>[
|
||||||
|
'class'=>\Da\User\Validator\TwoFactorCodeValidator::class,
|
||||||
|
'description'=>Yii::t('usuario', 'Google Authenticator'),
|
||||||
|
'configurationUrl'=>'user/settings/two-factor',
|
||||||
|
'enabled'=>true
|
||||||
|
],
|
||||||
|
'email'=>[
|
||||||
|
'class'=>\Da\User\Validator\TwoFactorEmailValidator::class,
|
||||||
|
'description'=>Yii::t('usuario', 'Email'),
|
||||||
|
'configurationUrl'=>'user/settings/two-factor-email',
|
||||||
|
'codeDurationTime'=>300,
|
||||||
|
'enabled'=>true
|
||||||
|
],
|
||||||
|
'sms'=>[
|
||||||
|
'class'=>\Da\User\Validator\TwoFactorTextMessageValidator::class,
|
||||||
|
'description'=>Yii::t('usuario', 'Text message'),
|
||||||
|
'configurationUrl'=>'user/settings/two-factor-sms',
|
||||||
|
'codeDurationTime'=>300,
|
||||||
|
'smsSender'=>'smsSender',
|
||||||
|
'enabled'=>true
|
||||||
|
]
|
||||||
|
|
||||||
|
For instructions about implementation of SMS sending see at the following link: https://www.yiiframework.com/extension/yetopen/yii2-sms-aruba
|
||||||
|
|
||||||
#### twoFactorAuthenticationForcedPermissions (type: `array`, default: `[]`)
|
#### 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:
|
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:
|
||||||
@ -45,7 +81,6 @@ use Da\User\Filter\TwoFactorAuthenticationEnforceFilter;
|
|||||||
...
|
...
|
||||||
This will redirect the user to their account page until the two factor authentication is enabled.
|
This will redirect the user to their account page until the two factor authentication is enabled.
|
||||||
|
|
||||||
|
|
||||||
#### enableGdprCompliance (type: `boolean`, default: `false`)
|
#### 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.
|
Setting this attribute enables a serie of measures to comply with EU GDPR regulation, like data consent, right to be forgotten and data portability.
|
||||||
@ -197,6 +232,7 @@ Configures the parameter values used on [MailFactory](../../src/User/Factory/Mai
|
|||||||
'confirmationMailSubject' => Yii::t('usuario', 'Confirm account on {0}', $app->name),
|
'confirmationMailSubject' => Yii::t('usuario', 'Confirm account on {0}', $app->name),
|
||||||
'reconfirmationMailSubject' => Yii::t('usuario', 'Confirm email change on {0}', $app->name),
|
'reconfirmationMailSubject' => Yii::t('usuario', 'Confirm email change on {0}', $app->name),
|
||||||
'recoveryMailSubject' => Yii::t('usuario', 'Complete password reset on {0}', $app->name),
|
'recoveryMailSubject' => Yii::t('usuario', 'Complete password reset on {0}', $app->name),
|
||||||
|
'twoFactorMailSubject' => Yii::t('usuario', 'Code for two factor authentication on {0}', $app->name),
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -14,6 +14,7 @@ values:
|
|||||||
'confirmationMailSubject' => Yii::t('usuario', 'Confirm account on {0}', $app->name),
|
'confirmationMailSubject' => Yii::t('usuario', 'Confirm account on {0}', $app->name),
|
||||||
'reconfirmationMailSubject' => Yii::t('usuario', 'Confirm email change on {0}', $app->name),
|
'reconfirmationMailSubject' => Yii::t('usuario', 'Confirm email change on {0}', $app->name),
|
||||||
'recoveryMailSubject' => Yii::t('usuario', 'Complete password reset on {0}', $app->name),
|
'recoveryMailSubject' => Yii::t('usuario', 'Complete password reset on {0}', $app->name),
|
||||||
|
'twoFactorMailSubject' => Yii::t('usuario', 'Code for two factor authentication on {0}', $app->name),
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -29,6 +29,7 @@ use yii\base\InvalidConfigException;
|
|||||||
use yii\console\Application as ConsoleApplication;
|
use yii\console\Application as ConsoleApplication;
|
||||||
use yii\i18n\PhpMessageSource;
|
use yii\i18n\PhpMessageSource;
|
||||||
use yii\web\Application as WebApplication;
|
use yii\web\Application as WebApplication;
|
||||||
|
use yii\helpers\ArrayHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bootstrap class of the yii2-usuario extension. Configures container services, initializes translations,
|
* Bootstrap class of the yii2-usuario extension. Configures container services, initializes translations,
|
||||||
@ -133,7 +134,7 @@ class Bootstrap implements BootstrapInterface
|
|||||||
if (in_array($name, ['User', 'Profile', 'Token', 'SocialNetworkAccount', 'SessionHistory'])) {
|
if (in_array($name, ['User', 'Profile', 'Token', 'SocialNetworkAccount', 'SessionHistory'])) {
|
||||||
$di->set(
|
$di->set(
|
||||||
"Da\\User\\Query\\{$name}Query",
|
"Da\\User\\Query\\{$name}Query",
|
||||||
function () use ($model) {
|
function() use($model) {
|
||||||
return $model::find();
|
return $model::find();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -164,6 +165,38 @@ class Bootstrap implements BootstrapInterface
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialize array of two factor authentication validators available
|
||||||
|
$defaultTwoFactorAuthenticationValidators =
|
||||||
|
[
|
||||||
|
'google-authenticator'=>[
|
||||||
|
'class'=>\Da\User\Validator\TwoFactorCodeValidator::class,
|
||||||
|
'description'=>Yii::t('usuario', 'Google Authenticator'),
|
||||||
|
'configurationUrl'=>'user/settings/two-factor',
|
||||||
|
'enabled'=>true
|
||||||
|
],
|
||||||
|
'email'=>[
|
||||||
|
'class'=>\Da\User\Validator\TwoFactorEmailValidator::class,
|
||||||
|
'description'=>Yii::t('usuario', 'Email'),
|
||||||
|
'configurationUrl'=>'user/settings/two-factor-email',
|
||||||
|
// Time duration of the code in seconds
|
||||||
|
'codeDurationTime'=>300,
|
||||||
|
'enabled'=>true
|
||||||
|
],
|
||||||
|
'sms'=>[
|
||||||
|
'class'=>\Da\User\Validator\TwoFactorTextMessageValidator::class,
|
||||||
|
'description'=>Yii::t('usuario', 'Text message'),
|
||||||
|
'configurationUrl'=>'user/settings/two-factor-sms',
|
||||||
|
// component for sending sms
|
||||||
|
'smsSender'=>'smsSender',
|
||||||
|
// Time duration of the code in seconds
|
||||||
|
'codeDurationTime'=>300,
|
||||||
|
'enabled'=>true
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$app->getModule('user')->twoFactorAuthenticationValidators = ArrayHelper::merge(
|
||||||
|
$defaultTwoFactorAuthenticationValidators, $app->getModule('user')->twoFactorAuthenticationValidators);
|
||||||
|
|
||||||
if ($app instanceof WebApplication) {
|
if ($app instanceof WebApplication) {
|
||||||
// override Yii
|
// override Yii
|
||||||
$di->set(
|
$di->set(
|
||||||
@ -175,6 +208,11 @@ class Bootstrap implements BootstrapInterface
|
|||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
die($e);
|
die($e);
|
||||||
}
|
}
|
||||||
@ -256,6 +294,7 @@ class Bootstrap implements BootstrapInterface
|
|||||||
'confirmationMailSubject' => Yii::t('usuario', 'Confirm account on {0}', $app->name),
|
'confirmationMailSubject' => Yii::t('usuario', 'Confirm account on {0}', $app->name),
|
||||||
'reconfirmationMailSubject' => Yii::t('usuario', 'Confirm email change on {0}', $app->name),
|
'reconfirmationMailSubject' => Yii::t('usuario', 'Confirm email change on {0}', $app->name),
|
||||||
'recoveryMailSubject' => Yii::t('usuario', 'Complete password reset on {0}', $app->name),
|
'recoveryMailSubject' => Yii::t('usuario', 'Complete password reset on {0}', $app->name),
|
||||||
|
'twoFactorMailSubject' => Yii::t('usuario', 'Code for two factor authentication on {0}', $app->name),
|
||||||
];
|
];
|
||||||
|
|
||||||
$module->mailParams = array_merge($defaults, $module->mailParams);
|
$module->mailParams = array_merge($defaults, $module->mailParams);
|
||||||
|
|||||||
@ -20,6 +20,9 @@ use Da\User\Service\SocialNetworkAccountConnectService;
|
|||||||
use Da\User\Service\SocialNetworkAuthenticateService;
|
use Da\User\Service\SocialNetworkAuthenticateService;
|
||||||
use Da\User\Traits\ContainerAwareTrait;
|
use Da\User\Traits\ContainerAwareTrait;
|
||||||
use Da\User\Traits\ModuleAwareTrait;
|
use Da\User\Traits\ModuleAwareTrait;
|
||||||
|
use Da\User\Validator\TwoFactorEmailValidator;
|
||||||
|
use Da\User\Validator\TwoFactorTextMessageValidator;
|
||||||
|
use Da\User\Model\User;
|
||||||
use Yii;
|
use Yii;
|
||||||
use yii\authclient\AuthAction;
|
use yii\authclient\AuthAction;
|
||||||
use yii\base\InvalidConfigException;
|
use yii\base\InvalidConfigException;
|
||||||
@ -30,6 +33,7 @@ use yii\filters\VerbFilter;
|
|||||||
use yii\web\Controller;
|
use yii\web\Controller;
|
||||||
use yii\web\Response;
|
use yii\web\Response;
|
||||||
use yii\widgets\ActiveForm;
|
use yii\widgets\ActiveForm;
|
||||||
|
use yii\helpers\ArrayHelper;
|
||||||
|
|
||||||
class SecurityController extends Controller
|
class SecurityController extends Controller
|
||||||
{
|
{
|
||||||
@ -213,12 +217,30 @@ class SecurityController extends Controller
|
|||||||
return $this->goBack();
|
return $this->goBack();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
$module = Yii::$app->getModule('user');
|
||||||
|
$validators = $module->twoFactorAuthenticationValidators;
|
||||||
|
$credentials=Yii::$app->session->get('credentials');
|
||||||
|
$login= $credentials['login'];
|
||||||
|
$user = User::findOne(['email'=>$login]);
|
||||||
|
if( $user==null){
|
||||||
|
$user = User::findOne(['username'=>$login]);
|
||||||
|
}
|
||||||
|
$tfType = $user->getAuthTfType();
|
||||||
|
|
||||||
|
$class = ArrayHelper::getValue($validators,$tfType.'.class');
|
||||||
|
$object = $this
|
||||||
|
->make($class, [$user, null, $this->module->twoFactorAuthenticationCycles]);
|
||||||
|
|
||||||
|
$object->generateCode();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return $this->render(
|
return $this->render(
|
||||||
'confirm',
|
'confirm',
|
||||||
[
|
[
|
||||||
'model' => $form,
|
'model' => $form,
|
||||||
'module' => $this->module,
|
'module' => $this->module
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,10 +30,14 @@ use Da\User\Search\SessionHistorySearch;
|
|||||||
use Da\User\Service\EmailChangeService;
|
use Da\User\Service\EmailChangeService;
|
||||||
use Da\User\Service\SessionHistory\TerminateUserSessionsService;
|
use Da\User\Service\SessionHistory\TerminateUserSessionsService;
|
||||||
use Da\User\Service\TwoFactorQrCodeUriGeneratorService;
|
use Da\User\Service\TwoFactorQrCodeUriGeneratorService;
|
||||||
|
use Da\User\Service\TwoFactorEmailCodeGeneratorService;
|
||||||
|
use Da\User\Service\TwoFactorSmsCodeGeneratorService;
|
||||||
use Da\User\Traits\ContainerAwareTrait;
|
use Da\User\Traits\ContainerAwareTrait;
|
||||||
use Da\User\Traits\ModuleAwareTrait;
|
use Da\User\Traits\ModuleAwareTrait;
|
||||||
use Da\User\Validator\AjaxRequestModelValidator;
|
use Da\User\Validator\AjaxRequestModelValidator;
|
||||||
use Da\User\Validator\TwoFactorCodeValidator;
|
use Da\User\Validator\TwoFactorCodeValidator;
|
||||||
|
use Da\User\Validator\TwoFactorEmailValidator;
|
||||||
|
use Da\User\Validator\TwoFactorTextMessageValidator;
|
||||||
use Yii;
|
use Yii;
|
||||||
use yii\base\DynamicModel;
|
use yii\base\DynamicModel;
|
||||||
use yii\filters\AccessControl;
|
use yii\filters\AccessControl;
|
||||||
@ -115,6 +119,7 @@ class SettingsController extends Controller
|
|||||||
'two-factor',
|
'two-factor',
|
||||||
'two-factor-enable',
|
'two-factor-enable',
|
||||||
'two-factor-disable',
|
'two-factor-disable',
|
||||||
|
'two-factor-mobile-phone'
|
||||||
],
|
],
|
||||||
'roles' => ['@'],
|
'roles' => ['@'],
|
||||||
],
|
],
|
||||||
@ -448,20 +453,27 @@ class SettingsController extends Controller
|
|||||||
|
|
||||||
public function actionTwoFactor($id)
|
public function actionTwoFactor($id)
|
||||||
{
|
{
|
||||||
/**
|
$choice=Yii::$app->request->post('choice');
|
||||||
*
|
/** @var User $user */
|
||||||
*
|
|
||||||
* @var User $user
|
|
||||||
*/
|
|
||||||
$user = $this->userQuery->whereId($id)->one();
|
$user = $this->userQuery->whereId($id)->one();
|
||||||
|
|
||||||
if (null === $user) {
|
if (null === $user) {
|
||||||
throw new NotFoundHttpException();
|
throw new NotFoundHttpException();
|
||||||
}
|
}
|
||||||
|
|
||||||
$uri = $this->make(TwoFactorQrCodeUriGeneratorService::class, [$user])->run();
|
switch ($choice) {
|
||||||
|
case 'google-authenticator':
|
||||||
return $this->renderAjax('two-factor', ['id' => $id, 'uri' => $uri]);
|
$uri = $this->make(TwoFactorQrCodeUriGeneratorService::class, [$user])->run();
|
||||||
|
return $this->renderAjax('two-factor', ['id' => $id, 'uri' => $uri]);
|
||||||
|
case 'email':
|
||||||
|
$emailCode = $this->make(TwoFactorEmailCodeGeneratorService::class, [$user])->run();
|
||||||
|
return $this->renderAjax('two-factor-email', ['id' => $id, 'code' => $emailCode]);
|
||||||
|
case 'sms':
|
||||||
|
// get mobile phone, if exists
|
||||||
|
$mobilePhone=$user->getAuthTfMobilePhone();
|
||||||
|
$smsCode = $this->make(TwoFactorSmsCodeGeneratorService::class, [$user])->run();
|
||||||
|
return $this->renderAjax('two-factor-sms', ['id' => $id, 'code' => $smsCode, 'mobilePhone' => $mobilePhone]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function actionTwoFactorEnable($id)
|
public function actionTwoFactorEnable($id)
|
||||||
@ -482,18 +494,21 @@ class SettingsController extends Controller
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
$code = Yii::$app->request->get('code');
|
$code = Yii::$app->request->get('code');
|
||||||
|
$module = Yii::$app->getModule('user');
|
||||||
|
$validators = $module->twoFactorAuthenticationValidators;
|
||||||
|
$choice = Yii::$app->request->get('choice');
|
||||||
|
$codeDurationTime = ArrayHelper::getValue($validators, $choice.'.codeDurationTime', 300);
|
||||||
|
$class = ArrayHelper::getValue($validators, $choice.'.class');
|
||||||
|
|
||||||
$success = $this
|
$object = $this
|
||||||
->make(TwoFactorCodeValidator::class, [$user, $code, $this->module->twoFactorAuthenticationCycles])
|
->make($class, [$user, $code, $this->module->twoFactorAuthenticationCycles]);
|
||||||
->validate();
|
$success = $object->validate();
|
||||||
|
$success = $success && $user->updateAttributes(['auth_tf_enabled' => '1','auth_tf_type' => $choice]);
|
||||||
$success = $success && $user->updateAttributes(['auth_tf_enabled' => '1']);
|
$message = $success ? $object->getSuccessMessage() : $object->getUnsuccessMessage($codeDurationTime);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'success' => $success,
|
'success' => $success,
|
||||||
'message' => $success
|
'message' => $message
|
||||||
? Yii::t('usuario', 'Two factor authentication successfully enabled.')
|
|
||||||
: Yii::t('usuario', 'Verification failed. Please, enter new code.')
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -578,4 +593,39 @@ class SettingsController extends Controller
|
|||||||
$account->delete();
|
$account->delete();
|
||||||
$this->trigger(SocialNetworkConnectEvent::EVENT_AFTER_DISCONNECT, $event);
|
$this->trigger(SocialNetworkConnectEvent::EVENT_AFTER_DISCONNECT, $event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function actionTwoFactorMobilePhone($id)
|
||||||
|
{
|
||||||
|
Yii::$app->response->format = Response::FORMAT_JSON;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @var User $user
|
||||||
|
*/
|
||||||
|
$user = $this->userQuery->whereId($id)->one();
|
||||||
|
|
||||||
|
if (null === $user) {
|
||||||
|
return [
|
||||||
|
'success' => false,
|
||||||
|
'message' => Yii::t('usuario', 'User not found.')
|
||||||
|
];
|
||||||
|
}
|
||||||
|
$mobilePhone = Yii::$app->request->get('mobilephone');
|
||||||
|
$currentMobilePhone = $user->getAuthTfMobilePhone();
|
||||||
|
$success=false;
|
||||||
|
if ($currentMobilePhone==$mobilePhone) {
|
||||||
|
$success=true;
|
||||||
|
} else {
|
||||||
|
$success = $user->updateAttributes(['auth_tf_mobile_phone' => $mobilePhone]);
|
||||||
|
$success = $success && $this->make(TwoFactorSmsCodeGeneratorService::class, [$user])->run();
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'success' => $success,
|
||||||
|
'message' => $success
|
||||||
|
? Yii::t('usuario', 'Mobile phone number successfully enabled.')
|
||||||
|
: Yii::t('usuario', 'Error while enabling SMS two factor authentication. Please reload the page.'),
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,7 @@ class MailEvent extends Event
|
|||||||
const TYPE_RECOVERY = 'recovery';
|
const TYPE_RECOVERY = 'recovery';
|
||||||
const TYPE_CONFIRM = 'confirm';
|
const TYPE_CONFIRM = 'confirm';
|
||||||
const TYPE_RECONFIRM = 'reconfirm';
|
const TYPE_RECONFIRM = 'reconfirm';
|
||||||
|
const TYPE_TWOFACTORCODE = 'twofactorcode';
|
||||||
|
|
||||||
const EVENT_BEFORE_SEND_MAIL = 'beforeSendMail';
|
const EVENT_BEFORE_SEND_MAIL = 'beforeSendMail';
|
||||||
const EVENT_AFTER_SEND_MAIL = 'afterSendMail';
|
const EVENT_AFTER_SEND_MAIL = 'afterSendMail';
|
||||||
|
|||||||
@ -114,6 +114,28 @@ class MailFactory
|
|||||||
return static::makeMailerService(MailEvent::TYPE_RECONFIRM, $from, $to, $subject, 'reconfirmation', $params);
|
return static::makeMailerService(MailEvent::TYPE_RECONFIRM, $from, $to, $subject, 'reconfirmation', $params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param User $user
|
||||||
|
* @param String $code
|
||||||
|
*
|
||||||
|
* @throws InvalidConfigException
|
||||||
|
* @return MailService
|
||||||
|
*/
|
||||||
|
public static function makeTwoFactorCodeMailerService(User $user, String $code)
|
||||||
|
{
|
||||||
|
/** @var Module $module */
|
||||||
|
$module = Yii::$app->getModule('user');
|
||||||
|
$to = $user->email;
|
||||||
|
|
||||||
|
$from = $module->mailParams['fromEmail'];
|
||||||
|
$subject = $module->mailParams['twoFactorMailSubject'];
|
||||||
|
$params = [
|
||||||
|
'code' => $code,
|
||||||
|
];
|
||||||
|
|
||||||
|
return static::makeMailerService(MailEvent::TYPE_TWOFACTORCODE, $from, $to, $subject, 'twofactorcode', $params);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds a MailerService.
|
* Builds a MailerService.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -15,14 +15,19 @@ use Da\User\Helper\SecurityHelper;
|
|||||||
use Da\User\Model\User;
|
use Da\User\Model\User;
|
||||||
use Da\User\Query\UserQuery;
|
use Da\User\Query\UserQuery;
|
||||||
use Da\User\Traits\ModuleAwareTrait;
|
use Da\User\Traits\ModuleAwareTrait;
|
||||||
|
use Da\User\Traits\ContainerAwareTrait;
|
||||||
use Da\User\Validator\TwoFactorCodeValidator;
|
use Da\User\Validator\TwoFactorCodeValidator;
|
||||||
|
use Da\User\Validator\TwoFactorEmailValidator;
|
||||||
|
use Da\User\Validator\TwoFactorTextMessageValidator;
|
||||||
use Yii;
|
use Yii;
|
||||||
use yii\base\InvalidParamException;
|
use yii\base\InvalidParamException;
|
||||||
use yii\base\Model;
|
use yii\base\Model;
|
||||||
|
use yii\helpers\ArrayHelper;
|
||||||
|
|
||||||
class LoginForm extends Model
|
class LoginForm extends Model
|
||||||
{
|
{
|
||||||
use ModuleAwareTrait;
|
use ModuleAwareTrait;
|
||||||
|
use ContainerAwareTrait;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string login User's email or username
|
* @var string login User's email or username
|
||||||
@ -107,14 +112,21 @@ class LoginForm extends Model
|
|||||||
'twoFactorAuthenticationCodeValidate' => [
|
'twoFactorAuthenticationCodeValidate' => [
|
||||||
'twoFactorAuthenticationCode',
|
'twoFactorAuthenticationCode',
|
||||||
function ($attribute) {
|
function ($attribute) {
|
||||||
if ($this->user === null ||
|
|
||||||
!(new TwoFactorCodeValidator(
|
if ($this->user === null ) {
|
||||||
$this->user,
|
|
||||||
$this->twoFactorAuthenticationCode,
|
|
||||||
$this->module->twoFactorAuthenticationCycles
|
|
||||||
))
|
|
||||||
->validate()) {
|
|
||||||
$this->addError($attribute, Yii::t('usuario', 'Invalid two factor authentication code'));
|
$this->addError($attribute, Yii::t('usuario', 'Invalid two factor authentication code'));
|
||||||
|
}else{
|
||||||
|
$module = Yii::$app->getModule('user');
|
||||||
|
$validators = $module->twoFactorAuthenticationValidators;
|
||||||
|
$type = $this->user->auth_tf_type;
|
||||||
|
$class = ArrayHelper::getValue($validators,$type.'.class');
|
||||||
|
$codeDurationTime = ArrayHelper::getValue($validators,$type.'.codeDurationTime', 300);
|
||||||
|
$validator = $this
|
||||||
|
->make($class, [$this->user, $this->twoFactorAuthenticationCode, $this->module->twoFactorAuthenticationCycles]);
|
||||||
|
$success = $validator->validate();
|
||||||
|
if (!$success) {
|
||||||
|
$this->addError($attribute, $validator->getUnsuccessLoginMessage($codeDurationTime));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Da\User\Migration;
|
||||||
|
|
||||||
|
use yii\db\Migration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles adding columns to table `{{%user}}`.
|
||||||
|
*/
|
||||||
|
class m000000_000010_add_auth_tf_type_auth_tf_mobile_phone_columns_to_user_table extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function safeUp()
|
||||||
|
{
|
||||||
|
$this->addColumn('{{%user}}', 'auth_tf_type', $this->string(20)->after('auth_tf_enabled')->null());
|
||||||
|
$this->addColumn('{{%user}}', 'auth_tf_mobile_phone', $this->string(20)->after('auth_tf_type')->null());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function safeDown()
|
||||||
|
{
|
||||||
|
$this->dropColumn('{{%user}}', 'auth_tf_type');
|
||||||
|
$this->dropColumn('{{%user}}', 'auth_tf_mobile_phone');
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -36,28 +36,30 @@ use yii\web\IdentityInterface;
|
|||||||
* @property bool $gdpr_consent whether user has consent personal data processing
|
* @property bool $gdpr_consent whether user has consent personal data processing
|
||||||
*
|
*
|
||||||
* Database fields:
|
* Database fields:
|
||||||
* @property int $id
|
* @property int $id
|
||||||
* @property string $username
|
* @property string $username
|
||||||
* @property string $email
|
* @property string $email
|
||||||
* @property string $unconfirmed_email
|
* @property string $unconfirmed_email
|
||||||
* @property string $password_hash
|
* @property string $password_hash
|
||||||
* @property string $auth_key
|
* @property string $auth_key
|
||||||
* @property string $auth_tf_key
|
* @property string $auth_tf_key
|
||||||
* @property int $auth_tf_enabled
|
* @property int $auth_tf_enabled
|
||||||
* @property string $registration_ip
|
* @property string $auth_tf_type
|
||||||
* @property int $confirmed_at
|
* @property string $auth_tf_mobile_phone
|
||||||
* @property int $blocked_at
|
* @property string $registration_ip
|
||||||
* @property int $flags
|
* @property int $confirmed_at
|
||||||
* @property int $created_at
|
* @property int $blocked_at
|
||||||
* @property int $updated_at
|
* @property int $flags
|
||||||
* @property int $last_login_at
|
* @property int $created_at
|
||||||
* @property int $gdpr_consent_date date of agreement of data processing
|
* @property int $updated_at
|
||||||
* @property string $last_login_ip
|
* @property int $last_login_at
|
||||||
* @property int $password_changed_at
|
* @property int $gdpr_consent_date date of agreement of data processing
|
||||||
* @property int $password_age
|
* @property string $last_login_ip
|
||||||
* Defined relations:
|
* @property int $password_changed_at
|
||||||
|
* @property int $password_age
|
||||||
|
* Defined relations:
|
||||||
* @property SocialNetworkAccount[] $socialNetworkAccounts
|
* @property SocialNetworkAccount[] $socialNetworkAccounts
|
||||||
* @property Profile $profile
|
* @property Profile $profile
|
||||||
*/
|
*/
|
||||||
class User extends ActiveRecord implements IdentityInterface
|
class User extends ActiveRecord implements IdentityInterface
|
||||||
{
|
{
|
||||||
@ -65,8 +67,8 @@ class User extends ActiveRecord implements IdentityInterface
|
|||||||
use ContainerAwareTrait;
|
use ContainerAwareTrait;
|
||||||
|
|
||||||
// following constants are used on secured email changing process
|
// following constants are used on secured email changing process
|
||||||
const OLD_EMAIL_CONFIRMED = 0b01;
|
public const OLD_EMAIL_CONFIRMED = 0b01;
|
||||||
const NEW_EMAIL_CONFIRMED = 0b10;
|
public const NEW_EMAIL_CONFIRMED = 0b10;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string Plain password. Used for model validation
|
* @var string Plain password. Used for model validation
|
||||||
@ -248,7 +250,9 @@ class User extends ActiveRecord implements IdentityInterface
|
|||||||
// two factor auth rules
|
// two factor auth rules
|
||||||
'twoFactorSecretTrim' => ['auth_tf_key', 'trim'],
|
'twoFactorSecretTrim' => ['auth_tf_key', 'trim'],
|
||||||
'twoFactorSecretLength' => ['auth_tf_key', 'string', 'max' => 16],
|
'twoFactorSecretLength' => ['auth_tf_key', 'string', 'max' => 16],
|
||||||
'twoFactorEnabledNumber' => ['auth_tf_enabled', 'boolean']
|
'twoFactorEnabledNumber' => ['auth_tf_enabled', 'boolean'],
|
||||||
|
'twoFactorTypeLength' => ['auth_tf_type', 'string', 'max' => 20],
|
||||||
|
'twoFactorMobilePhoneLength' => ['auth_tf_mobile_phone', 'string', 'max' => 20],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -361,4 +365,22 @@ class User extends ActiveRecord implements IdentityInterface
|
|||||||
|
|
||||||
return $d->diff(new \DateTime(), true)->format("%a");
|
return $d->diff(new \DateTime(), true)->format("%a");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns authentication two factor type enabled for the user
|
||||||
|
* @return integer
|
||||||
|
*/
|
||||||
|
public function getAuthTfType()
|
||||||
|
{
|
||||||
|
return $this->getAttribute('auth_tf_type');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the mobile phone number used for sms authentication two factor for the user
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getAuthTfMobilePhone()
|
||||||
|
{
|
||||||
|
return $this->getAttribute('auth_tf_mobile_phone');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -100,6 +100,10 @@ class Module extends BaseModule
|
|||||||
* @var array list of permissions for which two factor authentication is mandatory
|
* @var array list of permissions for which two factor authentication is mandatory
|
||||||
*/
|
*/
|
||||||
public $twoFactorAuthenticationForcedPermissions = [];
|
public $twoFactorAuthenticationForcedPermissions = [];
|
||||||
|
/**
|
||||||
|
* @var array list of channels for two factor authentication availables
|
||||||
|
*/
|
||||||
|
public $twoFactorAuthenticationValidators = [];
|
||||||
/**
|
/**
|
||||||
* @var int cycles of key generation are set on 30 sec. To avoid sync issues, increased validity up to 60 sec.
|
* @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/
|
* @see http://2fa-library.readthedocs.io/en/latest/
|
||||||
|
|||||||
64
src/User/Service/TwoFactorEmailCodeGeneratorService.php
Normal file
64
src/User/Service/TwoFactorEmailCodeGeneratorService.php
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?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;
|
||||||
|
|
||||||
|
use Da\TwoFA\Manager;
|
||||||
|
use Da\User\Contracts\ServiceInterface;
|
||||||
|
use Da\User\Model\User;
|
||||||
|
use Da\User\Factory\MailFactory;
|
||||||
|
|
||||||
|
use Yii;
|
||||||
|
|
||||||
|
class TwoFactorEmailCodeGeneratorService implements ServiceInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var User
|
||||||
|
*/
|
||||||
|
protected $user;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TwoFactorEmailCodeGeneratorService constructor.
|
||||||
|
*
|
||||||
|
* @param User $user
|
||||||
|
*/
|
||||||
|
public function __construct(User $user)
|
||||||
|
{
|
||||||
|
$this->user = $user;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritdoc
|
||||||
|
*/
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
$user = $this->user;
|
||||||
|
if (!$user->auth_tf_key) {
|
||||||
|
$user->auth_tf_key = (new Manager())->generateSecretKey();
|
||||||
|
$user->updateAttributes(['auth_tf_key']);
|
||||||
|
}
|
||||||
|
// generate key
|
||||||
|
$code = random_int(0, 999999);
|
||||||
|
$code = str_pad($code, 6, 0, STR_PAD_LEFT);
|
||||||
|
// send email
|
||||||
|
$mailService = MailFactory::makeTwoFactorCodeMailerService($user, $code);
|
||||||
|
// check the sending emailYii::t(
|
||||||
|
if(!$mailService->run()){
|
||||||
|
Yii::$app->session->addFlash('error', Yii::t('usuario','The email sending failed, please check your configuration.'));
|
||||||
|
return false;
|
||||||
|
}else{
|
||||||
|
// put key in session
|
||||||
|
Yii::$app->session->set("email_code_time", date('Y-m-d H:i:s'));
|
||||||
|
Yii::$app->session->set("email_code", $code);
|
||||||
|
}
|
||||||
|
return $code;
|
||||||
|
}
|
||||||
|
}
|
||||||
83
src/User/Service/TwoFactorSmsCodeGeneratorService.php
Normal file
83
src/User/Service/TwoFactorSmsCodeGeneratorService.php
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
<?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;
|
||||||
|
|
||||||
|
use Da\TwoFA\Manager;
|
||||||
|
use Da\User\Contracts\ServiceInterface;
|
||||||
|
use Da\User\Model\User;
|
||||||
|
use Da\User\Factory\MailFactory;
|
||||||
|
use yii\di\Instance;
|
||||||
|
use yetopen\smssender\SmsSenderInterface;
|
||||||
|
use yii\helpers\ArrayHelper;
|
||||||
|
|
||||||
|
use Yii;
|
||||||
|
|
||||||
|
class TwoFactorSmsCodeGeneratorService implements ServiceInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var User
|
||||||
|
*/
|
||||||
|
protected $user;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Type
|
||||||
|
*/
|
||||||
|
protected $type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var SmsSenderInterface
|
||||||
|
*/
|
||||||
|
protected $smsSender;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TwoFactorSmsCodeGeneratorService constructor.
|
||||||
|
*
|
||||||
|
* @param User $user
|
||||||
|
*/
|
||||||
|
public function __construct(User $user)
|
||||||
|
{
|
||||||
|
$this->user = $user;
|
||||||
|
$this->type = 'sms';
|
||||||
|
$module = Yii::$app->getModule('user');
|
||||||
|
$validators = $module->twoFactorAuthenticationValidators;
|
||||||
|
$smsSender = ArrayHelper::getValue($validators,'sms'.'.smsSender');
|
||||||
|
$this->smsSender = Instance::ensure($smsSender, SmsSenderInterface::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritdoc
|
||||||
|
*/
|
||||||
|
public function run()
|
||||||
|
{
|
||||||
|
// generate key
|
||||||
|
$code = random_int(0, 999999);
|
||||||
|
$code = str_pad($code, 6, 0, STR_PAD_LEFT);
|
||||||
|
// get the mobile phone of the user
|
||||||
|
$user = $this->user;
|
||||||
|
$mobilePhone=$user->getAuthTfMobilePhone();
|
||||||
|
|
||||||
|
if( null===$mobilePhone || $mobilePhone=='' ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// send sms
|
||||||
|
$success = $this->smsSender->send($mobilePhone, $code);
|
||||||
|
if($success){
|
||||||
|
// put key in session
|
||||||
|
Yii::$app->session->set("sms_code_time", date('Y-m-d H:i:s'));
|
||||||
|
Yii::$app->session->set("sms_code", $code);
|
||||||
|
}else{
|
||||||
|
Yii::$app->session->addFlash('error', Yii::t('usuario','The sms sending failed, please check your configuration.'));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -15,9 +15,14 @@ use Da\TwoFA\Exception\InvalidSecretKeyException;
|
|||||||
use Da\TwoFA\Manager;
|
use Da\TwoFA\Manager;
|
||||||
use Da\User\Contracts\ValidatorInterface;
|
use Da\User\Contracts\ValidatorInterface;
|
||||||
use Da\User\Model\User;
|
use Da\User\Model\User;
|
||||||
|
use Da\User\Traits\ContainerAwareTrait;
|
||||||
|
use Da\User\Service\TwoFactorQrCodeUriGeneratorService;
|
||||||
|
use Yii;
|
||||||
|
|
||||||
class TwoFactorCodeValidator implements ValidatorInterface
|
class TwoFactorCodeValidator implements ValidatorInterface
|
||||||
{
|
{
|
||||||
|
use ContainerAwareTrait;
|
||||||
|
|
||||||
protected $user;
|
protected $user;
|
||||||
protected $code;
|
protected $code;
|
||||||
protected $cycles;
|
protected $cycles;
|
||||||
@ -46,4 +51,49 @@ class TwoFactorCodeValidator implements ValidatorInterface
|
|||||||
$manager = new Manager();
|
$manager = new Manager();
|
||||||
return $manager->setCycles($this->cycles)->verify($this->code, $this->user->auth_tf_key);
|
return $manager->setCycles($this->cycles)->verify($this->code, $this->user->auth_tf_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function isValidationCodeToBeSent()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function getSuccessMessage()
|
||||||
|
{
|
||||||
|
return Yii::t('usuario', 'Two factor authentication successfully enabled.');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function getUnsuccessMessage($codeDurationTime)
|
||||||
|
{
|
||||||
|
return Yii::t('usuario', 'Verification failed. Please, enter new code.');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function getUnsuccessLoginMessage($codeDurationTime)
|
||||||
|
{
|
||||||
|
return Yii::t('usuario', 'Verification failed. Please, enter new code.');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function generateCode()
|
||||||
|
{
|
||||||
|
return $this->make(TwoFactorQrCodeUriGeneratorService::class,[$this->user])->run();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
114
src/User/Validator/TwoFactorEmailValidator.php
Normal file
114
src/User/Validator/TwoFactorEmailValidator.php
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
<?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\Validator;
|
||||||
|
|
||||||
|
use Da\TwoFA\Exception\InvalidSecretKeyException;
|
||||||
|
use Da\User\Model\User;
|
||||||
|
use Yii;
|
||||||
|
use yii\helpers\ArrayHelper;
|
||||||
|
use Da\User\Traits\ContainerAwareTrait;
|
||||||
|
use Da\User\Service\TwoFactorEmailCodeGeneratorService;
|
||||||
|
|
||||||
|
|
||||||
|
class TwoFactorEmailValidator extends TwoFactorCodeValidator
|
||||||
|
{
|
||||||
|
use ContainerAwareTrait;
|
||||||
|
|
||||||
|
protected $user;
|
||||||
|
protected $code;
|
||||||
|
protected $cycles;
|
||||||
|
protected $type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TwoFactorCodeValidator constructor.
|
||||||
|
*
|
||||||
|
* @param User $user
|
||||||
|
* @param $code
|
||||||
|
* @param int $cycles
|
||||||
|
*/
|
||||||
|
public function __construct(User $user, $code, $cycles = 0)
|
||||||
|
{
|
||||||
|
$this->user = $user;
|
||||||
|
$this->code = $code;
|
||||||
|
$this->cycles = $cycles;
|
||||||
|
$this->type = 'email';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws InvalidSecretKeyException
|
||||||
|
* @return bool|int
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function validate()
|
||||||
|
{
|
||||||
|
if(is_null($this->code) || $this->code == '' )
|
||||||
|
return false;
|
||||||
|
$emailCodeTime = new \DateTime(Yii::$app->session->get("email_code_time"));
|
||||||
|
$currentTime = new \DateTime('now');
|
||||||
|
$interval = $currentTime->getTimestamp()-$emailCodeTime->getTimestamp();
|
||||||
|
|
||||||
|
$module = Yii::$app->getModule('user');
|
||||||
|
$validators = $module->twoFactorAuthenticationValidators;
|
||||||
|
$codeDurationTime = ArrayHelper::getValue($validators,$this->type.'.codeDurationTime', 300);
|
||||||
|
|
||||||
|
if($interval > $codeDurationTime ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$emailCode = Yii::$app->session->get("email_code");
|
||||||
|
return $this->code==$emailCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function isValidationCodeToBeSent()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function getSuccessMessage()
|
||||||
|
{
|
||||||
|
return Yii::t('usuario', 'Two factor authentication successfully enabled.');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function getUnsuccessMessage($codeDurationTime)
|
||||||
|
{
|
||||||
|
return Yii::t('usuario', 'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.', [$codeDurationTime]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function getUnsuccessLoginMessage($codeDurationTime)
|
||||||
|
{
|
||||||
|
return Yii::t('usuario', 'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.', [$codeDurationTime]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function generateCode()
|
||||||
|
{
|
||||||
|
return $this->make(TwoFactorEmailCodeGeneratorService::class,$this->user)->run();
|
||||||
|
}
|
||||||
|
}
|
||||||
105
src/User/Validator/TwoFactorTextMessageValidator.php
Normal file
105
src/User/Validator/TwoFactorTextMessageValidator.php
Normal 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\Validator;
|
||||||
|
|
||||||
|
use Da\TwoFA\Exception\InvalidSecretKeyException;
|
||||||
|
use Da\User\Model\User;
|
||||||
|
use Yii;
|
||||||
|
use yii\helpers\ArrayHelper;
|
||||||
|
use Da\User\Traits\ContainerAwareTrait;
|
||||||
|
use Da\User\Service\TwoFactorSmsCodeGeneratorService;
|
||||||
|
|
||||||
|
|
||||||
|
class TwoFactorTextMessageValidator extends TwoFactorCodeValidator
|
||||||
|
{
|
||||||
|
use ContainerAwareTrait;
|
||||||
|
|
||||||
|
protected $user;
|
||||||
|
protected $code;
|
||||||
|
protected $cycles;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TwoFactorCodeValidator constructor.
|
||||||
|
*
|
||||||
|
* @param User $user
|
||||||
|
* @param $code
|
||||||
|
* @param int $cycles
|
||||||
|
*/
|
||||||
|
public function __construct(User $user, $code, $cycles = 0)
|
||||||
|
{
|
||||||
|
$this->user = $user;
|
||||||
|
|
||||||
|
$this->code = $code;
|
||||||
|
$this->cycles = $cycles;
|
||||||
|
$this->type = 'sms';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws InvalidSecretKeyException
|
||||||
|
* @return bool|int
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function validate()
|
||||||
|
{
|
||||||
|
if(is_null($this->code) || $this->code == '' )
|
||||||
|
return false;
|
||||||
|
$smsCodeTime = new \DateTime(Yii::$app->session->get("sms_code_time"));
|
||||||
|
$currentTime = new \DateTime('now');
|
||||||
|
$interval = $currentTime->getTimestamp()-$smsCodeTime->getTimestamp();
|
||||||
|
$module = Yii::$app->getModule('user');
|
||||||
|
$validators = $module->twoFactorAuthenticationValidators;
|
||||||
|
$codeDurationTime = ArrayHelper::getValue($validators,$this->type.'.codeDurationTime', 300);
|
||||||
|
|
||||||
|
if($interval > $codeDurationTime ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$smsCode = Yii::$app->session->get("sms_code");
|
||||||
|
return $this->code==$smsCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function getSuccessMessage()
|
||||||
|
{
|
||||||
|
return Yii::t('usuario', 'Two factor authentication successfully enabled.');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function getUnsuccessMessage($codeDurationTime)
|
||||||
|
{
|
||||||
|
return Yii::t('usuario', 'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.', [$codeDurationTime]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function getUnsuccessLoginMessage($codeDurationTime)
|
||||||
|
{
|
||||||
|
return Yii::t('usuario', 'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.', [$codeDurationTime]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function generateCode()
|
||||||
|
{
|
||||||
|
$object = $this->make(TwoFactorSmsCodeGeneratorService::class,[$this->user]);
|
||||||
|
return $object->run();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -64,6 +64,7 @@ return [
|
|||||||
'Children' => '',
|
'Children' => '',
|
||||||
'Class' => '',
|
'Class' => '',
|
||||||
'Close' => '',
|
'Close' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Complete password reset on {0}' => '',
|
'Complete password reset on {0}' => '',
|
||||||
'Confirm' => '',
|
'Confirm' => '',
|
||||||
'Confirm account on {0}' => '',
|
'Confirm account on {0}' => '',
|
||||||
@ -107,10 +108,12 @@ return [
|
|||||||
'Error occurred while deleting user' => '',
|
'Error occurred while deleting user' => '',
|
||||||
'Error sending registration message to "{email}". Please try again later.' => '',
|
'Error sending registration message to "{email}". Please try again later.' => '',
|
||||||
'Error sending welcome message to "{email}". Please try again later.' => '',
|
'Error sending welcome message to "{email}". Please try again later.' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
'Export my data' => '',
|
'Export my data' => '',
|
||||||
'Finish' => '',
|
'Finish' => '',
|
||||||
'Force password change at next login' => '',
|
'Force password change at next login' => '',
|
||||||
'Forgot password?' => '',
|
'Forgot password?' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
'Gravatar email' => '',
|
'Gravatar email' => '',
|
||||||
'Hello' => '',
|
'Hello' => '',
|
||||||
'Here you can download your personal data in a comma separated values format.' => '',
|
'Here you can download your personal data in a comma separated values format.' => '',
|
||||||
@ -126,6 +129,10 @@ return [
|
|||||||
'In order to finish your registration, we need you to enter following fields' => '',
|
'In order to finish your registration, we need you to enter following fields' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Information' => '',
|
'Information' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
'Invalid login or password' => '',
|
'Invalid login or password' => '',
|
||||||
'Invalid or expired link' => '',
|
'Invalid or expired link' => '',
|
||||||
'Invalid password' => '',
|
'Invalid password' => '',
|
||||||
@ -142,6 +149,9 @@ return [
|
|||||||
'Login' => '',
|
'Login' => '',
|
||||||
'Logout' => '',
|
'Logout' => '',
|
||||||
'Manage users' => '',
|
'Manage users' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
'Name' => '',
|
'Name' => '',
|
||||||
'Networks' => '',
|
'Networks' => '',
|
||||||
'Never' => '',
|
'Never' => '',
|
||||||
@ -162,6 +172,8 @@ return [
|
|||||||
'Please be certain' => '',
|
'Please be certain' => '',
|
||||||
'Please click the link below to complete your password reset' => '',
|
'Please click the link below to complete your password reset' => '',
|
||||||
'Please fix following errors:' => '',
|
'Please fix following errors:' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Privacy' => '',
|
'Privacy' => '',
|
||||||
'Privacy settings' => '',
|
'Privacy settings' => '',
|
||||||
'Profile' => '',
|
'Profile' => '',
|
||||||
@ -201,16 +213,22 @@ return [
|
|||||||
'Status' => '',
|
'Status' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Switch identities is disabled.' => '',
|
'Switch identities is disabled.' => '',
|
||||||
|
'Text message' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
'Thank you for signing up on {0}' => '',
|
'Thank you for signing up on {0}' => '',
|
||||||
'Thank you, registration is now complete.' => '',
|
'Thank you, registration is now complete.' => '',
|
||||||
'The "recaptcha" component must be configured.' => '',
|
'The "recaptcha" component must be configured.' => '',
|
||||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
'The verification code is incorrect.' => '',
|
'The verification code is incorrect.' => '',
|
||||||
'There is neither role nor permission with name "{0}"' => '',
|
'There is neither role nor permission with name "{0}"' => '',
|
||||||
'There was an error in saving user' => '',
|
'There was an error in saving user' => '',
|
||||||
'This account has already been connected to another user' => '',
|
'This account has already been connected to another user' => '',
|
||||||
'This email address has already been taken' => '',
|
'This email address has already been taken' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
'This username has already been taken' => '',
|
'This username has already been taken' => '',
|
||||||
'This will disable two factor authentication. Are you sure?' => '',
|
'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.' => '',
|
'This will remove your personal data from this site. You will no longer be able to sign in.' => '',
|
||||||
@ -218,6 +236,8 @@ return [
|
|||||||
'Time zone is not valid' => '',
|
'Time zone is not valid' => '',
|
||||||
'Two Factor Authentication (2FA)' => '',
|
'Two Factor Authentication (2FA)' => '',
|
||||||
'Two factor authentication code' => '',
|
'Two factor authentication code' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication has been disabled.' => '',
|
'Two factor authentication has been disabled.' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'Two factor authentication protects you in case of stolen credentials' => '',
|
||||||
'Two factor authentication successfully enabled.' => '',
|
'Two factor authentication successfully enabled.' => '',
|
||||||
@ -288,6 +308,7 @@ return [
|
|||||||
'Your personal information has been removed' => '',
|
'Your personal information has been removed' => '',
|
||||||
'Your profile has been updated' => '',
|
'Your profile has been updated' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'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}' => '',
|
||||||
|
|||||||
@ -64,6 +64,7 @@ return [
|
|||||||
'Children' => '',
|
'Children' => '',
|
||||||
'Class' => '',
|
'Class' => '',
|
||||||
'Close' => '',
|
'Close' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Complete password reset on {0}' => '',
|
'Complete password reset on {0}' => '',
|
||||||
'Confirm' => '',
|
'Confirm' => '',
|
||||||
'Confirm account on {0}' => '',
|
'Confirm account on {0}' => '',
|
||||||
@ -107,10 +108,12 @@ return [
|
|||||||
'Error occurred while deleting user' => '',
|
'Error occurred while deleting user' => '',
|
||||||
'Error sending registration message to "{email}". Please try again later.' => '',
|
'Error sending registration message to "{email}". Please try again later.' => '',
|
||||||
'Error sending welcome message to "{email}". Please try again later.' => '',
|
'Error sending welcome message to "{email}". Please try again later.' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
'Export my data' => '',
|
'Export my data' => '',
|
||||||
'Finish' => '',
|
'Finish' => '',
|
||||||
'Force password change at next login' => '',
|
'Force password change at next login' => '',
|
||||||
'Forgot password?' => '',
|
'Forgot password?' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
'Gravatar email' => '',
|
'Gravatar email' => '',
|
||||||
'Hello' => '',
|
'Hello' => '',
|
||||||
'Here you can download your personal data in a comma separated values format.' => '',
|
'Here you can download your personal data in a comma separated values format.' => '',
|
||||||
@ -126,6 +129,10 @@ return [
|
|||||||
'In order to finish your registration, we need you to enter following fields' => '',
|
'In order to finish your registration, we need you to enter following fields' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Information' => '',
|
'Information' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
'Invalid login or password' => '',
|
'Invalid login or password' => '',
|
||||||
'Invalid or expired link' => '',
|
'Invalid or expired link' => '',
|
||||||
'Invalid password' => '',
|
'Invalid password' => '',
|
||||||
@ -142,6 +149,9 @@ return [
|
|||||||
'Login' => '',
|
'Login' => '',
|
||||||
'Logout' => '',
|
'Logout' => '',
|
||||||
'Manage users' => '',
|
'Manage users' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
'Name' => '',
|
'Name' => '',
|
||||||
'Networks' => '',
|
'Networks' => '',
|
||||||
'Never' => '',
|
'Never' => '',
|
||||||
@ -162,6 +172,8 @@ return [
|
|||||||
'Please be certain' => '',
|
'Please be certain' => '',
|
||||||
'Please click the link below to complete your password reset' => '',
|
'Please click the link below to complete your password reset' => '',
|
||||||
'Please fix following errors:' => '',
|
'Please fix following errors:' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Privacy' => '',
|
'Privacy' => '',
|
||||||
'Privacy settings' => '',
|
'Privacy settings' => '',
|
||||||
'Profile' => '',
|
'Profile' => '',
|
||||||
@ -202,15 +214,21 @@ return [
|
|||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Switch identities is disabled.' => '',
|
'Switch identities is disabled.' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
|
'Text message' => '',
|
||||||
'Thank you for signing up on {0}' => '',
|
'Thank you for signing up on {0}' => '',
|
||||||
'Thank you, registration is now complete.' => '',
|
'Thank you, registration is now complete.' => '',
|
||||||
'The "recaptcha" component must be configured.' => '',
|
'The "recaptcha" component must be configured.' => '',
|
||||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
'The verification code is incorrect.' => '',
|
'The verification code is incorrect.' => '',
|
||||||
'There is neither role nor permission with name "{0}"' => '',
|
'There is neither role nor permission with name "{0}"' => '',
|
||||||
'There was an error in saving user' => '',
|
'There was an error in saving user' => '',
|
||||||
'This account has already been connected to another user' => '',
|
'This account has already been connected to another user' => '',
|
||||||
'This email address has already been taken' => '',
|
'This email address has already been taken' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
'This username has already been taken' => '',
|
'This username has already been taken' => '',
|
||||||
'This will disable two factor authentication. Are you sure?' => '',
|
'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.' => '',
|
'This will remove your personal data from this site. You will no longer be able to sign in.' => '',
|
||||||
@ -218,6 +236,8 @@ return [
|
|||||||
'Time zone is not valid' => '',
|
'Time zone is not valid' => '',
|
||||||
'Two Factor Authentication (2FA)' => '',
|
'Two Factor Authentication (2FA)' => '',
|
||||||
'Two factor authentication code' => '',
|
'Two factor authentication code' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication has been disabled.' => '',
|
'Two factor authentication has been disabled.' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'Two factor authentication protects you in case of stolen credentials' => '',
|
||||||
'Two factor authentication successfully enabled.' => '',
|
'Two factor authentication successfully enabled.' => '',
|
||||||
@ -288,6 +308,7 @@ return [
|
|||||||
'Your personal information has been removed' => '',
|
'Your personal information has been removed' => '',
|
||||||
'Your profile has been updated' => '',
|
'Your profile has been updated' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'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}' => '',
|
||||||
|
|||||||
@ -280,9 +280,21 @@ return [
|
|||||||
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
'Every user having your role has two factor authentication mandatory, you must enable it' => '@@@@',
|
||||||
'Now you can resume the login process' => '@@@@',
|
'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.' => '',
|
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Active' => '',
|
'Active' => '',
|
||||||
'Current' => '',
|
'Current' => '',
|
||||||
'Data privacy' => '',
|
'Data privacy' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'IP' => '',
|
'IP' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Last activity' => '',
|
'Last activity' => '',
|
||||||
@ -290,6 +302,14 @@ return [
|
|||||||
'Session history' => '',
|
'Session history' => '',
|
||||||
'Status' => '',
|
'Status' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
|
'Text message' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||||
'User ID' => '',
|
'User ID' => '',
|
||||||
|
|||||||
@ -280,6 +280,9 @@ return [
|
|||||||
'Active' => '',
|
'Active' => '',
|
||||||
'Current' => '',
|
'Current' => '',
|
||||||
'IP' => '',
|
'IP' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Last activity' => '',
|
'Last activity' => '',
|
||||||
'Session ID' => '',
|
'Session ID' => '',
|
||||||
@ -288,6 +291,23 @@ return [
|
|||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
'User ID' => '',
|
'User ID' => '',
|
||||||
'User agent' => '',
|
'User agent' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
|
'Text message' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
'If you haven\'t received a password, you can reset it at' => '',
|
'If you haven\'t received a password, you can reset it at' => '',
|
||||||
'You received this email because someone, possibly you or someone on your behalf, have created an account at {app_name}' => '',
|
'You received this email because someone, possibly you or someone on your behalf, have created an account at {app_name}' => '',
|
||||||
|
|||||||
@ -276,6 +276,26 @@ return [
|
|||||||
'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, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM, YYYY HH:mm}',
|
||||||
'{0} cannot be blank.' => '{0} no puede estar vacío.',
|
'{0} cannot be blank.' => '{0} no puede estar vacío.',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
|
'Text message' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'If you haven\'t received a password, you can reset it at' => '',
|
'If you haven\'t received a password, you can reset it at' => '',
|
||||||
'You received this email because someone, possibly you or someone on your behalf, have created an account at {app_name}' => '',
|
'You received this email because someone, possibly you or someone on your behalf, have created an account at {app_name}' => '',
|
||||||
'Active' => '',
|
'Active' => '',
|
||||||
@ -291,7 +311,6 @@ return [
|
|||||||
'User agent' => '',
|
'User agent' => '',
|
||||||
'Your consent is required to work with this site' => '',
|
'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' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||||
'An email has been sent with instructions for resetting your password' => '@@Se ha enviado un correo electrónico con instrucciones para restablecer su contraseña@@',
|
|
||||||
'Two factor authentication protects you against stolen credentials' => '@@La autenticación de dos factores le protege del robo de credenciales@@',
|
|
||||||
];
|
];
|
||||||
|
|||||||
@ -271,7 +271,19 @@ return [
|
|||||||
'Active' => '',
|
'Active' => '',
|
||||||
'Authentication rule class {0} can not be instantiated' => '',
|
'Authentication rule class {0} can not be instantiated' => '',
|
||||||
'Current' => '',
|
'Current' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Data privacy' => '',
|
'Data privacy' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'IP' => '',
|
'IP' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Last activity' => '',
|
'Last activity' => '',
|
||||||
@ -282,6 +294,14 @@ return [
|
|||||||
'Status' => '',
|
'Status' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
|
'Text message' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||||
'User ID' => '',
|
'User ID' => '',
|
||||||
'User agent' => '',
|
'User agent' => '',
|
||||||
@ -290,6 +310,7 @@ return [
|
|||||||
'You received this email because someone, possibly you or someone on your behalf, have created an account at {app_name}' => '',
|
'You received this email because someone, possibly you or someone on your behalf, have created an account at {app_name}' => '',
|
||||||
'Your consent is required to work with this site' => '',
|
'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' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'{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}' => '',
|
||||||
];
|
];
|
||||||
|
|||||||
@ -174,6 +174,7 @@ return [
|
|||||||
'Children' => '',
|
'Children' => '',
|
||||||
'Class' => '',
|
'Class' => '',
|
||||||
'Close' => '',
|
'Close' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Create new permission' => '',
|
'Create new permission' => '',
|
||||||
'Create new role' => '',
|
'Create new role' => '',
|
||||||
'Create new rule' => '',
|
'Create new rule' => '',
|
||||||
@ -191,14 +192,20 @@ return [
|
|||||||
'Enable two factor authentication' => '',
|
'Enable two factor authentication' => '',
|
||||||
'Error sending registration message to "{email}". Please try again later.' => '',
|
'Error sending registration message to "{email}". Please try again later.' => '',
|
||||||
'Error sending welcome message to "{email}". Please try again later.' => '',
|
'Error sending welcome message to "{email}". Please try again later.' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
'Export my data' => '',
|
'Export my data' => '',
|
||||||
'Force password change at next login' => '',
|
'Force password change at next login' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
'Here you can download your personal data in a comma separated values format.' => '',
|
'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}' => '',
|
'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' => '',
|
'IP' => '',
|
||||||
'Impersonate this user' => '',
|
'Impersonate this user' => '',
|
||||||
'In order to finish your registration, we need you to enter following fields' => '',
|
'In order to finish your registration, we need you to enter following fields' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
'Invalid password' => '',
|
'Invalid password' => '',
|
||||||
'Invalid two factor authentication code' => '',
|
'Invalid two factor authentication code' => '',
|
||||||
'Invalid value' => '',
|
'Invalid value' => '',
|
||||||
@ -208,6 +215,9 @@ return [
|
|||||||
'Last login IP' => '',
|
'Last login IP' => '',
|
||||||
'Last login time' => '',
|
'Last login time' => '',
|
||||||
'Last password change' => '',
|
'Last password change' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
'Never' => '',
|
'Never' => '',
|
||||||
'New rule' => '',
|
'New rule' => '',
|
||||||
'Not found' => '',
|
'Not found' => '',
|
||||||
@ -215,6 +225,8 @@ return [
|
|||||||
'Once you have deleted your data, you will not longer be able to sign in with this account.' => '',
|
'Once you have deleted your data, you will not longer be able to sign in with this account.' => '',
|
||||||
'Password age' => '',
|
'Password age' => '',
|
||||||
'Please be certain' => '',
|
'Please be certain' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Privacy' => '',
|
'Privacy' => '',
|
||||||
'Privacy settings' => '',
|
'Privacy settings' => '',
|
||||||
'Registration on this website is disabled' => '',
|
'Registration on this website is disabled' => '',
|
||||||
@ -234,14 +246,22 @@ return [
|
|||||||
'Send password recovery email' => '',
|
'Send password recovery email' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Switch identities is disabled.' => '',
|
'Switch identities is disabled.' => '',
|
||||||
|
'Text message' => '',
|
||||||
'The "recaptcha" component must be configured.' => '',
|
'The "recaptcha" component must be configured.' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
'The verification code is incorrect.' => '',
|
'The verification code is incorrect.' => '',
|
||||||
'There is neither role nor permission with name "{0}"' => '',
|
'There is neither role nor permission with name "{0}"' => '',
|
||||||
'There was an error in saving user' => '',
|
'There was an error in saving user' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
'This will disable two factor authentication. Are you sure?' => '',
|
'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.' => '',
|
'This will remove your personal data from this site. You will no longer be able to sign in.' => '',
|
||||||
'Two Factor Authentication (2FA)' => '',
|
'Two Factor Authentication (2FA)' => '',
|
||||||
'Two factor authentication code' => '',
|
'Two factor authentication code' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication has been disabled.' => '',
|
'Two factor authentication has been disabled.' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'Two factor authentication protects you in case of stolen credentials' => '',
|
||||||
'Two factor authentication successfully enabled.' => '',
|
'Two factor authentication successfully enabled.' => '',
|
||||||
@ -283,6 +303,7 @@ return [
|
|||||||
'Your password has expired, you must change it now' => '',
|
'Your password has expired, you must change it now' => '',
|
||||||
'Your personal information has been removed' => '',
|
'Your personal information has been removed' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'privacy policy' => '',
|
'privacy policy' => '',
|
||||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||||
'{0} cannot be blank.' => '',
|
'{0} cannot be blank.' => '',
|
||||||
|
|||||||
@ -64,6 +64,7 @@ return [
|
|||||||
'Children' => '',
|
'Children' => '',
|
||||||
'Class' => '',
|
'Class' => '',
|
||||||
'Close' => '',
|
'Close' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Complete password reset on {0}' => '',
|
'Complete password reset on {0}' => '',
|
||||||
'Confirm' => '',
|
'Confirm' => '',
|
||||||
'Confirm account on {0}' => '',
|
'Confirm account on {0}' => '',
|
||||||
@ -107,10 +108,12 @@ return [
|
|||||||
'Error occurred while deleting user' => '',
|
'Error occurred while deleting user' => '',
|
||||||
'Error sending registration message to "{email}". Please try again later.' => '',
|
'Error sending registration message to "{email}". Please try again later.' => '',
|
||||||
'Error sending welcome message to "{email}". Please try again later.' => '',
|
'Error sending welcome message to "{email}". Please try again later.' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
'Export my data' => '',
|
'Export my data' => '',
|
||||||
'Finish' => '',
|
'Finish' => '',
|
||||||
'Force password change at next login' => '',
|
'Force password change at next login' => '',
|
||||||
'Forgot password?' => '',
|
'Forgot password?' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
'Gravatar email' => '',
|
'Gravatar email' => '',
|
||||||
'Hello' => '',
|
'Hello' => '',
|
||||||
'Here you can download your personal data in a comma separated values format.' => '',
|
'Here you can download your personal data in a comma separated values format.' => '',
|
||||||
@ -126,6 +129,10 @@ return [
|
|||||||
'In order to finish your registration, we need you to enter following fields' => '',
|
'In order to finish your registration, we need you to enter following fields' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Information' => '',
|
'Information' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
'Invalid login or password' => '',
|
'Invalid login or password' => '',
|
||||||
'Invalid or expired link' => '',
|
'Invalid or expired link' => '',
|
||||||
'Invalid password' => '',
|
'Invalid password' => '',
|
||||||
@ -142,6 +149,9 @@ return [
|
|||||||
'Login' => '',
|
'Login' => '',
|
||||||
'Logout' => '',
|
'Logout' => '',
|
||||||
'Manage users' => '',
|
'Manage users' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
'Name' => '',
|
'Name' => '',
|
||||||
'Networks' => '',
|
'Networks' => '',
|
||||||
'Never' => '',
|
'Never' => '',
|
||||||
@ -162,6 +172,8 @@ return [
|
|||||||
'Please be certain' => '',
|
'Please be certain' => '',
|
||||||
'Please click the link below to complete your password reset' => '',
|
'Please click the link below to complete your password reset' => '',
|
||||||
'Please fix following errors:' => '',
|
'Please fix following errors:' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Privacy' => '',
|
'Privacy' => '',
|
||||||
'Privacy settings' => '',
|
'Privacy settings' => '',
|
||||||
'Profile' => '',
|
'Profile' => '',
|
||||||
@ -201,16 +213,22 @@ return [
|
|||||||
'Status' => '',
|
'Status' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Switch identities is disabled.' => '',
|
'Switch identities is disabled.' => '',
|
||||||
|
'Text message' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
'Thank you for signing up on {0}' => '',
|
'Thank you for signing up on {0}' => '',
|
||||||
'Thank you, registration is now complete.' => '',
|
'Thank you, registration is now complete.' => '',
|
||||||
'The "recaptcha" component must be configured.' => '',
|
'The "recaptcha" component must be configured.' => '',
|
||||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
'The verification code is incorrect.' => '',
|
'The verification code is incorrect.' => '',
|
||||||
'There is neither role nor permission with name "{0}"' => '',
|
'There is neither role nor permission with name "{0}"' => '',
|
||||||
'There was an error in saving user' => '',
|
'There was an error in saving user' => '',
|
||||||
'This account has already been connected to another user' => '',
|
'This account has already been connected to another user' => '',
|
||||||
'This email address has already been taken' => '',
|
'This email address has already been taken' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
'This username has already been taken' => '',
|
'This username has already been taken' => '',
|
||||||
'This will disable two factor authentication. Are you sure?' => '',
|
'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.' => '',
|
'This will remove your personal data from this site. You will no longer be able to sign in.' => '',
|
||||||
@ -218,6 +236,8 @@ return [
|
|||||||
'Time zone is not valid' => '',
|
'Time zone is not valid' => '',
|
||||||
'Two Factor Authentication (2FA)' => '',
|
'Two Factor Authentication (2FA)' => '',
|
||||||
'Two factor authentication code' => '',
|
'Two factor authentication code' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication has been disabled.' => '',
|
'Two factor authentication has been disabled.' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'Two factor authentication protects you in case of stolen credentials' => '',
|
||||||
'Two factor authentication successfully enabled.' => '',
|
'Two factor authentication successfully enabled.' => '',
|
||||||
@ -288,6 +308,7 @@ return [
|
|||||||
'Your personal information has been removed' => '',
|
'Your personal information has been removed' => '',
|
||||||
'Your profile has been updated' => '',
|
'Your profile has been updated' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'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}' => '',
|
||||||
|
|||||||
@ -273,9 +273,21 @@ return [
|
|||||||
'{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM YYYY HH:mm}',
|
'{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM YYYY HH:mm}',
|
||||||
'{0} cannot be blank.' => '{0} ne peut être vide.',
|
'{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.' => '',
|
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Active' => '',
|
'Active' => '',
|
||||||
'Current' => '',
|
'Current' => '',
|
||||||
'Data privacy' => '',
|
'Data privacy' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'If you haven\'t received a password, you can reset it at' => '',
|
'If you haven\'t received a password, you can reset it at' => '',
|
||||||
'IP' => '',
|
'IP' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
@ -285,10 +297,19 @@ return [
|
|||||||
'Status' => '',
|
'Status' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
|
'Text message' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||||
'User ID' => '',
|
'User ID' => '',
|
||||||
'User agent' => '',
|
'User agent' => '',
|
||||||
'Your consent is required to work with this site' => '',
|
'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' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
'{0, date, MMM dd, YYYY HH:mm}' => '',
|
||||||
];
|
];
|
||||||
|
|||||||
@ -64,6 +64,7 @@ return [
|
|||||||
'Children' => '',
|
'Children' => '',
|
||||||
'Class' => '',
|
'Class' => '',
|
||||||
'Close' => '',
|
'Close' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Complete password reset on {0}' => '',
|
'Complete password reset on {0}' => '',
|
||||||
'Confirm' => '',
|
'Confirm' => '',
|
||||||
'Confirm account on {0}' => '',
|
'Confirm account on {0}' => '',
|
||||||
@ -107,10 +108,12 @@ return [
|
|||||||
'Error occurred while deleting user' => '',
|
'Error occurred while deleting user' => '',
|
||||||
'Error sending registration message to "{email}". Please try again later.' => '',
|
'Error sending registration message to "{email}". Please try again later.' => '',
|
||||||
'Error sending welcome message to "{email}". Please try again later.' => '',
|
'Error sending welcome message to "{email}". Please try again later.' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
'Export my data' => '',
|
'Export my data' => '',
|
||||||
'Finish' => '',
|
'Finish' => '',
|
||||||
'Force password change at next login' => '',
|
'Force password change at next login' => '',
|
||||||
'Forgot password?' => '',
|
'Forgot password?' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
'Gravatar email' => '',
|
'Gravatar email' => '',
|
||||||
'Hello' => '',
|
'Hello' => '',
|
||||||
'Here you can download your personal data in a comma separated values format.' => '',
|
'Here you can download your personal data in a comma separated values format.' => '',
|
||||||
@ -126,6 +129,10 @@ return [
|
|||||||
'In order to finish your registration, we need you to enter following fields' => '',
|
'In order to finish your registration, we need you to enter following fields' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Information' => '',
|
'Information' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
'Invalid login or password' => '',
|
'Invalid login or password' => '',
|
||||||
'Invalid or expired link' => '',
|
'Invalid or expired link' => '',
|
||||||
'Invalid password' => '',
|
'Invalid password' => '',
|
||||||
@ -142,6 +149,9 @@ return [
|
|||||||
'Login' => '',
|
'Login' => '',
|
||||||
'Logout' => '',
|
'Logout' => '',
|
||||||
'Manage users' => '',
|
'Manage users' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
'Name' => '',
|
'Name' => '',
|
||||||
'Networks' => '',
|
'Networks' => '',
|
||||||
'Never' => '',
|
'Never' => '',
|
||||||
@ -162,6 +172,8 @@ return [
|
|||||||
'Please be certain' => '',
|
'Please be certain' => '',
|
||||||
'Please click the link below to complete your password reset' => '',
|
'Please click the link below to complete your password reset' => '',
|
||||||
'Please fix following errors:' => '',
|
'Please fix following errors:' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Privacy' => '',
|
'Privacy' => '',
|
||||||
'Privacy settings' => '',
|
'Privacy settings' => '',
|
||||||
'Profile' => '',
|
'Profile' => '',
|
||||||
@ -202,15 +214,21 @@ return [
|
|||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Switch identities is disabled.' => '',
|
'Switch identities is disabled.' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
|
'Text message' => '',
|
||||||
'Thank you for signing up on {0}' => '',
|
'Thank you for signing up on {0}' => '',
|
||||||
'Thank you, registration is now complete.' => '',
|
'Thank you, registration is now complete.' => '',
|
||||||
'The "recaptcha" component must be configured.' => '',
|
'The "recaptcha" component must be configured.' => '',
|
||||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
'The verification code is incorrect.' => '',
|
'The verification code is incorrect.' => '',
|
||||||
'There is neither role nor permission with name "{0}"' => '',
|
'There is neither role nor permission with name "{0}"' => '',
|
||||||
'There was an error in saving user' => '',
|
'There was an error in saving user' => '',
|
||||||
'This account has already been connected to another user' => '',
|
'This account has already been connected to another user' => '',
|
||||||
'This email address has already been taken' => '',
|
'This email address has already been taken' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
'This username has already been taken' => '',
|
'This username has already been taken' => '',
|
||||||
'This will disable two factor authentication. Are you sure?' => '',
|
'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.' => '',
|
'This will remove your personal data from this site. You will no longer be able to sign in.' => '',
|
||||||
@ -218,6 +236,8 @@ return [
|
|||||||
'Time zone is not valid' => '',
|
'Time zone is not valid' => '',
|
||||||
'Two Factor Authentication (2FA)' => '',
|
'Two Factor Authentication (2FA)' => '',
|
||||||
'Two factor authentication code' => '',
|
'Two factor authentication code' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication has been disabled.' => '',
|
'Two factor authentication has been disabled.' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'Two factor authentication protects you in case of stolen credentials' => '',
|
||||||
'Two factor authentication successfully enabled.' => '',
|
'Two factor authentication successfully enabled.' => '',
|
||||||
@ -288,6 +308,7 @@ return [
|
|||||||
'Your personal information has been removed' => '',
|
'Your personal information has been removed' => '',
|
||||||
'Your profile has been updated' => '',
|
'Your profile has been updated' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'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}' => '',
|
||||||
|
|||||||
@ -272,8 +272,20 @@ return [
|
|||||||
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '',
|
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '',
|
||||||
'Active' => '',
|
'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.' => '',
|
'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.' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Current' => '',
|
'Current' => '',
|
||||||
'Data privacy' => '',
|
'Data privacy' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'IP' => '',
|
'IP' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Last activity' => '',
|
'Last activity' => '',
|
||||||
@ -285,11 +297,20 @@ return [
|
|||||||
'Status' => '',
|
'Status' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
|
'Text message' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'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.' => '',
|
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||||
'User ID' => '',
|
'User ID' => '',
|
||||||
'User agent' => '',
|
'User agent' => '',
|
||||||
'You received this email because someone, possibly you or someone on your behalf, have created an account at {app_name}' => '',
|
'You received this email because someone, possibly you or someone on your behalf, have created an account at {app_name}' => '',
|
||||||
'Your consent is required to work with this site' => '',
|
'Your consent is required to work with this site' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
];
|
];
|
||||||
|
|||||||
@ -63,6 +63,7 @@ return [
|
|||||||
'Children' => 'Figli',
|
'Children' => 'Figli',
|
||||||
'Class' => 'Classe',
|
'Class' => 'Classe',
|
||||||
'Close' => 'Chiudi',
|
'Close' => 'Chiudi',
|
||||||
|
'Code for two factor authentication on {0}' => 'Codice per l\'autenticazione a due fattori su {0}',
|
||||||
'Complete password reset on {0}' => 'Completa la procedura di reset della password su {0}',
|
'Complete password reset on {0}' => 'Completa la procedura di reset della password su {0}',
|
||||||
'Confirm' => 'Conferma',
|
'Confirm' => 'Conferma',
|
||||||
'Confirm account on {0}' => 'Conferma l\'account su {0}',
|
'Confirm account on {0}' => 'Conferma l\'account su {0}',
|
||||||
@ -105,10 +106,12 @@ return [
|
|||||||
'Error occurred while deleting user' => 'Si è verificato un errore durante l\'eliminazione dell\'utente',
|
'Error occurred while deleting user' => 'Si è verificato un errore durante l\'eliminazione dell\'utente',
|
||||||
'Error sending registration message to "{email}". Please try again later.' => 'C\'è stato un errore nell\'invio del messaggio di registrazione all\'indirizzo "{email}". Per favore ritenta più tardi.',
|
'Error sending registration message to "{email}". Please try again later.' => 'C\'è stato un errore nell\'invio del messaggio di registrazione all\'indirizzo "{email}". Per favore ritenta più tardi.',
|
||||||
'Error sending welcome message to "{email}". Please try again later.' => 'C\'è stato un errore nell\'invio del messaggio di benvenuto all\'indirizzo "{email}". Per favore ritenta più tardi.',
|
'Error sending welcome message to "{email}". Please try again later.' => 'C\'è stato un errore nell\'invio del messaggio di benvenuto all\'indirizzo "{email}". Per favore ritenta più tardi.',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => 'Errore in fase di attivazione dell\'autenticazione a due fattori tramite SMS. Ricarica la pagina',
|
||||||
'Export my data' => 'Esporta i miei dati',
|
'Export my data' => 'Esporta i miei dati',
|
||||||
'Finish' => 'Completa',
|
'Finish' => 'Completa',
|
||||||
'Force password change at next login' => 'Forza il cambio password al prossimo accesso',
|
'Force password change at next login' => 'Forza il cambio password al prossimo accesso',
|
||||||
'Forgot password?' => 'Password dimenticata?',
|
'Forgot password?' => 'Password dimenticata?',
|
||||||
|
'Google Authenticator' => 'Autenticatore di Google',
|
||||||
'Gravatar email' => 'Email di Gravatar',
|
'Gravatar email' => 'Email di Gravatar',
|
||||||
'Hello' => 'Ciao',
|
'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.',
|
'Here you can download your personal data in a comma separated values format.' => 'Da qui puoi scaricare i tuoi dati in formato CSV.',
|
||||||
@ -121,6 +124,10 @@ return [
|
|||||||
'In order to complete your request, please click the link below' => 'Per completare la richiesta fai click sul collegamento qui sotto',
|
'In order to complete your request, please click the link below' => 'Per completare la richiesta fai click sul collegamento qui sotto',
|
||||||
'In order to finish your registration, we need you to enter following fields' => 'Per finalizzare la registrazione devi fornire le seguenti informazioni',
|
'In order to finish your registration, we need you to enter following fields' => 'Per finalizzare la registrazione devi fornire le seguenti informazioni',
|
||||||
'Information' => 'Informazioni',
|
'Information' => 'Informazioni',
|
||||||
|
'Insert' => 'Inserisci',
|
||||||
|
'Insert the code you received by SMS.' => 'Inserisci il codice ricevuto tramite SMS.',
|
||||||
|
'Insert the code you received by email.' => 'Inserisci il codice ricevuto tramite email.',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => 'Inserisci il numero di telefono sul quale ricevere il messaggio di testo nel formato internazionale',
|
||||||
'Invalid login or password' => 'Utente o password non validi',
|
'Invalid login or password' => 'Utente o password non validi',
|
||||||
'Invalid or expired link' => 'Collegamento non valido o scaduto',
|
'Invalid or expired link' => 'Collegamento non valido o scaduto',
|
||||||
'Invalid password' => 'Password non valida',
|
'Invalid password' => 'Password non valida',
|
||||||
@ -136,6 +143,9 @@ return [
|
|||||||
'Login' => 'Accedi',
|
'Login' => 'Accedi',
|
||||||
'Logout' => 'Esci',
|
'Logout' => 'Esci',
|
||||||
'Manage users' => 'Gestisci gli utenti',
|
'Manage users' => 'Gestisci gli utenti',
|
||||||
|
'Mobile phone not found, please check your profile' => 'Il numero di telefono non è stato trovato. Verifica il tuo profilo',
|
||||||
|
'Mobile phone number' => 'Numero di cellulare',
|
||||||
|
'Mobile phone number successfully enabled.' => 'Il numero di cellulare è stato abilitato',
|
||||||
'Name' => 'Nome',
|
'Name' => 'Nome',
|
||||||
'Networks' => 'Rete',
|
'Networks' => 'Rete',
|
||||||
'Never' => 'Mai',
|
'Never' => 'Mai',
|
||||||
@ -156,6 +166,8 @@ return [
|
|||||||
'Please be certain' => 'Pensaci bene',
|
'Please be certain' => 'Pensaci bene',
|
||||||
'Please click the link below to complete your password reset' => 'Per favore fai click sul collegamento sotto per completare il cambio password',
|
'Please click the link below to complete your password reset' => 'Per favore fai click sul collegamento sotto per completare il cambio password',
|
||||||
'Please fix following errors:' => 'Per favore correggi i seguenti errori:',
|
'Please fix following errors:' => 'Per favore correggi i seguenti errori:',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => 'Inserire il codice corretto. Il codice è valido per {0} secondi. Se si desidera ricevere un nuovo codice cliccare su \'Annulla\' e ripetere la procedura di autenticazione',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => 'Inserire il codice corretto. Il codice è valido per {0} secondi. Se si desidera ricevere un nuovo codice, chiudere questa finestra e ripetere la richiesta di abilitazione.',
|
||||||
'Privacy' => 'Privacy',
|
'Privacy' => 'Privacy',
|
||||||
'Privacy settings' => 'Impostazioni privacy',
|
'Privacy settings' => 'Impostazioni privacy',
|
||||||
'Profile' => 'Profilo',
|
'Profile' => 'Profilo',
|
||||||
@ -192,10 +204,15 @@ return [
|
|||||||
'Something went wrong' => 'È successo qualcosa di strano',
|
'Something went wrong' => 'È successo qualcosa di strano',
|
||||||
'Submit' => 'Invia',
|
'Submit' => 'Invia',
|
||||||
'Switch identities is disabled.' => 'Il cambio identità è disabilitato',
|
'Switch identities is disabled.' => 'Il cambio identità è disabilitato',
|
||||||
|
'Text message' => 'Messaggio di testo tramite SMS',
|
||||||
'Thank you for signing up on {0}' => 'Grazie per esserti registrato su {0}',
|
'Thank you for signing up on {0}' => 'Grazie per esserti registrato su {0}',
|
||||||
'Thank you, registration is now complete.' => 'Grazie, la tua registrazione è completa.',
|
'Thank you, registration is now complete.' => 'Grazie, la tua registrazione è completa.',
|
||||||
'The "recaptcha" component must be configured.' => 'Occorre configurare il componente "recaptcha".',
|
'The "recaptcha" component must be configured.' => 'Occorre configurare il componente "recaptcha".',
|
||||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => 'Il link di conferma non è valido o scaduto. Per favore prova a richiederne uno nuovo',
|
'The confirmation link is invalid or expired. Please try requesting a new one.' => 'Il link di conferma non è valido o scaduto. Per favore prova a richiederne uno nuovo',
|
||||||
|
'The email address set is: "{0}".' => 'L\'indirizzo email impostato è: "{0}".',
|
||||||
|
'The email sending failed, please check your configuration.' => 'L\'invio della email non è riuscito, verifica la configurazione',
|
||||||
|
'The phone number set is: "{0}".' => 'Il numero di telefono impostato è: "{0}".',
|
||||||
|
'The sms sending failed, please check your configuration.' => 'L\'invio del messaggio di testo non è riuscito, verifica il numero di cellulare o contatta l\'assistenza',
|
||||||
'The verification code is incorrect.' => 'Il codice di verifica non è corretto.',
|
'The verification code is incorrect.' => 'Il codice di verifica non è corretto.',
|
||||||
'There is neither role nor permission with name "{0}"' => 'Non esiste un ruolo o permesso di nome "{0}',
|
'There is neither role nor permission with name "{0}"' => 'Non esiste un ruolo o permesso di nome "{0}',
|
||||||
'There was an error in saving user' => 'Errore in salvataggio utente',
|
'There was an error in saving user' => 'Errore in salvataggio utente',
|
||||||
@ -208,6 +225,8 @@ return [
|
|||||||
'Time zone is not valid' => 'Il fuso orario non è valido',
|
'Time zone is not valid' => 'Il fuso orario non è valido',
|
||||||
'Two Factor Authentication (2FA)' => 'Autenticazione a due fattori (2FA)',
|
'Two Factor Authentication (2FA)' => 'Autenticazione a due fattori (2FA)',
|
||||||
'Two factor authentication code' => 'Codice di autenticazione a due fattori',
|
'Two factor authentication code' => 'Codice di autenticazione a due fattori',
|
||||||
|
'Two factor authentication code by SMS' => 'Codice di autenticazione a due fattori tramite SMS',
|
||||||
|
'Two factor authentication code by email' => 'Codice di autenticazione a due fattori tramite email',
|
||||||
'Two factor authentication has been disabled.' => 'Autenticazione a due fattori disabilitata.',
|
'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 fattori 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.',
|
'Two factor authentication successfully enabled.' => 'Autenticazione a due fattori abilitata con successo.',
|
||||||
@ -275,21 +294,10 @@ return [
|
|||||||
'Your personal information has been removed' => 'I tuoi dati personali sono stati rimossi',
|
'Your personal information has been removed' => 'I tuoi dati personali sono stati rimossi',
|
||||||
'Your profile has been updated' => 'Il tuo profilo è stato aggiornato',
|
'Your profile has been updated' => 'Il tuo profilo è stato aggiornato',
|
||||||
'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',
|
'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',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => 'La tua autenticazione a due fattori è basata su "{0}".',
|
||||||
'privacy policy' => 'politica della privacy',
|
'privacy policy' => 'politica della privacy',
|
||||||
'{0, date, MMM dd, YYYY HH:mm}' => '{0, date, MMM dd, YYYY HH:mm}',
|
'{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, date, MMMM dd, YYYY HH:mm}' => '{0, date, dd MMMM YYYY HH:mm}',
|
||||||
'{0} cannot be blank.' => '{0} non può essere vuoto.',
|
'{0} cannot be blank.' => '{0} non può essere vuoto.',
|
||||||
'If you haven\'t received a password, you can reset it at' => '',
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
'You received this email because someone, possibly you or someone on your behalf, have created an account at {app_name}' => '',
|
|
||||||
'Active' => '',
|
|
||||||
'Current' => '',
|
|
||||||
'IP' => '',
|
|
||||||
'Inactive' => '',
|
|
||||||
'Last activity' => '',
|
|
||||||
'Session ID' => '',
|
|
||||||
'Session history' => '',
|
|
||||||
'Status' => '',
|
|
||||||
'Terminate all sessions' => '',
|
|
||||||
'User ID' => '',
|
|
||||||
'User agent' => '',
|
|
||||||
];
|
];
|
||||||
|
|||||||
@ -64,6 +64,7 @@ return [
|
|||||||
'Children' => '',
|
'Children' => '',
|
||||||
'Class' => '',
|
'Class' => '',
|
||||||
'Close' => '',
|
'Close' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Complete password reset on {0}' => '',
|
'Complete password reset on {0}' => '',
|
||||||
'Confirm' => '',
|
'Confirm' => '',
|
||||||
'Confirm account on {0}' => '',
|
'Confirm account on {0}' => '',
|
||||||
@ -107,10 +108,12 @@ return [
|
|||||||
'Error occurred while deleting user' => '',
|
'Error occurred while deleting user' => '',
|
||||||
'Error sending registration message to "{email}". Please try again later.' => '',
|
'Error sending registration message to "{email}". Please try again later.' => '',
|
||||||
'Error sending welcome message to "{email}". Please try again later.' => '',
|
'Error sending welcome message to "{email}". Please try again later.' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
'Export my data' => '',
|
'Export my data' => '',
|
||||||
'Finish' => '',
|
'Finish' => '',
|
||||||
'Force password change at next login' => '',
|
'Force password change at next login' => '',
|
||||||
'Forgot password?' => '',
|
'Forgot password?' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
'Gravatar email' => '',
|
'Gravatar email' => '',
|
||||||
'Hello' => '',
|
'Hello' => '',
|
||||||
'Here you can download your personal data in a comma separated values format.' => '',
|
'Here you can download your personal data in a comma separated values format.' => '',
|
||||||
@ -126,6 +129,10 @@ return [
|
|||||||
'In order to finish your registration, we need you to enter following fields' => '',
|
'In order to finish your registration, we need you to enter following fields' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Information' => '',
|
'Information' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
'Invalid login or password' => '',
|
'Invalid login or password' => '',
|
||||||
'Invalid or expired link' => '',
|
'Invalid or expired link' => '',
|
||||||
'Invalid password' => '',
|
'Invalid password' => '',
|
||||||
@ -142,6 +149,9 @@ return [
|
|||||||
'Login' => '',
|
'Login' => '',
|
||||||
'Logout' => '',
|
'Logout' => '',
|
||||||
'Manage users' => '',
|
'Manage users' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
'Name' => '',
|
'Name' => '',
|
||||||
'Networks' => '',
|
'Networks' => '',
|
||||||
'Never' => '',
|
'Never' => '',
|
||||||
@ -162,6 +172,8 @@ return [
|
|||||||
'Please be certain' => '',
|
'Please be certain' => '',
|
||||||
'Please click the link below to complete your password reset' => '',
|
'Please click the link below to complete your password reset' => '',
|
||||||
'Please fix following errors:' => '',
|
'Please fix following errors:' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Privacy' => '',
|
'Privacy' => '',
|
||||||
'Privacy settings' => '',
|
'Privacy settings' => '',
|
||||||
'Profile' => '',
|
'Profile' => '',
|
||||||
@ -202,15 +214,21 @@ return [
|
|||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Switch identities is disabled.' => '',
|
'Switch identities is disabled.' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
|
'Text message' => '',
|
||||||
'Thank you for signing up on {0}' => '',
|
'Thank you for signing up on {0}' => '',
|
||||||
'Thank you, registration is now complete.' => '',
|
'Thank you, registration is now complete.' => '',
|
||||||
'The "recaptcha" component must be configured.' => '',
|
'The "recaptcha" component must be configured.' => '',
|
||||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
'The verification code is incorrect.' => '',
|
'The verification code is incorrect.' => '',
|
||||||
'There is neither role nor permission with name "{0}"' => '',
|
'There is neither role nor permission with name "{0}"' => '',
|
||||||
'There was an error in saving user' => '',
|
'There was an error in saving user' => '',
|
||||||
'This account has already been connected to another user' => '',
|
'This account has already been connected to another user' => '',
|
||||||
'This email address has already been taken' => '',
|
'This email address has already been taken' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
'This username has already been taken' => '',
|
'This username has already been taken' => '',
|
||||||
'This will disable two factor authentication. Are you sure?' => '',
|
'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.' => '',
|
'This will remove your personal data from this site. You will no longer be able to sign in.' => '',
|
||||||
@ -218,6 +236,8 @@ return [
|
|||||||
'Time zone is not valid' => '',
|
'Time zone is not valid' => '',
|
||||||
'Two Factor Authentication (2FA)' => '',
|
'Two Factor Authentication (2FA)' => '',
|
||||||
'Two factor authentication code' => '',
|
'Two factor authentication code' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication has been disabled.' => '',
|
'Two factor authentication has been disabled.' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'Two factor authentication protects you in case of stolen credentials' => '',
|
||||||
'Two factor authentication successfully enabled.' => '',
|
'Two factor authentication successfully enabled.' => '',
|
||||||
@ -288,6 +308,7 @@ return [
|
|||||||
'Your personal information has been removed' => '',
|
'Your personal information has been removed' => '',
|
||||||
'Your profile has been updated' => '',
|
'Your profile has been updated' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'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}' => '',
|
||||||
|
|||||||
@ -64,6 +64,7 @@ return [
|
|||||||
'Children' => '',
|
'Children' => '',
|
||||||
'Class' => '',
|
'Class' => '',
|
||||||
'Close' => '',
|
'Close' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Complete password reset on {0}' => '',
|
'Complete password reset on {0}' => '',
|
||||||
'Confirm' => '',
|
'Confirm' => '',
|
||||||
'Confirm account on {0}' => '',
|
'Confirm account on {0}' => '',
|
||||||
@ -107,10 +108,12 @@ return [
|
|||||||
'Error occurred while deleting user' => '',
|
'Error occurred while deleting user' => '',
|
||||||
'Error sending registration message to "{email}". Please try again later.' => '',
|
'Error sending registration message to "{email}". Please try again later.' => '',
|
||||||
'Error sending welcome message to "{email}". Please try again later.' => '',
|
'Error sending welcome message to "{email}". Please try again later.' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
'Export my data' => '',
|
'Export my data' => '',
|
||||||
'Finish' => '',
|
'Finish' => '',
|
||||||
'Force password change at next login' => '',
|
'Force password change at next login' => '',
|
||||||
'Forgot password?' => '',
|
'Forgot password?' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
'Gravatar email' => '',
|
'Gravatar email' => '',
|
||||||
'Hello' => '',
|
'Hello' => '',
|
||||||
'Here you can download your personal data in a comma separated values format.' => '',
|
'Here you can download your personal data in a comma separated values format.' => '',
|
||||||
@ -126,6 +129,10 @@ return [
|
|||||||
'In order to finish your registration, we need you to enter following fields' => '',
|
'In order to finish your registration, we need you to enter following fields' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Information' => '',
|
'Information' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
'Invalid login or password' => '',
|
'Invalid login or password' => '',
|
||||||
'Invalid or expired link' => '',
|
'Invalid or expired link' => '',
|
||||||
'Invalid password' => '',
|
'Invalid password' => '',
|
||||||
@ -142,6 +149,9 @@ return [
|
|||||||
'Login' => '',
|
'Login' => '',
|
||||||
'Logout' => '',
|
'Logout' => '',
|
||||||
'Manage users' => '',
|
'Manage users' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
'Name' => '',
|
'Name' => '',
|
||||||
'Networks' => '',
|
'Networks' => '',
|
||||||
'Never' => '',
|
'Never' => '',
|
||||||
@ -162,6 +172,8 @@ return [
|
|||||||
'Please be certain' => '',
|
'Please be certain' => '',
|
||||||
'Please click the link below to complete your password reset' => '',
|
'Please click the link below to complete your password reset' => '',
|
||||||
'Please fix following errors:' => '',
|
'Please fix following errors:' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Privacy' => '',
|
'Privacy' => '',
|
||||||
'Privacy settings' => '',
|
'Privacy settings' => '',
|
||||||
'Profile' => '',
|
'Profile' => '',
|
||||||
@ -201,16 +213,22 @@ return [
|
|||||||
'Status' => '',
|
'Status' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Switch identities is disabled.' => '',
|
'Switch identities is disabled.' => '',
|
||||||
|
'Text message' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
'Thank you for signing up on {0}' => '',
|
'Thank you for signing up on {0}' => '',
|
||||||
'Thank you, registration is now complete.' => '',
|
'Thank you, registration is now complete.' => '',
|
||||||
'The "recaptcha" component must be configured.' => '',
|
'The "recaptcha" component must be configured.' => '',
|
||||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
'The verification code is incorrect.' => '',
|
'The verification code is incorrect.' => '',
|
||||||
'There is neither role nor permission with name "{0}"' => '',
|
'There is neither role nor permission with name "{0}"' => '',
|
||||||
'There was an error in saving user' => '',
|
'There was an error in saving user' => '',
|
||||||
'This account has already been connected to another user' => '',
|
'This account has already been connected to another user' => '',
|
||||||
'This email address has already been taken' => '',
|
'This email address has already been taken' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
'This username has already been taken' => '',
|
'This username has already been taken' => '',
|
||||||
'This will disable two factor authentication. Are you sure?' => '',
|
'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.' => '',
|
'This will remove your personal data from this site. You will no longer be able to sign in.' => '',
|
||||||
@ -218,6 +236,8 @@ return [
|
|||||||
'Time zone is not valid' => '',
|
'Time zone is not valid' => '',
|
||||||
'Two Factor Authentication (2FA)' => '',
|
'Two Factor Authentication (2FA)' => '',
|
||||||
'Two factor authentication code' => '',
|
'Two factor authentication code' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication has been disabled.' => '',
|
'Two factor authentication has been disabled.' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'Two factor authentication protects you in case of stolen credentials' => '',
|
||||||
'Two factor authentication successfully enabled.' => '',
|
'Two factor authentication successfully enabled.' => '',
|
||||||
@ -288,6 +308,7 @@ return [
|
|||||||
'Your personal information has been removed' => '',
|
'Your personal information has been removed' => '',
|
||||||
'Your profile has been updated' => '',
|
'Your profile has been updated' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'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}' => '',
|
||||||
|
|||||||
@ -273,11 +273,23 @@ return [
|
|||||||
'Active' => '',
|
'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.' => '',
|
'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' => '',
|
'Current' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Data privacy' => '',
|
'Data privacy' => '',
|
||||||
'IP' => '',
|
'IP' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Last activity' => '',
|
'Last activity' => '',
|
||||||
'If you haven\'t received a password, you can reset it at' => '',
|
'If you haven\'t received a password, you can reset it at' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Rule class name' => '',
|
'Rule class name' => '',
|
||||||
'Select rule...' => '',
|
'Select rule...' => '',
|
||||||
'Session ID' => '',
|
'Session ID' => '',
|
||||||
@ -285,6 +297,14 @@ return [
|
|||||||
'Status' => '',
|
'Status' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
|
'Text message' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'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.' => '',
|
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||||
'User ID' => '',
|
'User ID' => '',
|
||||||
|
|||||||
@ -278,12 +278,31 @@ return [
|
|||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Last activity' => '',
|
'Last activity' => '',
|
||||||
'If you haven\'t received a password, you can reset it at' => '',
|
'If you haven\'t received a password, you can reset it at' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Rule class name' => '',
|
'Rule class name' => '',
|
||||||
'Select rule...' => '',
|
'Select rule...' => '',
|
||||||
'Session ID' => '',
|
'Session ID' => '',
|
||||||
'Session history' => '',
|
'Session history' => '',
|
||||||
'Status' => '',
|
'Status' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
|
'Text message' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'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.' => '',
|
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||||
|
|||||||
@ -273,7 +273,19 @@ return [
|
|||||||
'Active' => '',
|
'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.' => '',
|
'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' => '',
|
'Current' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Data privacy' => '',
|
'Data privacy' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'IP' => '',
|
'IP' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Last activity' => '',
|
'Last activity' => '',
|
||||||
@ -285,6 +297,14 @@ return [
|
|||||||
'Status' => '',
|
'Status' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
|
'Text message' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'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.' => '',
|
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||||
'User ID' => '',
|
'User ID' => '',
|
||||||
|
|||||||
@ -264,15 +264,27 @@ return [
|
|||||||
'Children' => '',
|
'Children' => '',
|
||||||
'Class' => '',
|
'Class' => '',
|
||||||
'Current' => '',
|
'Current' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Data privacy' => '',
|
'Data privacy' => '',
|
||||||
'Email' => '',
|
'Email' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
'Gravatar email' => '',
|
'Gravatar email' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
'If you haven\'t received a password, you can reset it at' => '',
|
'If you haven\'t received a password, you can reset it at' => '',
|
||||||
'IP' => '',
|
'IP' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Items' => '',
|
'Items' => '',
|
||||||
'Last activity' => '',
|
'Last activity' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
'Password' => '',
|
'Password' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Rule class name' => '',
|
'Rule class name' => '',
|
||||||
'Select rule...' => '',
|
'Select rule...' => '',
|
||||||
'Session ID' => '',
|
'Session ID' => '',
|
||||||
@ -280,6 +292,14 @@ return [
|
|||||||
'Status' => '',
|
'Status' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
|
'Text message' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'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.' => '',
|
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||||
'User ID' => '',
|
'User ID' => '',
|
||||||
@ -290,6 +310,7 @@ return [
|
|||||||
'You received this email because someone, possibly you or someone on your behalf, have created an account at {app_name}' => '',
|
'You received this email because someone, possibly you or someone on your behalf, have created an account at {app_name}' => '',
|
||||||
'Your consent is required to work with this site' => '',
|
'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' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'{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}' => '',
|
||||||
];
|
];
|
||||||
|
|||||||
@ -273,17 +273,37 @@ return [
|
|||||||
'Active' => '',
|
'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.' => '',
|
'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' => '',
|
'Current' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Data privacy' => '',
|
'Data privacy' => '',
|
||||||
'IP' => '',
|
'IP' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Last activity' => '',
|
'Last activity' => '',
|
||||||
'If you haven\'t received a password, you can reset it at' => '',
|
'If you haven\'t received a password, you can reset it at' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Rule class name' => '',
|
'Rule class name' => '',
|
||||||
'Select rule...' => '',
|
'Select rule...' => '',
|
||||||
'Session ID' => '',
|
'Session ID' => '',
|
||||||
'Session history' => '',
|
'Session history' => '',
|
||||||
'Status' => '',
|
'Status' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
|
'Text message' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'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.' => '',
|
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||||
|
|||||||
@ -287,34 +287,30 @@ return [
|
|||||||
'{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, d MMMM YYYY в HH:mm}',
|
'{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, d MMMM YYYY в HH:mm}',
|
||||||
'{0} cannot be blank.' => '{0} не может быть пустым.',
|
'{0} cannot be blank.' => '{0} не может быть пустым.',
|
||||||
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '',
|
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Data privacy' => '',
|
'Data privacy' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'If you haven\'t received a password, you can reset it at' => '',
|
'If you haven\'t received a password, you can reset it at' => '',
|
||||||
|
'Text message' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||||
'You received this email because someone, possibly you or someone on your behalf, have created an account at {app_name}' => '',
|
'You received this email because someone, possibly you or someone on your behalf, have created an account at {app_name}' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'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. ' => '@@Сообщение было отправлено на вашу электронную почту@@',
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'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' => '@@@@',
|
|
||||||
'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"@@',
|
|
||||||
'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. ' => '@@Мы отправили письма на ваш старый и новый почтовые ящики. Вы должны перейти по обеим, чтобы завершить процесс смены адреса.@@',
|
|
||||||
];
|
];
|
||||||
|
|||||||
@ -64,6 +64,7 @@ return [
|
|||||||
'Children' => '',
|
'Children' => '',
|
||||||
'Class' => '',
|
'Class' => '',
|
||||||
'Close' => '',
|
'Close' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Complete password reset on {0}' => '',
|
'Complete password reset on {0}' => '',
|
||||||
'Confirm' => '',
|
'Confirm' => '',
|
||||||
'Confirm account on {0}' => '',
|
'Confirm account on {0}' => '',
|
||||||
@ -107,10 +108,12 @@ return [
|
|||||||
'Error occurred while deleting user' => '',
|
'Error occurred while deleting user' => '',
|
||||||
'Error sending registration message to "{email}". Please try again later.' => '',
|
'Error sending registration message to "{email}". Please try again later.' => '',
|
||||||
'Error sending welcome message to "{email}". Please try again later.' => '',
|
'Error sending welcome message to "{email}". Please try again later.' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
'Export my data' => '',
|
'Export my data' => '',
|
||||||
'Finish' => '',
|
'Finish' => '',
|
||||||
'Force password change at next login' => '',
|
'Force password change at next login' => '',
|
||||||
'Forgot password?' => '',
|
'Forgot password?' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
'Gravatar email' => '',
|
'Gravatar email' => '',
|
||||||
'Hello' => '',
|
'Hello' => '',
|
||||||
'Here you can download your personal data in a comma separated values format.' => '',
|
'Here you can download your personal data in a comma separated values format.' => '',
|
||||||
@ -126,6 +129,10 @@ return [
|
|||||||
'In order to finish your registration, we need you to enter following fields' => '',
|
'In order to finish your registration, we need you to enter following fields' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Information' => '',
|
'Information' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
'Invalid login or password' => '',
|
'Invalid login or password' => '',
|
||||||
'Invalid or expired link' => '',
|
'Invalid or expired link' => '',
|
||||||
'Invalid password' => '',
|
'Invalid password' => '',
|
||||||
@ -142,6 +149,9 @@ return [
|
|||||||
'Login' => '',
|
'Login' => '',
|
||||||
'Logout' => '',
|
'Logout' => '',
|
||||||
'Manage users' => '',
|
'Manage users' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
'Name' => '',
|
'Name' => '',
|
||||||
'Networks' => '',
|
'Networks' => '',
|
||||||
'Never' => '',
|
'Never' => '',
|
||||||
@ -162,6 +172,8 @@ return [
|
|||||||
'Please be certain' => '',
|
'Please be certain' => '',
|
||||||
'Please click the link below to complete your password reset' => '',
|
'Please click the link below to complete your password reset' => '',
|
||||||
'Please fix following errors:' => '',
|
'Please fix following errors:' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Privacy' => '',
|
'Privacy' => '',
|
||||||
'Privacy settings' => '',
|
'Privacy settings' => '',
|
||||||
'Profile' => '',
|
'Profile' => '',
|
||||||
@ -202,15 +214,21 @@ return [
|
|||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Switch identities is disabled.' => '',
|
'Switch identities is disabled.' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
|
'Text message' => '',
|
||||||
'Thank you for signing up on {0}' => '',
|
'Thank you for signing up on {0}' => '',
|
||||||
'Thank you, registration is now complete.' => '',
|
'Thank you, registration is now complete.' => '',
|
||||||
'The "recaptcha" component must be configured.' => '',
|
'The "recaptcha" component must be configured.' => '',
|
||||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
'The verification code is incorrect.' => '',
|
'The verification code is incorrect.' => '',
|
||||||
'There is neither role nor permission with name "{0}"' => '',
|
'There is neither role nor permission with name "{0}"' => '',
|
||||||
'There was an error in saving user' => '',
|
'There was an error in saving user' => '',
|
||||||
'This account has already been connected to another user' => '',
|
'This account has already been connected to another user' => '',
|
||||||
'This email address has already been taken' => '',
|
'This email address has already been taken' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
'This username has already been taken' => '',
|
'This username has already been taken' => '',
|
||||||
'This will disable two factor authentication. Are you sure?' => '',
|
'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.' => '',
|
'This will remove your personal data from this site. You will no longer be able to sign in.' => '',
|
||||||
@ -218,6 +236,8 @@ return [
|
|||||||
'Time zone is not valid' => '',
|
'Time zone is not valid' => '',
|
||||||
'Two Factor Authentication (2FA)' => '',
|
'Two Factor Authentication (2FA)' => '',
|
||||||
'Two factor authentication code' => '',
|
'Two factor authentication code' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication has been disabled.' => '',
|
'Two factor authentication has been disabled.' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'Two factor authentication protects you in case of stolen credentials' => '',
|
||||||
'Two factor authentication successfully enabled.' => '',
|
'Two factor authentication successfully enabled.' => '',
|
||||||
@ -288,6 +308,7 @@ return [
|
|||||||
'Your personal information has been removed' => '',
|
'Your personal information has been removed' => '',
|
||||||
'Your profile has been updated' => '',
|
'Your profile has been updated' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'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}' => '',
|
||||||
|
|||||||
@ -64,6 +64,7 @@ return [
|
|||||||
'Children' => '',
|
'Children' => '',
|
||||||
'Class' => '',
|
'Class' => '',
|
||||||
'Close' => '',
|
'Close' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Complete password reset on {0}' => '',
|
'Complete password reset on {0}' => '',
|
||||||
'Confirm' => '',
|
'Confirm' => '',
|
||||||
'Confirm account on {0}' => '',
|
'Confirm account on {0}' => '',
|
||||||
@ -107,10 +108,12 @@ return [
|
|||||||
'Error occurred while deleting user' => '',
|
'Error occurred while deleting user' => '',
|
||||||
'Error sending registration message to "{email}". Please try again later.' => '',
|
'Error sending registration message to "{email}". Please try again later.' => '',
|
||||||
'Error sending welcome message to "{email}". Please try again later.' => '',
|
'Error sending welcome message to "{email}". Please try again later.' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
'Export my data' => '',
|
'Export my data' => '',
|
||||||
'Finish' => '',
|
'Finish' => '',
|
||||||
'Force password change at next login' => '',
|
'Force password change at next login' => '',
|
||||||
'Forgot password?' => '',
|
'Forgot password?' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
'Gravatar email' => '',
|
'Gravatar email' => '',
|
||||||
'Hello' => '',
|
'Hello' => '',
|
||||||
'Here you can download your personal data in a comma separated values format.' => '',
|
'Here you can download your personal data in a comma separated values format.' => '',
|
||||||
@ -126,6 +129,10 @@ return [
|
|||||||
'In order to finish your registration, we need you to enter following fields' => '',
|
'In order to finish your registration, we need you to enter following fields' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Information' => '',
|
'Information' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
'Invalid login or password' => '',
|
'Invalid login or password' => '',
|
||||||
'Invalid or expired link' => '',
|
'Invalid or expired link' => '',
|
||||||
'Invalid password' => '',
|
'Invalid password' => '',
|
||||||
@ -142,6 +149,9 @@ return [
|
|||||||
'Login' => '',
|
'Login' => '',
|
||||||
'Logout' => '',
|
'Logout' => '',
|
||||||
'Manage users' => '',
|
'Manage users' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
'Name' => '',
|
'Name' => '',
|
||||||
'Networks' => '',
|
'Networks' => '',
|
||||||
'Never' => '',
|
'Never' => '',
|
||||||
@ -162,6 +172,8 @@ return [
|
|||||||
'Please be certain' => '',
|
'Please be certain' => '',
|
||||||
'Please click the link below to complete your password reset' => '',
|
'Please click the link below to complete your password reset' => '',
|
||||||
'Please fix following errors:' => '',
|
'Please fix following errors:' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Privacy' => '',
|
'Privacy' => '',
|
||||||
'Privacy settings' => '',
|
'Privacy settings' => '',
|
||||||
'Profile' => '',
|
'Profile' => '',
|
||||||
@ -202,15 +214,21 @@ return [
|
|||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Switch identities is disabled.' => '',
|
'Switch identities is disabled.' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
|
'Text message' => '',
|
||||||
'Thank you for signing up on {0}' => '',
|
'Thank you for signing up on {0}' => '',
|
||||||
'Thank you, registration is now complete.' => '',
|
'Thank you, registration is now complete.' => '',
|
||||||
'The "recaptcha" component must be configured.' => '',
|
'The "recaptcha" component must be configured.' => '',
|
||||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
'The verification code is incorrect.' => '',
|
'The verification code is incorrect.' => '',
|
||||||
'There is neither role nor permission with name "{0}"' => '',
|
'There is neither role nor permission with name "{0}"' => '',
|
||||||
'There was an error in saving user' => '',
|
'There was an error in saving user' => '',
|
||||||
'This account has already been connected to another user' => '',
|
'This account has already been connected to another user' => '',
|
||||||
'This email address has already been taken' => '',
|
'This email address has already been taken' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
'This username has already been taken' => '',
|
'This username has already been taken' => '',
|
||||||
'This will disable two factor authentication. Are you sure?' => '',
|
'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.' => '',
|
'This will remove your personal data from this site. You will no longer be able to sign in.' => '',
|
||||||
@ -218,6 +236,8 @@ return [
|
|||||||
'Time zone is not valid' => '',
|
'Time zone is not valid' => '',
|
||||||
'Two Factor Authentication (2FA)' => '',
|
'Two Factor Authentication (2FA)' => '',
|
||||||
'Two factor authentication code' => '',
|
'Two factor authentication code' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication has been disabled.' => '',
|
'Two factor authentication has been disabled.' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'Two factor authentication protects you in case of stolen credentials' => '',
|
||||||
'Two factor authentication successfully enabled.' => '',
|
'Two factor authentication successfully enabled.' => '',
|
||||||
@ -288,6 +308,7 @@ return [
|
|||||||
'Your personal information has been removed' => '',
|
'Your personal information has been removed' => '',
|
||||||
'Your profile has been updated' => '',
|
'Your profile has been updated' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'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}' => '',
|
||||||
|
|||||||
@ -273,17 +273,37 @@ return [
|
|||||||
'{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, MMMM dd, YYYY HH:mm}',
|
'{0, date, MMMM dd, YYYY HH:mm}' => '{0, date, MMMM dd, YYYY HH:mm}',
|
||||||
'{0} cannot be blank.' => '{0} не може бути порожнім.',
|
'{0} cannot be blank.' => '{0} не може бути порожнім.',
|
||||||
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '',
|
'According to the European General Data Protection Regulation (GDPR) we need your consent to work with your personal data.' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Active' => '',
|
'Active' => '',
|
||||||
'Current' => '',
|
'Current' => '',
|
||||||
'Data privacy' => '',
|
'Data privacy' => '',
|
||||||
'IP' => '',
|
'IP' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Last activity' => '',
|
'Last activity' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Recovery message sent' => '',
|
'Recovery message sent' => '',
|
||||||
'Session ID' => '',
|
'Session ID' => '',
|
||||||
'Session history' => '',
|
'Session history' => '',
|
||||||
'Status' => '',
|
'Status' => '',
|
||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
|
'Text message' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
'Unfortunately, you can not work with this site without giving us consent to process your data.' => '',
|
||||||
'User ID' => '',
|
'User ID' => '',
|
||||||
|
|||||||
@ -64,6 +64,7 @@ return [
|
|||||||
'Children' => '',
|
'Children' => '',
|
||||||
'Class' => '',
|
'Class' => '',
|
||||||
'Close' => '',
|
'Close' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Complete password reset on {0}' => '',
|
'Complete password reset on {0}' => '',
|
||||||
'Confirm' => '',
|
'Confirm' => '',
|
||||||
'Confirm account on {0}' => '',
|
'Confirm account on {0}' => '',
|
||||||
@ -107,10 +108,12 @@ return [
|
|||||||
'Error occurred while deleting user' => '',
|
'Error occurred while deleting user' => '',
|
||||||
'Error sending registration message to "{email}". Please try again later.' => '',
|
'Error sending registration message to "{email}". Please try again later.' => '',
|
||||||
'Error sending welcome message to "{email}". Please try again later.' => '',
|
'Error sending welcome message to "{email}". Please try again later.' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
'Export my data' => '',
|
'Export my data' => '',
|
||||||
'Finish' => '',
|
'Finish' => '',
|
||||||
'Force password change at next login' => '',
|
'Force password change at next login' => '',
|
||||||
'Forgot password?' => '',
|
'Forgot password?' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
'Gravatar email' => '',
|
'Gravatar email' => '',
|
||||||
'Hello' => '',
|
'Hello' => '',
|
||||||
'Here you can download your personal data in a comma separated values format.' => '',
|
'Here you can download your personal data in a comma separated values format.' => '',
|
||||||
@ -126,6 +129,10 @@ return [
|
|||||||
'In order to finish your registration, we need you to enter following fields' => '',
|
'In order to finish your registration, we need you to enter following fields' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Information' => '',
|
'Information' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
'Invalid login or password' => '',
|
'Invalid login or password' => '',
|
||||||
'Invalid or expired link' => '',
|
'Invalid or expired link' => '',
|
||||||
'Invalid password' => '',
|
'Invalid password' => '',
|
||||||
@ -142,6 +149,9 @@ return [
|
|||||||
'Login' => '',
|
'Login' => '',
|
||||||
'Logout' => '',
|
'Logout' => '',
|
||||||
'Manage users' => '',
|
'Manage users' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
'Name' => '',
|
'Name' => '',
|
||||||
'Networks' => '',
|
'Networks' => '',
|
||||||
'Never' => '',
|
'Never' => '',
|
||||||
@ -162,6 +172,8 @@ return [
|
|||||||
'Please be certain' => '',
|
'Please be certain' => '',
|
||||||
'Please click the link below to complete your password reset' => '',
|
'Please click the link below to complete your password reset' => '',
|
||||||
'Please fix following errors:' => '',
|
'Please fix following errors:' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Privacy' => '',
|
'Privacy' => '',
|
||||||
'Privacy settings' => '',
|
'Privacy settings' => '',
|
||||||
'Profile' => '',
|
'Profile' => '',
|
||||||
@ -202,15 +214,21 @@ return [
|
|||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Switch identities is disabled.' => '',
|
'Switch identities is disabled.' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
|
'Text message' => '',
|
||||||
'Thank you for signing up on {0}' => '',
|
'Thank you for signing up on {0}' => '',
|
||||||
'Thank you, registration is now complete.' => '',
|
'Thank you, registration is now complete.' => '',
|
||||||
'The "recaptcha" component must be configured.' => '',
|
'The "recaptcha" component must be configured.' => '',
|
||||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
'The verification code is incorrect.' => '',
|
'The verification code is incorrect.' => '',
|
||||||
'There is neither role nor permission with name "{0}"' => '',
|
'There is neither role nor permission with name "{0}"' => '',
|
||||||
'There was an error in saving user' => '',
|
'There was an error in saving user' => '',
|
||||||
'This account has already been connected to another user' => '',
|
'This account has already been connected to another user' => '',
|
||||||
'This email address has already been taken' => '',
|
'This email address has already been taken' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
'This username has already been taken' => '',
|
'This username has already been taken' => '',
|
||||||
'This will disable two factor authentication. Are you sure?' => '',
|
'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.' => '',
|
'This will remove your personal data from this site. You will no longer be able to sign in.' => '',
|
||||||
@ -218,6 +236,8 @@ return [
|
|||||||
'Time zone is not valid' => '',
|
'Time zone is not valid' => '',
|
||||||
'Two Factor Authentication (2FA)' => '',
|
'Two Factor Authentication (2FA)' => '',
|
||||||
'Two factor authentication code' => '',
|
'Two factor authentication code' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication has been disabled.' => '',
|
'Two factor authentication has been disabled.' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'Two factor authentication protects you in case of stolen credentials' => '',
|
||||||
'Two factor authentication successfully enabled.' => '',
|
'Two factor authentication successfully enabled.' => '',
|
||||||
@ -288,6 +308,7 @@ return [
|
|||||||
'Your personal information has been removed' => '',
|
'Your personal information has been removed' => '',
|
||||||
'Your profile has been updated' => '',
|
'Your profile has been updated' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'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}' => '',
|
||||||
|
|||||||
@ -64,6 +64,7 @@ return [
|
|||||||
'Children' => '',
|
'Children' => '',
|
||||||
'Class' => '',
|
'Class' => '',
|
||||||
'Close' => '',
|
'Close' => '',
|
||||||
|
'Code for two factor authentication on {0}' => '',
|
||||||
'Complete password reset on {0}' => '',
|
'Complete password reset on {0}' => '',
|
||||||
'Confirm' => '',
|
'Confirm' => '',
|
||||||
'Confirm account on {0}' => '',
|
'Confirm account on {0}' => '',
|
||||||
@ -107,10 +108,12 @@ return [
|
|||||||
'Error occurred while deleting user' => '',
|
'Error occurred while deleting user' => '',
|
||||||
'Error sending registration message to "{email}". Please try again later.' => '',
|
'Error sending registration message to "{email}". Please try again later.' => '',
|
||||||
'Error sending welcome message to "{email}". Please try again later.' => '',
|
'Error sending welcome message to "{email}". Please try again later.' => '',
|
||||||
|
'Error while enabling SMS two factor authentication. Please reload the page.' => '',
|
||||||
'Export my data' => '',
|
'Export my data' => '',
|
||||||
'Finish' => '',
|
'Finish' => '',
|
||||||
'Force password change at next login' => '',
|
'Force password change at next login' => '',
|
||||||
'Forgot password?' => '',
|
'Forgot password?' => '',
|
||||||
|
'Google Authenticator' => '',
|
||||||
'Gravatar email' => '',
|
'Gravatar email' => '',
|
||||||
'Hello' => '',
|
'Hello' => '',
|
||||||
'Here you can download your personal data in a comma separated values format.' => '',
|
'Here you can download your personal data in a comma separated values format.' => '',
|
||||||
@ -126,6 +129,10 @@ return [
|
|||||||
'In order to finish your registration, we need you to enter following fields' => '',
|
'In order to finish your registration, we need you to enter following fields' => '',
|
||||||
'Inactive' => '',
|
'Inactive' => '',
|
||||||
'Information' => '',
|
'Information' => '',
|
||||||
|
'Insert' => '',
|
||||||
|
'Insert the code you received by SMS.' => '',
|
||||||
|
'Insert the code you received by email.' => '',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format' => '',
|
||||||
'Invalid login or password' => '',
|
'Invalid login or password' => '',
|
||||||
'Invalid or expired link' => '',
|
'Invalid or expired link' => '',
|
||||||
'Invalid password' => '',
|
'Invalid password' => '',
|
||||||
@ -142,6 +149,9 @@ return [
|
|||||||
'Login' => '',
|
'Login' => '',
|
||||||
'Logout' => '',
|
'Logout' => '',
|
||||||
'Manage users' => '',
|
'Manage users' => '',
|
||||||
|
'Mobile phone not found, please check your profile' => '',
|
||||||
|
'Mobile phone number' => '',
|
||||||
|
'Mobile phone number successfully enabled.' => '',
|
||||||
'Name' => '',
|
'Name' => '',
|
||||||
'Networks' => '',
|
'Networks' => '',
|
||||||
'Never' => '',
|
'Never' => '',
|
||||||
@ -162,6 +172,8 @@ return [
|
|||||||
'Please be certain' => '',
|
'Please be certain' => '',
|
||||||
'Please click the link below to complete your password reset' => '',
|
'Please click the link below to complete your password reset' => '',
|
||||||
'Please fix following errors:' => '',
|
'Please fix following errors:' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please click on \'Cancel\' and repeat the login request.' => '',
|
||||||
|
'Please, enter the right code. The code is valid for {0} seconds. If you want to get a new code, please close this window and repeat the enabling request.' => '',
|
||||||
'Privacy' => '',
|
'Privacy' => '',
|
||||||
'Privacy settings' => '',
|
'Privacy settings' => '',
|
||||||
'Profile' => '',
|
'Profile' => '',
|
||||||
@ -202,15 +214,21 @@ return [
|
|||||||
'Submit' => '',
|
'Submit' => '',
|
||||||
'Switch identities is disabled.' => '',
|
'Switch identities is disabled.' => '',
|
||||||
'Terminate all sessions' => '',
|
'Terminate all sessions' => '',
|
||||||
|
'Text message' => '',
|
||||||
'Thank you for signing up on {0}' => '',
|
'Thank you for signing up on {0}' => '',
|
||||||
'Thank you, registration is now complete.' => '',
|
'Thank you, registration is now complete.' => '',
|
||||||
'The "recaptcha" component must be configured.' => '',
|
'The "recaptcha" component must be configured.' => '',
|
||||||
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
'The confirmation link is invalid or expired. Please try requesting a new one.' => '',
|
||||||
|
'The email address set is: "{0}".' => '',
|
||||||
|
'The email sending failed, please check your configuration.' => '',
|
||||||
|
'The phone number set is: "{0}".' => '',
|
||||||
|
'The sms sending failed, please check your configuration.' => '',
|
||||||
'The verification code is incorrect.' => '',
|
'The verification code is incorrect.' => '',
|
||||||
'There is neither role nor permission with name "{0}"' => '',
|
'There is neither role nor permission with name "{0}"' => '',
|
||||||
'There was an error in saving user' => '',
|
'There was an error in saving user' => '',
|
||||||
'This account has already been connected to another user' => '',
|
'This account has already been connected to another user' => '',
|
||||||
'This email address has already been taken' => '',
|
'This email address has already been taken' => '',
|
||||||
|
'This is the code to insert to enable two factor authentication' => '',
|
||||||
'This username has already been taken' => '',
|
'This username has already been taken' => '',
|
||||||
'This will disable two factor authentication. Are you sure?' => '',
|
'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.' => '',
|
'This will remove your personal data from this site. You will no longer be able to sign in.' => '',
|
||||||
@ -218,6 +236,8 @@ return [
|
|||||||
'Time zone is not valid' => '',
|
'Time zone is not valid' => '',
|
||||||
'Two Factor Authentication (2FA)' => '',
|
'Two Factor Authentication (2FA)' => '',
|
||||||
'Two factor authentication code' => '',
|
'Two factor authentication code' => '',
|
||||||
|
'Two factor authentication code by SMS' => '',
|
||||||
|
'Two factor authentication code by email' => '',
|
||||||
'Two factor authentication has been disabled.' => '',
|
'Two factor authentication has been disabled.' => '',
|
||||||
'Two factor authentication protects you in case of stolen credentials' => '',
|
'Two factor authentication protects you in case of stolen credentials' => '',
|
||||||
'Two factor authentication successfully enabled.' => '',
|
'Two factor authentication successfully enabled.' => '',
|
||||||
@ -288,6 +308,7 @@ return [
|
|||||||
'Your personal information has been removed' => '',
|
'Your personal information has been removed' => '',
|
||||||
'Your profile has been updated' => '',
|
'Your profile has been updated' => '',
|
||||||
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
'Your role requires 2FA, you won\'t be able to use the application until you enable it' => '',
|
||||||
|
'Your two factor authentication method is based on "{0}".' => '',
|
||||||
'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}' => '',
|
||||||
|
|||||||
22
src/User/resources/views/mail/text/twofactorcode.php
Normal file
22
src/User/resources/views/mail/text/twofactorcode.php
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var String $code
|
||||||
|
*/
|
||||||
|
?>
|
||||||
|
<?= Yii::t('usuario', 'Hello') ?>,
|
||||||
|
|
||||||
|
<?= Yii::t('usuario', 'This is the code to insert to enable two factor authentication') ?>:
|
||||||
|
|
||||||
|
<?= $code ?>
|
||||||
|
|
||||||
|
<?= Yii::t('usuario', 'If you did not make this request you can ignore this email') ?>.
|
||||||
30
src/User/resources/views/mail/twofactorcode.php
Normal file
30
src/User/resources/views/mail/twofactorcode.php
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<?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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var String $code
|
||||||
|
* @var \Da\User\Model\Token $token
|
||||||
|
*/
|
||||||
|
?>
|
||||||
|
<p style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.6; font-weight: normal; margin: 0 0 10px; padding: 0;">
|
||||||
|
<?= Yii::t('usuario', 'Hello') ?>,
|
||||||
|
</p>
|
||||||
|
<p style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.6; font-weight: normal; margin: 0 0 10px; padding: 0;">
|
||||||
|
<?= Yii::t('usuario', 'This is the code to insert to enable two factor authentication') ?>:
|
||||||
|
</p>
|
||||||
|
<p style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.6; font-weight: normal; margin: 0 0 10px; padding: 0;">
|
||||||
|
<b><?= $code ?></b>
|
||||||
|
</p>
|
||||||
|
<p style="font-family: 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.6; font-weight: normal; margin: 0 0 10px; padding: 0;">
|
||||||
|
<?= Yii::t('usuario', 'If you did not make this request you can ignore this email') ?>.
|
||||||
|
</p>
|
||||||
@ -47,7 +47,6 @@ $this->params['breadcrumbs'][] = $this->title;
|
|||||||
'twoFactorAuthenticationCode',
|
'twoFactorAuthenticationCode',
|
||||||
['inputOptions' => ['autofocus' => 'autofocus', 'class' => 'form-control', 'tabindex' => '1']]
|
['inputOptions' => ['autofocus' => 'autofocus', 'class' => 'form-control', 'tabindex' => '1']]
|
||||||
) ?>
|
) ?>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<?= Html::a(
|
<?= Html::a(
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
use yii\helpers\Html;
|
use yii\helpers\Html;
|
||||||
use yii\helpers\Url;
|
use yii\helpers\Url;
|
||||||
use yii\widgets\ActiveForm;
|
use yii\widgets\ActiveForm;
|
||||||
|
use dmstr\widgets\Alert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var yii\web\View $this
|
* @var yii\web\View $this
|
||||||
@ -87,7 +88,7 @@ $module = Yii::$app->getModule('user');
|
|||||||
...
|
...
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">
|
<button type="button" class="btn btn-default" data-dismiss="modal" onClick='window.location.reload();'>
|
||||||
<?= Yii::t('usuario', 'Close') ?>
|
<?= Yii::t('usuario', 'Close') ?>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@ -102,28 +103,70 @@ $module = Yii::$app->getModule('user');
|
|||||||
<p>
|
<p>
|
||||||
<?= Yii::t('usuario', 'Two factor authentication protects you in case of stolen credentials') ?>.
|
<?= Yii::t('usuario', 'Two factor authentication protects you in case of stolen credentials') ?>.
|
||||||
</p>
|
</p>
|
||||||
<div class="text-right">
|
<?php if (!$model->getUser()->auth_tf_enabled):
|
||||||
<?= Html::a(
|
$validators = $module->twoFactorAuthenticationValidators;
|
||||||
Yii::t('usuario', 'Disable two factor authentication'),
|
$theFirstFound = false;
|
||||||
['two-factor-disable', 'id' => $model->getUser()->id],
|
foreach( $validators as $name => $validator ) {
|
||||||
[
|
if($validator[ "enabled" ]){
|
||||||
'id' => 'disable_tf_btn',
|
// I want to check in the radio field the first validator I get
|
||||||
'class' => 'btn btn-warning ' . ($model->getUser()->auth_tf_enabled ? '' : 'hide'),
|
if(!$theFirstFound){
|
||||||
'data-method' => 'post',
|
$checked = 'checked';
|
||||||
'data-confirm' => Yii::t('usuario', 'This will disable two factor authentication. Are you sure?'),
|
$theFirstFound = true;
|
||||||
]
|
}
|
||||||
) ?>
|
$description = $validator[ "description" ];
|
||||||
|
?>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="radio" name="2famethod" id="<?= $name?>" value="<?= $name?>" <?= $checked?>>
|
||||||
|
<label class="form-check-label" for="<?= $name?>">
|
||||||
|
<?= $description?>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
$checked = '';
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
?>
|
||||||
<?= Html::a(
|
<?= Html::a(
|
||||||
Yii::t('usuario', 'Enable two factor authentication'),
|
Yii::t('usuario', 'Enable two factor authentication'),
|
||||||
'#tfmodal',
|
'#tfmodal',
|
||||||
[
|
[
|
||||||
'id' => 'enable_tf_btn',
|
'id' => 'enable_tf_btn',
|
||||||
'class' => 'btn btn-info ' . ($model->getUser()->auth_tf_enabled ? 'hide' : ''),
|
'class' => 'btn btn-info',
|
||||||
'data-toggle' => 'modal',
|
'data-toggle' => 'modal',
|
||||||
'data-target' => '#tfmodal'
|
'data-target' => '#tfmodal'
|
||||||
]
|
]
|
||||||
) ?>
|
) ?>
|
||||||
</div>
|
<?php else:
|
||||||
|
?>
|
||||||
|
<p>
|
||||||
|
<?php
|
||||||
|
$method = $model->getUser()->auth_tf_type;
|
||||||
|
$message = '';
|
||||||
|
switch ($method) {
|
||||||
|
case 'email':
|
||||||
|
$message = Yii::t('usuario', 'The email address set is: "{0}".', [ $model->getUser()->email] );
|
||||||
|
break;
|
||||||
|
case 'sms':
|
||||||
|
$message = Yii::t('usuario', 'The phone number set is: "{0}".', [ $model->getUser()->auth_tf_mobile_phone]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<?= Yii::t('usuario', 'Your two factor authentication method is based on "{0}".', [$method] ) .' ' . $message ?>
|
||||||
|
</p>
|
||||||
|
<div class="text-right">
|
||||||
|
<?= Html::a(
|
||||||
|
Yii::t('usuario', 'Disable two factor authentication'),
|
||||||
|
['two-factor-disable', 'id' => $model->getUser()->id],
|
||||||
|
[
|
||||||
|
'id' => 'disable_tf_btn',
|
||||||
|
'class' => 'btn btn-warning ',
|
||||||
|
'data-method' => 'post',
|
||||||
|
'data-confirm' => Yii::t('usuario', 'This will disable two factor authentication. Are you sure?'),
|
||||||
|
]
|
||||||
|
) ?>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
@ -161,34 +204,69 @@ $module = Yii::$app->getModule('user');
|
|||||||
// consider overriding this view and include your very own approach
|
// consider overriding this view and include your very own approach
|
||||||
$uri = Url::to(['two-factor', 'id' => $model->getUser()->id]);
|
$uri = Url::to(['two-factor', 'id' => $model->getUser()->id]);
|
||||||
$verify = Url::to(['two-factor-enable', 'id' => $model->getUser()->id]);
|
$verify = Url::to(['two-factor-enable', 'id' => $model->getUser()->id]);
|
||||||
|
$mobilePhoneRegistration = Url::to(['two-factor-mobile-phone', 'id' => $model->getUser()->id]);
|
||||||
$js = <<<JS
|
$js = <<<JS
|
||||||
$('#tfmodal')
|
var choice = '';
|
||||||
|
$('#tfmodal')
|
||||||
.on('show.bs.modal', function(){
|
.on('show.bs.modal', function(){
|
||||||
|
var element = document.getElementsByName('2famethod');
|
||||||
|
for(i = 0; i < element.length; i++) {
|
||||||
|
if(element[i].checked)
|
||||||
|
choice = element[i].value;
|
||||||
|
}
|
||||||
if(!$('img#qrCode').length) {
|
if(!$('img#qrCode').length) {
|
||||||
$(this).find('.modal-body').load('{$uri}');
|
$(this).find('.modal-body').load('{$uri}', {choice: choice});
|
||||||
} else {
|
} else {
|
||||||
$('input#tfcode').val('');
|
$('input#tfcode').val('');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$(document)
|
$(document)
|
||||||
.on('click', '.btn-submit-code', function(e) {
|
.on('click', '.btn-submit-code', function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var btn = $(this);
|
var btn = $(this);
|
||||||
btn.prop('disabled', true);
|
btn.prop('disabled', true);
|
||||||
|
var choice = '';
|
||||||
|
var element = document.getElementsByName('2famethod');
|
||||||
|
for(i = 0; i < element.length; i++) {
|
||||||
|
if(element[i].checked)
|
||||||
|
choice = element[i].value;
|
||||||
|
}
|
||||||
|
|
||||||
$.getJSON('{$verify}', {code: $('#tfcode').val()}, function(data){
|
$.getJSON('{$verify}', {code: $('#tfcode').val(), choice: choice}, function(data){
|
||||||
btn.prop('disabled', false);
|
btn.prop('disabled', false);
|
||||||
if(data.success) {
|
if(data.success) {
|
||||||
$('#enable_tf_btn, #disable_tf_btn').toggleClass('hide');
|
$('#enable_tf_btn, #disable_tf_btn').toggleClass('hide');
|
||||||
$('#tfmessage').removeClass('alert-danger').addClass('alert-success').find('p').text(data.message);
|
$('#tfmessage').removeClass('alert-danger').addClass('alert-success').find('p').text(data.message);
|
||||||
setTimeout(function() { $('#tfmodal').modal('hide'); }, 2000);
|
setTimeout(function() { $('#tfmodal').modal('hide'); }, 2000);
|
||||||
} else {
|
window.location.reload();
|
||||||
$('input#tfcode').val('');
|
} else {
|
||||||
$('#tfmessage').removeClass('alert-info').addClass('alert-danger').find('p').text(data.message);
|
$('input#tfcode').val('');
|
||||||
}
|
$('#tfmessage').removeClass('alert-info').addClass('alert-danger').find('p').text(data.message);
|
||||||
}).fail(function(){ btn.prop('disabled', false); });
|
}
|
||||||
});
|
}).fail(function(){ btn.prop('disabled', false); });
|
||||||
|
})
|
||||||
|
.on('click', '.btn-submit-mobile-phone', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var btn = $(this);
|
||||||
|
btn.prop('disabled', true);
|
||||||
|
|
||||||
|
$.getJSON('{$mobilePhoneRegistration}', {mobilephone: $('#mobilephone').val()}, function(data){
|
||||||
|
btn.prop('disabled', false);
|
||||||
|
if(data.success) {
|
||||||
|
btn.prop('disabled', true);
|
||||||
|
$('#smssection').toggleClass('hide');
|
||||||
|
$('#sendnewcode').toggleClass('hide');
|
||||||
|
$('#tfmessagephone').removeClass('alert-danger').addClass('alert-success').find('p').text(data.message);
|
||||||
|
} else {
|
||||||
|
$('input#phonenumber').val('');
|
||||||
|
$('#tfmessagephone').removeClass('alert-info').addClass('alert-danger').find('p').text(data.message);
|
||||||
|
}
|
||||||
|
}).fail(function(){ btn.prop('disabled', false); });
|
||||||
|
|
||||||
|
})
|
||||||
JS;
|
JS;
|
||||||
|
|
||||||
$this->registerJs($js);
|
$this->registerJs($js);
|
||||||
|
|||||||
35
src/User/resources/views/settings/two-factor-email.php
Normal file
35
src/User/resources/views/settings/two-factor-email.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* This file is part of the 2amigos/yii2-usuario-app 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @var string $id */
|
||||||
|
/** @var string $uri */
|
||||||
|
?>
|
||||||
|
|
||||||
|
<div class="alert alert-info" id="tfmessage">
|
||||||
|
<p>
|
||||||
|
<?= Yii::t(
|
||||||
|
'usuario',
|
||||||
|
'Insert the code you received by email.'
|
||||||
|
) ?>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-offset-3 col-md-6 text-center">
|
||||||
|
<div class="input-group">
|
||||||
|
<input type="text" class="form-control" id="tfcode" placeholder="<?= Yii::t('usuario', 'Two factor authentication code by email') ?>"/>
|
||||||
|
<span class="input-group-btn">
|
||||||
|
<button type="button" class="btn btn-primary btn-submit-code">
|
||||||
|
<?= Yii::t('usuario', 'Enable') ?>
|
||||||
|
</button>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
68
src/User/resources/views/settings/two-factor-sms.php
Normal file
68
src/User/resources/views/settings/two-factor-sms.php
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
* This file is part of the 2amigos/yii2-usuario-app 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @var string $id */
|
||||||
|
/** @var string $uri */
|
||||||
|
/** @var string $mobilePhoneRegistration */
|
||||||
|
?>
|
||||||
|
|
||||||
|
<div id="phonenumbersection">
|
||||||
|
<div class="alert alert-info" id="tfmessagephone">
|
||||||
|
<p>
|
||||||
|
<?= Yii::t(
|
||||||
|
'usuario',
|
||||||
|
'Insert the mobile phone number where you want to receive text message in international format'
|
||||||
|
) ?>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-offset-3 col-md-6 text-center">
|
||||||
|
<div class="input-group">
|
||||||
|
<input type="text" class="form-control" id="mobilephone" value="<?= $mobilePhone ?>" placeholder="<?= Yii::t('usuario', 'Mobile phone number') ?>"/>
|
||||||
|
<span class="input-group-btn">
|
||||||
|
<button type="button" class="btn btn-primary btn-submit-mobile-phone">
|
||||||
|
<?= Yii::t('usuario', 'Insert') ?>
|
||||||
|
</button>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="smssection" class="hide">
|
||||||
|
<hr>
|
||||||
|
<div class="alert alert-info" id="tfmessage">
|
||||||
|
<p>
|
||||||
|
<?= Yii::t(
|
||||||
|
'usuario',
|
||||||
|
'Insert the code you received by SMS.'
|
||||||
|
) ?>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-offset-3 col-md-6 text-center">
|
||||||
|
<div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-offset-3 col-md-6 text-center">
|
||||||
|
<div class="input-group">
|
||||||
|
<input type="text" class="form-control" id="tfcode" placeholder="<?= Yii::t('usuario', 'Two factor authentication code by SMS') ?>"/>
|
||||||
|
<span class="input-group-btn">
|
||||||
|
<button type="button" class="btn btn-primary btn-submit-code">
|
||||||
|
<?= Yii::t('usuario', 'Enable') ?>
|
||||||
|
</button>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@ -71,6 +71,8 @@ CREATE TABLE `user` (
|
|||||||
`updated_at` int(11) NOT NULL,
|
`updated_at` int(11) NOT NULL,
|
||||||
`auth_tf_key` varchar(16) DEFAULT NULL,
|
`auth_tf_key` varchar(16) DEFAULT NULL,
|
||||||
`auth_tf_enabled` tinyint(1) DEFAULT '0',
|
`auth_tf_enabled` tinyint(1) DEFAULT '0',
|
||||||
|
`auth_tf_type` varchar(20) DEFAULT NULL,
|
||||||
|
`auth_tf_mobile_phone` varchar(20) DEFAULT NULL,
|
||||||
`flags` int(11) NOT NULL DEFAULT '0',
|
`flags` int(11) NOT NULL DEFAULT '0',
|
||||||
`last_login_at` int(11) DEFAULT NULL,
|
`last_login_at` int(11) DEFAULT NULL,
|
||||||
`gdpr_consent` tinyint(1) NULL DEFAULT '0',
|
`gdpr_consent` tinyint(1) NULL DEFAULT '0',
|
||||||
|
|||||||
@ -81,6 +81,7 @@ return [
|
|||||||
'auth_key' => '39HU0m5lpjWtqstFVGFjj6lFb7UZDeRq',
|
'auth_key' => '39HU0m5lpjWtqstFVGFjj6lFb7UZDeRq',
|
||||||
'auth_tf_key' => '',
|
'auth_tf_key' => '',
|
||||||
'auth_tf_enabled' => true,
|
'auth_tf_enabled' => true,
|
||||||
|
'auth_tf_type' => 'google-authenticator',
|
||||||
'created_at' => $time,
|
'created_at' => $time,
|
||||||
'updated_at' => $time,
|
'updated_at' => $time,
|
||||||
'confirmed_at' => $time,
|
'confirmed_at' => $time,
|
||||||
|
|||||||
Reference in New Issue
Block a user