seller
This commit is contained in:
parent
4bff522ac0
commit
dc143cddf2
|
|
@ -12,7 +12,8 @@
|
|||
"rainlab/pages-plugin": "^1.5",
|
||||
"rainlab/builder-plugin": "^1.2.5",
|
||||
"blakejones/magicforms-plugin": "^1.6",
|
||||
"rainlab/translate-plugin": "^1.0"
|
||||
"rainlab/translate-plugin": "^1.0",
|
||||
"rainlab/user-plugin": "^2.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.5|^9.0"
|
||||
|
|
|
|||
|
|
@ -191,6 +191,11 @@ class Plugin extends PluginBase
|
|||
});
|
||||
|
||||
Event::listen('cms.template.getTemplateToolbarSettingsButtons', function($extension, $dataHolder) {
|
||||
// Running v3.4 with native snippets
|
||||
if (class_exists('System') && version_compare(\System::VERSION, '3.4', '>=')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($dataHolder->templateType === 'partial') {
|
||||
Snippet::extendEditorPartialToolbar($dataHolder);
|
||||
}
|
||||
|
|
@ -201,10 +206,20 @@ class Plugin extends PluginBase
|
|||
});
|
||||
|
||||
Event::listen('cms.template.processSettingsBeforeSave', function($controller, $dataHolder) {
|
||||
// Running v3.4 with native snippets
|
||||
if (class_exists('System') && version_compare(\System::VERSION, '3.4', '>=')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$dataHolder->settings = Snippet::processTemplateSettingsArray($dataHolder->settings);
|
||||
});
|
||||
|
||||
Event::listen('cms.template.processSettingsAfterLoad', function($controller, $template, $context = null) {
|
||||
// Running v3.4 with native snippets
|
||||
if (class_exists('System') && version_compare(\System::VERSION, '3.4', '>=')) {
|
||||
return;
|
||||
}
|
||||
|
||||
Snippet::processTemplateSettings($template, $context);
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -24,22 +24,29 @@
|
|||
}
|
||||
})
|
||||
|
||||
$(document).on('syncContent.oc.richeditor', '.field-richeditor textarea', function(ev, richeditor, container) {
|
||||
self.syncPageMarkup(ev, container)
|
||||
})
|
||||
if (!this.isForwardCompatibilityMode()) {
|
||||
$(document).on('syncContent.oc.richeditor', '.field-richeditor textarea', function(ev, richeditor, container) {
|
||||
self.syncPageMarkup(ev, container)
|
||||
})
|
||||
|
||||
$(document).on('figureKeydown.oc.richeditor', '.field-richeditor textarea', function(ev, originalEv, richeditor) {
|
||||
self.editorKeyDown(ev, originalEv, richeditor)
|
||||
})
|
||||
$(document).on('figureKeydown.oc.richeditor', '.field-richeditor textarea', function(ev, originalEv, richeditor) {
|
||||
self.editorKeyDown(ev, originalEv, richeditor)
|
||||
})
|
||||
|
||||
$(document).on('click', '[data-snippet]', function() {
|
||||
if ($(this).hasClass('inspector-open')) {
|
||||
return
|
||||
}
|
||||
$(document).on('click', '[data-snippet]', function() {
|
||||
if ($(this).hasClass('inspector-open')) {
|
||||
return
|
||||
}
|
||||
|
||||
$.oc.inspector.manager.createInspector(this)
|
||||
return false
|
||||
})
|
||||
$.oc.inspector.manager.createInspector(this)
|
||||
return false
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// Detects October CMS v3.4
|
||||
SnippetManager.prototype.isForwardCompatibilityMode = function() {
|
||||
return window.oc && window.oc.snippetLookup;
|
||||
}
|
||||
|
||||
SnippetManager.prototype.onSidebarSnippetClick = function($sidebarItem) {
|
||||
|
|
@ -85,6 +92,11 @@
|
|||
|
||||
$snippetNode.addClass('fr-draggable')
|
||||
|
||||
if (this.isForwardCompatibilityMode()) {
|
||||
$snippetNode.attr('data-control', 'snippet');
|
||||
$snippetNode.removeAttr('data-inspector-css-class');
|
||||
}
|
||||
|
||||
$richeditorNode.richEditor('insertUiBlock', $snippetNode)
|
||||
}
|
||||
|
||||
|
|
@ -124,6 +136,13 @@
|
|||
}
|
||||
|
||||
SnippetManager.prototype.initSnippets = function($editor) {
|
||||
if (this.isForwardCompatibilityMode()) {
|
||||
$('.fr-view [data-snippet]', $editor).each(function(){
|
||||
$(this).attr('data-control', 'snippet');
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
var snippetCodes = []
|
||||
|
||||
$('.fr-view [data-snippet]', $editor).each(function(){
|
||||
|
|
|
|||
|
|
@ -34,6 +34,11 @@ class MenuItem
|
|||
*/
|
||||
public $nesting;
|
||||
|
||||
/**
|
||||
* @var array|bool sites includes a lookup for other sites.
|
||||
*/
|
||||
public $sites = false;
|
||||
|
||||
/**
|
||||
* @var string Specifies the menu item type - URL, static page, etc.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -617,14 +617,19 @@ class Page extends ContentBase
|
|||
return $this->processedMarkupCache;
|
||||
}
|
||||
|
||||
$markup = $this->markup;
|
||||
|
||||
/*
|
||||
* Process snippets
|
||||
* In v3.4 this is handled by the core parser (below)
|
||||
*/
|
||||
$markup = Snippet::processPageMarkup(
|
||||
$this->getFileName(),
|
||||
$this->theme,
|
||||
$this->markup
|
||||
);
|
||||
if (!class_exists('System') || !version_compare(\System::VERSION, '3.4', '>=')) {
|
||||
$markup = Snippet::processPageMarkup(
|
||||
$this->getFileName(),
|
||||
$this->theme,
|
||||
$markup
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
* Inject global view variables
|
||||
|
|
@ -636,10 +641,14 @@ class Page extends ContentBase
|
|||
|
||||
/*
|
||||
* Process content using core parser
|
||||
* PageLookup class was deprecated to PageManager in v3.4 -sg
|
||||
*/
|
||||
if (class_exists(\Cms\Classes\PageLookup::class)) {
|
||||
$markup = \Cms\Classes\PageLookup::processMarkup($markup);
|
||||
}
|
||||
elseif (class_exists(\Cms\Classes\PageManager::class)) {
|
||||
$markup = \Cms\Classes\PageManager::processMarkup($markup);
|
||||
}
|
||||
|
||||
/*
|
||||
* Event hook
|
||||
|
|
@ -655,14 +664,19 @@ class Page extends ContentBase
|
|||
return $this->processedBlockMarkupCache[$placeholderName];
|
||||
}
|
||||
|
||||
$markup = $placeholderContents;
|
||||
|
||||
/*
|
||||
* Process snippets
|
||||
* In v3.4 this is handled by the core parser (below)
|
||||
*/
|
||||
$markup = Snippet::processPageMarkup(
|
||||
$this->getFileName().md5($placeholderName),
|
||||
$this->theme,
|
||||
$placeholderContents
|
||||
);
|
||||
if (!class_exists('System') || !version_compare(\System::VERSION, '3.4', '>=')) {
|
||||
$markup = Snippet::processPageMarkup(
|
||||
$this->getFileName().md5($placeholderName),
|
||||
$this->theme,
|
||||
$markup
|
||||
);
|
||||
}
|
||||
|
||||
/*
|
||||
* Inject global view variables
|
||||
|
|
@ -672,6 +686,17 @@ class Page extends ContentBase
|
|||
$markup = TextParser::parse($markup, $globalVars);
|
||||
}
|
||||
|
||||
/*
|
||||
* Process content using core parser
|
||||
* PageLookup class was deprecated to PageManager in v3.4 -sg
|
||||
*/
|
||||
if (class_exists(\Cms\Classes\PageLookup::class)) {
|
||||
$markup = \Cms\Classes\PageLookup::processMarkup($markup);
|
||||
}
|
||||
elseif (class_exists(\Cms\Classes\PageManager::class)) {
|
||||
$markup = \Cms\Classes\PageManager::processMarkup($markup);
|
||||
}
|
||||
|
||||
/*
|
||||
* Event hook
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -73,3 +73,5 @@ v1.5.6: Fixes concurrency save form in October v3
|
|||
v1.5.7: Adds page finder support for October v3.2
|
||||
v1.5.8: Fixes resolving links used in static pages
|
||||
v1.5.9: Fixes fancy layout with nested forms
|
||||
v1.5.10: Adds forward compatibility with October CMS v3.4
|
||||
v1.5.12: Fixes more areas of forward compatibility
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
.phpunit.result.cache
|
||||
composer.lock
|
||||
vendor
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# License
|
||||
|
||||
See End User License Agreement at https://octobercms.com/eula
|
||||
|
|
@ -0,0 +1,214 @@
|
|||
<?php namespace RainLab\User;
|
||||
|
||||
use App;
|
||||
use Auth;
|
||||
use Event;
|
||||
use Backend;
|
||||
use System\Classes\PluginBase;
|
||||
use System\Classes\SettingsManager;
|
||||
use Illuminate\Foundation\AliasLoader;
|
||||
use RainLab\User\Classes\UserRedirector;
|
||||
use RainLab\User\Models\MailBlocker;
|
||||
use RainLab\Notify\Classes\Notifier;
|
||||
|
||||
/**
|
||||
* Plugin base class
|
||||
*/
|
||||
class Plugin extends PluginBase
|
||||
{
|
||||
/**
|
||||
* pluginDetails
|
||||
*/
|
||||
public function pluginDetails()
|
||||
{
|
||||
return [
|
||||
'name' => 'rainlab.user::lang.plugin.name',
|
||||
'description' => 'rainlab.user::lang.plugin.description',
|
||||
'author' => 'Alexey Bobkov, Samuel Georges',
|
||||
'icon' => 'icon-user',
|
||||
'homepage' => 'https://github.com/rainlab/user-plugin'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* register
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
$alias = AliasLoader::getInstance();
|
||||
$alias->alias('Auth', \RainLab\User\Facades\Auth::class);
|
||||
|
||||
App::singleton('user.auth', function () {
|
||||
return \RainLab\User\Classes\AuthManager::instance();
|
||||
});
|
||||
|
||||
// Overrides with our own extended version of Redirector to support
|
||||
// separate url.intended session variable for frontend
|
||||
App::singleton('redirect', function ($app) {
|
||||
$redirector = new UserRedirector($app['url']);
|
||||
|
||||
// If the session is set on the application instance, we'll inject it into
|
||||
// the redirector instance. This allows the redirect responses to allow
|
||||
// for the quite convenient "with" methods that flash to the session.
|
||||
if (isset($app['session.store'])) {
|
||||
$redirector->setSession($app['session.store']);
|
||||
}
|
||||
|
||||
return $redirector;
|
||||
});
|
||||
|
||||
// Apply user-based mail blocking
|
||||
Event::listen('mailer.prepareSend', function ($mailer, $view, $message) {
|
||||
return MailBlocker::filterMessage($view, $message);
|
||||
});
|
||||
|
||||
// Compatibility with RainLab.Notify
|
||||
$this->bindNotificationEvents();
|
||||
}
|
||||
|
||||
/**
|
||||
* registerComponents
|
||||
*/
|
||||
public function registerComponents()
|
||||
{
|
||||
return [
|
||||
\RainLab\User\Components\Session::class => 'session',
|
||||
\RainLab\User\Components\Account::class => 'account',
|
||||
\RainLab\User\Components\ResetPassword::class => 'resetPassword'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* registerPermissions
|
||||
*/
|
||||
public function registerPermissions()
|
||||
{
|
||||
return [
|
||||
'rainlab.users.access_users' => [
|
||||
'tab' => 'rainlab.user::lang.plugin.tab',
|
||||
'label' => 'rainlab.user::lang.plugin.access_users'
|
||||
],
|
||||
'rainlab.users.access_groups' => [
|
||||
'tab' => 'rainlab.user::lang.plugin.tab',
|
||||
'label' => 'rainlab.user::lang.plugin.access_groups'
|
||||
],
|
||||
'rainlab.users.access_settings' => [
|
||||
'tab' => 'rainlab.user::lang.plugin.tab',
|
||||
'label' => 'rainlab.user::lang.plugin.access_settings'
|
||||
],
|
||||
'rainlab.users.impersonate_user' => [
|
||||
'tab' => 'rainlab.user::lang.plugin.tab',
|
||||
'label' => 'rainlab.user::lang.plugin.impersonate_user'
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* registerNavigation
|
||||
*/
|
||||
public function registerNavigation()
|
||||
{
|
||||
return [
|
||||
'user' => [
|
||||
'label' => 'rainlab.user::lang.users.menu_label',
|
||||
'url' => Backend::url('rainlab/user/users'),
|
||||
'icon' => 'icon-user',
|
||||
'iconSvg' => 'plugins/rainlab/user/assets/images/user-icon.svg',
|
||||
'permissions' => ['rainlab.users.*'],
|
||||
'order' => 500,
|
||||
|
||||
'sideMenu' => [
|
||||
'users' => [
|
||||
'label' => 'rainlab.user::lang.users.menu_label',
|
||||
'icon' => 'icon-user',
|
||||
'url' => Backend::url('rainlab/user/users'),
|
||||
'permissions' => ['rainlab.users.access_users']
|
||||
],
|
||||
'usergroups' => [
|
||||
'label' => 'rainlab.user::lang.groups.menu_label',
|
||||
'icon' => 'icon-users',
|
||||
'url' => Backend::url('rainlab/user/usergroups'),
|
||||
'permissions' => ['rainlab.users.access_groups']
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* registerSettings
|
||||
*/
|
||||
public function registerSettings()
|
||||
{
|
||||
return [
|
||||
'settings' => [
|
||||
'label' => 'rainlab.user::lang.settings.menu_label',
|
||||
'description' => 'rainlab.user::lang.settings.menu_description',
|
||||
'category' => SettingsManager::CATEGORY_USERS,
|
||||
'icon' => class_exists('System') ? 'octo-icon-user-actions-key' : 'icon-cog',
|
||||
'class' => 'RainLab\User\Models\Settings',
|
||||
'order' => 500,
|
||||
'permissions' => ['rainlab.users.access_settings']
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* registerMailTemplates
|
||||
*/
|
||||
public function registerMailTemplates()
|
||||
{
|
||||
return [
|
||||
'rainlab.user::mail.activate',
|
||||
'rainlab.user::mail.welcome',
|
||||
'rainlab.user::mail.restore',
|
||||
'rainlab.user::mail.new_user',
|
||||
'rainlab.user::mail.reactivate',
|
||||
'rainlab.user::mail.invite',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* registerNotificationRules
|
||||
*/
|
||||
public function registerNotificationRules()
|
||||
{
|
||||
return [
|
||||
'groups' => [
|
||||
'user' => [
|
||||
'label' => 'User',
|
||||
'icon' => 'icon-user'
|
||||
],
|
||||
],
|
||||
'events' => [
|
||||
\RainLab\User\NotifyRules\UserActivatedEvent::class,
|
||||
\RainLab\User\NotifyRules\UserRegisteredEvent::class,
|
||||
],
|
||||
'actions' => [],
|
||||
'conditions' => [
|
||||
\RainLab\User\NotifyRules\UserAttributeCondition::class
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* bindNotificationEvents
|
||||
*/
|
||||
protected function bindNotificationEvents()
|
||||
{
|
||||
if (!class_exists(Notifier::class)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Notifier::bindEvents([
|
||||
'rainlab.user.activate' => \RainLab\User\NotifyRules\UserActivatedEvent::class,
|
||||
'rainlab.user.register' => \RainLab\User\NotifyRules\UserRegisteredEvent::class
|
||||
]);
|
||||
|
||||
Notifier::instance()->registerCallback(function ($manager) {
|
||||
$manager->registerGlobalParams([
|
||||
'user' => Auth::getUser()
|
||||
]);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,511 @@
|
|||
# Front-end user plugin
|
||||
|
||||
Front-end user management for October CMS.
|
||||
|
||||
## Requirements
|
||||
|
||||
- October CMS 3.0 or above
|
||||
- The [AJAX Framework](https://octobercms.com/docs/cms/ajax) to be included in your layout/page
|
||||
|
||||
## Installation Instructions
|
||||
|
||||
Run the following to install this plugin:
|
||||
|
||||
```bash
|
||||
php artisan plugin:install RainLab.User
|
||||
```
|
||||
|
||||
To uninstall this plugin:
|
||||
|
||||
```bash
|
||||
php artisan plugin:remove RainLab.User
|
||||
```
|
||||
|
||||
If you are using October CMS v1 or v2, install v1.7 with the following commands:
|
||||
|
||||
```bash
|
||||
composer require rainlab/user-plugin "^1.7"
|
||||
```
|
||||
|
||||
## Managing Users
|
||||
|
||||
Users are managed on the Users tab found in the back-end. Each user provides minimal data fields - **Name**, **Surname**, **Email** and **Password**. The Name can represent either the person's first name or their full name, making the Surname field optional, depending on the complexity of your site.
|
||||
|
||||
Below the **Email** field is an checkbox to block all outgoing mail sent to the user. This is a useful feature for accounts with an email address that is bouncing mail or has reported spam. When checked, no mail will ever be sent to this address, except for the mail template used for resetting the password.
|
||||
|
||||
## Plugin Settings
|
||||
|
||||
This plugin creates a Settings menu item, found by navigating to **Settings > Users > User settings**. This page allows the setting of common features, described in more detail below.
|
||||
|
||||
#### Registration
|
||||
|
||||
Registration to the site is allowed by default. If you are running a closed site, or need to temporarily disable registration, you may disable this feature by switching **Allow user registration** to the OFF setting.
|
||||
|
||||
#### Activation
|
||||
|
||||
Activation is a process of vetting a user who joins the site. By default, users are activated automatically when they register and an activated account is required to sign in.
|
||||
|
||||
The **Activation mode** specifies the activation workflow:
|
||||
|
||||
- **Automatic**: This mode will automatically activate a user when they first register. This is the same as disabling activation entirely and is the default setting.
|
||||
- **User**: The user can activate their account by responding to a confirmation message sent to their nominated email address.
|
||||
- **Administrator**: The user can only be activated by an administrator via the back-end area.
|
||||
|
||||
You can allow users to sign in without activating by switching **Sign in requires activation** to the OFF setting. This is useful for minimising friction when registering, however with this approach it is often a good idea to disable any "identity sensitive" features until the user has been activated, such as posting content. Alternatively, you could implement a grace period that deletes users (with sufficient warning!) who have not activated within a given period of time.
|
||||
|
||||
Users have the ability to resend the activation email by clicking **Send the verification email again** found in the Account component.
|
||||
|
||||
#### Sign In
|
||||
|
||||
By default a User will sign in to the site using their email address as a unique identifier. You may use a unique login name instead by changing the **Login attribute** value to Username. This will introduce a new field called **Username** for each user, allowing them to specify their own short name or alias for identification. Both the Email address and Username must be unique to the user.
|
||||
|
||||
If a user experiences too many failed sign in attempts, their account will be temporarily suspended for a period of time. This feature is enabled by default and will suspend an account for 15 minutes after 5 failed sign in attempts, for a given IP address. You may disable this feature by switching **Throttle attempts** to the OFF setting.
|
||||
|
||||
As a security precaution, you may restrict users from having sessions across multiple devices at the same time. Enable the **Prevent concurrent sessions** setting to use this feature. When a user signs in to their account, it will automatically sign out the user for all other sessions.
|
||||
|
||||
#### Notifications
|
||||
|
||||
This feature is implemented by the Notify plugin. How to use this feature:
|
||||
|
||||
- Install the **RainLab.Notify** plugin
|
||||
- Navigate to **Settings > Notification** rules
|
||||
- Click **New notification rule**
|
||||
- Select **User > Activated**
|
||||
- Click **Add action**
|
||||
- Select **Compose a mail message**
|
||||
- Select **User email address** for the **Send to** field
|
||||
- Here you may select the Mail template previously defined in the user settings.
|
||||
- Click **Save**
|
||||
|
||||
## Extended Features
|
||||
|
||||
For extra functionality, consider also installing the [User Plus+ plugin](http://octobercms.com/plugin/rainlab-userplus) (`RainLab.UserPlus`).
|
||||
|
||||
## Session Component
|
||||
|
||||
The session component should be added to a layout that has registered users. It has no default markup.
|
||||
|
||||
### User Variable
|
||||
|
||||
You can check the logged in user by accessing the **{{ user }}** Twig variable:
|
||||
|
||||
```twig
|
||||
{% if user %}
|
||||
<p>Hello {{ user.name }}</p>
|
||||
{% else %}
|
||||
<p>Nobody is logged in</p>
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
### Signing Out
|
||||
|
||||
The Session component allows a user to sign out of their session.
|
||||
|
||||
```html
|
||||
<a data-request="onLogout" data-request-data="redirect: '/good-bye'">Sign out</a>
|
||||
```
|
||||
|
||||
### Page Restriction
|
||||
|
||||
The Session component allows the restriction of a page or layout by allowing only signed in users, only guests or no restriction. This example shows how to restrict a page to users only:
|
||||
|
||||
```ini
|
||||
title = "Restricted page"
|
||||
url = "/users-only"
|
||||
|
||||
[session]
|
||||
security = "user"
|
||||
redirect = "home"
|
||||
```
|
||||
|
||||
The `security` property can be user, guest or all. The `redirect` property refers to a page name to redirect to when access is restricted.
|
||||
|
||||
### Route Restriction
|
||||
|
||||
Access to routes can be restricted by applying the `AuthMiddleware`.
|
||||
|
||||
```php
|
||||
Route::group(['middleware' => \RainLab\User\Classes\AuthMiddleware::class], function () {
|
||||
// All routes here will require authentication
|
||||
});
|
||||
```
|
||||
|
||||
### Token Variable
|
||||
|
||||
The `token` Twig variable can be used for generating a new bearer token for the signed in user.
|
||||
|
||||
```twig
|
||||
{% do response(
|
||||
ajaxHandler('onSignin').withVars({
|
||||
token: session.token()
|
||||
})
|
||||
) %}
|
||||
```
|
||||
|
||||
The `checkToken` property of the component is used to verify a supplied token in the request headers `(Authorization: Bearer <TOKEN>)`.
|
||||
|
||||
```ini
|
||||
[session]
|
||||
checkToken = 1
|
||||
```
|
||||
|
||||
## Account Component
|
||||
|
||||
The account component provides a user sign in form, registration form, activation form and update form. To display the form:
|
||||
|
||||
```ini
|
||||
title = "Account"
|
||||
url = "/account/:code?"
|
||||
|
||||
[account]
|
||||
redirect = "home"
|
||||
paramCode = "code"
|
||||
==
|
||||
{% component 'account' %}
|
||||
```
|
||||
|
||||
If the user is logged out, this will display a sign in and registration form. Otherwise, it will display an update form. The `redirect` property is the page name to redirect to after the submit process is complete. The `paramCode` is the URL routing code used for activating the user, only used if the feature is enabled.
|
||||
|
||||
## Reset Password Component
|
||||
|
||||
The reset password component allows a user to reset their password if they have forgotten it.
|
||||
|
||||
```ini
|
||||
title = "Forgotten your password?"
|
||||
url = "/forgot-password/:code?"
|
||||
|
||||
[resetPassword]
|
||||
paramCode = "code"
|
||||
==
|
||||
{% component 'resetPassword' %}
|
||||
```
|
||||
|
||||
This will display the initial restoration request form and also the password reset form used after the verification email has been received by the user. The `paramCode` is the URL routing code used for resetting the password.
|
||||
|
||||
## Using a Login Name
|
||||
|
||||
By default the User plugin will use the email address as the login name. To switch to using a user defined login name, navigate to the backend under System > Users > User Settings and change the Login attribute under the Sign in tab to be **Username**. Then simply ask for a username upon registration by adding the username field:
|
||||
|
||||
```twig
|
||||
<form data-request="onRegister">
|
||||
<label>Full Name</label>
|
||||
<input name="name" type="text" placeholder="Enter your full name">
|
||||
|
||||
<label>Email</label>
|
||||
<input name="email" type="email" placeholder="Enter your email">
|
||||
|
||||
<label>Username</label>
|
||||
<input name="username" placeholder="Pick a login name">
|
||||
|
||||
<label>Password</label>
|
||||
<input name="password" type="password" placeholder="Choose a password">
|
||||
|
||||
<button type="submit">Register</button>
|
||||
</form>
|
||||
```
|
||||
|
||||
We can add any other additional fields here too, such as `phone`, `company`, etc.
|
||||
|
||||
## Password Length Requirements
|
||||
|
||||
By default, the User plugin requires a minimum password length of 8 characters for all users when registering or changing their password. You can change this length requirement by going to backend and navigating to System > Users > User Settings. Inside the Registration tab, a **Minimum password length** field is provided, allowing you to increase or decrease this limit to your preferred length.
|
||||
|
||||
## Error Handling
|
||||
|
||||
### Flash Messages
|
||||
|
||||
This plugin makes use of October's [`Flash API`](http://octobercms.com/docs/markup/tag-flash). In order to display the error messages, you need to place the following snippet in your layout or page.
|
||||
|
||||
```twig
|
||||
{% flash %}
|
||||
<div class="alert alert-{{ type == 'error' ? 'danger' : type }}">{{ message }}</div>
|
||||
{% endflash %}
|
||||
```
|
||||
|
||||
### AJAX Errors
|
||||
|
||||
The User plugin displays AJAX error messages in a simple ``alert()``-box by default. However, this might scare non-technical users. You can change the default behavior of an AJAX error from displaying an ``alert()`` message, like this:
|
||||
|
||||
```js
|
||||
<script>
|
||||
$(window).on('ajaxErrorMessage', function (event, message){
|
||||
|
||||
// This can be any custom JavaScript you want
|
||||
alert('Something bad happened, mate, here it is: ' + message);
|
||||
|
||||
// This will stop the default alert() message
|
||||
event.preventDefault();
|
||||
|
||||
})
|
||||
</script>
|
||||
```
|
||||
|
||||
### Checking Email/Username Availability
|
||||
|
||||
Here is a simple example of how you can quickly check if an email address / username is available in your registration forms. First, inside the page code, define the following AJAX handler to check the login name, here we are using the email address:
|
||||
|
||||
```php
|
||||
public function onCheckEmail()
|
||||
{
|
||||
return ['isTaken' => Auth::findUserByLogin(post('email')) ? 1 : 0];
|
||||
}
|
||||
```
|
||||
|
||||
For the email input we use the `data-request` and `data-track-input` attributes to call the `onCheckEmail` handler any time the field is updated. The `data-request-success` attribute will call some jQuery code to toggle the alert box.
|
||||
|
||||
```html
|
||||
<div class="form-group">
|
||||
<label>Email address</label>
|
||||
<input
|
||||
name="email"
|
||||
type="email"
|
||||
class="form-control"
|
||||
data-request="onCheckEmail"
|
||||
data-request-success="$('#loginTaken').toggle(!!data.isTaken)"
|
||||
data-track-input />
|
||||
</div>
|
||||
|
||||
<div id="loginTaken" class="alert alert-danger" style="display: none">
|
||||
Sorry, that login name is already taken.
|
||||
</div>
|
||||
```
|
||||
|
||||
## Overriding Functionality
|
||||
|
||||
Here is how you would override the `onSignin()` handler to log any error messages. Inside the page code, define this method:
|
||||
|
||||
```php
|
||||
function onSignin()
|
||||
{
|
||||
try {
|
||||
return $this->account->onSignin();
|
||||
}
|
||||
catch (Exception $ex) {
|
||||
Log::error($ex);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Here the local handler method will take priority over the **account** component's event handler. Then we simply inherit the logic by calling the parent handler manually, via the component object (`$this->account`).
|
||||
|
||||
## Auth Facade
|
||||
|
||||
There is an `Auth` facade you may use for common tasks, it primarily inherits the `October\Rain\Auth\Manager` class for functionality.
|
||||
|
||||
You may use `Auth::register` to register an account:
|
||||
|
||||
```php
|
||||
$user = Auth::register([
|
||||
'name' => 'Some User',
|
||||
'email' => 'some@website.tld',
|
||||
'password' => 'changeme',
|
||||
'password_confirmation' => 'changeme',
|
||||
]);
|
||||
```
|
||||
|
||||
The second argument can specify if the account should be automatically activated:
|
||||
|
||||
```php
|
||||
// Auto activate this user
|
||||
$user = Auth::register([...], true);
|
||||
```
|
||||
|
||||
The `Auth::check` method is a quick way to check if the user is signed in.
|
||||
|
||||
```php
|
||||
// Returns true if signed in.
|
||||
$loggedIn = Auth::check();
|
||||
```
|
||||
|
||||
To return the user model that is signed in, use `Auth::getUser` instead.
|
||||
|
||||
```php
|
||||
// Returns the signed in user
|
||||
$user = Auth::getUser();
|
||||
```
|
||||
|
||||
You may authenticate a user by providing their login and password with `Auth::authenticate`.
|
||||
|
||||
```php
|
||||
// Authenticate user by credentials
|
||||
$user = Auth::authenticate([
|
||||
'login' => post('login'),
|
||||
'password' => post('password')
|
||||
]);
|
||||
```
|
||||
|
||||
The second argument is used to store a non-expire cookie for the user.
|
||||
|
||||
```php
|
||||
$user = Auth::authenticate([...], true);
|
||||
```
|
||||
|
||||
You can also authenticate as a user simply by passing the user model along with `Auth::login`.
|
||||
|
||||
```php
|
||||
// Sign in as a specific user
|
||||
Auth::login($user);
|
||||
```
|
||||
|
||||
The second argument is the same.
|
||||
|
||||
```php
|
||||
// Sign in and remember the user
|
||||
Auth::login($user, true);
|
||||
```
|
||||
|
||||
You may look up a user by their login name using the `Auth::findUserByLogin` method.
|
||||
|
||||
```php
|
||||
$user = Auth::findUserByLogin('some@email.tld');
|
||||
```
|
||||
|
||||
When working with authentication via bearer tokens, the `Auth::getBearerToken` method can be used to obtain a bearer token (JWT) for the current user. It expires after 1 hour by default.
|
||||
|
||||
```php
|
||||
$token = Auth::getBearerToken();
|
||||
```
|
||||
|
||||
The `Auth::checkBearerToken` method is used to verify a supplied token and authenticate the user. The method returns `true` if the verification was successful.
|
||||
|
||||
```php
|
||||
if ($jwtToken = Request::bearerToken()) {
|
||||
Auth::checkBearerToken($jwtToken);
|
||||
}
|
||||
```
|
||||
|
||||
## Guest Users
|
||||
|
||||
Creating a guest user allows the registration process to be deferred. For example, making a purchase without needing to register first. Guest users are not able to sign in and will be added to the user group with the code `guest`.
|
||||
|
||||
Use the `Auth::registerGuest` method to create a guest user, it will return a user object and can be called multiple times. The unique identifier is the email address, which is a required field.
|
||||
|
||||
```php
|
||||
$user = Auth::registerGuest(['email' => 'person@acme.tld']);
|
||||
```
|
||||
|
||||
When a user registers with the same email address using the `Auth::register` method, they will inherit the existing guest user account.
|
||||
|
||||
```php
|
||||
// This will not throw an "Email already taken" error
|
||||
$user = Auth::register([
|
||||
'email' => 'person@acme.tld',
|
||||
'password' => 'changeme',
|
||||
'password_confirmation' => 'changeme',
|
||||
]);
|
||||
```
|
||||
|
||||
> **Important**: If you are using guest accounts, it is important to disable sensitive functionality for user accounts that are not verified, since it may be possible for anyone to inherit a guest account.
|
||||
|
||||
You may also convert a guest to a registered user with the `convertToRegistered` method. This will generate a random password and sends an invitation using the `rainlab.user::mail.invite` template.
|
||||
|
||||
```php
|
||||
$user->convertToRegistered();
|
||||
```
|
||||
|
||||
To disable the notification and password reset, pass the first argument as false.
|
||||
|
||||
```php
|
||||
$user->convertToRegistered(false);
|
||||
```
|
||||
|
||||
## Working with APIs
|
||||
|
||||
When [building API endpoints using CMS pages](https://docs.octobercms.com/3.x/cms/resources/building-apis.html) it can be useful to use a page for handling the authentication logic. The following is a simple example that includes various API endpoints.
|
||||
|
||||
```twig
|
||||
title = "User API Page"
|
||||
url = "/api/user/:action"
|
||||
|
||||
[resetPassword]
|
||||
[account]
|
||||
[session]
|
||||
checkToken = 1
|
||||
==
|
||||
{% if this.param.action == 'signin' %}
|
||||
{% do response(
|
||||
ajaxHandler('onSignin').withVars({
|
||||
token: session.token()
|
||||
})
|
||||
) %}
|
||||
{% endif %}
|
||||
|
||||
{% if this.param.action == 'register' %}
|
||||
{% do response(ajaxHandler('onRegister')) %}
|
||||
{% endif %}
|
||||
|
||||
{% if this.param.action == 'logout' %}
|
||||
{% do response(ajaxHandler('onLogout')) %}
|
||||
{% endif %}
|
||||
|
||||
{% if this.param.action == 'refresh' %}
|
||||
{% do response({ data: {
|
||||
token: session.token()
|
||||
}}) %}
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
An API layout to verify the user can be used for other API endpoints.
|
||||
|
||||
```twig
|
||||
description = "Auth API Layout"
|
||||
is_priority = 1
|
||||
|
||||
[session]
|
||||
checkToken = 1
|
||||
==
|
||||
{% if session.user %}
|
||||
{% page %}
|
||||
{% else %}
|
||||
{% do abort(403, 'Access Denied') %}
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
## Events
|
||||
|
||||
This plugin will fire some global events that can be useful for interacting with other plugins.
|
||||
|
||||
- **rainlab.user.beforeRegister**: Before the user's registration is processed. Passed the `$data` variable by reference to enable direct modifications to the `$data` provided to the `Auth::register()` method.
|
||||
- **rainlab.user.register**: The user has successfully registered. Passed the `$user` object and the submitted `$data` variable.
|
||||
- **rainlab.user.beforeAuthenticate**: Before the user is attempting to authenticate using the Account component.
|
||||
- **rainlab.user.login**: The user has successfully signed in.
|
||||
- **rainlab.user.logout**: The user has successfully signed out.
|
||||
- **rainlab.user.deactivate**: The user has opted-out of the site by deactivating their account. This should be used to disable any content the user may want removed.
|
||||
- **rainlab.user.reactivate**: The user has reactivated their own account by signing back in. This should revive the users content on the site.
|
||||
- **rainlab.user.getNotificationVars**: Fires when sending a user notification to enable passing more variables to the email templates. Passes the `$user` model the template will be for.
|
||||
- **rainlab.user.view.extendListToolbar**: Fires when the user listing page's toolbar is rendered.
|
||||
- **rainlab.user.view.extendPreviewToolbar**: Fires when the user preview page's toolbar is rendered.
|
||||
|
||||
Here is an example of hooking an event:
|
||||
|
||||
```php
|
||||
Event::listen('rainlab.user.deactivate', function($user) {
|
||||
// Hide all posts by the user
|
||||
});
|
||||
```
|
||||
|
||||
A common requirement is to adapt another to a legacy authentication system. In the example below, the `WordPressLogin::check` method would check the user password using an alternative hashing method, and if successful, update to the new one used by October.
|
||||
|
||||
```php
|
||||
Event::listen('rainlab.user.beforeAuthenticate', function($component, $credentials) {
|
||||
$login = array_get($credentials, 'login');
|
||||
$password = array_get($credentials, 'password');
|
||||
|
||||
// No such user exists
|
||||
if (!$user = Auth::findUserByLogin($login)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// The user is logging in with their old WordPress account
|
||||
// for the first time. Rehash their password using the new
|
||||
// October system.
|
||||
if (WordPressLogin::check($user->password, $password)) {
|
||||
$user->password = $user->password_confirmation = $password;
|
||||
$user->forceSave();
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
### License
|
||||
|
||||
This plugin is an official extension of the October CMS platform and is free to use if you have a platform license. See [EULA license](LICENSE.md) for more details.
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
# Upgrade guide
|
||||
|
||||
- [Upgrading to 1.1 from 1.0](#upgrade-1.1)
|
||||
- [Upgrading to 1.4 from 1.3](#upgrade-1.4)
|
||||
|
||||
<a name="upgrade-1.1"></a>
|
||||
## Upgrading To 1.1
|
||||
|
||||
The User plugin has been split apart in to smaller more manageable plugins. These fields are no longer provided by the User plugin: `company`, `phone`, `street_addr`, `city`, `zip`, `country`, `state`. This is a non-destructive upgrade so the columns will remain in the database untouched.
|
||||
|
||||
Country and State models have been removed and can be replaced by installing the plugin **RainLab.Location**. The remaining profiles fields can be replaced by installing the plugin **RainLab.UserPlus**.
|
||||
|
||||
In short, to retain the old functionality simply install the following plugins:
|
||||
|
||||
- RainLab.Location
|
||||
- RainLab.UserPlus
|
||||
|
||||
<a name="upgrade-1.4"></a>
|
||||
## Upgrading To 1.4
|
||||
|
||||
The Notifications tab in User settings has been removed. This feature has been replaced by the [Notify plugin](https://octobercms.com/plugin/rainlab-notify). How to replace this feature:
|
||||
|
||||
1. Install the `RainLab.Notify` plugin
|
||||
1. Navigate to Settings > Notification rules
|
||||
1. Click **New notification** rule
|
||||
1. Select User > **Activated**
|
||||
1. Click **Add action**
|
||||
1. Select **Compose a mail message**
|
||||
1. Select **User email address** for the **Send to field**
|
||||
1. Here you may select the **Mail template** previously defined in the user settings.
|
||||
1. Click **Save**
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="65px" height="64px" viewBox="0 0 65 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
|
||||
<!-- Generator: Sketch 3.4.4 (17249) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Group</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs></defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
|
||||
<g id="Group" sketch:type="MSLayerGroup" transform="translate(1.000000, 0.000000)">
|
||||
<path fill="#FFB74D" d="M47.446 15.86c0 8.598-6.877 15.474-15.474 15.474-8.596 0-15.473-6.876-15.473-15.473C16.5 7.266 23.375.39 31.97.39c8.597 0 15.474 6.878 15.474 15.473"/>
|
||||
<path fill="#607D8B" d="M62.918 53.855S54.322 36.49 31.973 36.49c-22.35 0-30.946 17.365-30.946 17.365V64h61.89V53.855z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 966 B |
|
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
* Bulk actions plugin
|
||||
*
|
||||
* Data attributes:
|
||||
* - data-control="bulk-actions" - enables the plugin on an element
|
||||
*
|
||||
* JavaScript API:
|
||||
* $('div').bulkActions()
|
||||
*/
|
||||
|
||||
+function ($) { "use strict";
|
||||
|
||||
// BULK ACTIONS CLASS DEFINITION
|
||||
// ============================
|
||||
|
||||
var BulkActions = function(element, options) {
|
||||
this.options = options
|
||||
this.$el = $(element)
|
||||
|
||||
// Init
|
||||
this.init()
|
||||
}
|
||||
|
||||
BulkActions.DEFAULTS = {}
|
||||
|
||||
BulkActions.prototype.init = function() {
|
||||
this.activeAction = null
|
||||
this.$primaryBtn = $('[data-primary-button]', this.$el)
|
||||
this.$toggleBtn = $('.dropdown-toggle', this.$el)
|
||||
this.$dropdownMenu = $('.dropdown-menu', this.$el)
|
||||
this.baseCss = this.$primaryBtn.attr('class')
|
||||
|
||||
this.$primaryBtn.on('click', $.proxy(this.onClickPrimaryButton, this))
|
||||
this.$dropdownMenu.on('click', 'li > a', $.proxy(this.onClickMenuItem, this))
|
||||
|
||||
this.setActiveItem($('li > a:first', this.$dropdownMenu))
|
||||
}
|
||||
|
||||
BulkActions.prototype.onClickPrimaryButton = function() {
|
||||
if (!this.activeAction) {
|
||||
throw new Error('Bulk action not found')
|
||||
}
|
||||
|
||||
this.$primaryBtn.data('request-data', {
|
||||
checked: $('.control-list').listWidget('getChecked'),
|
||||
action: this.activeAction
|
||||
})
|
||||
}
|
||||
|
||||
BulkActions.prototype.onClickMenuItem = function(ev) {
|
||||
this.setActiveItem($(ev.target))
|
||||
this.$primaryBtn.click()
|
||||
}
|
||||
|
||||
BulkActions.prototype.setActiveItem = function($el) {
|
||||
this.$toggleBtn.blur();
|
||||
this.activeAction = $el.data('action');
|
||||
this.$primaryBtn.text($el.text());
|
||||
this.$primaryBtn.attr('class', this.baseCss);
|
||||
this.$primaryBtn.addClass($el.attr('class')).removeClass('dropdown-item');
|
||||
this.$primaryBtn.data('request-confirm', $el.data('confirm'));
|
||||
}
|
||||
|
||||
// BULK ACTIONS PLUGIN DEFINITION
|
||||
// ============================
|
||||
|
||||
var old = $.fn.bulkActions
|
||||
|
||||
$.fn.bulkActions = function (option) {
|
||||
var args = Array.prototype.slice.call(arguments, 1), result
|
||||
this.each(function () {
|
||||
var $this = $(this)
|
||||
var data = $this.data('oc.bulkactions')
|
||||
var options = $.extend({}, BulkActions.DEFAULTS, $this.data(), typeof option == 'object' && option)
|
||||
if (!data) $this.data('oc.bulkactions', (data = new BulkActions(this, options)))
|
||||
if (typeof option == 'string') result = data[option].apply(data, args)
|
||||
if (typeof result != 'undefined') return false
|
||||
})
|
||||
|
||||
return result ? result : this
|
||||
}
|
||||
|
||||
$.fn.bulkActions.Constructor = BulkActions
|
||||
|
||||
// BULK ACTIONS NO CONFLICT
|
||||
// =================
|
||||
|
||||
$.fn.bulkActions.noConflict = function () {
|
||||
$.fn.bulkActions = old
|
||||
return this
|
||||
}
|
||||
|
||||
// BULK ACTIONS DATA-API
|
||||
// ===============
|
||||
|
||||
$(document).render(function() {
|
||||
$('[data-control="bulk-actions"]').bulkActions()
|
||||
});
|
||||
|
||||
}(window.jQuery);
|
||||
|
|
@ -0,0 +1,184 @@
|
|||
<?php namespace RainLab\User\Classes;
|
||||
|
||||
use Event;
|
||||
use October\Rain\Auth\Manager as RainAuthManager;
|
||||
use RainLab\User\Models\Settings as UserSettings;
|
||||
use RainLab\User\Models\UserGroup as UserGroupModel;
|
||||
|
||||
/**
|
||||
* AuthManager
|
||||
*/
|
||||
class AuthManager extends RainAuthManager
|
||||
{
|
||||
use \RainLab\User\Classes\AuthManager\HasBearerToken;
|
||||
|
||||
/**
|
||||
* @var static instance
|
||||
*/
|
||||
protected static $instance;
|
||||
|
||||
/**
|
||||
* @var string sessionKey
|
||||
*/
|
||||
protected $sessionKey = 'user_auth';
|
||||
|
||||
/**
|
||||
* @var string userModel
|
||||
*/
|
||||
protected $userModel = \RainLab\User\Models\User::class;
|
||||
|
||||
/**
|
||||
* @var string groupModel
|
||||
*/
|
||||
protected $groupModel = \RainLab\User\Models\UserGroup::class;
|
||||
|
||||
/**
|
||||
* @var string throttleModel
|
||||
*/
|
||||
protected $throttleModel = \RainLab\User\Models\Throttle::class;
|
||||
|
||||
/**
|
||||
* init
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
$this->useThrottle = UserSettings::get('use_throttle', $this->useThrottle);
|
||||
|
||||
$this->requireActivation = UserSettings::get('require_activation', $this->requireActivation);
|
||||
|
||||
parent::init();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function extendUserQuery($query)
|
||||
{
|
||||
$query->withTrashed();
|
||||
|
||||
// Extensibility
|
||||
Event::fire('rainlab.user.extendUserAuthQuery', [$query]);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function register(array $credentials, $activate = false, $autoLogin = true)
|
||||
{
|
||||
if ($guest = $this->findGuestUserByCredentials($credentials)) {
|
||||
return $this->convertGuestToUser($guest, $credentials, $activate);
|
||||
}
|
||||
|
||||
return parent::register($credentials, $activate, $autoLogin);
|
||||
}
|
||||
|
||||
/**
|
||||
* findUserByEmail finds a user by the email value, which includes
|
||||
* deactivated (trashed) user records.
|
||||
* @param string $email
|
||||
* @return Authenticatable|null
|
||||
*/
|
||||
public function findUserByEmail($email)
|
||||
{
|
||||
if (!$email) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$query = $this->createUserModelQuery();
|
||||
|
||||
$user = $query->where('email', $email)->first();
|
||||
|
||||
return $this->validateUserModel($user) ? $user : null;
|
||||
}
|
||||
|
||||
//
|
||||
// Guest users
|
||||
//
|
||||
|
||||
/**
|
||||
* findGuestUserByCredentials
|
||||
*/
|
||||
public function findGuestUserByCredentials(array $credentials)
|
||||
{
|
||||
if ($email = array_get($credentials, 'email')) {
|
||||
return $this->findGuestUser($email);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* findGuestUser
|
||||
*/
|
||||
public function findGuestUser($email)
|
||||
{
|
||||
$query = $this->createUserModelQuery();
|
||||
|
||||
return $query
|
||||
->where('email', $email)
|
||||
->where('is_guest', 1)
|
||||
->first()
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* registerGuest a guest user by giving the required credentials.
|
||||
*
|
||||
* @param array $credentials
|
||||
* @return Models\User
|
||||
*/
|
||||
public function registerGuest(array $credentials)
|
||||
{
|
||||
$user = $this->findGuestUserByCredentials($credentials);
|
||||
$newUser = false;
|
||||
|
||||
if (!$user) {
|
||||
$user = $this->createUserModel();
|
||||
$newUser = true;
|
||||
}
|
||||
|
||||
$user->fill($credentials);
|
||||
$user->is_guest = true;
|
||||
$user->save();
|
||||
|
||||
// Add user to guest group
|
||||
if ($newUser && $group = UserGroupModel::getGuestGroup()) {
|
||||
$user->groups()->add($group);
|
||||
}
|
||||
|
||||
// Prevents revalidation of the password field
|
||||
// on subsequent saves to this model object
|
||||
$user->password = null;
|
||||
|
||||
return $this->user = $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* convertGuestToUser converts a guest user to a registered user.
|
||||
*
|
||||
* @param Models\User $user
|
||||
* @param array $credentials
|
||||
* @param bool $activate
|
||||
* @return Models\User
|
||||
*/
|
||||
public function convertGuestToUser($user, $credentials, $activate = false)
|
||||
{
|
||||
$user->fill($credentials);
|
||||
$user->convertToRegistered(false);
|
||||
|
||||
// Remove user from guest group
|
||||
if ($group = UserGroupModel::getGuestGroup()) {
|
||||
$user->groups()->remove($group);
|
||||
}
|
||||
|
||||
if ($activate) {
|
||||
$user->attemptActivation($user->getActivationCode());
|
||||
}
|
||||
|
||||
// Prevents revalidation of the password field
|
||||
// on subsequent saves to this model object
|
||||
$user->password = null;
|
||||
|
||||
return $this->user = $user;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<?php namespace RainLab\User\Classes;
|
||||
|
||||
use Auth;
|
||||
use Closure;
|
||||
use Response;
|
||||
|
||||
class AuthMiddleware
|
||||
{
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if (!Auth::check()) {
|
||||
return Response::make('Forbidden', 403);
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<?php namespace RainLab\User\Classes;
|
||||
|
||||
use RainLab\Notify\Classes\EventBase;
|
||||
|
||||
class UserEventBase extends EventBase
|
||||
{
|
||||
/**
|
||||
* @var array Local conditions supported by this event.
|
||||
*/
|
||||
public $conditions = [
|
||||
\RainLab\User\NotifyRules\UserAttributeCondition::class
|
||||
];
|
||||
|
||||
/**
|
||||
* Defines the usable parameters provided by this class.
|
||||
*/
|
||||
public function defineParams()
|
||||
{
|
||||
return [
|
||||
'name' => [
|
||||
'title' => 'Name',
|
||||
'label' => 'Name of the user',
|
||||
],
|
||||
'email' => [
|
||||
'title' => 'Email',
|
||||
'label' => "User's email address",
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public static function makeParamsFromEvent(array $args, $eventName = null)
|
||||
{
|
||||
$user = array_get($args, 0);
|
||||
|
||||
$params = $user->getNotificationVars();
|
||||
$params['user'] = $user;
|
||||
|
||||
return $params;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<?php namespace RainLab\User\Classes;
|
||||
|
||||
use App;
|
||||
use Illuminate\Routing\Redirector;
|
||||
|
||||
/**
|
||||
* UserRedirector
|
||||
*/
|
||||
class UserRedirector extends Redirector
|
||||
{
|
||||
/**
|
||||
* guest creates a new redirect response, while putting the current URL in the session.
|
||||
* @param string $path
|
||||
* @param int $status
|
||||
* @param array $headers
|
||||
* @param bool $secure
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function guest($path, $status = 302, $headers = [], $secure = null)
|
||||
{
|
||||
$sessionKey = App::runningInBackend()
|
||||
? 'url.intended'
|
||||
: 'url.cms.intended';
|
||||
|
||||
$this->session->put($sessionKey, $this->generator->full());
|
||||
|
||||
return $this->to($path, $status, $headers, $secure);
|
||||
}
|
||||
|
||||
/**
|
||||
* intended creates a new redirect response to the previously intended location.
|
||||
* @param string $default
|
||||
* @param int $status
|
||||
* @param array $headers
|
||||
* @param bool $secure
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function intended($default = '/', $status = 302, $headers = [], $secure = null)
|
||||
{
|
||||
$sessionKey = App::runningInBackend()
|
||||
? 'url.intended'
|
||||
: 'url.cms.intended';
|
||||
|
||||
$path = $this->session->pull($sessionKey, $default);
|
||||
|
||||
return $this->to($path, $status, $headers, $secure);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,133 @@
|
|||
<?php namespace RainLab\User\Classes\AuthManager;
|
||||
|
||||
use Str;
|
||||
use Hash;
|
||||
use Crypt;
|
||||
use Request;
|
||||
use Carbon\Carbon;
|
||||
use Firebase\JWT\JWT;
|
||||
use Firebase\JWT\Key;
|
||||
use SystemException;
|
||||
use Exception;
|
||||
|
||||
/**
|
||||
* HasJwtTokens
|
||||
*
|
||||
* @package october\auth
|
||||
* @author Alexey Bobkov, Samuel Georges
|
||||
*/
|
||||
trait HasBearerToken
|
||||
{
|
||||
/**
|
||||
* getBearerToken
|
||||
*/
|
||||
public function getBearerToken(): ?string
|
||||
{
|
||||
if (!class_exists(JWT::class)) {
|
||||
throw new SystemException("Missing package. Please install 'firebase/php-jwt' via composer.");
|
||||
}
|
||||
|
||||
$user = $this->getUser();
|
||||
if (!$user) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Secret key
|
||||
$secretKey = Crypt::getKey();
|
||||
if (!$secretKey) {
|
||||
throw new \Illuminate\Encryption\MissingAppKeyException;
|
||||
}
|
||||
|
||||
// Prepare metadata
|
||||
$tokenId = base64_encode(Str::random(16));
|
||||
$issuedAt = Carbon::now();
|
||||
$expireAt = Carbon::now()->addMinutes(60);
|
||||
$serverName = Request::getHost();
|
||||
|
||||
// Prepare payload
|
||||
$persistCode = $user->persist_code ?: $user->getPersistCode();
|
||||
$data = [
|
||||
'login' => $user->getLogin(),
|
||||
'hash' => Hash::make($persistCode)
|
||||
];
|
||||
|
||||
// Create the token as an array
|
||||
$data = [
|
||||
'iat' => $issuedAt->getTimestamp(),
|
||||
'jti' => $tokenId,
|
||||
'iss' => $serverName,
|
||||
'nbf' => $issuedAt->getTimestamp(),
|
||||
'exp' => $expireAt->getTimestamp(),
|
||||
'data' => $data
|
||||
];
|
||||
|
||||
// Encode the array to a JWT string.
|
||||
return JWT::encode($data, $secretKey, 'HS512');
|
||||
}
|
||||
|
||||
/**
|
||||
* checkBearerToken
|
||||
*/
|
||||
public function checkBearerToken(string $jwtToken)
|
||||
{
|
||||
if (!class_exists(JWT::class)) {
|
||||
throw new SystemException("Missing package. Please install 'firebase/php-jwt' via composer.");
|
||||
}
|
||||
|
||||
if (!strlen(trim($jwtToken))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Secret key
|
||||
$secretKey = Crypt::getKey();
|
||||
if (!$secretKey) {
|
||||
throw new \Illuminate\Encryption\MissingAppKeyException;
|
||||
}
|
||||
|
||||
// Decode token
|
||||
try {
|
||||
JWT::$leeway = 60;
|
||||
$token = JWT::decode($jwtToken, new Key($secretKey, 'HS512'));
|
||||
}
|
||||
catch (Exception $ex) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Validate claims
|
||||
$now = Carbon::now();
|
||||
$serverName = Request::getHost();
|
||||
if (
|
||||
$token->iss !== $serverName ||
|
||||
$token->nbf > $now->getTimestamp() ||
|
||||
$token->exp < $now->getTimestamp()
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Locate payload
|
||||
$login = $token->data->login ?? null;
|
||||
$hash = $token->data->hash ?? null;
|
||||
if (!$login || !$hash) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Locate user
|
||||
$user = $this->findUserByLogin($login);
|
||||
if (!$user || !$user->persist_code) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Persist code check failed
|
||||
if (!Hash::check($user->persist_code, $hash)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Pass
|
||||
$this->user = $user;
|
||||
|
||||
// Check and reset
|
||||
if (!$this->check()) {
|
||||
$this->user = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,661 @@
|
|||
<?php namespace RainLab\User\Components;
|
||||
|
||||
use Lang;
|
||||
use Auth;
|
||||
use Mail;
|
||||
use Event;
|
||||
use Flash;
|
||||
use Input;
|
||||
use System;
|
||||
use Request;
|
||||
use Redirect;
|
||||
use Validator;
|
||||
use October\Rain\Auth\AuthException;
|
||||
use Cms\Classes\Page;
|
||||
use Cms\Classes\ComponentBase;
|
||||
use RainLab\User\Models\User as UserModel;
|
||||
use RainLab\User\Models\Settings as UserSettings;
|
||||
use ApplicationException;
|
||||
use ValidationException;
|
||||
use Exception;
|
||||
|
||||
/**
|
||||
* Account component
|
||||
*
|
||||
* Allows users to register, sign in and update their account. They can also
|
||||
* deactivate their account and resend the account verification email.
|
||||
*/
|
||||
class Account extends ComponentBase
|
||||
{
|
||||
/**
|
||||
* componentDetails
|
||||
*/
|
||||
public function componentDetails()
|
||||
{
|
||||
return [
|
||||
'name' => /*Account*/'rainlab.user::lang.account.account',
|
||||
'description' => /*User management form.*/'rainlab.user::lang.account.account_desc'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* defineProperties
|
||||
*/
|
||||
public function defineProperties()
|
||||
{
|
||||
return [
|
||||
'redirect' => [
|
||||
'title' => /*Redirect to*/'rainlab.user::lang.account.redirect_to',
|
||||
'description' => /*Page name to redirect to after update, sign in or registration.*/'rainlab.user::lang.account.redirect_to_desc',
|
||||
'type' => 'dropdown',
|
||||
'default' => ''
|
||||
],
|
||||
'paramCode' => [
|
||||
'title' => /*Activation Code Param*/'rainlab.user::lang.account.code_param',
|
||||
'description' => /*The page URL parameter used for the registration activation code*/ 'rainlab.user::lang.account.code_param_desc',
|
||||
'type' => 'string',
|
||||
'default' => 'code'
|
||||
],
|
||||
'activationPage' => [
|
||||
'title' => /* Activation Page */'rainlab.user::lang.account.activation_page',
|
||||
'description' => /* Select a page to use for activating the user account */'rainlab.user::lang.account.activation_page_comment',
|
||||
'type' => 'dropdown',
|
||||
'default' => ''
|
||||
],
|
||||
'forceSecure' => [
|
||||
'title' => /*Force secure protocol*/'rainlab.user::lang.account.force_secure',
|
||||
'description' => /*Always redirect the URL with the HTTPS schema.*/'rainlab.user::lang.account.force_secure_desc',
|
||||
'type' => 'checkbox',
|
||||
'default' => 0
|
||||
],
|
||||
'requirePassword' => [
|
||||
'title' => /*Confirm password on update*/'rainlab.user::lang.account.update_requires_password',
|
||||
'description' => /*Require the current password of the user when changing their profile.*/'rainlab.user::lang.account.update_requires_password_comment',
|
||||
'type' => 'checkbox',
|
||||
'default' => 0
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* getRedirectOptions
|
||||
*/
|
||||
public function getRedirectOptions()
|
||||
{
|
||||
return [
|
||||
'' => '- refresh page -',
|
||||
'0' => '- no redirect -'
|
||||
] + Page::sortBy('baseFileName')->lists('baseFileName', 'baseFileName');
|
||||
}
|
||||
|
||||
/**
|
||||
* getActivationPageOptions
|
||||
*/
|
||||
public function getActivationPageOptions()
|
||||
{
|
||||
return [
|
||||
'' => '- current page -',
|
||||
] + Page::sortBy('baseFileName')->lists('baseFileName', 'baseFileName');
|
||||
}
|
||||
|
||||
/**
|
||||
* Executed when this component is initialized
|
||||
*/
|
||||
public function prepareVars()
|
||||
{
|
||||
$this->page['user'] = $this->user();
|
||||
$this->page['canRegister'] = $this->canRegister();
|
||||
$this->page['loginAttribute'] = $this->loginAttribute();
|
||||
$this->page['loginAttributeLabel'] = $this->loginAttributeLabel();
|
||||
$this->page['updateRequiresPassword'] = $this->updateRequiresPassword();
|
||||
$this->page['rememberLoginMode'] = $this->rememberLoginMode();
|
||||
}
|
||||
|
||||
/**
|
||||
* Executed when this component is bound to a page or layout.
|
||||
*/
|
||||
public function onRun()
|
||||
{
|
||||
// Redirect to HTTPS checker
|
||||
if ($redirect = $this->redirectForceSecure()) {
|
||||
return $redirect;
|
||||
}
|
||||
|
||||
// Activation code supplied
|
||||
if ($code = $this->activationCode()) {
|
||||
$this->onActivate($code);
|
||||
}
|
||||
|
||||
$this->prepareVars();
|
||||
}
|
||||
|
||||
//
|
||||
// Properties
|
||||
//
|
||||
|
||||
/**
|
||||
* Returns the logged in user, if available
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
if (!Auth::check()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return Auth::getUser();
|
||||
}
|
||||
|
||||
/**
|
||||
* Flag for allowing registration, pulled from UserSettings
|
||||
*/
|
||||
public function canRegister()
|
||||
{
|
||||
return UserSettings::get('allow_registration', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the login model attribute.
|
||||
*/
|
||||
public function loginAttribute()
|
||||
{
|
||||
return UserSettings::get('login_attribute', UserSettings::LOGIN_EMAIL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the login label as a word.
|
||||
*/
|
||||
public function loginAttributeLabel()
|
||||
{
|
||||
return Lang::get($this->loginAttribute() == UserSettings::LOGIN_EMAIL
|
||||
? /*Email*/'rainlab.user::lang.login.attribute_email'
|
||||
: /*Username*/'rainlab.user::lang.login.attribute_username'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* updateRequiresPassword returns the update requires password setting
|
||||
*/
|
||||
public function updateRequiresPassword()
|
||||
{
|
||||
return $this->property('requirePassword', false);
|
||||
}
|
||||
|
||||
/**
|
||||
* rememberLoginMode returns the login remember mode.
|
||||
*/
|
||||
public function rememberLoginMode()
|
||||
{
|
||||
return UserSettings::get('remember_login', UserSettings::REMEMBER_ALWAYS);
|
||||
}
|
||||
|
||||
/**
|
||||
* useRememberLogin returns true if persistent authentication should be used.
|
||||
*/
|
||||
protected function useRememberLogin(): bool
|
||||
{
|
||||
switch ($this->rememberLoginMode()) {
|
||||
case UserSettings::REMEMBER_ALWAYS:
|
||||
return true;
|
||||
|
||||
case UserSettings::REMEMBER_NEVER:
|
||||
return false;
|
||||
|
||||
case UserSettings::REMEMBER_ASK:
|
||||
return (bool) post('remember', false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* activationCode looks for the activation code from the URL parameter. If nothing
|
||||
* is found, the GET parameter 'activate' is used instead.
|
||||
* @return string
|
||||
*/
|
||||
public function activationCode()
|
||||
{
|
||||
$routeParameter = $this->property('paramCode');
|
||||
|
||||
if ($code = $this->param($routeParameter)) {
|
||||
return $code;
|
||||
}
|
||||
|
||||
return get('activate');
|
||||
}
|
||||
|
||||
//
|
||||
// AJAX
|
||||
//
|
||||
|
||||
/**
|
||||
* onSignin signs in the user
|
||||
*/
|
||||
public function onSignin()
|
||||
{
|
||||
try {
|
||||
// Validate input
|
||||
$data = (array) post();
|
||||
$rules = [];
|
||||
|
||||
$rules['login'] = $this->loginAttribute() == UserSettings::LOGIN_USERNAME
|
||||
? 'required|between:2,255'
|
||||
: 'required|email|between:6,255';
|
||||
|
||||
$rules['password'] = 'required|between:' . UserModel::getMinPasswordLength() . ',255';
|
||||
|
||||
if (!array_key_exists('login', $data)) {
|
||||
$data['login'] = post('username', post('email'));
|
||||
}
|
||||
|
||||
$data['login'] = trim($data['login']);
|
||||
|
||||
$validation = Validator::make(
|
||||
$data,
|
||||
$rules,
|
||||
$this->getValidatorMessages(),
|
||||
$this->getCustomAttributes()
|
||||
);
|
||||
|
||||
if ($validation->fails()) {
|
||||
throw new ValidationException($validation);
|
||||
}
|
||||
|
||||
// Authenticate user
|
||||
$credentials = [
|
||||
'login' => array_get($data, 'login'),
|
||||
'password' => array_get($data, 'password')
|
||||
];
|
||||
|
||||
Event::fire('rainlab.user.beforeAuthenticate', [$this, $credentials]);
|
||||
|
||||
$user = Auth::authenticate($credentials, $this->useRememberLogin());
|
||||
if ($user->isBanned()) {
|
||||
Auth::logout();
|
||||
throw new AuthException(Lang::get(/*Sorry, this user is currently not activated. Please contact us for further assistance.*/'rainlab.user::lang.account.banned'));
|
||||
}
|
||||
|
||||
// Record IP address
|
||||
if ($ipAddress = Request::ip()) {
|
||||
$user->touchIpAddress($ipAddress);
|
||||
}
|
||||
|
||||
// Redirect
|
||||
if ($redirect = $this->makeRedirection(true)) {
|
||||
return $redirect;
|
||||
}
|
||||
}
|
||||
catch (Exception $ex) {
|
||||
$this->throwOrFlashError($ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onRegister registers the user
|
||||
*/
|
||||
public function onRegister()
|
||||
{
|
||||
try {
|
||||
if (!$this->canRegister()) {
|
||||
throw new ApplicationException(Lang::get(/*Registrations are currently disabled.*/'rainlab.user::lang.account.registration_disabled'));
|
||||
}
|
||||
|
||||
if ($this->isRegisterThrottled()) {
|
||||
throw new ApplicationException(Lang::get(/*Registration is throttled. Please try again later.*/'rainlab.user::lang.account.registration_throttled'));
|
||||
}
|
||||
|
||||
// Validate input
|
||||
$data = (array) post();
|
||||
|
||||
if (!array_key_exists('password_confirmation', $data)) {
|
||||
$data['password_confirmation'] = post('password');
|
||||
}
|
||||
|
||||
$rules = (new UserModel)->rules;
|
||||
|
||||
if ($this->loginAttribute() !== UserSettings::LOGIN_USERNAME) {
|
||||
unset($rules['username']);
|
||||
}
|
||||
|
||||
$validation = Validator::make(
|
||||
$data,
|
||||
$rules,
|
||||
$this->getValidatorMessages(),
|
||||
$this->getCustomAttributes()
|
||||
);
|
||||
|
||||
if ($validation->fails()) {
|
||||
throw new ValidationException($validation);
|
||||
}
|
||||
|
||||
// Record IP address
|
||||
if ($ipAddress = Request::ip()) {
|
||||
$data['created_ip_address'] = $data['last_ip_address'] = $ipAddress;
|
||||
}
|
||||
|
||||
// Register user
|
||||
Event::fire('rainlab.user.beforeRegister', [&$data]);
|
||||
|
||||
$requireActivation = UserSettings::get('require_activation', true);
|
||||
$automaticActivation = UserSettings::get('activate_mode') == UserSettings::ACTIVATE_AUTO;
|
||||
$userActivation = UserSettings::get('activate_mode') == UserSettings::ACTIVATE_USER;
|
||||
$adminActivation = UserSettings::get('activate_mode') == UserSettings::ACTIVATE_ADMIN;
|
||||
$user = Auth::register($data, $automaticActivation);
|
||||
|
||||
Event::fire('rainlab.user.register', [$user, $data]);
|
||||
|
||||
// Activation is by the user, send the email
|
||||
if ($userActivation) {
|
||||
$this->sendActivationEmail($user);
|
||||
|
||||
Flash::success(Lang::get(/*An activation email has been sent to your email address.*/'rainlab.user::lang.account.activation_email_sent'));
|
||||
}
|
||||
|
||||
$intended = false;
|
||||
|
||||
// Activation is by the admin, show message
|
||||
// For automatic email on account activation RainLab.Notify plugin is needed
|
||||
if ($adminActivation) {
|
||||
Flash::success(Lang::get(/*You have successfully registered. Your account is not yet active and must be approved by an administrator.*/'rainlab.user::lang.account.activation_by_admin'));
|
||||
}
|
||||
|
||||
// Automatically activated or not required, log the user in
|
||||
if ($automaticActivation || !$requireActivation) {
|
||||
Auth::login($user, $this->useRememberLogin());
|
||||
$intended = true;
|
||||
}
|
||||
|
||||
// Redirect to the intended page after successful sign in
|
||||
if ($redirect = $this->makeRedirection($intended)) {
|
||||
return $redirect;
|
||||
}
|
||||
}
|
||||
catch (Exception $ex) {
|
||||
$this->throwOrFlashError($ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* onActivate activates the user
|
||||
* @param string $code Activation code
|
||||
*/
|
||||
public function onActivate($code = null)
|
||||
{
|
||||
try {
|
||||
$code = post('code', $code);
|
||||
|
||||
$errorFields = ['code' => Lang::get(/*Invalid activation code supplied.*/'rainlab.user::lang.account.invalid_activation_code')];
|
||||
|
||||
// Break up the code parts
|
||||
$parts = explode('!', $code);
|
||||
if (count($parts) != 2) {
|
||||
throw new ValidationException($errorFields);
|
||||
}
|
||||
|
||||
list($userId, $code) = $parts;
|
||||
|
||||
if (!strlen(trim($userId)) || !strlen(trim($code))) {
|
||||
throw new ValidationException($errorFields);
|
||||
}
|
||||
|
||||
if (!$user = Auth::findUserById($userId)) {
|
||||
throw new ValidationException($errorFields);
|
||||
}
|
||||
|
||||
if (!$user->attemptActivation($code)) {
|
||||
throw new ValidationException($errorFields);
|
||||
}
|
||||
|
||||
Flash::success(Lang::get(/*Successfully activated your account.*/'rainlab.user::lang.account.success_activation'));
|
||||
|
||||
// Sign in the user
|
||||
Auth::login($user, $this->useRememberLogin());
|
||||
}
|
||||
catch (Exception $ex) {
|
||||
$this->throwOrFlashError($ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the user
|
||||
*/
|
||||
public function onUpdate()
|
||||
{
|
||||
if (!$user = $this->user()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$data = (array) post();
|
||||
|
||||
if ($this->updateRequiresPassword()) {
|
||||
if (!$user->checkHashValue('password', $data['password_current'])) {
|
||||
throw new ValidationException(['password_current' => Lang::get('rainlab.user::lang.account.invalid_current_pass')]);
|
||||
}
|
||||
}
|
||||
|
||||
if (Input::hasFile('avatar')) {
|
||||
$user->avatar = Input::file('avatar');
|
||||
}
|
||||
|
||||
$user->fill($data);
|
||||
$user->save();
|
||||
|
||||
// Password has changed, reauthenticate the user
|
||||
if (array_key_exists('password', $data) && strlen($data['password'])) {
|
||||
Auth::login($user->reload(), $this->useRememberLogin());
|
||||
}
|
||||
|
||||
// Update Event to hook into the plugins function
|
||||
Event::fire('rainlab.user.update', [$user, $data]);
|
||||
|
||||
Flash::success(post('flash', Lang::get(/*Settings successfully saved!*/'rainlab.user::lang.account.success_saved')));
|
||||
|
||||
// Redirect
|
||||
if ($redirect = $this->makeRedirection()) {
|
||||
return $redirect;
|
||||
}
|
||||
|
||||
$this->prepareVars();
|
||||
}
|
||||
|
||||
/**
|
||||
* Deactivate user
|
||||
*/
|
||||
public function onDeactivate()
|
||||
{
|
||||
if (!$user = $this->user()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$user->checkHashValue('password', post('password'))) {
|
||||
throw new ValidationException(['password' => Lang::get('rainlab.user::lang.account.invalid_deactivation_pass')]);
|
||||
}
|
||||
|
||||
Auth::logout();
|
||||
$user->delete();
|
||||
|
||||
Flash::success(post('flash', Lang::get(/*Successfully deactivated your account. Sorry to see you go!*/'rainlab.user::lang.account.success_deactivation')));
|
||||
|
||||
// Redirect
|
||||
if ($redirect = $this->makeRedirection()) {
|
||||
return $redirect;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Trigger a subsequent activation email
|
||||
*/
|
||||
public function onSendActivationEmail()
|
||||
{
|
||||
try {
|
||||
if (!$user = $this->user()) {
|
||||
throw new ApplicationException(Lang::get(/*You must be logged in first!*/'rainlab.user::lang.account.login_first'));
|
||||
}
|
||||
|
||||
if ($user->is_activated) {
|
||||
throw new ApplicationException(Lang::get(/*Your account is already activated!*/'rainlab.user::lang.account.already_active'));
|
||||
}
|
||||
|
||||
Flash::success(Lang::get(/*An activation email has been sent to your email address.*/'rainlab.user::lang.account.activation_email_sent'));
|
||||
|
||||
$this->sendActivationEmail($user);
|
||||
}
|
||||
catch (Exception $ex) {
|
||||
$this->throwOrFlashError($ex);
|
||||
}
|
||||
|
||||
// Redirect
|
||||
if ($redirect = $this->makeRedirection()) {
|
||||
return $redirect;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Helpers
|
||||
//
|
||||
|
||||
/**
|
||||
* Returns a link used to activate the user account.
|
||||
* @return string
|
||||
*/
|
||||
protected function makeActivationUrl($code)
|
||||
{
|
||||
$params = [
|
||||
$this->property('paramCode') => $code
|
||||
];
|
||||
|
||||
if ($pageName = $this->property('activationPage')) {
|
||||
$url = $this->pageUrl($pageName, $params);
|
||||
}
|
||||
else {
|
||||
$url = $this->currentPageUrl($params);
|
||||
}
|
||||
|
||||
if (strpos($url, $code) === false) {
|
||||
$url .= '?activate=' . $code;
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends the activation email to a user
|
||||
* @param User $user
|
||||
* @return void
|
||||
*/
|
||||
protected function sendActivationEmail($user)
|
||||
{
|
||||
$code = implode('!', [$user->id, $user->getActivationCode()]);
|
||||
|
||||
$link = $this->makeActivationUrl($code);
|
||||
|
||||
$data = [
|
||||
'name' => $user->name,
|
||||
'link' => $link,
|
||||
'code' => $code
|
||||
];
|
||||
|
||||
Mail::send('rainlab.user::mail.activate', $data, function($message) use ($user) {
|
||||
$message->to($user->email, $user->name);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Redirect to the intended page after successful update, sign in or registration.
|
||||
* The URL can come from the "redirect" property or the "redirect" postback value.
|
||||
* @return mixed
|
||||
*/
|
||||
protected function makeRedirection($intended = false)
|
||||
{
|
||||
$method = $intended ? 'intended' : 'to';
|
||||
|
||||
$property = post('redirect', $this->property('redirect'));
|
||||
|
||||
// No redirect
|
||||
if ($property === '0') {
|
||||
return;
|
||||
}
|
||||
|
||||
// Refresh page
|
||||
if ($property === '') {
|
||||
return Redirect::refresh();
|
||||
}
|
||||
|
||||
$redirectUrl = $this->pageUrl($property) ?: $property;
|
||||
|
||||
if ($redirectUrl) {
|
||||
return Redirect::$method($redirectUrl);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the force secure property is enabled and if so
|
||||
* returns a redirect object.
|
||||
* @return mixed
|
||||
*/
|
||||
protected function redirectForceSecure()
|
||||
{
|
||||
if (
|
||||
Request::secure() ||
|
||||
Request::ajax() ||
|
||||
!$this->property('forceSecure')
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
return Redirect::secure(Request::path());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if user is throttled.
|
||||
* @return bool
|
||||
*/
|
||||
protected function isRegisterThrottled()
|
||||
{
|
||||
if (!UserSettings::get('use_register_throttle', false)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return UserModel::isRegisterThrottled(Request::ip());
|
||||
}
|
||||
|
||||
/**
|
||||
* getValidatorMessages
|
||||
*/
|
||||
protected function getValidatorMessages(): array
|
||||
{
|
||||
return (array) (new UserModel)->customMessages;
|
||||
}
|
||||
|
||||
/**
|
||||
* getCustomAttributes
|
||||
*/
|
||||
protected function getCustomAttributes(): array
|
||||
{
|
||||
return [
|
||||
'login' => $this->loginAttributeLabel(),
|
||||
'password' => Lang::get('rainlab.user::lang.account.password'),
|
||||
'email' => Lang::get('rainlab.user::lang.account.email'),
|
||||
'username' => Lang::get('rainlab.user::lang.user.username'),
|
||||
'name' => Lang::get('rainlab.user::lang.account.full_name')
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* throwOrFlashError is error logic used by older versions before postback
|
||||
* handlers internally supported flash messages for safe exceptions.
|
||||
*/
|
||||
protected function throwOrFlashError($ex)
|
||||
{
|
||||
// v3.4 handles postback flash logic internally and more accurately
|
||||
// so just throw the exception when using v3.4 or above
|
||||
if (version_compare(System::VERSION, '3.4', '>=')) {
|
||||
throw $ex;
|
||||
}
|
||||
|
||||
// AJAX request or ajaxHandler twig call
|
||||
if (Request::ajax() || !post('_handler')) {
|
||||
throw $ex;
|
||||
}
|
||||
|
||||
// Assumed postback handler, exception ignored
|
||||
Flash::error($ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,195 @@
|
|||
<?php namespace RainLab\User\Components;
|
||||
|
||||
use Auth;
|
||||
use Lang;
|
||||
use Mail;
|
||||
use Validator;
|
||||
use ValidationException;
|
||||
use ApplicationException;
|
||||
use Cms\Classes\Page;
|
||||
use Cms\Classes\ComponentBase;
|
||||
use RainLab\User\Models\User as UserModel;
|
||||
|
||||
/**
|
||||
* ResetPassword controls the password reset workflow
|
||||
*
|
||||
* When a user has forgotten their password, they are able to reset it using
|
||||
* a unique token that, sent to their email address upon request.
|
||||
*/
|
||||
class ResetPassword extends ComponentBase
|
||||
{
|
||||
/**
|
||||
* componentDetails
|
||||
*/
|
||||
public function componentDetails()
|
||||
{
|
||||
return [
|
||||
'name' => /*Reset Password*/'rainlab.user::lang.reset_password.reset_password',
|
||||
'description' => /*Forgotten password form.*/'rainlab.user::lang.reset_password.reset_password_desc'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* defineProperties
|
||||
*/
|
||||
public function defineProperties()
|
||||
{
|
||||
return [
|
||||
'paramCode' => [
|
||||
'title' => /*Reset Code Param*/'rainlab.user::lang.reset_password.code_param',
|
||||
'description' => /*The page URL parameter used for the reset code*/'rainlab.user::lang.reset_password.code_param_desc',
|
||||
'type' => 'string',
|
||||
'default' => 'code'
|
||||
],
|
||||
'resetPage' => [
|
||||
'title' => /* Reset Page */'rainlab.user::lang.account.reset_page',
|
||||
'description' => /* Select a page to use for resetting the account password */'rainlab.user::lang.account.reset_page_comment',
|
||||
'type' => 'dropdown',
|
||||
'default' => ''
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* getResetPageOptions
|
||||
*/
|
||||
public function getResetPageOptions()
|
||||
{
|
||||
return [
|
||||
'' => '- current page -',
|
||||
] + Page::sortBy('baseFileName')->lists('baseFileName', 'baseFileName');
|
||||
}
|
||||
|
||||
//
|
||||
// Properties
|
||||
//
|
||||
|
||||
/**
|
||||
* Returns the reset password code from the URL
|
||||
* @return string
|
||||
*/
|
||||
public function code()
|
||||
{
|
||||
$routeParameter = $this->property('paramCode');
|
||||
|
||||
if ($code = $this->param($routeParameter)) {
|
||||
return $code;
|
||||
}
|
||||
|
||||
return get('reset');
|
||||
}
|
||||
|
||||
//
|
||||
// AJAX
|
||||
//
|
||||
|
||||
/**
|
||||
* Trigger the password reset email
|
||||
*/
|
||||
public function onRestorePassword()
|
||||
{
|
||||
$rules = [
|
||||
'email' => 'required|email|between:6,255'
|
||||
];
|
||||
|
||||
$validation = Validator::make(post(), $rules);
|
||||
if ($validation->fails()) {
|
||||
throw new ValidationException($validation);
|
||||
}
|
||||
|
||||
$user = Auth::findUserByEmail(post('email'));
|
||||
if (!$user || $user->is_guest || $user->trashed()) {
|
||||
throw new ApplicationException(Lang::get(/*A user was not found with the given credentials.*/'rainlab.user::lang.account.invalid_user'));
|
||||
}
|
||||
|
||||
$code = implode('!', [$user->id, $user->getResetPasswordCode()]);
|
||||
|
||||
$link = $this->makeResetUrl($code);
|
||||
|
||||
$data = [
|
||||
'name' => $user->name,
|
||||
'username' => $user->username,
|
||||
'link' => $link,
|
||||
'code' => $code
|
||||
];
|
||||
|
||||
Mail::send('rainlab.user::mail.restore', $data, function($message) use ($user) {
|
||||
$message->to($user->email, $user->full_name);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform the password reset
|
||||
*/
|
||||
public function onResetPassword()
|
||||
{
|
||||
$rules = [
|
||||
'code' => 'required',
|
||||
'password' => 'required|between:' . UserModel::getMinPasswordLength() . ',255'
|
||||
];
|
||||
|
||||
$validation = Validator::make(post(), $rules);
|
||||
if ($validation->fails()) {
|
||||
throw new ValidationException($validation);
|
||||
}
|
||||
|
||||
$errorFields = ['code' => Lang::get(/*Invalid activation code supplied.*/'rainlab.user::lang.account.invalid_activation_code')];
|
||||
|
||||
// Break up the code parts
|
||||
$parts = explode('!', post('code'));
|
||||
if (count($parts) != 2) {
|
||||
throw new ValidationException($errorFields);
|
||||
}
|
||||
|
||||
list($userId, $code) = $parts;
|
||||
|
||||
if (!strlen(trim($userId)) || !strlen(trim($code)) || !$code) {
|
||||
throw new ValidationException($errorFields);
|
||||
}
|
||||
|
||||
if (!$user = Auth::findUserById($userId)) {
|
||||
throw new ValidationException($errorFields);
|
||||
}
|
||||
|
||||
if (!$user->attemptResetPassword($code, post('password'))) {
|
||||
throw new ValidationException($errorFields);
|
||||
}
|
||||
|
||||
// Check needed for compatibility with legacy systems
|
||||
if (method_exists(\RainLab\User\Classes\AuthManager::class, 'clearThrottleForUserId')) {
|
||||
Auth::clearThrottleForUserId($user->id);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Helpers
|
||||
//
|
||||
|
||||
/**
|
||||
* makeResetUrl returns a link used to reset the user account.
|
||||
* @return string
|
||||
*/
|
||||
protected function makeResetUrl($code)
|
||||
{
|
||||
$params = [
|
||||
$this->property('paramCode') => $code
|
||||
];
|
||||
|
||||
// Locate the current page
|
||||
$url = '';
|
||||
|
||||
if ($pageName = $this->property('resetPage')) {
|
||||
$url = $this->pageUrl($pageName, $params);
|
||||
}
|
||||
|
||||
if (!$url) {
|
||||
$url = $this->currentPageUrl($params);
|
||||
}
|
||||
|
||||
if (strpos($url, $code) === false) {
|
||||
$url .= '?reset=' . $code;
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,260 @@
|
|||
<?php namespace RainLab\User\Components;
|
||||
|
||||
use Lang;
|
||||
use Auth;
|
||||
use Event;
|
||||
use Flash;
|
||||
use Request;
|
||||
use Redirect;
|
||||
use Cms\Classes\Page;
|
||||
use Cms\Classes\ComponentBase;
|
||||
use RainLab\User\Models\UserGroup;
|
||||
use SystemException;
|
||||
|
||||
/**
|
||||
* Session component
|
||||
*
|
||||
* This will inject the user object to every page and provide the ability for
|
||||
* the user to sign out. This can also be used to restrict access to pages.
|
||||
*/
|
||||
class Session extends ComponentBase
|
||||
{
|
||||
const ALLOW_ALL = 'all';
|
||||
const ALLOW_GUEST = 'guest';
|
||||
const ALLOW_USER = 'user';
|
||||
|
||||
/**
|
||||
* componentDetails
|
||||
*/
|
||||
public function componentDetails()
|
||||
{
|
||||
return [
|
||||
'name' => 'rainlab.user::lang.session.session',
|
||||
'description' => 'rainlab.user::lang.session.session_desc'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* defineProperties
|
||||
*/
|
||||
public function defineProperties()
|
||||
{
|
||||
return [
|
||||
'security' => [
|
||||
'title' => 'rainlab.user::lang.session.security_title',
|
||||
'description' => 'rainlab.user::lang.session.security_desc',
|
||||
'type' => 'dropdown',
|
||||
'default' => 'all',
|
||||
'options' => [
|
||||
'all' => 'rainlab.user::lang.session.all',
|
||||
'user' => 'rainlab.user::lang.session.users',
|
||||
'guest' => 'rainlab.user::lang.session.guests'
|
||||
]
|
||||
],
|
||||
'allowedUserGroups' => [
|
||||
'title' => 'rainlab.user::lang.session.allowed_groups_title',
|
||||
'description' => 'rainlab.user::lang.session.allowed_groups_description',
|
||||
'placeholder' => '*',
|
||||
'type' => 'set',
|
||||
'default' => []
|
||||
],
|
||||
'redirect' => [
|
||||
'title' => 'rainlab.user::lang.session.redirect_title',
|
||||
'description' => 'rainlab.user::lang.session.redirect_desc',
|
||||
'type' => 'dropdown',
|
||||
'default' => ''
|
||||
],
|
||||
'checkToken' => [
|
||||
'title' => /*Use token authentication*/'rainlab.user::lang.session.check_token',
|
||||
'description' => /*Check authentication using a verified bearer token.*/'rainlab.user::lang.session.check_token_desc',
|
||||
'type' => 'checkbox',
|
||||
'default' => 0
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* getRedirectOptions
|
||||
*/
|
||||
public function getRedirectOptions()
|
||||
{
|
||||
return [''=>'- none -'] + Page::sortBy('baseFileName')->lists('baseFileName', 'baseFileName');
|
||||
}
|
||||
|
||||
/**
|
||||
* getAllowedUserGroupsOptions
|
||||
*/
|
||||
public function getAllowedUserGroupsOptions()
|
||||
{
|
||||
return UserGroup::lists('name','code');
|
||||
}
|
||||
|
||||
/**
|
||||
* init component
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
// Login with token
|
||||
if ($this->property('checkToken', false)) {
|
||||
$this->authenticateWithBearerToken();
|
||||
}
|
||||
|
||||
// Inject security logic pre-AJAX
|
||||
$this->controller->bindEvent('page.init', function() {
|
||||
if (Request::ajax() && ($redirect = $this->checkUserSecurityRedirect())) {
|
||||
return ['X_OCTOBER_REDIRECT' => $redirect->getTargetUrl()];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Executed when this component is bound to a page or layout.
|
||||
*/
|
||||
public function onRun()
|
||||
{
|
||||
if ($redirect = $this->checkUserSecurityRedirect()) {
|
||||
return $redirect;
|
||||
}
|
||||
|
||||
$this->page['user'] = $this->user();
|
||||
}
|
||||
|
||||
/**
|
||||
* user returns the logged in user, if available, and touches
|
||||
* the last seen timestamp.
|
||||
* @return RainLab\User\Models\User
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
if (!$user = Auth::getUser()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!Auth::isImpersonator()) {
|
||||
$user->touchLastSeen();
|
||||
}
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* token returns an authentication token
|
||||
*/
|
||||
public function token()
|
||||
{
|
||||
return Auth::getBearerToken();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the previously signed in user when impersonating.
|
||||
*/
|
||||
public function impersonator()
|
||||
{
|
||||
return Auth::getImpersonator();
|
||||
}
|
||||
|
||||
/**
|
||||
* onLogout logs out the user
|
||||
*
|
||||
* Usage:
|
||||
* <a data-request="onLogout">Sign out</a>
|
||||
*
|
||||
* With the optional redirect parameter:
|
||||
* <a data-request="onLogout" data-request-data="redirect: '/good-bye'">Sign out</a>
|
||||
*
|
||||
*/
|
||||
public function onLogout()
|
||||
{
|
||||
$user = Auth::getUser();
|
||||
|
||||
Auth::logout();
|
||||
|
||||
if ($user) {
|
||||
Event::fire('rainlab.user.logout', [$user]);
|
||||
}
|
||||
|
||||
$url = post('redirect', Request::fullUrl());
|
||||
|
||||
Flash::success(Lang::get('rainlab.user::lang.session.logout'));
|
||||
|
||||
return Redirect::to($url);
|
||||
}
|
||||
|
||||
/**
|
||||
* If impersonating, revert back to the previously signed in user.
|
||||
* @return Redirect
|
||||
*/
|
||||
public function onStopImpersonating()
|
||||
{
|
||||
if (!Auth::isImpersonator()) {
|
||||
return $this->onLogout();
|
||||
}
|
||||
|
||||
Auth::stopImpersonate();
|
||||
|
||||
$url = post('redirect', Request::fullUrl());
|
||||
|
||||
Flash::success(Lang::get('rainlab.user::lang.session.stop_impersonate_success'));
|
||||
|
||||
return Redirect::to($url);
|
||||
}
|
||||
|
||||
/**
|
||||
* checkUserSecurityRedirect will return a redirect if the user cannot access the page.
|
||||
*/
|
||||
protected function checkUserSecurityRedirect()
|
||||
{
|
||||
// No security layer enabled
|
||||
if ($this->checkUserSecurity()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$this->property('redirect')) {
|
||||
throw new SystemException('Redirect property is empty on Session component.');
|
||||
}
|
||||
|
||||
$redirectUrl = $this->controller->pageUrl($this->property('redirect'));
|
||||
|
||||
return Redirect::guest($redirectUrl);
|
||||
}
|
||||
|
||||
/**
|
||||
* checkUserSecurity checks if the user can access this page based on the security rules.
|
||||
*/
|
||||
protected function checkUserSecurity(): bool
|
||||
{
|
||||
$allowedGroup = $this->property('security', self::ALLOW_ALL);
|
||||
$allowedUserGroups = (array) $this->property('allowedUserGroups', []);
|
||||
$isAuthenticated = Auth::check();
|
||||
|
||||
if ($isAuthenticated) {
|
||||
if ($allowedGroup == self::ALLOW_GUEST) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!empty($allowedUserGroups)) {
|
||||
$userGroups = Auth::getUser()->groups->lists('code');
|
||||
if (!count(array_intersect($allowedUserGroups, $userGroups))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ($allowedGroup == self::ALLOW_USER) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* authenticateWithBearerToken
|
||||
*/
|
||||
protected function authenticateWithBearerToken()
|
||||
{
|
||||
if ($jwtToken = Request::bearerToken()) {
|
||||
Auth::checkBearerToken($jwtToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
{% if not user.is_activated %}
|
||||
|
||||
<h3>Your email address has not yet been verified.</h3>
|
||||
<p>
|
||||
You should verify your account otherwise it may be deleted. Please check your email to verify.
|
||||
<a href="javascript:;" data-request="onSendActivationEmail">Send the verification email again</a>.
|
||||
</p>
|
||||
|
||||
{% endif %}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<a
|
||||
href="javascript:;"
|
||||
onclick="$('#accountDeactivateForm').toggle()">
|
||||
Deactivate account
|
||||
</a>
|
||||
|
||||
<div id="accountDeactivateForm" style="display: none">
|
||||
{{ form_ajax('onDeactivate') }}
|
||||
<hr />
|
||||
<h3>Deactivate your account?</h3>
|
||||
<p>
|
||||
Your account will be disabled and your details removed from the site.
|
||||
You can reactivate your account any time by signing back in.
|
||||
</p>
|
||||
<div class="form-group">
|
||||
<label for="accountDeletePassword">To continue, please enter your password:</label>
|
||||
<input name="password" type="password" class="form-control" id="accountDeletePassword" />
|
||||
</div>
|
||||
<button type="submit" class="btn btn-danger">
|
||||
Confirm Deactivate Account
|
||||
</button>
|
||||
<a
|
||||
href="javascript:;"
|
||||
onclick="$('#accountDeactivateForm').toggle()">
|
||||
I changed my mind
|
||||
</a>
|
||||
{{ form_close() }}
|
||||
</div>
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
{% if not user %}
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6">
|
||||
<h3>Sign in</h3>
|
||||
{% partial __SELF__ ~ '::signin' %}
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
{% partial __SELF__ ~ '::register' %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{% else %}
|
||||
|
||||
{% partial __SELF__ ~ '::activation_check' %}
|
||||
|
||||
{% partial __SELF__ ~ '::update' %}
|
||||
|
||||
{% partial __SELF__ ~ '::deactivate_link' %}
|
||||
|
||||
{% endif %}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
{% if canRegister %}
|
||||
<h3>Register</h3>
|
||||
|
||||
{{ form_ajax('onRegister') }}
|
||||
|
||||
<div class="form-group">
|
||||
<label for="registerName">Full Name</label>
|
||||
<input
|
||||
name="name"
|
||||
type="text"
|
||||
class="form-control"
|
||||
id="registerName"
|
||||
placeholder="Enter your full name" />
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="registerEmail">Email</label>
|
||||
<input
|
||||
name="email"
|
||||
type="email"
|
||||
class="form-control"
|
||||
id="registerEmail"
|
||||
placeholder="Enter your email" />
|
||||
</div>
|
||||
|
||||
{% if loginAttribute == "username" %}
|
||||
<div class="form-group">
|
||||
<label for="registerUsername">Username</label>
|
||||
<input
|
||||
name="username"
|
||||
type="text"
|
||||
class="form-control"
|
||||
id="registerUsername"
|
||||
placeholder="Enter your username" />
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="form-group">
|
||||
<label for="registerPassword">Password</label>
|
||||
<input
|
||||
name="password"
|
||||
type="password"
|
||||
class="form-control"
|
||||
id="registerPassword"
|
||||
placeholder="Choose a password" />
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-default">Register</button>
|
||||
|
||||
{{ form_close() }}
|
||||
{% else %}
|
||||
<!-- Registration is disabled. -->
|
||||
{% endif %}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{{ form_ajax('onSignin') }}
|
||||
|
||||
<div class="form-group">
|
||||
<label for="userSigninLogin">{{ loginAttributeLabel }}</label>
|
||||
<input
|
||||
name="login"
|
||||
type="text"
|
||||
class="form-control"
|
||||
id="userSigninLogin"
|
||||
placeholder="Enter your {{ loginAttributeLabel|lower }}" />
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="userSigninPassword">Password</label>
|
||||
<input
|
||||
name="password"
|
||||
type="password"
|
||||
class="form-control"
|
||||
id="userSigninPassword"
|
||||
placeholder="Enter your password" />
|
||||
</div>
|
||||
|
||||
{% if rememberLoginMode == 'ask' %}
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<label><input name="remember" type="checkbox" value="1">Stay logged in</label>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<button type="submit" class="btn btn-default">Sign in</button>
|
||||
|
||||
{{ form_close() }}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
{{ form_ajax('onUpdate') }}
|
||||
|
||||
<div class="form-group">
|
||||
<label for="accountName">Full Name</label>
|
||||
<input name="name" type="text" class="form-control" id="accountName" value="{{ user.name }}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="accountEmail">Email</label>
|
||||
<input name="email" type="email" class="form-control" id="accountEmail" value="{{ user.email }}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="accountPassword">New Password</label>
|
||||
<input name="password" type="password" class="form-control" id="accountPassword">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="accountPasswordConfirm">Confirm New Password</label>
|
||||
<input name="password_confirmation" type="password" class="form-control" id="accountPasswordConfirm">
|
||||
</div>
|
||||
|
||||
{% if updateRequiresPassword %}
|
||||
<p>To change these details, please confirm your current password.</p>
|
||||
<div class="form-group">
|
||||
<label for="accountPasswordCurrent">Current Password <small class="text-danger">* required</small></label>
|
||||
<input name="password_current" type="password" class="form-control" id="accountPasswordCurrent">
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<button type="submit" class="btn btn-default">Save</button>
|
||||
|
||||
{{ form_close() }}
|
||||
|
|
@ -0,0 +1 @@
|
|||
<p>Password reset complete, you may now sign in.</p>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<div id="partialUserResetForm">
|
||||
{% if __SELF__.code == null %}
|
||||
{% partial __SELF__ ~ '::restore' %}
|
||||
{% else %}
|
||||
{% partial __SELF__ ~ '::reset' %}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<p class="lead">
|
||||
Please check your email for the activation code.
|
||||
</p>
|
||||
|
||||
<form
|
||||
data-request="{{ __SELF__ }}::onResetPassword"
|
||||
data-request-update="'{{ __SELF__ }}::complete': '#partialUserResetForm'">
|
||||
<div class="form-group">
|
||||
<label for="resetCode">Activation Code</label>
|
||||
<input name="code" type="text" class="form-control" id="resetCode" placeholder="Enter the activation code" value="{{ __SELF__.code }}">
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="resetPassword">New Password</label>
|
||||
<input name="password" type="password" class="form-control" id="resetPassword" placeholder="Enter a new password">
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-default">Reset password</button>
|
||||
</form>
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<p class="lead">
|
||||
<strong>Lost your password?</strong> No problem! Enter your email address to verify your account.
|
||||
</p>
|
||||
|
||||
<form
|
||||
data-request="{{ __SELF__ }}::onRestorePassword"
|
||||
data-request-update="'{{ __SELF__ }}::reset': '#partialUserResetForm'">
|
||||
<div class="form-group">
|
||||
<label for="userRestoreEmail">Email</label>
|
||||
<input name="email" type="email" class="form-control" id="userRestoreEmail" placeholder="Enter your email">
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-default">Restore password</button>
|
||||
</form>
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"name": "rainlab/user-plugin",
|
||||
"type": "october-plugin",
|
||||
"description": "User plugin for October CMS",
|
||||
"homepage": "https://octobercms.com/plugin/rainlab-user",
|
||||
"keywords": ["october", "octobercms", "user"],
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Alexey Bobkov",
|
||||
"email": "aleksey.bobkov@gmail.com",
|
||||
"role": "Co-founder"
|
||||
},
|
||||
{
|
||||
"name": "Samuel Georges",
|
||||
"email": "daftspunky@gmail.com",
|
||||
"role": "Co-founder"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": "^8.0.2",
|
||||
"october/rain": ">=3.0",
|
||||
"firebase/php-jwt": "^6.4",
|
||||
"composer/installers": "~1.0"
|
||||
},
|
||||
"minimum-stability": "dev"
|
||||
}
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
<?php
|
||||
|
||||
use RainLab\User\Models\Settings;
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Activation mode
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Select how a user account should be activated.
|
||||
|
|
||||
| ACTIVATE_ADMIN Administrators must activate users manually.
|
||||
| ACTIVATE_AUTO Users are activated automatically upon registration.
|
||||
| ACTIVATE_USER The user activates their own account using a link sent to them via email.
|
||||
|
|
||||
*/
|
||||
|
||||
'activateMode' => Settings::ACTIVATE_AUTO,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Allow user registration
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| If this is disabled users can only be created by administrators.
|
||||
|
|
||||
*/
|
||||
|
||||
'allowRegistration' => true,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Prevent concurrent sessions
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When enabled users cannot sign in to multiple devices at the same time.
|
||||
|
|
||||
*/
|
||||
|
||||
'blockPersistence' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Login attribute
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Select what primary user detail should be used for signing in.
|
||||
|
|
||||
| LOGIN_EMAIL Authenticate users by email.
|
||||
| LOGIN_USERNAME Authenticate users by username.
|
||||
|
|
||||
*/
|
||||
|
||||
'loginAttribute' => Settings::LOGIN_EMAIL,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Minimum Password Length
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The minimum length of characters required for user passwords.
|
||||
|
|
||||
*/
|
||||
|
||||
'minPasswordLength' => 8,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Remember login mode
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Select if the user session should be persistent.
|
||||
|
|
||||
| REMEMBER_ALWAYS Always persist user session.
|
||||
| REMEMBER_ASK Ask if session should be persistent.
|
||||
| REMEMBER_NEVER Never persist user session.
|
||||
|
|
||||
*/
|
||||
|
||||
'rememberLogin' => Settings::REMEMBER_ALWAYS,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Sign in requires activation
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Users must have an activated account to sign in.
|
||||
|
|
||||
*/
|
||||
|
||||
'requireActivation' => true,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Throttle registration
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Prevent multiple registrations from the same IP in short succession.
|
||||
|
|
||||
*/
|
||||
|
||||
'useRegisterThrottle' => true,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Throttle attempts
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Repeat failed sign in attempts will temporarily suspend the user.
|
||||
|
|
||||
*/
|
||||
|
||||
'useThrottle' => true,
|
||||
];
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
<?php namespace RainLab\User\Controllers;
|
||||
|
||||
use Flash;
|
||||
use BackendMenu;
|
||||
use Backend\Classes\Controller;
|
||||
use RainLab\User\Models\UserGroup;
|
||||
|
||||
/**
|
||||
* User Groups Back-end Controller
|
||||
*/
|
||||
class UserGroups extends Controller
|
||||
{
|
||||
/**
|
||||
* @var array Extensions implemented by this controller.
|
||||
*/
|
||||
public $implement = [
|
||||
\Backend\Behaviors\FormController::class,
|
||||
\Backend\Behaviors\ListController::class
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array `FormController` configuration.
|
||||
*/
|
||||
public $formConfig = 'config_form.yaml';
|
||||
|
||||
/**
|
||||
* @var array `ListController` configuration.
|
||||
*/
|
||||
public $listConfig = 'config_list.yaml';
|
||||
|
||||
/**
|
||||
* @var array `RelationController` configuration, by extension.
|
||||
*/
|
||||
public $relationConfig;
|
||||
|
||||
/**
|
||||
* @var array Permissions required to view this page.
|
||||
*/
|
||||
public $requiredPermissions = ['rainlab.users.access_groups'];
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
BackendMenu::setContext('RainLab.User', 'user', 'usergroups');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
<?php namespace RainLab\User\Controllers;
|
||||
|
||||
use Auth;
|
||||
use Lang;
|
||||
use Flash;
|
||||
use Response;
|
||||
use Redirect;
|
||||
use BackendMenu;
|
||||
use BackendAuth;
|
||||
use Backend\Classes\Controller;
|
||||
use System\Classes\SettingsManager;
|
||||
use RainLab\User\Models\User;
|
||||
use RainLab\User\Models\UserGroup;
|
||||
use RainLab\User\Models\MailBlocker;
|
||||
use RainLab\User\Models\Settings as UserSettings;
|
||||
|
||||
class Users extends Controller
|
||||
{
|
||||
/**
|
||||
* @var array Extensions implemented by this controller.
|
||||
*/
|
||||
public $implement = [
|
||||
\Backend\Behaviors\FormController::class,
|
||||
\Backend\Behaviors\ListController::class
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array `FormController` configuration.
|
||||
*/
|
||||
public $formConfig = 'config_form.yaml';
|
||||
|
||||
/**
|
||||
* @var array `ListController` configuration.
|
||||
*/
|
||||
public $listConfig = 'config_list.yaml';
|
||||
|
||||
/**
|
||||
* @var array `RelationController` configuration, by extension.
|
||||
*/
|
||||
public $relationConfig;
|
||||
|
||||
/**
|
||||
* @var array Permissions required to view this page.
|
||||
*/
|
||||
public $requiredPermissions = ['rainlab.users.access_users'];
|
||||
|
||||
/**
|
||||
* @var string HTML body tag class
|
||||
*/
|
||||
public $bodyClass = 'compact-container';
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
BackendMenu::setContext('RainLab.User', 'user', 'users');
|
||||
SettingsManager::setContext('RainLab.User', 'settings');
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$this->addJs('/plugins/rainlab/user/assets/js/bulk-actions.js');
|
||||
|
||||
$this->asExtension('ListController')->index();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function listInjectRowClass($record, $definition = null)
|
||||
{
|
||||
$classes = [];
|
||||
|
||||
if ($record->trashed()) {
|
||||
$classes[] = 'strike';
|
||||
}
|
||||
|
||||
if ($record->isBanned()) {
|
||||
$classes[] = 'negative';
|
||||
}
|
||||
|
||||
if (!$record->is_activated) {
|
||||
$classes[] = 'disabled';
|
||||
}
|
||||
|
||||
if (count($classes) > 0) {
|
||||
return join(' ', $classes);
|
||||
}
|
||||
}
|
||||
|
||||
public function listExtendQuery($query)
|
||||
{
|
||||
$query->withTrashed();
|
||||
}
|
||||
|
||||
public function formExtendQuery($query)
|
||||
{
|
||||
$query->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
* Display username field if settings permit
|
||||
*/
|
||||
public function formExtendFields($form)
|
||||
{
|
||||
/*
|
||||
* Show the username field if it is configured for use
|
||||
*/
|
||||
if (
|
||||
UserSettings::get('login_attribute') == UserSettings::LOGIN_USERNAME &&
|
||||
array_key_exists('username', $form->getFields())
|
||||
) {
|
||||
$form->getField('username')->hidden = false;
|
||||
}
|
||||
}
|
||||
|
||||
public function formAfterUpdate($model)
|
||||
{
|
||||
$blockMail = post('User[block_mail]', false);
|
||||
if ($blockMail !== false) {
|
||||
$blockMail ? MailBlocker::blockAll($model) : MailBlocker::unblockAll($model);
|
||||
}
|
||||
}
|
||||
|
||||
public function formExtendModel($model)
|
||||
{
|
||||
$model->block_mail = MailBlocker::isBlockAll($model);
|
||||
|
||||
$model->bindEvent('model.saveInternal', function() use ($model) {
|
||||
unset($model->attributes['block_mail']);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Manually activate a user
|
||||
*/
|
||||
public function preview_onActivate($recordId = null)
|
||||
{
|
||||
$model = $this->formFindModelObject($recordId);
|
||||
|
||||
$model->attemptActivation($model->activation_code);
|
||||
|
||||
Flash::success(Lang::get('rainlab.user::lang.users.activated_success'));
|
||||
|
||||
if ($redirect = $this->makeRedirect('update-close', $model)) {
|
||||
return $redirect;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Manually unban a user
|
||||
*/
|
||||
public function preview_onUnban($recordId = null)
|
||||
{
|
||||
$model = $this->formFindModelObject($recordId);
|
||||
|
||||
$model->unban();
|
||||
|
||||
Flash::success(Lang::get('rainlab.user::lang.users.unbanned_success'));
|
||||
|
||||
if ($redirect = $this->makeRedirect('update-close', $model)) {
|
||||
return $redirect;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the convert to registered user popup
|
||||
*/
|
||||
public function preview_onLoadConvertGuestForm($recordId)
|
||||
{
|
||||
$this->vars['groups'] = UserGroup::where('code', '!=', UserGroup::GROUP_GUEST)->get();
|
||||
|
||||
return $this->makePartial('convert_guest_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* Manually convert a guest user to a registered one
|
||||
*/
|
||||
public function preview_onConvertGuest($recordId)
|
||||
{
|
||||
$model = $this->formFindModelObject($recordId);
|
||||
|
||||
// Convert user and send notification
|
||||
$model->convertToRegistered(post('send_registration_notification', false));
|
||||
|
||||
// Remove user from guest group
|
||||
if ($group = UserGroup::getGuestGroup()) {
|
||||
$model->groups()->remove($group);
|
||||
}
|
||||
|
||||
// Add user to new group
|
||||
if (
|
||||
($groupId = post('new_group')) &&
|
||||
($group = UserGroup::find($groupId))
|
||||
) {
|
||||
$model->groups()->add($group);
|
||||
}
|
||||
|
||||
Flash::success(Lang::get('rainlab.user::lang.users.convert_guest_success'));
|
||||
|
||||
if ($redirect = $this->makeRedirect('update-close', $model)) {
|
||||
return $redirect;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Impersonate this user
|
||||
*/
|
||||
public function preview_onImpersonateUser($recordId)
|
||||
{
|
||||
if (!$this->user->hasAccess('rainlab.users.impersonate_user')) {
|
||||
return Response::make(Lang::get('backend::lang.page.access_denied.label'), 403);
|
||||
}
|
||||
|
||||
$model = $this->formFindModelObject($recordId);
|
||||
|
||||
Auth::impersonate($model);
|
||||
|
||||
Flash::success(Lang::get('rainlab.user::lang.users.impersonate_success'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Unsuspend this user
|
||||
*/
|
||||
public function preview_onUnsuspendUser($recordId)
|
||||
{
|
||||
$model = $this->formFindModelObject($recordId);
|
||||
|
||||
$model->unsuspend();
|
||||
|
||||
Flash::success(Lang::get('rainlab.user::lang.users.unsuspend_success'));
|
||||
|
||||
return Redirect::refresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* Force delete a user.
|
||||
*/
|
||||
public function update_onDelete($recordId = null)
|
||||
{
|
||||
$model = $this->formFindModelObject($recordId);
|
||||
|
||||
$model->forceDelete();
|
||||
|
||||
Flash::success(Lang::get('backend::lang.form.delete_success'));
|
||||
|
||||
if ($redirect = $this->makeRedirect('delete', $model)) {
|
||||
return $redirect;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform bulk action on selected users
|
||||
*/
|
||||
public function index_onBulkAction()
|
||||
{
|
||||
if (
|
||||
($bulkAction = post('action')) &&
|
||||
($checkedIds = post('checked')) &&
|
||||
is_array($checkedIds) &&
|
||||
count($checkedIds)
|
||||
) {
|
||||
|
||||
foreach ($checkedIds as $userId) {
|
||||
if (!$user = User::withTrashed()->find($userId)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
switch ($bulkAction) {
|
||||
case 'delete':
|
||||
$user->forceDelete();
|
||||
break;
|
||||
|
||||
case 'activate':
|
||||
$user->attemptActivation($user->activation_code);
|
||||
break;
|
||||
|
||||
case 'deactivate':
|
||||
$user->clearPersistCode();
|
||||
$user->delete();
|
||||
break;
|
||||
|
||||
case 'restore':
|
||||
$user->restore();
|
||||
break;
|
||||
|
||||
case 'ban':
|
||||
$user->ban();
|
||||
break;
|
||||
|
||||
case 'unban':
|
||||
$user->unban();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Flash::success(Lang::get('rainlab.user::lang.users.'.$bulkAction.'_selected_success'));
|
||||
}
|
||||
else {
|
||||
Flash::error(Lang::get('rainlab.user::lang.users.'.$bulkAction.'_selected_empty'));
|
||||
}
|
||||
|
||||
return $this->listRefresh();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<div data-control="toolbar">
|
||||
<a
|
||||
href="<?= Backend::url('rainlab/user/usergroups/create') ?>"
|
||||
class="btn btn-primary oc-icon-plus">
|
||||
<?= e(trans('rainlab.user::lang.groups.new_group')) ?>
|
||||
</a>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
# ===================================
|
||||
# Form Behavior Config
|
||||
# ===================================
|
||||
|
||||
# Record name
|
||||
name: rainlab.user::lang.group.label
|
||||
|
||||
# Model Form Field configuration
|
||||
form: $/rainlab/user/models/usergroup/fields.yaml
|
||||
|
||||
# Model Class name
|
||||
modelClass: RainLab\User\Models\UserGroup
|
||||
|
||||
# Default redirect location
|
||||
defaultRedirect: rainlab/user/usergroups
|
||||
|
||||
# Create page
|
||||
create:
|
||||
title: rainlab.user::lang.groups.create_title
|
||||
redirect: rainlab/user/usergroups/update/:id
|
||||
redirectClose: rainlab/user/usergroups
|
||||
|
||||
# Update page
|
||||
update:
|
||||
title: rainlab.user::lang.groups.update_title
|
||||
redirect: rainlab/user/usergroups
|
||||
redirectClose: rainlab/user/usergroups
|
||||
|
||||
# Preview page
|
||||
preview:
|
||||
title: rainlab.user::lang.groups.update_title
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# ===================================
|
||||
# List Behavior Config
|
||||
# ===================================
|
||||
|
||||
# Model List Column configuration
|
||||
list: $/rainlab/user/models/usergroup/columns.yaml
|
||||
|
||||
# Model Class name
|
||||
modelClass: RainLab\User\Models\UserGroup
|
||||
|
||||
# List Title
|
||||
title: rainlab.user::lang.groups.list_title
|
||||
|
||||
# Link URL for each record
|
||||
recordUrl: rainlab/user/usergroups/update/:id
|
||||
|
||||
# Message to display if the list is empty
|
||||
noRecordsMessage: backend::lang.list.no_records
|
||||
|
||||
# Records to display per page
|
||||
recordsPerPage: 20
|
||||
|
||||
# Displays the list column set up button
|
||||
showSetup: true
|
||||
|
||||
# Displays the sorting link on each column
|
||||
showSorting: true
|
||||
|
||||
# Default sorting column
|
||||
# defaultSort:
|
||||
# column: created_at
|
||||
# direction: desc
|
||||
|
||||
# Display checkboxes next to each record
|
||||
# showCheckboxes: true
|
||||
|
||||
# Toolbar widget configuration
|
||||
toolbar:
|
||||
# Partial for toolbar buttons
|
||||
buttons: list_toolbar
|
||||
|
||||
# Search widget configuration
|
||||
search:
|
||||
prompt: backend::lang.list.search_prompt
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<?php Block::put('breadcrumb') ?>
|
||||
<ul>
|
||||
<li><a href="<?= Backend::url('rainlab/user/usergroups') ?>"><?= e(trans('rainlab.user::lang.groups.all_groups')) ?></a></li>
|
||||
<li><?= e($this->pageTitle) ?></li>
|
||||
</ul>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
|
||||
<?= Form::open(['class' => 'layout']) ?>
|
||||
|
||||
<div class="layout-row">
|
||||
<?= $this->formRender() ?>
|
||||
</div>
|
||||
|
||||
<div class="form-buttons">
|
||||
<div class="loading-indicator-container">
|
||||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating_name', ['name'=>$formRecordName])) ?>"
|
||||
class="btn btn-primary">
|
||||
<?= e(trans('backend::lang.form.create')) ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating_name', ['name'=>$formRecordName])) ?>"
|
||||
class="btn btn-default">
|
||||
<?= e(trans('backend::lang.form.create_and_close')) ?>
|
||||
</button>
|
||||
<span class="btn-text">
|
||||
<?= e(trans('backend::lang.form.or')) ?> <a href="<?= Backend::url('rainlab/user/usergroups') ?>"><?= e(trans('backend::lang.form.cancel')) ?></a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?= Form::close() ?>
|
||||
|
||||
<?php else: ?>
|
||||
|
||||
<p class="flash-message static error"><?= e($this->fatalError) ?></p>
|
||||
<p><a href="<?= Backend::url('rainlab/user/usergroups') ?>" class="btn btn-default"><?= e(trans('rainlab.user::lang.groups.return_to_list')) ?></a></p>
|
||||
|
||||
<?php endif ?>
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
<?= $this->listRender() ?>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<?php Block::put('breadcrumb') ?>
|
||||
<ul>
|
||||
<li><a href="<?= Backend::url('rainlab/user/usergroups') ?>">User Groups</a></li>
|
||||
<li><?= e($this->pageTitle) ?></li>
|
||||
</ul>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
|
||||
<div class="form-preview">
|
||||
<?= $this->formRenderPreview() ?>
|
||||
</div>
|
||||
|
||||
<?php else: ?>
|
||||
|
||||
<p class="flash-message static error"><?= e($this->fatalError) ?></p>
|
||||
<p><a href="<?= Backend::url('rainlab/user/usergroups') ?>" class="btn btn-default">Return to user groups list</a></p>
|
||||
|
||||
<?php endif ?>
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
<?php Block::put('breadcrumb') ?>
|
||||
<ul>
|
||||
<li><a href="<?= Backend::url('rainlab/user/usergroups') ?>"><?= e(trans('rainlab.user::lang.groups.all_groups')) ?></a></li>
|
||||
<li><?= e($this->pageTitle) ?></li>
|
||||
</ul>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
|
||||
<?= Form::open(['class' => 'layout']) ?>
|
||||
|
||||
<div class="layout-row">
|
||||
<?= $this->formRender() ?>
|
||||
</div>
|
||||
|
||||
<div class="form-buttons">
|
||||
<div class="loading-indicator-container">
|
||||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving_name', ['name'=>$formRecordName])) ?>"
|
||||
class="btn btn-primary">
|
||||
<?= e(trans('backend::lang.form.save')) ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving_name', ['name'=>$formRecordName])) ?>"
|
||||
class="btn btn-default">
|
||||
<?= e(trans('backend::lang.form.save_and_close')) ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="oc-icon-trash-o btn-icon danger pull-right"
|
||||
data-request="onDelete"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.deleting_name', ['name'=>$formRecordName])) ?>"
|
||||
data-request-confirm="<?= e(trans('rainlab.user::lang.groups.delete_confirm')) ?>">
|
||||
</button>
|
||||
<span class="btn-text">
|
||||
<?= e(trans('backend::lang.form.or')) ?> <a href="<?= Backend::url('rainlab/user/usergroups') ?>"><?= e(trans('backend::lang.form.cancel')) ?></a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?= Form::close() ?>
|
||||
|
||||
<?php else: ?>
|
||||
|
||||
<p class="flash-message static error"><?= e($this->fatalError) ?></p>
|
||||
<p><a href="<?= Backend::url('rainlab/user/usergroups') ?>" class="btn btn-default"><?= e(trans('rainlab.user::lang.groups.return_to_list')) ?></a></p>
|
||||
|
||||
<?php endif ?>
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
<?= Form::open(['id' => 'convertGuestForm']) ?>
|
||||
<div class="modal-header flex-row-reverse">
|
||||
<button type="button" class="close" data-dismiss="popup">×</button>
|
||||
<h4 class="modal-title">Convert Guest User</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<?php if ($this->fatalError): ?>
|
||||
<p class="flash-message static error"><?= $fatalError ?></p>
|
||||
<?php endif ?>
|
||||
|
||||
<div class="form-group dropdown-field span-full">
|
||||
<label class="form-label">Select a new user group</label>
|
||||
<select class="form-control custom-select" name="new_group">
|
||||
<option selected="selected" value="">- No group -</option>
|
||||
<?php foreach ($groups as $group): ?>
|
||||
<option value="<?= $group->id ?>"><?= e($group->name) ?></option>
|
||||
<?php endforeach ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group checkbox-field span-full">
|
||||
<div class="checkbox custom-checkbox">
|
||||
<input type="hidden" class="checkbox" value="" name="send_registration_notification">
|
||||
<input name="send_registration_notification" value="1" type="checkbox" id="sendNotification" checked="checked" />
|
||||
<label class="storm-icon-pseudo" for="sendNotification">Send registration notification</label>
|
||||
</div>
|
||||
<p class="help-block form-text">Use this checkbox to generate new random password for the user and send a registration notification email.</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
type="submit"
|
||||
class="btn btn-primary"
|
||||
data-popup-load-indicator
|
||||
data-request="onConvertGuest">
|
||||
Convert to Registered
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default"
|
||||
data-dismiss="popup">
|
||||
<?= e(trans('backend::lang.form.cancel')) ?>
|
||||
</button>
|
||||
</div>
|
||||
<?= Form::close() ?>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<div class="layout-row min-size">
|
||||
<div class="callout callout-warning">
|
||||
<div class="header">
|
||||
<i class="icon-warning"></i>
|
||||
<h3><?= e(trans('rainlab.user::lang.users.activate_warning_title')) ?></h3>
|
||||
<p>
|
||||
<?= e(trans('rainlab.user::lang.users.activate_warning_desc')) ?>
|
||||
<a href="javascript:;"
|
||||
data-request="onActivate"
|
||||
data-request-confirm="<?= e(trans('rainlab.user::lang.users.activate_confirm')) ?>"
|
||||
data-stripe-load-indicator
|
||||
><?= e(trans('rainlab.user::lang.users.activate_manually')) ?></a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<div class="layout-row min-size">
|
||||
<div class="callout callout-danger">
|
||||
<div class="header">
|
||||
<i class="icon-ban"></i>
|
||||
<h3><?= e(trans('rainlab.user::lang.users.banned_hint_title')) ?></h3>
|
||||
<p>
|
||||
<?= e(trans('rainlab.user::lang.users.banned_hint_desc')) ?>
|
||||
<a href="javascript:;"
|
||||
data-request="onUnban"
|
||||
data-request-confirm="<?= e(trans('rainlab.user::lang.users.unban_confirm')) ?>"
|
||||
data-stripe-load-indicator
|
||||
><?= e(trans('rainlab.user::lang.users.unban_user')) ?></a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<div class="layout-row min-size">
|
||||
<div class="callout callout-info">
|
||||
<div class="header">
|
||||
<i class="icon-info"></i>
|
||||
<h3><?= e(trans('rainlab.user::lang.users.guest_hint_title')) ?></h3>
|
||||
<p>
|
||||
<?= e(trans('rainlab.user::lang.users.guest_hint_desc')) ?>
|
||||
<a href="javascript:;"
|
||||
data-control="popup"
|
||||
data-handler="onLoadConvertGuestForm"
|
||||
><?= e(trans('rainlab.user::lang.users.convert_guest_manually')) ?></a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<div class="layout-row min-size">
|
||||
<div class="callout callout-danger">
|
||||
<div class="header">
|
||||
<i class="icon-minus-circle"></i>
|
||||
<h3><?= e(trans('rainlab.user::lang.users.trashed_hint_title')) ?></h3>
|
||||
<p><?= e(trans('rainlab.user::lang.users.trashed_hint_desc')) ?></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
<div data-control="toolbar">
|
||||
<a
|
||||
href="<?= Backend::url('rainlab/user/users/create') ?>"
|
||||
class="btn btn-primary oc-icon-plus">
|
||||
<?= e(trans('rainlab.user::lang.users.new_user')) ?>
|
||||
</a>
|
||||
|
||||
<div class="btn-group dropdown dropdown-fixed" data-control="bulk-actions">
|
||||
<button
|
||||
data-primary-button
|
||||
type="button"
|
||||
class="btn btn-default"
|
||||
data-request="onBulkAction"
|
||||
data-trigger-action="enable"
|
||||
data-trigger=".control-list input[type=checkbox]"
|
||||
data-trigger-condition="checked"
|
||||
data-request-success="$(this).prop('disabled', true).next().prop('disabled', true)"
|
||||
data-stripe-load-indicator>
|
||||
<?= e(trans('rainlab.user::lang.users.bulk_actions')) ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default dropdown-toggle dropdown-toggle-split"
|
||||
data-trigger-action="enable"
|
||||
data-trigger=".control-list input[type=checkbox]"
|
||||
data-trigger-condition="checked"
|
||||
data-toggle="dropdown">
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" data-dropdown-title="<?= e(trans('rainlab.user::lang.users.bulk_actions')) ?>">
|
||||
<li>
|
||||
<a href="javascript:;" class="oc-icon-trash-o" data-action="delete" data-confirm="<?= e(trans('rainlab.user::lang.users.delete_selected_confirm')) ?>">
|
||||
<?= e(trans('rainlab.user::lang.users.delete_selected')) ?>
|
||||
</a>
|
||||
</li>
|
||||
<li role="separator" class="divider"></li>
|
||||
<li>
|
||||
<a href="javascript:;" class="oc-icon-user-plus" data-action="activate" data-confirm="<?= e(trans('rainlab.user::lang.users.activate_selected_confirm')) ?>">
|
||||
<?= e(trans('rainlab.user::lang.users.activate_selected')) ?>
|
||||
</a>
|
||||
</li>
|
||||
<li role="separator" class="divider"></li>
|
||||
<li>
|
||||
<a href="javascript:;" class="oc-icon-user-times" data-action="deactivate" data-confirm="<?= e(trans('rainlab.user::lang.users.deactivate_selected_confirm')) ?>">
|
||||
<?= e(trans('rainlab.user::lang.users.deactivate_selected')) ?>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="javascript:;" class="oc-icon-user-plus" data-action="restore" data-confirm="<?= e(trans('rainlab.user::lang.users.restore_selected_confirm')) ?>">
|
||||
<?= e(trans('rainlab.user::lang.users.restore_selected')) ?>
|
||||
</a>
|
||||
</li>
|
||||
<li role="separator" class="divider"></li>
|
||||
<li>
|
||||
<a href="javascript:;" class="oc-icon-ban" data-action="ban" data-confirm="<?= e(trans('rainlab.user::lang.users.ban_selected_confirm')) ?>">
|
||||
<?= e(trans('rainlab.user::lang.users.ban_selected')) ?>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="javascript:;" class="oc-icon-circle-o-notch" data-action="unban" data-confirm="<?= e(trans('rainlab.user::lang.users.unban_selected_confirm')) ?>">
|
||||
<?= e(trans('rainlab.user::lang.users.unban_selected')) ?>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<?=
|
||||
/**
|
||||
* @event rainlab.user.view.extendListToolbar
|
||||
* Fires when user list toolbar is rendered.
|
||||
*
|
||||
* Example usage:
|
||||
*
|
||||
* Event::listen('rainlab.user.view.extendListToolbar', function (
|
||||
* (RainLab\User\Controllers\Users) $controller
|
||||
* ) {
|
||||
* return $controller->makePartial('~/path/to/partial');
|
||||
* });
|
||||
*
|
||||
*/
|
||||
$this->fireViewEvent('rainlab.user.view.extendListToolbar');
|
||||
?>
|
||||
|
||||
</div>
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
<div class="scoreboard-item title-value">
|
||||
<h4><?= e(trans('rainlab.user::lang.user.label')) ?></h4>
|
||||
<?php if ($formModel->name): ?>
|
||||
<p><?= e($formModel->name) ?></p>
|
||||
<?php else: ?>
|
||||
<p><em><?= e(trans('rainlab.user::lang.user.name_empty')) ?></em></p>
|
||||
<?php endif ?>
|
||||
<p class="description">
|
||||
<a href="mailto:<?= e($formModel->email) ?>">
|
||||
<?= e($formModel->email) ?>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<?php if ($formModel->created_at): ?>
|
||||
<div class="scoreboard-item title-value">
|
||||
<h4><?= e(trans('rainlab.user::lang.user.joined')) ?></h4>
|
||||
<p title="<?= $formModel->created_at->diffForHumans() ?>">
|
||||
<?= $formModel->created_at->toFormattedDateString() ?>
|
||||
</p>
|
||||
<p class="description">
|
||||
<?= e(trans('rainlab.user::lang.user.status_label')) ?>:
|
||||
<?php if ($formModel->is_guest): ?>
|
||||
<?= e(trans('rainlab.user::lang.user.status_guest')) ?>
|
||||
<?php elseif ($formModel->is_activated): ?>
|
||||
<?= e(trans('rainlab.user::lang.user.status_activated')) ?>
|
||||
<?php else: ?>
|
||||
<?= e(trans('rainlab.user::lang.user.status_registered')) ?>
|
||||
<?php endif ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
<?php if ($formModel->last_seen): ?>
|
||||
<div class="scoreboard-item title-value">
|
||||
<h4><?= e(trans('rainlab.user::lang.user.last_seen')) ?></h4>
|
||||
<p><?= $formModel->last_seen->diffForHumans() ?></p>
|
||||
<p class="description">
|
||||
<?= $formModel->isOnline() ? e(trans('rainlab.user::lang.user.is_online')) : e(trans('rainlab.user::lang.user.is_offline')) ?>
|
||||
</p>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
<a
|
||||
href="<?= Backend::url('rainlab/user/users') ?>"
|
||||
class="btn btn-default oc-icon-chevron-left">
|
||||
<?= e(trans('rainlab.user::lang.groups.return_to_users')) ?>
|
||||
</a>
|
||||
<a
|
||||
href="<?= Backend::url('rainlab/user/users/update/'.$formModel->id) ?>"
|
||||
class="btn btn-primary oc-icon-pencil">
|
||||
<?= e(trans('rainlab.user::lang.users.update_details')) ?>
|
||||
</a>
|
||||
<?php if ($this->user->hasAccess('rainlab.users.impersonate_user')): ?>
|
||||
<a
|
||||
href="javascript:;"
|
||||
data-request="onImpersonateUser"
|
||||
data-request-confirm="<?= e(trans('rainlab.user::lang.users.impersonate_confirm')) ?>"
|
||||
class="btn btn-default oc-icon-user-secret">
|
||||
<?= e(trans('rainlab.user::lang.users.impersonate_user')) ?>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if ($formModel->isSuspended()): ?>
|
||||
<a
|
||||
href="javascript:;"
|
||||
data-request="onUnsuspendUser"
|
||||
data-request-confirm="<?= e(trans('rainlab.user::lang.users.unsuspend_confirm')) ?>"
|
||||
class="btn btn-default oc-icon-unlock-alt">
|
||||
<?= e(trans('rainlab.user::lang.users.unsuspend')) ?>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
<?php
|
||||
/* @todo
|
||||
<div class="btn-group">
|
||||
<a
|
||||
href="<?= Backend::url('rainlab/user/users/update/'.$formModel->id) ?>"
|
||||
class="btn btn-default oc-icon-pencil">
|
||||
Deactivate
|
||||
</a>
|
||||
<a
|
||||
href="<?= Backend::url('rainlab/user/users/update/'.$formModel->id) ?>"
|
||||
class="btn btn-default oc-icon-pencil">
|
||||
Ban user
|
||||
</a>
|
||||
<a
|
||||
href="<?= Backend::url('rainlab/user/users/update/'.$formModel->id) ?>"
|
||||
class="btn btn-default oc-icon-pencil">
|
||||
Delete
|
||||
</a>
|
||||
</div>
|
||||
*/
|
||||
?>
|
||||
|
||||
<?=
|
||||
/**
|
||||
* @event rainlab.user.view.extendPreviewToolbar
|
||||
* Fires when preview user toolbar is rendered.
|
||||
*
|
||||
* Example usage:
|
||||
*
|
||||
* Event::listen('rainlab.user.view.extendPreviewToolbar', function (
|
||||
* (RainLab\User\Controllers\Users) $controller,
|
||||
* (RainLab\User\Models\User) $record
|
||||
* ) {
|
||||
* return $controller->makePartial('~/path/to/partial');
|
||||
* });
|
||||
*
|
||||
*/
|
||||
$this->fireViewEvent('rainlab.user.view.extendPreviewToolbar', [
|
||||
'record' => $formModel
|
||||
]);
|
||||
?>
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# ===================================
|
||||
# Form Behavior Config
|
||||
# ===================================
|
||||
|
||||
# Record name
|
||||
name: rainlab.user::lang.user.label
|
||||
|
||||
# Model Form Field configuration
|
||||
form: $/rainlab/user/models/user/fields.yaml
|
||||
|
||||
# Model Class name
|
||||
modelClass: RainLab\User\Models\User
|
||||
|
||||
# Default redirect location
|
||||
defaultRedirect: rainlab/user/users
|
||||
|
||||
# Create page
|
||||
create:
|
||||
redirect: rainlab/user/users/preview/:id
|
||||
redirectClose: rainlab/user/users
|
||||
|
||||
# Update page
|
||||
update:
|
||||
redirect: rainlab/user/users/update/:id
|
||||
redirectClose: rainlab/user/users/preview/:id
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
# ===================================
|
||||
# List Behavior Config
|
||||
# ===================================
|
||||
|
||||
# List Title
|
||||
title: rainlab.user::lang.users.list_title
|
||||
|
||||
# Model List Column configuration
|
||||
list: $/rainlab/user/models/user/columns.yaml
|
||||
|
||||
# Filter widget configuration
|
||||
filter: $/rainlab/user/models/user/scopes.yaml
|
||||
|
||||
# Model Class name
|
||||
modelClass: RainLab\User\Models\User
|
||||
|
||||
# Link URL for each record
|
||||
recordUrl: rainlab/user/users/preview/:id
|
||||
|
||||
# Message to display if the list is empty
|
||||
noRecordsMessage: backend::lang.list.no_records
|
||||
|
||||
# Records to display per page
|
||||
recordsPerPage: 20
|
||||
|
||||
# Display checkboxes next to each record
|
||||
showCheckboxes: true
|
||||
|
||||
# Displays the list column set up button
|
||||
showSetup: true
|
||||
|
||||
# Toolbar widget configuration
|
||||
toolbar:
|
||||
|
||||
# Partial for toolbar buttons
|
||||
buttons: list_toolbar
|
||||
|
||||
# Search widget configuration
|
||||
search:
|
||||
prompt: backend::lang.list.search_prompt
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
<?php Block::put('breadcrumb') ?>
|
||||
<ul>
|
||||
<li><a href="<?= Backend::url('rainlab/user/users') ?>"><?= e(trans('rainlab.user::lang.users.menu_label')) ?></a></li>
|
||||
<li><?= e(trans($this->pageTitle)) ?></li>
|
||||
</ul>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
|
||||
<?php Block::put('form-contents') ?>
|
||||
|
||||
<div class="layout-row min-size">
|
||||
<?= $this->formRenderOutsideFields() ?>
|
||||
</div>
|
||||
<div class="layout-row">
|
||||
<?= $this->formRenderPrimaryTabs() ?>
|
||||
</div>
|
||||
|
||||
<div class="form-buttons">
|
||||
<div class="loading-indicator-container">
|
||||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating_name', ['name'=>$formRecordName])) ?>"
|
||||
class="btn btn-primary">
|
||||
<?= e(trans('backend::lang.form.create')) ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating_name', ['name'=>$formRecordName])) ?>"
|
||||
class="btn btn-default">
|
||||
<?= e(trans('backend::lang.form.create_and_close')) ?>
|
||||
</button>
|
||||
<span class="btn-text">
|
||||
<?= e(trans('backend::lang.form.or')) ?> <a href="<?= Backend::url('rainlab/user/users') ?>"><?= e(trans('backend::lang.form.cancel')) ?></a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php Block::put('form-sidebar') ?>
|
||||
<div class="hide-tabs"><?= $this->formRenderSecondaryTabs() ?></div>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php Block::put('body') ?>
|
||||
<?= Form::open(['class'=>'layout stretch']) ?>
|
||||
<?= $this->makeLayout('form-with-sidebar') ?>
|
||||
<?= Form::close() ?>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php else: ?>
|
||||
<div class="control-breadcrumb">
|
||||
<?= Block::placeholder('breadcrumb') ?>
|
||||
</div>
|
||||
<div class="padded-container">
|
||||
<p class="flash-message static error"><?= e(trans($this->fatalError)) ?></p>
|
||||
<p><a href="<?= Backend::url('rainlab/user/users') ?>" class="btn btn-default"><?= e(trans('rainlab.user::lang.users.return_to_list')) ?></a></p>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
<?= $this->listRender() ?>
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
<?php Block::put('breadcrumb') ?>
|
||||
<ul>
|
||||
<li><a href="<?= Backend::url('rainlab/user/users') ?>"><?= e(trans('rainlab.user::lang.users.menu_label')) ?></a></li>
|
||||
<li><?= e(trans($this->pageTitle)) ?></li>
|
||||
</ul>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
|
||||
<?php Block::put('form-contents') ?>
|
||||
|
||||
<?php if ($formModel->is_guest): ?>
|
||||
<?= $this->makePartial('hint_guest') ?>
|
||||
<?php elseif ($formModel->isBanned()): ?>
|
||||
<?= $this->makePartial('hint_banned') ?>
|
||||
<?php elseif ($formModel->trashed()): ?>
|
||||
<?= $this->makePartial('hint_trashed') ?>
|
||||
<?php elseif (!$formModel->is_activated): ?>
|
||||
<?= $this->makePartial('hint_activate') ?>
|
||||
<?php endif ?>
|
||||
|
||||
<div class="scoreboard">
|
||||
<div data-control="toolbar">
|
||||
<?= $this->makePartial('preview_scoreboard') ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-buttons">
|
||||
<div class="loading-indicator-container">
|
||||
<?= $this->makePartial('preview_toolbar') ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layout-row min-size">
|
||||
<?= $this->formRender(['preview' => true, 'section' => 'outside']) ?>
|
||||
</div>
|
||||
|
||||
<div class="layout-row">
|
||||
<?= $this->formRender(['preview' => true, 'section' => 'primary']) ?>
|
||||
</div>
|
||||
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php Block::put('form-sidebar') ?>
|
||||
<div class="hide-tabs"><?= $this->formRender(['preview' => true, 'section' => 'secondary']) ?></div>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php Block::put('body') ?>
|
||||
<?= Form::open(['class'=>'layout stretch']) ?>
|
||||
<?= $this->makeLayout('form-with-sidebar') ?>
|
||||
<?= Form::close() ?>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php else: ?>
|
||||
|
||||
<div class="padded-container container-flush">
|
||||
<p class="flash-message static error"><?= e($this->fatalError) ?></p>
|
||||
<p><a href="<?= Backend::url('rainlab/user/users') ?>" class="btn btn-default"><?= e(trans('rainlab.user::lang.users.return_to_list')) ?></a></p>
|
||||
</div>
|
||||
|
||||
<?php endif ?>
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
<?php Block::put('breadcrumb') ?>
|
||||
<ul>
|
||||
<li><a href="<?= Backend::url('rainlab/user/users') ?>"><?= e(trans('rainlab.user::lang.users.menu_label')) ?></a></li>
|
||||
<li><?= e(trans($this->pageTitle)) ?></li>
|
||||
</ul>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
|
||||
<?php Block::put('form-contents') ?>
|
||||
|
||||
<div class="layout-row min-size">
|
||||
<?= $this->formRenderOutsideFields() ?>
|
||||
</div>
|
||||
|
||||
<div class="layout-row">
|
||||
<?= $this->formRenderPrimaryTabs() ?>
|
||||
</div>
|
||||
|
||||
<div class="form-buttons">
|
||||
<div class="loading-indicator-container">
|
||||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving_name', ['name'=>$formRecordName])) ?>"
|
||||
class="btn btn-primary">
|
||||
<?= e(trans('backend::lang.form.save')) ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving_name', ['name'=>$formRecordName])) ?>"
|
||||
class="btn btn-default">
|
||||
<?= e(trans('backend::lang.form.save_and_close')) ?>
|
||||
</button>
|
||||
<span class="btn-text">
|
||||
<?= e(trans('backend::lang.form.or')) ?> <a href="<?= Backend::url('rainlab/user/users/preview/'.$formModel->id) ?>"><?= e(trans('backend::lang.form.cancel')) ?></a>
|
||||
</span>
|
||||
<button
|
||||
class="oc-icon-trash-o btn-icon danger pull-right"
|
||||
data-request="onDelete"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.deleting_name', ['name'=>$formRecordName])) ?>"
|
||||
data-request-confirm="<?= e(trans('rainlab.user::lang.users.delete_confirm')) ?>">
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php Block::put('form-sidebar') ?>
|
||||
<div class="hide-tabs"><?= $this->formRenderSecondaryTabs() ?></div>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php Block::put('body') ?>
|
||||
<?= Form::open(['class'=>'layout stretch']) ?>
|
||||
<?= $this->makeLayout('form-with-sidebar') ?>
|
||||
<?= Form::close() ?>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php else: ?>
|
||||
<div class="control-breadcrumb">
|
||||
<?= Block::placeholder('breadcrumb') ?>
|
||||
</div>
|
||||
<div class="padded-container">
|
||||
<p class="flash-message static error"><?= e(trans($this->fatalError)) ?></p>
|
||||
<p><a href="<?= Backend::url('rainlab/user/users') ?>" class="btn btn-default"><?= e(trans('rainlab.user::lang.users.return_to_list')) ?></a></p>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?php namespace RainLab\User\Facades;
|
||||
|
||||
use October\Rain\Support\Facade;
|
||||
|
||||
/**
|
||||
* @see \RainLab\User\Classes\AuthManager
|
||||
*/
|
||||
class Auth extends Facade
|
||||
{
|
||||
/**
|
||||
* Get the registered name of the component.
|
||||
* @return string
|
||||
*/
|
||||
protected static function getFacadeAccessor() { return 'user.auth'; }
|
||||
}
|
||||
|
|
@ -0,0 +1,228 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'المستخدم',
|
||||
'description' => 'إدارة المستخدم الأمامية.',
|
||||
'tab' => 'المستخدمون',
|
||||
'access_users' => 'ادارة المستخدمين',
|
||||
'access_groups' => 'إدارة مجموعات المستخدمين',
|
||||
'access_settings' => 'إدارة إعدادات المستخدم',
|
||||
'impersonate_user' => 'انتحال شخصية المستخدمين'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'المستخدمون',
|
||||
'all_users' => 'جميع المستخدمين',
|
||||
'new_user' => 'مستخدم جديد',
|
||||
'list_title' => 'ادارة المستخدمين',
|
||||
'trashed_hint_title' => 'قام المستخدم بإلغاء تنشيط حسابه',
|
||||
'trashed_hint_desc' => 'قام هذا المستخدم بإلغاء تنشيط حسابه ولم يعد يريد الظهور على الموقع. يمكنهم استعادة حسابهم في أي وقت عن طريق تسجيل الدخول مرة أخرى.',
|
||||
'banned_hint_title' => 'تم حظر المستخدم',
|
||||
'banned_hint_desc' => 'تم حظر هذا المستخدم من قبل المسؤول ولن يتمكن من تسجيل الدخول.',
|
||||
'guest_hint_title' => 'هذا مستخدم ضيف',
|
||||
'guest_hint_desc' => 'يتم تخزين هذا المستخدم لأغراض مرجعية فقط ويحتاج إلى التسجيل قبل تسجيل الدخول.',
|
||||
'activate_warning_title' => 'المستخدم غير مفعل!',
|
||||
'activate_warning_desc' => 'لم يتم تنشيط هذا المستخدم وقد يتعذر عليه تسجيل الدخول.',
|
||||
'activate_confirm' => 'هل تريد فعلاً تفعيل هذا المستخدم؟',
|
||||
'activated_success' => 'تم تنشيط المستخدم',
|
||||
'activate_manually' => 'قم بتنشيط هذا المستخدم يدويًا',
|
||||
'convert_guest_confirm' => 'تحويل هذا الضيف إلى مستخدم؟',
|
||||
'convert_guest_manually' => 'التحويل إلى مستخدم مسجل',
|
||||
'convert_guest_success' => 'تم تحويل المستخدم إلى حساب مسجل',
|
||||
'impersonate_user' => 'انتحال شخصية المستخدم',
|
||||
'impersonate_confirm' => 'انتحال شخصية هذا المستخدم؟ يمكنك العودة إلى حالتك الأصلية بتسجيل الخروج.',
|
||||
'impersonate_success' => 'أنت الآن تنتحل شخصية هذا المستخدم',
|
||||
'delete_confirm' => 'هل تريد حقًا حذف هذا المستخدم؟',
|
||||
'unban_user' => 'إلغاء حظر هذا المستخدم',
|
||||
'unban_confirm' => 'هل تريد حقًا إلغاء حظر هذا المستخدم؟',
|
||||
'unbanned_success' => 'تم إلغاء حظر المستخدم',
|
||||
'return_to_list' => 'العودة إلى قائمة المستخدمين',
|
||||
'update_details' => 'تحديث التفاصيل',
|
||||
'bulk_actions' => 'إجراءات ',
|
||||
'delete_selected' => 'احذف المختار',
|
||||
'delete_selected_confirm' => 'حذف المستخدمين المختارين؟',
|
||||
'delete_selected_empty' => 'لا يوجد مستخدمون محددون لحذفهم.',
|
||||
'delete_selected_success' => 'تم حذف المستخدمين المحددين بنجاح.',
|
||||
'activate_selected' => 'تفعيل المحدد',
|
||||
'activate_selected_confirm' => 'تفعيل المستخدمين المختارين؟',
|
||||
'activate_selected_empty' => 'لا يوجد مستخدمون محددون لتنشيطهم.',
|
||||
'activate_selected_success' => 'تم تفعيل المستخدمين المختارين بنجاح.',
|
||||
'deactivate_selected' => 'تم تحديد إلغاء التنشيط',
|
||||
'deactivate_selected_confirm' => 'تعطيل المستخدمين المختارين؟',
|
||||
'deactivate_selected_empty' => 'لا يوجد مستخدمون محددون لإلغاء تنشيطهم.',
|
||||
'deactivate_selected_success' => 'تم إلغاء تنشيط المستخدمين المحددين بنجاح.',
|
||||
'restore_selected' => 'استعادة المختارة',
|
||||
'restore_selected_confirm' => 'استعادة المستخدمين المختارين؟',
|
||||
'restore_selected_empty' => 'لا يوجد مستخدمون محددون لاستعادتهم.',
|
||||
'restore_selected_success' => 'تمت استعادة المستخدمين المحددين بنجاح.',
|
||||
'ban_selected' => 'تم تحديد الحظر',
|
||||
'ban_selected_confirm' => 'حظر المستخدمين المختارين؟',
|
||||
'ban_selected_empty' => 'لا يوجد مستخدمون محددون لحظرهم.',
|
||||
'ban_selected_success' => 'تم بنجاح حظر المستخدمين المحددين.',
|
||||
'unban_selected' => 'تم تحديد إلغاء الحظر',
|
||||
'unban_selected_confirm' => 'إلغاء حظر المستخدمين المحددين؟',
|
||||
'unban_selected_empty' => 'لا يوجد مستخدمون محددون لإلغاء الحظر.',
|
||||
'unban_selected_success' => 'تم بنجاح فك الحظر عن المستخدمين المحددين.',
|
||||
'unsuspend' => 'غير معلق',
|
||||
'unsuspend_success' => 'تم إلغاء تعليق المستخدم.',
|
||||
'unsuspend_confirm' => 'إلغاء تعليق هذا المستخدم؟'
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'المستخدمون',
|
||||
'menu_label' => 'إعدادات المستخدم',
|
||||
'menu_description' => 'إدارة مصادقة المستخدم والتسجيل وإعدادات التنشيط.',
|
||||
'activation_tab' => 'التنشيط',
|
||||
'signin_tab' => 'تسجيل الدخول',
|
||||
'registration_tab' => 'تسجيل',
|
||||
'profile_tab' => 'الملف الشخصي',
|
||||
'notifications_tab' => 'إشعارات',
|
||||
'allow_registration' => 'السماح بتسجيل المستخدم',
|
||||
'allow_registration_comment' => 'إذا تم تعطيل هذا ، فلا يمكن إنشاء المستخدمين إلا بواسطة المسؤولين.',
|
||||
'activate_mode' => 'وضع التنشيط',
|
||||
'activate_mode_comment' => 'حدد كيفية تنشيط حساب المستخدم.',
|
||||
'activate_mode_auto' => 'تلقائي',
|
||||
'activate_mode_auto_comment' => 'يتم تفعيله تلقائيًا عند التسجيل.',
|
||||
'activate_mode_user' => 'اسم االمستخدم',
|
||||
'activate_mode_user_comment' => 'يقوم المستخدم بتنشيط حسابه الخاص باستخدام البريد.',
|
||||
'activate_mode_admin' => 'مدير',
|
||||
'activate_mode_admin_comment' => 'يمكن للمسؤول فقط تنشيط المستخدم.',
|
||||
'require_activation' => 'يتطلب تسجيل الدخول التنشيط',
|
||||
'require_activation_comment' => 'يجب أن يكون لدى المستخدمين حساب نشط لتسجيل الدخول.',
|
||||
'use_throttle' => 'محاولات خنق',
|
||||
'use_throttle_comment' => 'ستؤدي محاولات تسجيل الدخول الفاشلة المتكررة إلى تعليق المستخدم مؤقتًا.',
|
||||
'use_register_throttle' => 'تسجيل الخانق',
|
||||
'use_register_throttle_comment' => 'منع التسجيلات المتعددة من نفس عنوان IP في تتابع قصير.',
|
||||
'block_persistence' => 'منع الجلسات المتزامنة',
|
||||
'block_persistence_comment' => 'عند التمكين ، لا يمكن للمستخدمين تسجيل الدخول إلى أجهزة متعددة في نفس الوقت.',
|
||||
'login_attribute' => 'سمة تسجيل الدخول',
|
||||
'login_attribute_comment' => 'حدد تفاصيل المستخدم الأساسية التي يجب استخدامها لتسجيل الدخول.',
|
||||
'remember_login' => 'تذكر وضع تسجيل الدخول',
|
||||
'remember_login_comment' => 'حدد ما إذا كانت جلسة المستخدم يجب أن تكون مستمرة.',
|
||||
'remember_always' => 'دائماً',
|
||||
'remember_never' => 'أبداً',
|
||||
'remember_ask' => 'اسأل المستخدم عند تسجيل الدخول',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'المستخدم',
|
||||
'id' => 'ID',
|
||||
'username' => 'اسم المستخدم',
|
||||
'name' => 'اسم',
|
||||
'name_empty' => 'مجهول',
|
||||
'surname' => 'اسم العائلة',
|
||||
'email' => 'البريد الإلكتروني',
|
||||
'created_at' => 'مسجل',
|
||||
'last_seen' => 'اخر ظهور',
|
||||
'is_guest' => 'زائر',
|
||||
'joined' => 'انضم',
|
||||
'is_online' => 'متواجد حاليا',
|
||||
'is_offline' => 'حاليا غير متصل',
|
||||
'send_invite' => 'إرسال دعوة عبر البريد الإلكتروني',
|
||||
'send_invite_comment' => 'يرسل رسالة ترحيب تحتوي على معلومات تسجيل الدخول وكلمة المرور.',
|
||||
'create_password' => 'أنشئ كلمة مرور',
|
||||
'create_password_comment' => 'أدخل كلمة مرور جديدة مستخدمة لتسجيل الدخول.',
|
||||
'reset_password' => 'إعادة تعيين كلمة المرور',
|
||||
'reset_password_comment' => 'لإعادة تعيين كلمة مرور هذا المستخدم ، أدخل كلمة مرور جديدة هنا.',
|
||||
'confirm_password' => 'تأكيد كلمة المرور',
|
||||
'confirm_password_comment' => 'أدخل كلمة المرور مرة أخرى لتأكيدها.',
|
||||
'groups' => 'مجموعات',
|
||||
'empty_groups' => 'لا توجد مجموعات مستخدمين متاحة.',
|
||||
'avatar' => 'الصورة الرمزية',
|
||||
'details' => 'تفاصيل',
|
||||
'account' => 'الحساب',
|
||||
'block_mail' => 'حظر كل البريد الصادر المرسل إلى هذا المستخدم.',
|
||||
'status_label' => 'حالة',
|
||||
'status_guest' => 'زائر',
|
||||
'status_activated' => 'مفعل',
|
||||
'status_registered' => 'مسجل',
|
||||
'created_ip_address' => 'عنوان IP الذي تم إنشاؤه',
|
||||
'last_ip_address' => 'عنوان IP الأخير',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'مجموعة',
|
||||
'id' => 'ID',
|
||||
'name' => 'الاسم',
|
||||
'description_field' => 'الوصف',
|
||||
'code' => 'رمز',
|
||||
'code_comment' => 'أدخل رمزًا فريدًا يستخدم لتعريف هذه المجموعة.',
|
||||
'created_at' => 'أنشئت',
|
||||
'users_count' => 'المستخدمون'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'مجموعات',
|
||||
'all_groups' => 'مجموعات الاعضاء',
|
||||
'new_group' => 'مجموعة جديدة',
|
||||
'delete_selected_confirm' => 'هل تريد حقًا حذف المجموعات المختارة؟',
|
||||
'list_title' => 'إدارة المجموعات',
|
||||
'delete_confirm' => 'هل تريد حقًا حذف هذه المجموعة؟',
|
||||
'delete_selected_success' => 'تم حذف المجموعات المحددة بنجاح.',
|
||||
'delete_selected_empty' => 'لا توجد مجموعات محددة لحذفها.',
|
||||
'return_to_list' => 'رجوع إلى قائمة المجموعات',
|
||||
'return_to_users' => 'رجوع إلى قائمة المستخدمين',
|
||||
'create_title' => 'إنشاء مجموعة مستخدمين',
|
||||
'update_title' => 'تحرير مجموعة المستخدمين',
|
||||
'preview_title' => 'معاينة مجموعة المستخدمين'
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'البريد الإلكتروني',
|
||||
'attribute_username' => 'اسم المستخدم'
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'الحساب',
|
||||
'account_desc' => 'نموذج إدارة المستخدم.',
|
||||
'banned' => 'عذرا ، هذا المستخدم غير مفعل حاليا. يرجى الاتصال بنا للحصول على مزيد من المساعدة.',
|
||||
'redirect_to' => 'إعادة توجيه ل',
|
||||
'redirect_to_desc' => 'اسم الصفحة المراد إعادة التوجيه إليه بعد التحديث أو تسجيل الدخول أو التسجيل.',
|
||||
'code_param' => 'تفعيل كود بارام',
|
||||
'code_param_desc' => 'معلمة URL للصفحة المستخدمة في رمز تنشيط التسجيل',
|
||||
'force_secure' => 'فرض بروتوكول آمن',
|
||||
'force_secure_desc' => 'قم دائمًا بإعادة توجيه عنوان URL باستخدام مخطط HTTPS.',
|
||||
'invalid_user' => 'لم يتم العثور على مستخدم ببيانات الاعتماد المقدمة.',
|
||||
'invalid_activation_code' => 'تم توفير رمز التفعيل غير صالح.',
|
||||
'invalid_deactivation_pass' => 'كلمة المرور التي أدخلتها غير صالحة.',
|
||||
'invalid_current_pass' => 'كلمة المرور الحالية التي أدخلتها غير صالحة.',
|
||||
'success_activation' => 'تم تفعيل حسابك بنجاح.',
|
||||
'success_deactivation' => 'تم إلغاء تنشيط حسابك بنجاح. اسف لرؤيتك تذهب!',
|
||||
'success_saved' => 'تم حفظ الإعدادات بنجاح!',
|
||||
'login_first' => 'يجب عليك تسجيل الدخول أولا!',
|
||||
'already_active' => 'تم تنشيط حسابك بالفعل!',
|
||||
'activation_email_sent' => 'تم ارسال رسالة التحقق الى بريدك الالكتروني.',
|
||||
'activation_by_admin' => 'لقد قمت بالتسجيل بنجاح. حسابك ليس نشطًا بعد ويجب أن يوافق عليه المسؤول.',
|
||||
'registration_disabled' => 'التسجيلات معطلة حاليا.',
|
||||
'registration_throttled' => 'التسجيل مخنق. الرجاء معاودة المحاولة في وقت لاحق.',
|
||||
'sign_in' => 'تسجيل الدخول',
|
||||
'register' => 'تسجيل',
|
||||
'full_name' => 'الاسم الكامل',
|
||||
'email' => 'البريد الإلكتروني',
|
||||
'password' => 'كلمة المرور',
|
||||
'login' => 'تسجيل الدخول',
|
||||
'new_password' => 'كلمة السر الجديدة',
|
||||
'new_password_confirm' => 'تأكيد كلمة المرور الجديدة',
|
||||
'update_requires_password' => 'تأكيد كلمة المرور عند التحديث',
|
||||
'update_requires_password_comment' => 'طلب كلمة المرور الحالية للمستخدم عند تغيير ملف التعريف الخاص به.',
|
||||
'activation_page' => 'صفحة التفعيل',
|
||||
'activation_page_comment' => 'حدد صفحة لاستخدامها في تنشيط حساب المستخدم',
|
||||
'reset_page' => 'إعادة ضبط الصفحة',
|
||||
'reset_page_comment' => 'حدد صفحة لاستخدامها في إعادة تعيين كلمة مرور الحساب',
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'إعادة تعيين كلمة المرور',
|
||||
'reset_password_desc' => 'استمارة كلمة السر المنسية.',
|
||||
'code_param' => 'إعادة تعيين الرمز',
|
||||
'code_param_desc' => 'معلمة URL للصفحة المستخدمة في إعادة تعيين رمز'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'جلسة',
|
||||
'session_desc' => 'يضيف جلسة المستخدم إلى الصفحة ويمكنه تقييد الوصول إلى الصفحة.',
|
||||
'security_title' => 'السماح فقط',
|
||||
'security_desc' => 'من المسموح له الوصول إلى هذه الصفحة.',
|
||||
'all' => 'الجميع',
|
||||
'users' => 'المستخدمون',
|
||||
'guests' => 'ضيوف',
|
||||
'allowed_groups_title' => 'السماح للمجموعات',
|
||||
'allowed_groups_description' => 'اختر المجموعات المسموح بها أو لا تختارها للسماح لجميع المجموعات',
|
||||
'redirect_title' => 'إعادة توجيه ل',
|
||||
'redirect_desc' => 'اسم الصفحة لإعادة التوجيه إذا تم رفض الوصول.',
|
||||
'logout' => 'لقد تم تسجيل الخروج بنجاح!',
|
||||
'stop_impersonate_success' => 'لم تعد تنتحل شخصية مستخدم.',
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,190 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Uživatelé',
|
||||
'description' => 'Správa front-end uživatelů.',
|
||||
'tab' => 'Uživatelé',
|
||||
'access_users' => 'Správa uživatelů',
|
||||
'access_groups' => 'Správa uživatelských skupin',
|
||||
'access_settings' => 'Správa nastavení uživatelů',
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Uživatelé',
|
||||
'all_users' => 'Seznam uživatelů',
|
||||
'new_user' => 'Vytvořit uživatele',
|
||||
'list_title' => 'Správa uživatelů',
|
||||
'activating' => 'Povoluji...',
|
||||
'trashed_hint_title' => 'Uživatel deaktivoval svůj účet',
|
||||
'trashed_hint_desc' => 'Uživatel zablokoval svůj účet a nechce se dále objevovat na stránkách. Může však svůj účet kdykoli obnovit přihlášením se zpět.',
|
||||
'banned_hint_title' => 'Uživatel byl zabanován',
|
||||
'banned_hint_desc' => 'Tento uživatel byl zablokován administrátorem a nebude moct se přihlásit.',
|
||||
'guest_hint_title' => 'Tento uživatel je host',
|
||||
'guest_hint_desc' => 'Tento uživatel je uložen pouze jako reference a musí se zaregistrovat před přihlášením.',
|
||||
'activate_warning_title' => 'Uživatel není aktivní!',
|
||||
'activate_warning_desc' => 'Tento uživatel nemohl být aktivován a nebude mít možnost se přihlásit.',
|
||||
'activate_confirm' => 'Opravdu chcete aktivovat tohoto uživatele?',
|
||||
'activated_success' => 'Uživatel byl úspěšně aktivován!',
|
||||
'activate_manually' => 'Aktivovat uživatele manuálně',
|
||||
'convert_guest_confirm' => 'Chcete převést hosta na uživatele?',
|
||||
'convert_guest_manually' => 'Převést na zaregistrovaného uživatele',
|
||||
'convert_guest_success' => 'Uživatel byl převeden na registrovaného uživatele',
|
||||
'delete_confirm' => 'Opravdu chcete smazat tohoto uživatele?',
|
||||
'unban_user' => 'Zrušit ban tohoto uživatele',
|
||||
'unban_confirm' => 'Opravdu chcete zrušit ban tohoto uživatele?',
|
||||
'unbanned_success' => 'Uživateli byl zrušen ban',
|
||||
'return_to_list' => 'Zpět na seznam uživatelů',
|
||||
'update_details' => 'Upravit detaily',
|
||||
'bulk_actions' => 'Hromadné akce',
|
||||
'delete_selected' => 'Odstranit vybrané',
|
||||
'delete_selected_confirm' => 'Chcete smazat vybrané uživatele?',
|
||||
'delete_selected_empty' => 'Nejdříve vyberte uživatele, které chcete smazat.',
|
||||
'delete_selected_success' => 'Vybraní uživatelé úspěšně odstraněni.',
|
||||
'deactivate_selected' => 'Deaktivovat vybrané',
|
||||
'deactivate_selected_confirm' => 'Deaktivovat vybrané uživatele?',
|
||||
'deactivate_selected_empty' => 'Musíte vybrat uživatele, které chcete deaktivovat.',
|
||||
'deactivate_selected_success' => 'Vybraní uživatelé byli úspěšně deaktivování.',
|
||||
'restore_selected' => 'Obnovit vybrané',
|
||||
'restore_selected_confirm' => 'Opravdu chcete obnovit vybrané uživatele?',
|
||||
'restore_selected_empty' => 'Musíte vybrat uživatele, které chcete obnovit.',
|
||||
'restore_selected_success' => 'Vybraní uživatele byli úspěšně obnoveni.',
|
||||
'ban_selected' => 'Zabanovat vybrané',
|
||||
'ban_selected_confirm' => 'Opravdu chcete zabanovat vybrané uživatele?',
|
||||
'ban_selected_empty' => 'Musíte vybrat uživatele, které chcete zabanovat.',
|
||||
'ban_selected_success' => 'Vybraní uživatelé byli úspěšně zabanováni.',
|
||||
'unban_selected' => 'Odbanovat vybrané',
|
||||
'unban_selected_confirm' => 'Opravdu chcete odbanovat vybrané uživatele?',
|
||||
'unban_selected_empty' => 'Musíte vybrat uživatele, které chcete odbanovat.',
|
||||
'unban_selected_success' => 'Vybraní uživatelé byli úspěšně odbanováni.',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Uživatelé',
|
||||
'menu_label' => 'Správa uživatelů',
|
||||
'menu_description' => 'Správa nastavení uživatelů',
|
||||
'activation_tab' => 'Aktivace',
|
||||
'signin_tab' => 'Přihlášení',
|
||||
'registration_tab' => 'Registrace',
|
||||
'notifications_tab' => 'Notifikace',
|
||||
'allow_registration' => 'Povolit registraci uživatelů',
|
||||
'allow_registration_comment' => 'Pokud je registrace zakázaná, uživatelé lze vytvářet pouze v administraci.',
|
||||
'activate_mode' => 'Režim aktivace',
|
||||
'activate_mode_comment' => 'Vyberte jak má být uživatel aktivován.',
|
||||
'activate_mode_auto' => 'Automaticky',
|
||||
'activate_mode_auto_comment' => 'Aktivován automaticky ihned po registraci.',
|
||||
'activate_mode_user' => 'Aktivační e-mail',
|
||||
'activate_mode_user_comment' => 'Uživatel si aktivuje účet pomocí aktivačního e-mailu.',
|
||||
'activate_mode_admin' => 'Administrátorem',
|
||||
'activate_mode_admin_comment' => 'Pouze administrátor může aktivovat uživatele.',
|
||||
'require_activation' => 'Přihlášení vyžaduje aktivaci uživatele',
|
||||
'require_activation_comment' => 'Uživatelé musí mít aktivovaný účet, aby se mohl přihlásit.',
|
||||
'use_throttle' => 'Omezit opakované pokusy o přihlášení',
|
||||
'use_throttle_comment' => 'Při opakovaném pokusu o přihlášení dojde k suspendování uživatele.',
|
||||
'login_attribute' => 'Přihlašovací atribut',
|
||||
'login_attribute_comment' => 'Zvolte, jaký atribut bude použitý k přihlášení uživatele.',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Uživatel',
|
||||
'id' => 'ID',
|
||||
'username' => 'Uživatelské jméno',
|
||||
'name' => 'Jméno',
|
||||
'name_empty' => 'Anonym',
|
||||
'surname' => 'Příjmení',
|
||||
'email' => 'E-mail',
|
||||
'created_at' => 'Datum registrace',
|
||||
'last_seen' => 'Poslední přihlášení',
|
||||
'is_guest' => 'Host',
|
||||
'joined' => 'Registrován',
|
||||
'is_online' => 'Nyní on-line',
|
||||
'is_offline' => 'Nyní offline',
|
||||
'send_invite' => 'Poslat pozvánku e-mailem',
|
||||
'send_invite_comment' => 'Poslat uvítací e-mail obsahující přihlašovací jméno a heslo.',
|
||||
'create_password' => 'Vytvořit heslo',
|
||||
'create_password_comment' => 'Zadejte heslo které se bude používat k přihlašování.',
|
||||
'reset_password' => 'Nové heslo',
|
||||
'reset_password_comment' => 'Pro změnu hesla, zadejte nové heslo.',
|
||||
'confirm_password' => 'Nové heslo znovu pro kontrolu',
|
||||
'confirm_password_comment' => 'Zadejte heslo znovu pro kontrolu správnosti.',
|
||||
'groups' => 'Skupiny',
|
||||
'empty_groups' => 'V této skupině nejsou žádní uživatelé.',
|
||||
'avatar' => 'Obrázek',
|
||||
'details' => 'Detaily',
|
||||
'account' => 'Účet',
|
||||
'block_mail' => 'Zablokovat všechny odchozí e-maily pro tohoto uživatele.',
|
||||
'status_guest' => 'Host',
|
||||
'status_activated' => 'Aktivován',
|
||||
'status_registered' => 'Registrován',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Skupina',
|
||||
'id' => 'ID',
|
||||
'name' => 'Název',
|
||||
'description_field' => 'Popis skupiny',
|
||||
'code' => 'Kód',
|
||||
'code_comment' => 'Zadejte unikátní kód pro jednoznačnou identifikaci této skupiny.',
|
||||
'created_at' => 'Vytvořeno',
|
||||
'users_count' => 'Počet uživatelů',
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Skupiny',
|
||||
'all_groups' => 'Uživatelské skupiny',
|
||||
'new_group' => 'Nová skupina',
|
||||
'delete_selected_confirm' => 'Opravdu chcete smazat vybrané skupiny?',
|
||||
'list_title' => 'Správa skupin',
|
||||
'delete_confirm' => 'Opravdu chcete odstranit tuto skupinu?',
|
||||
'delete_selected_success' => 'Vybrané skupiny byly úspěšně odstraněny.',
|
||||
'delete_selected_empty' => 'Musíte nejdřív vybrat skupiny které chcete smazat.',
|
||||
'return_to_list' => 'Zpět na seznam skupin',
|
||||
'return_to_users' => 'Zpět na seznam uživatelů',
|
||||
'create_title' => 'Vytvořit skupinu',
|
||||
'update_title' => 'Upravit skupinu',
|
||||
'preview_title' => 'Náhled skupiny',
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'E-mail',
|
||||
'attribute_username' => 'Uživatelské jméno',
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Správa účtu',
|
||||
'account_desc' => 'Formuláře správy účtu a přihlášení',
|
||||
'redirect_to' => 'Přesměrovat na',
|
||||
'redirect_to_desc' => 'Název stránky pro přesměrování po úpravě údajů, přihlášení nebo registraci.',
|
||||
'code_param' => 'Parametr aktivačního kódu',
|
||||
'code_param_desc' => 'Parametr z URL stránky, který se použije pro aktivační kód',
|
||||
'invalid_user' => 'Uživatel s těmito údaji nebyl nalezen.',
|
||||
'invalid_activation_code' => 'Zadán nesprávný parametr pro aktivační kód',
|
||||
'invalid_deactivation_pass' => 'Zadané heslo není správné.',
|
||||
'success_activation' => 'Váš účet byl úspěšně aktivován.',
|
||||
'success_deactivation' => 'Váš účet byl úspěšně deaktivován. Mrzí nás, že odcházíte!',
|
||||
'success_saved' => 'Nastavení bylo úspěšně uloženo!',
|
||||
'login_first' => 'Nejdříve musíte být přihlášeni!',
|
||||
'already_active' => 'Váš účet je již aktivován!',
|
||||
'activation_email_sent' => 'Aktivační e-mail byl zaslán na e-mail, který byl zadán při registraci.',
|
||||
'registration_disabled' => 'Registrace jsou dočasně pozastaveny.',
|
||||
'sign_in' => 'Přihlášení',
|
||||
'register' => 'Registrace',
|
||||
'full_name' => 'Celé jméno',
|
||||
'email' => 'E-mail',
|
||||
'password' => 'Heslo',
|
||||
'login' => 'Přihlášení',
|
||||
'new_password' => 'Nové heslo',
|
||||
'new_password_confirm' => 'Potvrzení nového hesla'
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Obnova hesla',
|
||||
'reset_password_desc' => 'Formulář obnovy hesla',
|
||||
'code_param' => 'Parametr kódu pro obnovu hesla',
|
||||
'code_param_desc' => 'Parametr URL použitý pro obnovu hesla'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Session',
|
||||
'session_desc' => 'Vloží do stránky informace o přihlášení s možností omezení přístupových práv.',
|
||||
'security_title' => 'Povolit pouze',
|
||||
'security_desc' => 'Kdo má přístup k této stránce.',
|
||||
'all' => 'Všichni',
|
||||
'users' => 'Uživatelé',
|
||||
'guests' => 'Hosti',
|
||||
'redirect_title' => 'Přesměrovat na',
|
||||
'redirect_desc' => 'Stránka pro přesměrování, pokud je přístup zamítnut.',
|
||||
'logout' => 'Byli jste úspěšně odhlášeni!'
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,248 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Benutzer',
|
||||
'description' => 'Frontend-Benutzer-Verwaltung.',
|
||||
'tab' => 'Benutzer',
|
||||
'access_users' => 'Benutzer verwalten',
|
||||
'access_groups' => 'Benutzergruppen verwalten',
|
||||
'access_settings' => 'Benutzereinstellungen verwalten',
|
||||
'impersonate_user' => 'Als Benutzer einloggen',
|
||||
],
|
||||
'location' => [
|
||||
'label' => 'Standort',
|
||||
'new' => 'Neuer Standort',
|
||||
'create_title' => 'Standort anlegen',
|
||||
'update_title' => 'Standort bearbeiten',
|
||||
'preview_title' => 'Standort ansehen',
|
||||
],
|
||||
'locations' => [
|
||||
'menu_label' => 'Standorte',
|
||||
'menu_description' => 'Verfügbare Benutzer-Standorte und Provinzen verwalten.',
|
||||
'hide_disabled' => 'Deaktivierte verbergen',
|
||||
'enabled_label' => 'Aktiviert',
|
||||
'enabled_help' => 'Deaktivierte Standorte sind im Frontend nicht sichtbar.',
|
||||
'enable_or_disable_title' => 'Standorte aktivieren oder deaktivieren',
|
||||
'enable_or_disable' => 'Aktivieren oder deaktivieren',
|
||||
'selected_amount' => 'Standorte ausgewählt: :amount',
|
||||
'enable_success' => 'Standorte erfolgreich aktiviert.',
|
||||
'disable_success' => 'Standorte erfolgreich deaktiviert.',
|
||||
'disable_confirm' => 'Sind Sie sicher?',
|
||||
'list_title' => 'Standorte verwalten',
|
||||
'delete_confirm' => 'Möchten Sie diesen Standort wirklich löschen?',
|
||||
'return_to_list' => 'Zurück zur Standortliste',
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Benutzer',
|
||||
'all_users' => 'Alle Benutzer',
|
||||
'new_user' => 'Neuer Benutzer',
|
||||
'list_title' => 'Benutzer verwalten',
|
||||
'trashed_hint_title' => 'Benutzer hat sein Konto deaktiviert.',
|
||||
'trashed_hint_desc' => 'Dieser Benutzer hat sein Konto deaktiviert und möchte nicht mehr auf der Seite erscheinen. Er kann sein Konto jederzeit durch eine Anmeldung reaktivieren.',
|
||||
'banned_hint_title' => 'Benutzer wurde gesperrt.',
|
||||
'banned_hint_desc' => 'Dieser Benutzer wurde von einem Adminstrator gesperrt und kann sich somit nicht mehr anmelden.',
|
||||
'guest_hint_title' => 'Dieser Benutzer ist ein Gast',
|
||||
'guest_hint_desc' => 'Dieser Benutzer ist nur zu Referenzzwecken gespeichert und muss sich vor dem nächsten Login nochmals registrieren.',
|
||||
'activate_warning_title' => 'Benutzer nicht aktiviert!',
|
||||
'activate_warning_desc' => 'Dieser Benutzer wurde noch nicht aktiviert und kann sich nicht einloggen.',
|
||||
'activate_confirm' => 'Möchten Sie diesen Benutzer wirklich aktivieren?',
|
||||
'activated_success' => 'Benutzer erfolgreich aktiviert!',
|
||||
'activate_manually' => 'Benutzer manuell aktivieren',
|
||||
'convert_guest_confirm' => 'Soll dieser Benutzer zu einem Gast umgewandelt werden?',
|
||||
'convert_guest_manually' => 'Benutzer zu einem Gast umwandeln',
|
||||
'convert_guest_success' => 'Der Benutzer wurde zu einem Gast umgewandelt',
|
||||
'impersonate_user' => 'Als Benutzer einloggen',
|
||||
'impersonate_confirm' => 'Soll die Anmeldung mit diesem Benutzerkonto erfolgen? Nach der Abmeldung wird die bestehende Sitzung wiederhergestellt.',
|
||||
'impersonate_success' => 'Sie sind nun als diesen Benutzer angemeldet',
|
||||
'delete_confirm' => 'Möchten Sie diesen Benutzer wirklich löschen?',
|
||||
'unban_user' => 'Diesen Benutzer entsperren',
|
||||
'unban_confirm' => 'Möchten Sie diesen Benutzer wirklich entsperren?',
|
||||
'unbanned_success' => 'Der Benutzer wurde entsperrt',
|
||||
'return_to_list' => 'Zurück zur Benutzerliste',
|
||||
'update_details' => 'Update details',
|
||||
'bulk_actions' => 'Stapelbearbeitung',
|
||||
'delete_selected' => 'Ausgewählte löschen',
|
||||
'delete_selected_confirm' => 'Ausgewählte Benutzer löschen?',
|
||||
'delete_selected_empty' => 'Keine Benutzer zum Löschen ausgewählt.',
|
||||
'delete_selected_success' => 'Ausgewählte Benutzer erfolgreich gelöscht.',
|
||||
'activate_selected' => 'Ausgewählte aktivieren',
|
||||
'activate_selected_confirm' => 'Sollten die ausgewählten Benutzer aktiviert werden?',
|
||||
'activate_selected_empty' => 'Es sind keine Benutzer zur Aktivierung ausgewählt.',
|
||||
'activate_selected_success' => 'Die ausgewählten Benutzer wurden erfolgreich aktiviert.',
|
||||
'deactivate_selected' => 'Ausgewählte deaktivieren',
|
||||
'deactivate_selected_confirm' => 'Ausgewählte Benutzer deaktivieren?',
|
||||
'deactivate_selected_empty' => 'Es wurden keine Benutzer zum Deaktivieren ausgewählt.',
|
||||
'deactivate_selected_success' => 'Ausgewählte Benutzer erfolgreich deaktiviert.',
|
||||
'restore_selected' => 'Ausgewählte wiederherstellen',
|
||||
'restore_selected_confirm' => 'Ausgewählte Benutzer wiederherstellen?',
|
||||
'restore_selected_empty' => 'Es wurden keine Benutzer zum Wiederherstellen ausgewählt.',
|
||||
'restore_selected_success' => 'Ausgewählte Benutzer erfolgreich wiederhergestellt.',
|
||||
'ban_selected' => 'Ausgewählte sperren',
|
||||
'ban_selected_confirm' => 'Ausgewählte Benutzer sperren?',
|
||||
'ban_selected_empty' => 'Es wurden keine Benutzer zum Sperren ausgewählt.',
|
||||
'ban_selected_success' => 'Ausgewählte Benutzer erfolgreich gesperrt.',
|
||||
'unban_selected' => 'Ausgewählte entsperren',
|
||||
'unban_selected_confirm' => 'Ausgewählte Benutzer entsperren?',
|
||||
'unban_selected_empty' => 'Es wurden keine Benutzer zum Entsperren ausgewählt.',
|
||||
'unban_selected_success' => 'Ausgewählte Benutzer erfolgreich entsperrt.',
|
||||
'activating' => 'Aktiviere...',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Benutzer',
|
||||
'menu_label' => 'Benutzer-Einstellungen',
|
||||
'menu_description' => 'Benutzer-Einstellungen verwalten.',
|
||||
'activation_tab' => 'Aktivierung',
|
||||
'signin_tab' => 'Einloggen',
|
||||
'registration_tab' => 'Registrierungen',
|
||||
'notifications_tab' => 'Benachrichtigungen',
|
||||
'allow_registration' => 'Benutzerregistrierung erlauben',
|
||||
'allow_registration_comment' => 'Falls dies deaktivert ist, können Benutzer nur von Administratoren erstellt werden.',
|
||||
'activate_mode' => 'Aktivierungsmodus',
|
||||
'activate_mode_comment' => 'Wählen Sie aus, wie ein Benutzer aktiviert werden soll.',
|
||||
'activate_mode_auto' => 'Automatisch',
|
||||
'activate_mode_auto_comment' => 'Automatische Aktivierung bei Registrierung.',
|
||||
'activate_mode_user' => 'Benutzer',
|
||||
'activate_mode_user_comment' => 'Der Benutzer aktiviert seinen eigenes Konto per E-Mail.',
|
||||
'activate_mode_admin' => 'Administrator',
|
||||
'activate_mode_admin_comment' => 'Nur ein Administrator kann einen Benutzer aktivieren.',
|
||||
'require_activation' => 'Anmeldung benötigt Aktivierung',
|
||||
'require_activation_comment' => 'Benutzer müssen zum Einloggen ein aktiviertes Konto besitzen.',
|
||||
'use_throttle' => 'Anmeldeversuche begrenzen',
|
||||
'use_throttle_comment' => 'Bei wiederholten Anmelde-Fehlversuchen wird der Benutzer temporär gesperrt.',
|
||||
'block_persistence' => 'Gleichzeitige Anmeldung unterbinden',
|
||||
'block_persistence_comment' => 'Wird diese Option aktiviert kann sich ein Benutzer nicht an mehreren Geräten gleichzeitig anmelden.',
|
||||
'login_attribute' => 'Anmelde-Attribut-Zuordnung',
|
||||
'login_attribute_comment' => 'Wählen Sie, welches Benutzerattribut zum Anmelden verwendet werden soll.',
|
||||
'location_tab' => 'Standort',
|
||||
'default_country' => 'Standort-Voreinstellung',
|
||||
'default_country_comment' => 'Wenn ein Benutzer keinen Standort angibt, wird dieser Standort als Standard gewählt.',
|
||||
'default_state' => 'Provinz-Voreinstellung',
|
||||
'default_state_comment' => 'Wenn ein Benutzer keinen Standort angibt, wird diese Provinz als Standard gewählt.',
|
||||
],
|
||||
'state' => [
|
||||
'label' => 'Provinz',
|
||||
'name' => 'Name',
|
||||
'name_comment' => 'Anzeigenamen für diese Provinz eingeben.',
|
||||
'code' => 'Code',
|
||||
'code_comment' => 'Eindeutigen Code für diese Provinz eingeben.',
|
||||
],
|
||||
'country' => [
|
||||
'label' => 'Land',
|
||||
'name' => 'Name',
|
||||
'code' => 'Code',
|
||||
'code_comment' => 'Eindeutigen Code für dieses Land eingeben.',
|
||||
'enabled' => 'Aktiv',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Benutzer',
|
||||
'id' => 'ID',
|
||||
'username' => 'Benutzername',
|
||||
'name' => 'Name',
|
||||
'name_empty' => 'Anonym',
|
||||
'surname' => 'Nachname',
|
||||
'email' => 'E-Mail',
|
||||
'created_at' => 'Registriert am',
|
||||
'last_seen' => 'Zuletzt gesehen',
|
||||
'is_guest' => 'Gast',
|
||||
'joined' => 'Registriert',
|
||||
'is_online' => 'Jetzt online',
|
||||
'is_offline' => 'Momentan offline',
|
||||
'send_invite' => 'Einladung per E-Mail versenden',
|
||||
'send_invite_comment' => 'Sendet eine E-Mail mit Benutzername und Passwort and den Benutzer',
|
||||
'create_password' => 'Passwort erstellen',
|
||||
'create_password_comment' => 'Gib ein neues Passwort ein, das zum Anmelden verwendet wird.',
|
||||
'reset_password' => 'Passwort setzen',
|
||||
'reset_password_comment' => 'Geben Sie hier ein Passwort ein, um das aktuelle Benutzerpasswort zu überschreiben.',
|
||||
'confirm_password' => 'Passwort bestätigen',
|
||||
'confirm_password_comment' => 'Passwort zur Bestätigung erneut eingeben.',
|
||||
'groups' => 'Gruppen',
|
||||
'empty_groups' => 'Es gibt keine Benutzer-Gruppen.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Details',
|
||||
'account' => 'Benutzerkonto',
|
||||
'block_mail' => 'Blockiere alle ausgehenden E-Mails an diesen Benutzer.',
|
||||
'status_guest' => 'Gast',
|
||||
'status_activated' => 'Aktiviert',
|
||||
'status_registered' => 'Registriert',
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'E-Mail',
|
||||
'attribute_username' => 'Benutzername',
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Benutzerkonto',
|
||||
'account_desc' => 'Benutzerkontoverwaltung.',
|
||||
'banned' => 'Sorry, dieser Benutzer ist momentan nicht aktiviert. Kontaktieren Sie uns für weitere Unterstützung.',
|
||||
'redirect_to' => 'Weiterleiten nach',
|
||||
'redirect_to_desc' => 'Seitenname zum Weiterleiten nach Update, Anmeldung oder Registrierung.',
|
||||
'code_param' => 'Aktivierungscode Parameter',
|
||||
'code_param_desc' => 'Dieser URL-Parameter wird als Registrierungs-Aktivierungscode verwendet',
|
||||
'force_secure' => 'Forciere sichere URLs',
|
||||
'force_secure_desc' => 'Verwende für Weiterleitungen immer das HTTPS-Protokoll.',
|
||||
'invalid_user' => 'Es wurde kein Benutzer mit diesen Zugangsdaten gefunden.',
|
||||
'invalid_activation_code' => 'Ungültiger Aktivierungscode übermittelt',
|
||||
'invalid_deactivation_pass' => 'Das eingegebene Passwort war ungültig.',
|
||||
'success_activation' => 'Benutzerkonto erfolgreich aktiviert.',
|
||||
'success_deactivation' => 'Konto erfolgreich deaktiviert. Schade, dass du gehst!',
|
||||
'success_saved' => 'Einstellungen erfolgreich gespeichert!',
|
||||
'login_first' => 'Sie müssen sich erst einloggen!',
|
||||
'already_active' => 'Ihr Benutzerkonto ist bereits aktiviert!',
|
||||
'activation_email_sent' => 'Eine Aktivierungs-E-Mail wurde an Ihre E-Mail-Adresse versendet.',
|
||||
'registration_disabled' => 'Registrierungen sind momentan deaktiviert.',
|
||||
'sign_in' => 'Anmelden',
|
||||
'register' => 'Registrieren',
|
||||
'full_name' => 'Name',
|
||||
'email' => 'E-Mail',
|
||||
'password' => 'Passwort',
|
||||
'login' => 'Anmelden',
|
||||
'new_password' => 'Neues Passwort',
|
||||
'new_password_confirm' => 'Neues Passwort bestätigen',
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Passwort zurücksetzen',
|
||||
'reset_password_desc' => 'Formular zum Zurücksetzen des Passworts.',
|
||||
'code_param' => 'Reset-Code-Parameter',
|
||||
'code_param_desc' => 'URL-Parameter, der für den Reset-Code verwendet wird',
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Session',
|
||||
'session_desc' => 'Fügt Benutzer-Session zu Seite hinzu und kann Zugriff einschränken.',
|
||||
'security_title' => 'Erlauben',
|
||||
'security_desc' => 'Wer hat Zugriff auf die Seite?',
|
||||
'all' => 'Jeder',
|
||||
'users' => 'Benutzer',
|
||||
'guests' => 'Gäste',
|
||||
'allowed_groups_title' => 'Gruppen zulassen',
|
||||
'allowed_groups_description' => 'Wählen Sie zugelassene Gruppen aus. Wird keine Gruppe ausgewhält sind alle zugelassen.',
|
||||
'redirect_title' => 'Weiterleiten nach',
|
||||
'redirect_desc' => 'Seitenname zum Weiterleiten bei verweigertem Zugriff.',
|
||||
'logout' => 'Sie haben sich erfolgreich ausgeloggt!',
|
||||
'stop_impersonate_success' => 'Sie sind nicht mehr als diesen Benutzer angemeldet.',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Gruppe',
|
||||
'id' => 'ID',
|
||||
'name' => 'Name',
|
||||
'description_field' => 'Beschreibung',
|
||||
'code' => 'Code',
|
||||
'code_comment' => 'Gebe einen eindeutigen Code ein, der die Gruppe identifiziert.',
|
||||
'created_at' => 'Erstellt am',
|
||||
'users_count' => 'Benutzer',
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Gruppen',
|
||||
'all_groups' => 'Benutzergruppen',
|
||||
'new_group' => 'Neue Gruppe',
|
||||
'delete_selected_confirm' => 'Willst du die ausgewählten Gruppen wirklich löschen?',
|
||||
'list_title' => 'Gruppen verwalten',
|
||||
'delete_confirm' => 'Willst du diese Gruppe wirklich löschen?',
|
||||
'delete_selected_success' => 'Ausgewählte Gruppen erfolgreich gelöscht.',
|
||||
'delete_selected_empty' => 'Es wurden keine Gruppen zum Löschen ausgewählt.',
|
||||
'return_to_list' => 'Zurück zur Gruppenliste',
|
||||
'return_to_users' => 'Zurück zur Benutzerliste',
|
||||
'create_title' => 'Benutzergruppe erstellen',
|
||||
'update_title' => 'Benutzergruppe bearbeiten',
|
||||
'preview_title' => 'Vorschau der Benutzergruppe',
|
||||
],
|
||||
];
|
||||
|
|
@ -0,0 +1,239 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'User',
|
||||
'description' => 'Front-end user management.',
|
||||
'tab' => 'Users',
|
||||
'access_users' => 'Manage Users',
|
||||
'access_groups' => 'Manage User Groups',
|
||||
'access_settings' => 'Manage User Settings',
|
||||
'impersonate_user' => 'Impersonate Users'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Users',
|
||||
'all_users' => 'All Users',
|
||||
'new_user' => 'New User',
|
||||
'list_title' => 'Manage Users',
|
||||
'trashed_hint_title' => 'User has deactivated their account',
|
||||
'trashed_hint_desc' => 'This user has deactivated their account and no longer wants to appear on the site. They can restore their account at any time by signing back in.',
|
||||
'banned_hint_title' => 'User has been banned',
|
||||
'banned_hint_desc' => 'This user has been banned by an administrator and will be unable to sign in.',
|
||||
'guest_hint_title' => 'This is a guest user',
|
||||
'guest_hint_desc' => 'This user is stored for reference purposes only and needs to register before signing in.',
|
||||
'activate_warning_title' => 'User not activated!',
|
||||
'activate_warning_desc' => 'This user has not been activated and may be unable to sign in.',
|
||||
'activate_confirm' => 'Do you really want to activate this user?',
|
||||
'activated_success' => 'User has been activated',
|
||||
'activate_manually' => 'Activate this user manually',
|
||||
'convert_guest_confirm' => 'Convert this guest to a user?',
|
||||
'convert_guest_manually' => 'Convert to registered user',
|
||||
'convert_guest_success' => 'User has been converted to a registered account',
|
||||
'impersonate_user' => 'Impersonate user',
|
||||
'impersonate_confirm' => 'Impersonate this user? You can revert to your original state by logging out.',
|
||||
'impersonate_success' => 'You are now impersonating this user',
|
||||
'delete_confirm' => 'Do you really want to delete this user?',
|
||||
'unban_user' => 'Unban this user',
|
||||
'unban_confirm' => 'Do you really want to unban this user?',
|
||||
'unbanned_success' => 'User has been unbanned',
|
||||
'return_to_list' => 'Return to users list',
|
||||
'update_details' => 'Update details',
|
||||
'bulk_actions' => 'Bulk actions',
|
||||
'delete_selected' => 'Delete selected',
|
||||
'delete_selected_confirm' => 'Delete the selected users?',
|
||||
'delete_selected_empty' => 'There are no selected users to delete.',
|
||||
'delete_selected_success' => 'Successfully deleted the selected users.',
|
||||
'activate_selected' => 'Activate selected',
|
||||
'activate_selected_confirm' => 'Activate the selected users?',
|
||||
'activate_selected_empty' => 'There are no selected users to activate.',
|
||||
'activate_selected_success' => 'Successfully activated the selected users.',
|
||||
'deactivate_selected' => 'Deactivate selected',
|
||||
'deactivate_selected_confirm' => 'Deactivate the selected users?',
|
||||
'deactivate_selected_empty' => 'There are no selected users to deactivate.',
|
||||
'deactivate_selected_success' => 'Successfully deactivated the selected users.',
|
||||
'restore_selected' => 'Restore selected',
|
||||
'restore_selected_confirm' => 'Restore the selected users?',
|
||||
'restore_selected_empty' => 'There are no selected users to restore.',
|
||||
'restore_selected_success' => 'Successfully restored the selected users.',
|
||||
'ban_selected' => 'Ban selected',
|
||||
'ban_selected_confirm' => 'Ban the selected users?',
|
||||
'ban_selected_empty' => 'There are no selected users to ban.',
|
||||
'ban_selected_success' => 'Successfully banned the selected users.',
|
||||
'unban_selected' => 'Unban selected',
|
||||
'unban_selected_confirm' => 'Unban the selected users?',
|
||||
'unban_selected_empty' => 'There are no selected users to unban.',
|
||||
'unban_selected_success' => 'Successfully unbanned the selected users.',
|
||||
'unsuspend' => 'Unsuspend',
|
||||
'unsuspend_success' => 'User has been unsuspended.',
|
||||
'unsuspend_confirm' => 'Unsuspend this user?'
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Users',
|
||||
'menu_label' => 'User settings',
|
||||
'menu_description' => 'Manage user authentication, registration and activation settings.',
|
||||
'activation_tab' => 'Activation',
|
||||
'signin_tab' => 'Sign in',
|
||||
'registration_tab' => 'Registration',
|
||||
'password_policy_tab' => 'Password Policy',
|
||||
'profile_tab' => 'Profile',
|
||||
'notifications_tab' => 'Notifications',
|
||||
'allow_registration' => 'Allow user registration',
|
||||
'allow_registration_comment' => 'If this is disabled users can only be created by administrators.',
|
||||
'activate_mode' => 'Activation mode',
|
||||
'activate_mode_comment' => 'Select how a user account should be activated.',
|
||||
'activate_mode_auto' => 'Automatic',
|
||||
'activate_mode_auto_comment' => 'Activated automatically upon registration.',
|
||||
'activate_mode_user' => 'User',
|
||||
'activate_mode_user_comment' => 'The user activates their own account using mail.',
|
||||
'activate_mode_admin' => 'Administrator',
|
||||
'activate_mode_admin_comment' => 'Only an Administrator can activate a user.',
|
||||
'require_activation' => 'Sign in requires activation',
|
||||
'require_activation_comment' => 'Users must have an activated account to sign in.',
|
||||
'use_throttle' => 'Throttle attempts',
|
||||
'use_throttle_comment' => 'Repeat failed sign in attempts will temporarily suspend the user.',
|
||||
'use_register_throttle' => 'Throttle registration',
|
||||
'use_register_throttle_comment' => 'Prevent multiple registrations from the same IP in short succession.',
|
||||
'block_persistence' => 'Prevent concurrent sessions',
|
||||
'block_persistence_comment' => 'When enabled users cannot sign in to multiple devices at the same time.',
|
||||
'login_attribute' => 'Login attribute',
|
||||
'login_attribute_comment' => 'Select what primary user detail should be used for signing in.',
|
||||
'remember_login' => 'Remember login mode',
|
||||
'remember_login_comment' => 'Select if the user session should be persistent.',
|
||||
'remember_always' => 'Always',
|
||||
'remember_never' => 'Never',
|
||||
'remember_ask' => 'Ask the user on login',
|
||||
'min_password_length' => 'Min password length',
|
||||
'min_password_length_comment' => 'Password length required for users',
|
||||
'require_mixed_case' => 'Require mixed case',
|
||||
'require_mixed_case_comment' => 'Require uppercase and lowercase letters',
|
||||
'require_number' => 'Require number',
|
||||
'require_symbol' => 'Require special character',
|
||||
'require_uncompromised' => 'Require uncompromised',
|
||||
'require_uncompromised_comment' => 'Require non-leaked password',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'User',
|
||||
'id' => 'ID',
|
||||
'username' => 'Username',
|
||||
'name' => 'Name',
|
||||
'name_empty' => 'Anonymous',
|
||||
'surname' => 'Surname',
|
||||
'email' => 'Email',
|
||||
'created_at' => 'Registered',
|
||||
'last_seen' => 'Last seen',
|
||||
'is_guest' => 'Guest',
|
||||
'joined' => 'Joined',
|
||||
'is_online' => 'Online now',
|
||||
'is_offline' => 'Currently offline',
|
||||
'send_invite' => 'Send invitation by email',
|
||||
'send_invite_comment' => 'Sends a welcome message containing login and password information.',
|
||||
'create_password' => 'Create Password',
|
||||
'create_password_comment' => 'Enter a new password used for signing in.',
|
||||
'reset_password' => 'Reset Password',
|
||||
'reset_password_comment' => 'To reset this users password, enter a new password here.',
|
||||
'confirm_password' => 'Password Confirmation',
|
||||
'confirm_password_comment' => 'Enter the password again to confirm it.',
|
||||
'groups' => 'Groups',
|
||||
'empty_groups' => 'There are no user groups available.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Details',
|
||||
'account' => 'Account',
|
||||
'block_mail' => 'Block all outgoing mail sent to this user.',
|
||||
'status_label' => 'Status',
|
||||
'status_guest' => 'Guest',
|
||||
'status_activated' => 'Activated',
|
||||
'status_registered' => 'Registered',
|
||||
'created_ip_address' => 'Created IP Address',
|
||||
'last_ip_address' => 'Last IP Address',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Group',
|
||||
'id' => 'ID',
|
||||
'name' => 'Name',
|
||||
'description_field' => 'Description',
|
||||
'code' => 'Code',
|
||||
'code_comment' => 'Enter a unique code used to identify this group.',
|
||||
'created_at' => 'Created',
|
||||
'users_count' => 'Users'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Groups',
|
||||
'all_groups' => 'User Groups',
|
||||
'new_group' => 'New Group',
|
||||
'delete_selected_confirm' => 'Do you really want to delete selected groups?',
|
||||
'list_title' => 'Manage Groups',
|
||||
'delete_confirm' => 'Do you really want to delete this group?',
|
||||
'delete_selected_success' => 'Successfully deleted the selected groups.',
|
||||
'delete_selected_empty' => 'There are no selected groups to delete.',
|
||||
'return_to_list' => 'Back to groups list',
|
||||
'return_to_users' => 'Back to users list',
|
||||
'create_title' => 'Create User Group',
|
||||
'update_title' => 'Edit User Group',
|
||||
'preview_title' => 'Preview User Group'
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'Email',
|
||||
'attribute_username' => 'Username'
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Account',
|
||||
'account_desc' => 'User management form.',
|
||||
'banned' => 'Sorry, this user is currently not activated. Please contact us for further assistance.',
|
||||
'redirect_to' => 'Redirect to',
|
||||
'redirect_to_desc' => 'Page name to redirect to after update, sign in or registration.',
|
||||
'code_param' => 'Activation Code Param',
|
||||
'code_param_desc' => 'The page URL parameter used for the registration activation code',
|
||||
'force_secure' => 'Force secure protocol',
|
||||
'force_secure_desc' => 'Always redirect the URL with the HTTPS schema.',
|
||||
'invalid_user' => 'A user was not found with the given credentials.',
|
||||
'invalid_activation_code' => 'Invalid activation code supplied.',
|
||||
'invalid_deactivation_pass' => 'The password you entered was invalid.',
|
||||
'invalid_current_pass' => 'The current password you entered was invalid.',
|
||||
'success_activation' => 'Successfully activated your account.',
|
||||
'success_deactivation' => 'Successfully deactivated your account. Sorry to see you go!',
|
||||
'success_saved' => 'Settings successfully saved!',
|
||||
'login_first' => 'You must be logged in first!',
|
||||
'already_active' => 'Your account is already activated!',
|
||||
'activation_email_sent' => 'An activation email has been sent to your email address.',
|
||||
'activation_by_admin' => 'You have successfully registered. Your account is not yet active and must be approved by an administrator.',
|
||||
'registration_disabled' => 'Registrations are currently disabled.',
|
||||
'registration_throttled' => 'Registration is throttled. Please try again later.',
|
||||
'sign_in' => 'Sign in',
|
||||
'register' => 'Register',
|
||||
'full_name' => 'Full Name',
|
||||
'email' => 'Email',
|
||||
'password' => 'Password',
|
||||
'login' => 'Login',
|
||||
'new_password' => 'New Password',
|
||||
'new_password_confirm' => 'Confirm New Password',
|
||||
'update_requires_password' => 'Confirm password on update',
|
||||
'update_requires_password_comment' => 'Require the current password of the user when changing their profile.',
|
||||
'activation_page' => 'Activation Page',
|
||||
'activation_page_comment' => 'Select a page to use for activating the user account',
|
||||
'reset_page' => 'Reset Page',
|
||||
'reset_page_comment' => 'Select a page to use for resetting the account password',
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Reset Password',
|
||||
'reset_password_desc' => 'Forgotten password form.',
|
||||
'code_param' => 'Reset Code Param',
|
||||
'code_param_desc' => 'The page URL parameter used for the reset code'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Session',
|
||||
'session_desc' => 'Adds the user session to a page and can restrict page access.',
|
||||
'security_title' => 'Allow only',
|
||||
'security_desc' => 'Who is allowed to access this page.',
|
||||
'all' => 'All',
|
||||
'users' => 'Users',
|
||||
'guests' => 'Guests',
|
||||
'allowed_groups_title' => 'Allow groups',
|
||||
'allowed_groups_description' => 'Choose allowed groups or none to allow all groups',
|
||||
'redirect_title' => 'Redirect to',
|
||||
'redirect_desc' => 'Page name to redirect if access is denied.',
|
||||
'logout' => 'You have been successfully logged out!',
|
||||
'stop_impersonate_success' => 'You are no longer impersonating a user.',
|
||||
'check_token' => 'Use token authentication',
|
||||
'check_token_desc' => 'Check this box to allow authentication using a bearer token.',
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,168 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'User',
|
||||
'description' => 'Front-end user management.',
|
||||
'tab' => 'Users',
|
||||
'access_users' => 'Administrar Usuarios',
|
||||
'access_groups' => 'Administrar Grupos de Usuarios',
|
||||
'access_settings' => 'Administrar Ajustes de Usuario'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Usuarios',
|
||||
'all_users' => 'Todos los Usuarios',
|
||||
'new_user' => 'Nuevo Usuario',
|
||||
'list_title' => 'Administrar Usuarios',
|
||||
'activating' => 'Activando...',
|
||||
'trashed_hint_title' => 'El usuario ha desactivado su cuenta',
|
||||
'trashed_hint_desc' => 'Éste usuario ha desactivado su cuenta y no quiere volver a aparecer en el sitio. Ellos pueden restaurar su cuenta en cualquier momento al re-ingresar.',
|
||||
'banned_hint_title' => 'El usuario ha sido baneado',
|
||||
'banned_hint_desc' => 'Éste usuario ha sido baneado por un administrador y estará imposibilitado para ingresar.',
|
||||
'activate_warning_title' => 'El usuario no esta activado!',
|
||||
'activate_warning_desc' => 'Éste usuario no esta activado y quizá no pueda ingresar.',
|
||||
'activate_confirm' => 'Realmente desea activar éste usuario?',
|
||||
'activate_manually' => 'Activar éste usuario manualmente',
|
||||
'delete_confirm' => 'Realmente desea eliminar éste usuario?',
|
||||
'activated_success' => 'El usuario ha sido activado con éxito!',
|
||||
'return_to_list' => 'Regresar a la lista de usuarios',
|
||||
'delete_selected' => 'Eliminar seleccionados',
|
||||
'delete_selected_confirm' => 'Eliminar los usuarios seleccionados?',
|
||||
'delete_selected_empty' => 'No hay usuarios seleccionados para eliminar.',
|
||||
'delete_selected_success' => 'Los usuarios seleccionados se eliminaron con éxito.',
|
||||
'deactivate_selected' => 'Desactivar seleccionados',
|
||||
'deactivate_selected_confirm' => 'Desactivar los usuarios seleccionados?',
|
||||
'deactivate_selected_empty' => 'No hay usuarios seleccionados para desactivar.',
|
||||
'deactivate_selected_success' => 'Los usuarios seleccionados se desactivaron con éxito.',
|
||||
'restore_selected' => 'Reactivar seleccionados',
|
||||
'restore_selected_confirm' => 'Reactivar los usuarios seleccionados?',
|
||||
'restore_selected_empty' => 'No hay usuarios seleccionados para reactivar.',
|
||||
'restore_selected_success' => 'Los usuarios seleccionados se reactivaron con éxito.',
|
||||
'ban_selected' => 'Suspender seleccionados (Banear)',
|
||||
'ban_selected_confirm' => 'Suspender los usuarios seleccionados?',
|
||||
'ban_selected_empty' => 'No hay usuarios seleccionados para suspender.',
|
||||
'ban_selected_success' => 'Los usuarios seleccionados se suspendieron con éxito.',
|
||||
'unban_selected' => 'Reanudar seleccionados (Baneados)',
|
||||
'unban_selected_confirm' => 'Reanudar los usuarios seleccionados?',
|
||||
'unban_selected_empty' => 'No hay usuarios seleccionados para reanudar.',
|
||||
'unban_selected_success' => 'Los usuarios seleccionados se reanudaron con éxito.',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Usuarios',
|
||||
'menu_label' => 'Ajustes de Usuario',
|
||||
'menu_description' => 'Administrar los ajustes de usuario.',
|
||||
'activation_tab' => 'Activación',
|
||||
'signin_tab' => 'Ingreso',
|
||||
'registration_tab' => 'Registración',
|
||||
'notifications_tab' => 'Notificaciones',
|
||||
'allow_registration' => 'Permitir registro de ususarios',
|
||||
'allow_registration_comment' => 'Si esta desactivado, los usuarios solo podrán ser creados por administradores.',
|
||||
'activate_mode' => 'Modo de Activación',
|
||||
'activate_mode_comment' => 'Seleccione la forma en que una cuenta debe ser activada.',
|
||||
'activate_mode_auto' => 'Automático',
|
||||
'activate_mode_auto_comment' => 'Se activa automáticamente en la registración.',
|
||||
'activate_mode_user' => 'Usuario',
|
||||
'activate_mode_user_comment' => 'El usuario activa su propia cuenta a través del e-mail.',
|
||||
'activate_mode_admin' => 'Administrador',
|
||||
'activate_mode_admin_comment' => 'Solo los administradores pueden activar usuarios.',
|
||||
'require_activation' => 'El ingreso requiere activación',
|
||||
'require_activation_comment' => 'Los usuarios necesitarán una cuenta activa para ingresar.',
|
||||
'use_throttle' => 'Regular intentos fallidos',
|
||||
'use_throttle_comment' => 'Repetidos intentos fallidos de ingreso suspenderán temporalmente al usuario.',
|
||||
'login_attribute' => 'Atributo para ingreso',
|
||||
'login_attribute_comment' => 'Seleccione que atributo sera utilizado para el ingreso.',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Usuario',
|
||||
'id' => 'ID',
|
||||
'username' => 'Nombre de Usuario',
|
||||
'name' => 'Nombre',
|
||||
'surname' => 'Apellido',
|
||||
'email' => 'Email',
|
||||
'created_at' => 'Registrado',
|
||||
'create_password' => 'Crear Contraseña',
|
||||
'create_password_comment' => 'Ingrese una nueva contraseña.',
|
||||
'reset_password' => 'Reiniciar contraseña ',
|
||||
'reset_password_comment' => 'Para reiniciar esta contraseña, ingrese un nueva aquí.',
|
||||
'confirm_password' => 'Confirmar contraseña',
|
||||
'confirm_password_comment' => 'Ingrese nuevamente la contraseña para confirmarla.',
|
||||
'groups' => 'Grupos',
|
||||
'empty_groups' => 'No hay grupos de usuarios disponibles.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Detalles',
|
||||
'account' => 'Cuenta'
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Grupo',
|
||||
'id' => 'ID',
|
||||
'name' => 'Nombre',
|
||||
'description_field' => 'Descripción',
|
||||
'code' => 'Código',
|
||||
'code_comment' => 'Ingrese un código único para identificar a este grupo.',
|
||||
'created_at' => 'Creado',
|
||||
'users_count' => 'Usuarios'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Grupos',
|
||||
'all_groups' => 'Grupos de Usuario',
|
||||
'new_group' => 'Nuevo Grupo',
|
||||
'delete_selected_confirm' => 'Realmente quiere eliminar los grupos seleccionados?',
|
||||
'list_title' => 'Administrar Grupos',
|
||||
'delete_confirm' => 'Realmente quiere eliminar este grupo?',
|
||||
'delete_selected_success' => 'Los grupos seleccionados se eliminaron con éxito.',
|
||||
'delete_selected_empty' => 'No hay grupos seleccionados para eliminar.',
|
||||
'return_to_list' => 'Volver a la lista de grupos',
|
||||
'return_to_users' => 'Volver a la lista de usuarios',
|
||||
'create_title' => 'Crear Grupo',
|
||||
'update_title' => 'Editar Grupo',
|
||||
'preview_title' => 'Ver Grupo'
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'Email',
|
||||
'attribute_username' => 'Nombre de Usuario'
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Cuenta',
|
||||
'account_desc' => 'Formulario de administración de usuario.',
|
||||
'redirect_to' => 'Redirigir a',
|
||||
'redirect_to_desc' => 'Nombre de la página a redirigir luego de una actualización, ingreso o registro.',
|
||||
'code_param' => 'Parámetro del Código de Activación',
|
||||
'code_param_desc' => 'El parámetro de URL utilizado para el código de activación de registro.',
|
||||
'invalid_user' => 'No se encontraron usuarios con los datos proporcionados.',
|
||||
'invalid_activation_code' => 'Código de activación inválido.',
|
||||
'invalid_deactivation_pass' => 'La contraseña ingresada no es válida.',
|
||||
'success_activation' => 'Su cuenta fue activada con éxito.',
|
||||
'success_deactivation' => 'Su cuenta fue desactivada con éxito.',
|
||||
'success_saved' => 'Ajustes guardados con éxito!',
|
||||
'login_first' => 'Primero debes ingresar con un usuario!',
|
||||
'already_active' => 'Su cuenta ya se encuentra activada!',
|
||||
'activation_email_sent' => 'Un mail de activación fue enviado a su cuenta de correo.',
|
||||
'registration_disabled' => 'Actualmente los registros no están habilitados.',
|
||||
'sign_in' => 'Ingresar',
|
||||
'register' => 'Registrarse',
|
||||
'full_name' => 'Nombre Completo',
|
||||
'email' => 'Email',
|
||||
'password' => 'Contraseña',
|
||||
'login' => 'Iniciar Sesión',
|
||||
'new_password' => 'Nueva Contraseña',
|
||||
'new_password_confirm' => 'Confirmar Nueva Contraseña'
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Reiniciar Contraseña',
|
||||
'reset_password_desc' => 'Formulario de olvido de contraseña.',
|
||||
'code_param' => 'Parámetro del Código de Reinicio',
|
||||
'code_param_desc' => 'El parámetro de URL utilizado para el código de reinicio.'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Sesión',
|
||||
'session_desc' => 'Agrega la sesión de usuario a una pagina y permite restringir el acceso a la misma.',
|
||||
'security_title' => 'Permitir acceso a',
|
||||
'security_desc' => 'Quien tiene permiso para acceder a esta página.',
|
||||
'all' => 'Todos',
|
||||
'users' => 'Usuarios',
|
||||
'guests' => 'Invitados',
|
||||
'redirect_title' => 'Redirigir a',
|
||||
'redirect_desc' => 'Nombre de la página a redirigir si el acceso es denegado.',
|
||||
'logout' => 'La sesión se ha cerrado con éxito!'
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,212 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Usuarios',
|
||||
'description' => 'Administración de usuarios en la interfaz del sistema.',
|
||||
'tab' => 'Usuarios',
|
||||
'access_users' => 'Administrar usuarios',
|
||||
'access_groups' => 'Administrar grupos',
|
||||
'access_settings' => 'Preferencias de usuario',
|
||||
'impersonate_user' => 'Personificar Usuario'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Usuarios',
|
||||
'all_users' => 'Todos los usuarios',
|
||||
'new_user' => 'Nuevo usuario',
|
||||
'list_title' => 'Administrar usuarios',
|
||||
'trashed_hint_title' => 'El usuario tiene su perfil desactivado',
|
||||
'trashed_hint_desc' => 'Este usuario tiene desactivado su perfil y no quiere aparecer en el sitio. Los usuarios pueden reactivar su perfil en cualquier momento iniciando sesión nuevamente.',
|
||||
'banned_hint_title' => 'El Usuario ha sido bloqueado',
|
||||
'banned_hint_desc' => 'Este usuario ha sido bloqueado por un administrador y no será capaz de iniciar sesión.',
|
||||
'guest_hint_title' => 'Este usuario es un invitado',
|
||||
'guest_hint_desc' => 'El usuario es almacenado sólo para efectos de referencia y necesita registrarse antes de iniciar sesión.',
|
||||
'activate_warning_title' => '¡El usuario no se pudo activar!',
|
||||
'activate_warning_desc' => 'Este usuario todavía no ha sido activado y no será capaz de iniciar sesión.',
|
||||
'activate_confirm' => '¿Realmente desea activar este usuario?',
|
||||
'activated_success' => '¡El usuario ha sido activado exitosamente!',
|
||||
'activate_manually' => 'Activar usuario manualmente',
|
||||
'convert_guest_confirm' => '¿Convertir este invitado en usuario?',
|
||||
'convert_guest_manually' => 'Convertir a usuario registrado',
|
||||
'convert_guest_success' => 'El usuario ha sido convertido a una cuenta registrada',
|
||||
'impersonate_user' => 'Iniciar sesión como este usuario',
|
||||
'impersonate_confirm' => '¿Estás seguro que quieres iniciar sesión como este usuario? Puedes volver a tu estado original cerrando la sesión.',
|
||||
'impersonate_success' => 'Has iniciado sesión como este usuario correctamente.',
|
||||
'delete_confirm' => '¿Realmente desea eliminar este usuario?',
|
||||
'unban_user' => 'Desbloquear este usuario',
|
||||
'unban_confirm' => '¿Realmente desea desbloquear este usuario?',
|
||||
'unbanned_success' => 'El usuario ha sido desbloqueado',
|
||||
'return_to_list' => 'Volver a la lista de usuarios',
|
||||
'update_details' => 'Actualizar detalles',
|
||||
'bulk_actions' => 'Acciones en masa',
|
||||
'delete_selected' => 'Eliminar usuarios seleccionados',
|
||||
'delete_selected_confirm' => '¿Eliminar los usuarios seleccionados?',
|
||||
'delete_selected_empty' => 'No hay usuarios seleccionados a eliminar.',
|
||||
'delete_selected_success' => 'Se eliminaron exitosamente los usuarios seleccionados.',
|
||||
'activate_selected' => 'Activar usuarios seleccionados',
|
||||
'activate_selected_confirm' => '¿Activar los usuarios seleccionados?',
|
||||
'activate_selected_empty' => 'No hay usuarios seleccionados para activar.',
|
||||
'activate_selected_success' => 'Los usuarios seleccionados han sido activados exitosamente.',
|
||||
'deactivate_selected' => 'Desactivar usuarios seleccionados',
|
||||
'deactivate_selected_confirm' => '¿Desactivar los usuarios seleccionados?',
|
||||
'deactivate_selected_empty' => 'No hay usuarios seleccionados a desactivar.',
|
||||
'deactivate_selected_success' => 'Se desactivaron exitosamente los usuarios seleccionados.',
|
||||
'restore_selected' => 'Restablecer los usuarios seleccionados',
|
||||
'restore_selected_confirm' => '¿Restablecer los usuarios seleccionados?',
|
||||
'restore_selected_empty' => 'No hay usuarios seleccionados a restablecer.',
|
||||
'restore_selected_success' => 'Se restablecieron exitosamente los usuarios seleccionados.',
|
||||
'ban_selected' => 'Bloquear usuarios seleccionados',
|
||||
'ban_selected_confirm' => '¿Bloquear los usuarios seleccionados?',
|
||||
'ban_selected_empty' => 'No hay usuarios seleccionados a bloquear.',
|
||||
'ban_selected_success' => 'Se bloquearon exitosamente los usuarios seleccionados.',
|
||||
'unban_selected' => 'Desbloquear usuarios seleccionados',
|
||||
'unban_selected_confirm' => '¿Desbloquear los usuarios seleccionados?',
|
||||
'unban_selected_empty' => 'No hay usuarios seleccionados a desbloquear.',
|
||||
'unban_selected_success' => 'Se desbloquearon exitosamente los usuarios seleccionados.',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Usuarios',
|
||||
'menu_label' => 'Preferencias de usuario',
|
||||
'menu_description' => 'Administra las preferencias de los usuarios.',
|
||||
'activation_tab' => 'Activación',
|
||||
'signin_tab' => 'Iniciar sesión',
|
||||
'registration_tab' => 'Registro',
|
||||
'notifications_tab' => 'Notificaciones',
|
||||
'allow_registration' => 'Permitir registro de usuarios',
|
||||
'allow_registration_comment' => 'Si está deshabilitado los usuarios sólo pueden ser creados por administradores.',
|
||||
'min_password_length' => 'Largo mínimo de la contraseña',
|
||||
'min_password_length_comment' => 'La cantidad mínima de caracteres requerida para contraseñas.',
|
||||
'activate_mode' => 'Modo de activación',
|
||||
'activate_mode_comment' => 'Seleccione como debería ser activado un perfil de usuario.',
|
||||
'activate_mode_auto' => 'Automática',
|
||||
'activate_mode_auto_comment' => 'Activada automáticamente al registrarse.',
|
||||
'activate_mode_user' => 'Usuario',
|
||||
'activate_mode_user_comment' => 'El usuario activa su perfil usando su e-mail.',
|
||||
'activate_mode_admin' => 'Administrador',
|
||||
'activate_mode_admin_comment' => 'Sólo un administrador puede activar un usuario.',
|
||||
'require_activation' => 'Inicio de sesión requiere activación.',
|
||||
'require_activation_comment' => 'Usuarios deben tener una perfil activado para poder iniciar sesión.',
|
||||
'use_throttle' => 'Límite de intentos',
|
||||
'use_throttle_comment' => 'Intentos de inicios de sesión seguidos que provocaran la suspensión temporal del perfil de usuario.',
|
||||
'block_persistence' => 'Prevenir sesiones concurrentes',
|
||||
'block_persistence_comment' => 'Prevenir que los usuarios habilitados puedan iniciar sesión desde múltiples dispositivos.',
|
||||
'login_attribute' => 'Atributo de inicio de sesión',
|
||||
'login_attribute_comment' => 'Seleccione que dato de usuario debería ser utilizado para el inicio de sesión.',
|
||||
'remember_login' => 'Modo recordar usuario',
|
||||
'remember_login_comment' => 'Selecciona si la sesión del usuario debe ser persistente.',
|
||||
'remember_always' => 'Siempre',
|
||||
'remember_never' => 'Nunca',
|
||||
'remember_ask' => 'Preguntar al usuario al iniciar sesión',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Usuario',
|
||||
'id' => 'ID',
|
||||
'username' => 'Nombre de usuario',
|
||||
'name' => 'Nombres',
|
||||
'name_empty' => 'Anónimo',
|
||||
'surname' => 'Apellidos',
|
||||
'email' => 'E-mail',
|
||||
'created_at' => 'Registrado',
|
||||
'last_seen' => 'Última vez visto',
|
||||
'is_guest' => 'Invitado',
|
||||
'joined' => 'Incorporado',
|
||||
'is_online' => 'En línea ahora',
|
||||
'is_offline' => 'Actualmente desconectado',
|
||||
'send_invite' => 'Enviar invitación por email',
|
||||
'send_invite_comment' => 'Envía un mensaje de bienvenida con información de inicio de sesión y contraseña.',
|
||||
'create_password' => 'Crear contraseña',
|
||||
'create_password_comment' => 'Ingrese nueva contraseña para iniciar sesión',
|
||||
'reset_password' => 'Restablecer contraseña',
|
||||
'reset_password_comment' => 'Para restablecer la contraseña del usuario, ingrese una nueva contraseña aquí.',
|
||||
'confirm_password' => 'Confirmación de contraseña',
|
||||
'confirm_password_comment' => 'Ingrese la contraseña nuevamente para confirmarla.',
|
||||
'groups' => 'Grupos',
|
||||
'empty_groups' => 'No hay grupos de usuarios disponibles.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Detalles',
|
||||
'account' => 'Perfil',
|
||||
'block_mail' => 'Bloquear todos los envios de e-mail para este usuario.',
|
||||
'status_guest' => 'Invitado',
|
||||
'status_activated' => 'Activado',
|
||||
'status_registered' => 'Registrado',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Grupo',
|
||||
'id' => 'ID',
|
||||
'name' => 'Nombre',
|
||||
'description_field' => 'Descripción',
|
||||
'code' => 'Código',
|
||||
'code_comment' => 'Ingrese un código único para identificar este grupo.',
|
||||
'created_at' => 'Creado',
|
||||
'users_count' => 'Usuarios'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Grupos',
|
||||
'all_groups' => 'Grupos de usuarios',
|
||||
'new_group' => 'Nuevo grupo',
|
||||
'delete_selected_confirm' => '¿Realmente quiere eliminar todos los grupos seleccionados?',
|
||||
'list_title' => 'Administrar grupos',
|
||||
'delete_confirm' => '¿Realmente desea eliminar este grupo?',
|
||||
'delete_selected_success' => 'Los grupos seleccionados fueron eliminados exitosamente.',
|
||||
'delete_selected_empty' => 'No hay grupos seleccionados para eliminar.',
|
||||
'return_to_list' => 'Volver a la lista de grupos',
|
||||
'return_to_users' => 'Volver a la lista de usuarios',
|
||||
'create_title' => 'Añadir grupo',
|
||||
'update_title' => 'Editar grupo',
|
||||
'preview_title' => 'Vista previa de grupo'
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'Email',
|
||||
'attribute_username' => 'Nombre de usuario'
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Perfil',
|
||||
'account_desc' => 'Formulario para gestionar datos del usuario.',
|
||||
'banned' => 'Los sentimos, este usuario no se encuentra activado actualmente. Por favor contáctanos para mayor asistencia.',
|
||||
'redirect_to' => 'redirigir a',
|
||||
'redirect_to_desc' => 'Página hacia la cual redirigir despues de una actualización, inicio de sesión o registro.',
|
||||
'code_param' => 'Parámetro para el código de activación',
|
||||
'code_param_desc' => 'El parámetro de URL en la página usuado para el código de activación del registro.',
|
||||
'force_secure' => 'Forzar protocolo seguro',
|
||||
'force_secure_desc' => 'Siempre redirigir la URL utilizando HTTPS.',
|
||||
'invalid_user' => 'No se encontro un usuario con las credenciales proporcionadas.',
|
||||
'invalid_activation_code' => 'El código de activación que proporcionó es inválido.',
|
||||
'invalid_deactivation_pass' => 'La contraseña que ingresó es inválida.',
|
||||
'success_activation' => 'Su perfil fue activado exitosamente.',
|
||||
'success_deactivation' => 'Su perfil fue desactivado exitosamente. ¡Nos apena mucho su partida!',
|
||||
'success_saved' => '¡Preferencias guardadas exitosamente!',
|
||||
'login_first' => '¡Debe iniciar sesión primero!',
|
||||
'already_active' => '¡Su perfil ya estaba activado!',
|
||||
'activation_email_sent' => 'Un e-mail de confirmación ha sido enviado a su dirección de correo electrónico.',
|
||||
'registration_disabled' => 'El registro de usuarios está temporalmente deshabilitado.',
|
||||
'sign_in' => 'Iniciar sesión',
|
||||
'register' => 'Registro',
|
||||
'full_name' => 'Nombre completo',
|
||||
'email' => 'E-mail',
|
||||
'password' => 'Contraseña',
|
||||
'login' => 'Iniciar sesión',
|
||||
'new_password' => 'Nueva contraseña',
|
||||
'new_password_confirm' => 'Confirme su nueva contraseña'
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Restablecer contraseña',
|
||||
'reset_password_desc' => 'Formulario de contraseña olvidada.',
|
||||
'code_param' => 'Parámetro para el código de restablecimiento',
|
||||
'code_param_desc' => 'El parámetro de URL de la página usado para el código de restablecimiento.e'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Sesión',
|
||||
'session_desc' => 'Agrega la sesión del usuario a una página y puede restringir el acceso a dicha página.',
|
||||
'security_title' => 'Permitir solamente',
|
||||
'security_desc' => 'Quién es permitido acceder a esta página.',
|
||||
'all' => 'Todos',
|
||||
'users' => 'Usuarios',
|
||||
'guests' => 'Invitados',
|
||||
'allowed_groups_title' => 'Permitir grupos',
|
||||
'allowed_groups_description' => 'Selecciona los grupos permitidos o ninguno para permitir todos los grupos',
|
||||
'redirect_title' => 'redirigir a',
|
||||
'redirect_desc' => 'Página a la cual redirigir si el acceso es denegado.',
|
||||
'logout' => '¡Ha terminado exitosamente su sesión!',
|
||||
'stop_impersonate_success' => 'Has dejado de personificar al usuario.',
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,191 @@
|
|||
<?php return [
|
||||
'plugin' => [
|
||||
'name' => 'کاربر',
|
||||
'description' => 'مدیریت کاربران',
|
||||
'tab' => 'کاربران',
|
||||
'access_users' => 'مدیریت کاربران',
|
||||
'access_groups' => 'مدیریت گروههای کاربران',
|
||||
'access_settings' => 'مدیریت تنطیمات کاربران',
|
||||
'impersonate_user' => 'از دید کاربران'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'کاربران',
|
||||
'all_users' => 'همه کاربران',
|
||||
'new_user' => 'کاربر جدید',
|
||||
'list_title' => 'مدیریت کاربران',
|
||||
'trashed_hint_title' => 'کاربر حساب خود را غیر فعال کرده است',
|
||||
'trashed_hint_desc' => 'این کاربر حساب خود را غیر فعال کرده است و علاقه ای به ادامه فعالیت در سایت را ندارد. کاربران با ورود مجدد به سایت میتوانند حساب خود را فعال کنند.',
|
||||
'banned_hint_title' => 'حساب کاربری مسدود است',
|
||||
'banned_hint_desc' => 'حساب این کاربر توسط مدیر مسدود است و نمی تواند به سیستم وارد شود',
|
||||
'guest_hint_title' => 'این کاربر مهمان است',
|
||||
'guest_hint_desc' => 'این کاربر برای مرجع دهی ثبت شده است باید ثبت نام و وارد سیستم شود.',
|
||||
'activate_warning_title' => 'کاربر فعال نمیباشد!',
|
||||
'activate_warning_desc' => 'این کاربر فعال نشده است و نمیتواند وارد سایت شود.',
|
||||
'activate_confirm' => 'آیا از فعالسازی این کاربر اطمینان دارید؟',
|
||||
'activated_success' => 'کاربر با موفقیت فعال شد.',
|
||||
'activate_manually' => 'فعال سازی دستی این کاربر',
|
||||
'convert_guest_confirm' => 'تبدیل این کاربر به مهمان؟',
|
||||
'convert_guest_manually' => 'تبدیل به کاربر ثبت نام شده',
|
||||
'convert_guest_success' => 'کارب به حالت ثبت نام شده تغییر پیدا کرد',
|
||||
'delete_confirm' => 'آیا از حذف این کاربر اطمینان دارید؟',
|
||||
'unban_user' => 'رفع انتسداد حساب کاربری',
|
||||
'unban_confirm' => 'آیا از رفع انسداد حساب کاربری این شخص اطمینان دارید؟',
|
||||
'unbanned_success' => 'حساب کاربری رفع انسداد شد',
|
||||
'return_to_list' => 'بازگشت به لیست کاربران',
|
||||
'update_details' => 'ویرایش جزئیات',
|
||||
'bulk_actions' => 'اعمال گروهی',
|
||||
'delete_selected' => 'حذف انتخاب شده',
|
||||
'delete_selected_confirm' => 'آیا از حذف کاربران انتخاب شده اطمینان داری؟',
|
||||
'delete_selected_empty' => 'کاربری جهت حذف انتخاب نشده است.',
|
||||
'delete_selected_success' => 'کاربران انتخاب شده با موفقیت حذف شدند.',
|
||||
'deactivate_selected' => 'غیر فعال سازی انتخاب شده',
|
||||
'deactivate_selected_confirm' => 'کاربران انتخاب شده غیرفعال شوند؟',
|
||||
'deactivate_selected_empty' => 'کاربری برای غیر فعال سازی انتخاب نشده است',
|
||||
'deactivate_selected_success' => 'کاربران انتخاب شده با موفقیت غیرفعال شدند',
|
||||
'restore_selected' => 'بازسازی انتخاب شده ها',
|
||||
'restore_selected_confirm' => 'کاربرانت انتخاب شده بازسازی شوند؟',
|
||||
'restore_selected_empty' => 'کاربری برای بازسازی انتخاب نشده',
|
||||
'restore_selected_success' => 'کاربران انتخاب شده با موفقیت بازسازی شدند',
|
||||
'ban_selected' => 'مسدود کردن انتخاب شده ها',
|
||||
'ban_selected_confirm' => 'کاربران انتخاب شده مسدود شوند؟',
|
||||
'ban_selected_empty' => 'کاربری برای اسنداد حساب انتخاب نشده است',
|
||||
'ban_selected_success' => 'حساب کاربران انتخاب شده با موفقیت مسدود شد',
|
||||
'unban_selected' => 'رفع انسداد انتخاب شده ها',
|
||||
'unban_selected_confirm' => 'کاربران انتخاب شده رفع انسداد شوند؟',
|
||||
'unban_selected_empty' => 'کاربری برای رفع انسداد انتخاب نشده است',
|
||||
'unban_selected_success' => 'کاربران انتخاب شده با موفقیت رفع انسداد شدند',
|
||||
'activating' => 'فعال سازی...',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'کاربران',
|
||||
'menu_label' => 'تنظیمات کاربران',
|
||||
'menu_description' => 'مدیریت تنظیمات مربوط به کاربر.',
|
||||
'activation_tab' => 'فعال سازی',
|
||||
'signin_tab' => 'ورود',
|
||||
'registration_tab' => 'ایجاد حساب کاربری',
|
||||
'notifications_tab' => 'هشدار ها',
|
||||
'allow_registration' => 'به کاربران اجازه ثبت نام داده شود.',
|
||||
'allow_registration_comment' => 'اگر این گزینه غیر فعال باشد حساب کاربری فقط توسط مدیران میتواند ایجاد شود.',
|
||||
'activate_mode' => 'روش فعال سازی',
|
||||
'activate_mode_comment' => 'روشی را که میخواهید حساب های کاربری از آن طریق فعال شوند را انتخاب نمایید.',
|
||||
'activate_mode_auto' => 'خودکار',
|
||||
'activate_mode_auto_comment' => 'بهنگام ثبت نام حساب کاربری به صورت خودکار فعال شود.',
|
||||
'activate_mode_user' => 'کاربر',
|
||||
'activate_mode_user_comment' => 'کاربران حساب خود را از طریق ایمیل فعال نمایند.',
|
||||
'activate_mode_admin' => 'مدیریت',
|
||||
'activate_mode_admin_comment' => 'فقط مدیران حساب کاربری را فعال نمایید.',
|
||||
'require_activation' => 'ورود نیاز مند فعال سازی حساب کاربری می باشد',
|
||||
'require_activation_comment' => 'کاربران باید دارای حساب کاربری فعال جهت ورود باشند.',
|
||||
'use_throttle' => 'جلو گیری از ورود',
|
||||
'use_throttle_comment' => 'تکرار ورود نا موفق کاربر را به طور موقت غیر فعال میکند.',
|
||||
'login_attribute' => 'مشخصه ی ورود',
|
||||
'login_attribute_comment' => 'مشخصه ای را که کاربر برای ورود باید وارد نماید انتخاب نمایید.',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'کاربر',
|
||||
'id' => 'مشخصه',
|
||||
'username' => 'نام کاربری',
|
||||
'name' => 'نام',
|
||||
'name_empty' => 'ناشناس',
|
||||
'surname' => 'نام خانوادگی',
|
||||
'email' => 'پست الکترونیکی',
|
||||
'created_at' => 'تاریخ ثبت نام',
|
||||
'last_seen' => 'آخرین بازدید',
|
||||
'is_guest' => 'مهمان',
|
||||
'joined' => 'عضو شده',
|
||||
'is_online' => 'آنلاین',
|
||||
'is_offline' => 'هم اکنون آفلاین',
|
||||
'send_invite' => 'ارسال دعوت نامه با ایمیل',
|
||||
'send_invite_comment' => 'ارسال ایمیل خوش آمد شامل رمز عبور و نام کاربری',
|
||||
'create_password' => 'ساخت رمزعبور',
|
||||
'create_password_comment' => 'رمز جدید برای استفاده کاربر در زمان ورود را وارد کنید',
|
||||
'reset_password' => 'تنظیم مجدد کلمه عبور',
|
||||
'reset_password_comment' => 'جهت تنظیم مجدد کلمه عبور کاربر ، کلمه عبور جدید را وارد نمایید.',
|
||||
'confirm_password' => 'تایید کلمه عبور',
|
||||
'confirm_password_comment' => 'جهت تایید کلمه عبور را مجددا وارد نمایید.',
|
||||
'groups' => 'گرو ها',
|
||||
'empty_groups' => 'گروه کاربری موجود نیست',
|
||||
'avatar' => 'نمایه',
|
||||
'details' => 'جزییات',
|
||||
'account' => 'حساب کاربری',
|
||||
'block_mail' => 'هیچ ایمیلی به این کاربر ارسال نشود',
|
||||
'status_guest' => 'مهمان',
|
||||
'status_activated' => 'فعال',
|
||||
'status_registered' => 'عضو شده',
|
||||
'user' => 'user',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'گروه',
|
||||
'id' => 'مشخصه',
|
||||
'name' => 'نام',
|
||||
'description_field' => 'توضیحات',
|
||||
'code' => 'کد یکتا',
|
||||
'code_comment' => 'کد یکتایی را جهت دسترسی به این گروه وارد نمایید',
|
||||
'created_at' => 'تاریخ ایجاد',
|
||||
'users_count' => 'کاربران',
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'گروه ها',
|
||||
'all_groups' => 'گروه های کاربر',
|
||||
'new_group' => 'گروه جدید',
|
||||
'delete_selected_confirm' => 'آیا از حذف گروه های انتخاب شده اطمینان دارید؟',
|
||||
'list_title' => 'مدیریت گروه ها',
|
||||
'delete_confirm' => 'آیا از حذف این گروه اطمینان دارید؟',
|
||||
'delete_selected_success' => 'گروه های انتخاب شده با موفقیت حذف شدند.',
|
||||
'delete_selected_empty' => 'گروهی جهت حذف انتخاب نشده است.',
|
||||
'return_to_list' => 'بازگشت به لیست گروه ها',
|
||||
'return_to_users' => 'بازگشت به لیست کاربران',
|
||||
'create_title' => 'ایجاد گروه کاربری جدید',
|
||||
'update_title' => 'ویرایش گروه کاربری',
|
||||
'preview_title' => 'پیش نمایش گروه کاربری',
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'پست الکترونیکی',
|
||||
'attribute_username' => 'نام کاربری',
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'حساب کاربری',
|
||||
'account_desc' => 'فرم مدیریت کاربران.',
|
||||
'redirect_to' => 'انتقال به',
|
||||
'redirect_to_desc' => 'نام صفحه ای که کاربر پس از ورود باید به آن صفحه منتقل شود.',
|
||||
'code_param' => 'پارامتر کد فعال سازی',
|
||||
'code_param_desc' => 'پارامتر آدرس صفحه جهت استفاده در کد فعال سازی بهنگام ثبت نام',
|
||||
'invalid_user' => 'کاربری با اطلاعات وارد شده یافت نشد.',
|
||||
'invalid_activation_code' => 'مد فعالسازی معتبر نمیباشد',
|
||||
'invalid_deactivation_pass' => 'کلمه عبور وارد شده صحیح نمی باشد.',
|
||||
'success_activation' => 'حساب کاربری شما با موفقیت فعال شد.',
|
||||
'success_deactivation' => 'حساب شما با موفقیت غیر فعال شد. از رفتن شما متاسفیم.',
|
||||
'success_saved' => 'تنظیمات با موفقیت اعمال شدند.',
|
||||
'login_first' => 'شما باید وارد حساب کاربری خود شوید!',
|
||||
'already_active' => 'حساب کاربری شما قبلا فعال شده است!',
|
||||
'activation_email_sent' => 'یک پست الکترونیکی حاوی آدرس فعال سازی به ایمیل شما ارسال شد.',
|
||||
'registration_disabled' => 'در حال حاظر سرویس ثبت نام فعال نمی باشد.',
|
||||
'sign_in' => 'ورود',
|
||||
'register' => 'ثبت نام',
|
||||
'full_name' => 'نام کامل',
|
||||
'email' => 'پست الکترونیکی',
|
||||
'password' => 'کلمه عبور',
|
||||
'login' => 'نام کاربری',
|
||||
'new_password' => 'کلمه عبور جدید',
|
||||
'new_password_confirm' => 'تایید کلمه عبور',
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'بازنشانی کلمه عبور',
|
||||
'reset_password_desc' => 'فرم کلمه عبور فراموش شده.',
|
||||
'code_param' => 'پارامتر کد بازنشانی',
|
||||
'code_param_desc' => 'پارامتر آدرس صفحه ای که جهت کد بازنشانی استفاده خوهد شد',
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'جلسه',
|
||||
'session_desc' => 'جلسه کاربری را به صفحه جهت دسترسی کاربران اضافه می کند.',
|
||||
'security_title' => 'دسترسی برای',
|
||||
'security_desc' => 'چه کسانی میتوانند به این صفحه دسترسی داشته باشند؟',
|
||||
'all' => 'همه',
|
||||
'users' => 'کاربران',
|
||||
'guests' => 'میهمان ها',
|
||||
'redirect_title' => 'انتقال به',
|
||||
'redirect_desc' => 'نام صفحهای که در صورت عدم اجازه دسترسی کاربر به آن انتقال پیدا میکند.',
|
||||
'logout' => 'با موفقیت از سیستم خارج شدید!',
|
||||
'stop_impersonate_success' => 'دیگر در نقشِ سایر کاربران نیستید.',
|
||||
],
|
||||
];
|
||||
|
|
@ -0,0 +1,206 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Utilisateur',
|
||||
'description' => 'Gestion des utilisateurs Front-End.',
|
||||
'tab' => 'Utilisateur',
|
||||
'access_users' => 'Gérer les utilisateurs',
|
||||
'access_groups' => 'Gérer les groupes',
|
||||
'access_settings' => 'Gérer les paramètres',
|
||||
'impersonate_user' => 'Usurper l\'identité des utilisateurs'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Utilisateurs',
|
||||
'all_users' => 'Tous les utilisateurs',
|
||||
'new_user' => 'Nouvel utilisateur',
|
||||
'list_title' => 'Gestion des utilisateurs',
|
||||
'trashed_hint_title' => 'L’utilisateur a désactivé son compte',
|
||||
'trashed_hint_desc' => 'Cet utilisateur a désactivé son compte ou ne souhaite plus apparaître sur le site. Il peut réactiver son compte à tout moment en se réinscrivant.',
|
||||
'banned_hint_title' => 'L’utilisateur a été banni',
|
||||
'banned_hint_desc' => 'Cet utilisateur a été banni par l’administrateur et ne pourra plus se réinscrire.',
|
||||
'guest_hint_title' => 'Ceci est un utilisteur invité',
|
||||
'guest_hint_desc' => 'Cette utilisateur est enregistré comme référence seulement, il doit s\'inscire avant de se connecter.',
|
||||
'activate_warning_title' => 'L’utilisateur n’est pas activé !',
|
||||
'activate_warning_desc' => 'Cet utilisateur n’a pas été activé et sera dans l’impossibilité de se connecter.',
|
||||
'activate_confirm' => 'Confirmez-vous l’activation de cet utilisateur ?',
|
||||
'activated_success' => 'L’utilisateur a été activé avec succès !',
|
||||
'activate_manually' => 'Activer cet utilisateur manuellement',
|
||||
'convert_guest_confirm' => 'Convertir cet invité en utilisateur?',
|
||||
'convert_guest_manually' => 'Convertir en utilisateur enregistré',
|
||||
'convert_guest_success' => 'L\'utilisateur à été converti en compte enregistré',
|
||||
'impersonate_user' => 'Usurper l\'identité d\'un utilisateur',
|
||||
'impersonate_confirm' => 'Usurper l\'identité de cet utilisateur? Vous pouvez revenir à votre état d\'origine en vous déconnectant.',
|
||||
'impersonate_success' => 'Vous êtes en train d\'usurper l\'identité de cet utilisateur',
|
||||
'delete_confirm' => 'Confirmez-vous la suppression de cet utilisateur ?',
|
||||
'unban_user' => 'Lever le bannissement de cet utilisateur',
|
||||
'unban_confirm' => 'Confirmez-vous la levée du bannissement de cet utilisateur ?',
|
||||
'unbanned_success' => 'L’utilisateur n’est plus banni',
|
||||
'return_to_list' => 'Retour à la liste des utilisateurs',
|
||||
'update_details' => 'Mettre à jour les informations',
|
||||
'bulk_actions' => 'Actions groupées',
|
||||
'delete_selected' => 'Supprimer la sélection',
|
||||
'delete_selected_confirm' => 'Supprimer les utilisateurs sélectionnés ?',
|
||||
'delete_selected_empty' => 'Aucun utilisateur n’a été sélectionné pour la suppression.',
|
||||
'delete_selected_success' => 'Les utilisateurs sélectionnés ont été supprimés correctement.',
|
||||
'activate_selected' => 'Activer la sélection',
|
||||
'activate_selected_confirm' => 'Activer les utilisateurs sélectionnés?',
|
||||
'activate_selected_empty' => 'Aucun utilisateur sélectionné à activer.',
|
||||
'activate_selected_success' => 'Les utilisateurs sélectionnés ont été activé avec succès.',
|
||||
'deactivate_selected' => 'Désactiver la sélection',
|
||||
'deactivate_selected_confirm' => 'Désactiver les utilisateurs sélectionnés ?',
|
||||
'deactivate_selected_empty' => 'Il n’y a aucun utilisateur sélectionné à désactiver.',
|
||||
'deactivate_selected_success' => 'Les utilisateurs sélectionnés ont été désactivés avec succès.',
|
||||
'restore_selected' => 'Activer la sélection',
|
||||
'restore_selected_confirm' => 'Activer les utilisateurs sélectionnés ?',
|
||||
'restore_selected_empty' => 'Il n’y a aucun utilisateur sélectionné à activer.',
|
||||
'restore_selected_success' => 'Les utilisateurs sélectionnés ont été activés avec succès.',
|
||||
'ban_selected' => 'Bannir la sélection',
|
||||
'ban_selected_confirm' => 'Bannir les utilisateurs sélectionnés ?',
|
||||
'ban_selected_empty' => 'Il n’y a aucun utilisateur sélectionné à bannir.',
|
||||
'ban_selected_success' => 'Les utilisateurs sélectionnés ont été bannis avec succès.',
|
||||
'unban_selected' => 'Lever le bannissement de la sélection',
|
||||
'unban_selected_confirm' => 'Lever le bannissement des utilisateurs sélectionnés ?',
|
||||
'unban_selected_empty' => 'Il n’y a aucun utilisateur sélectionné pour lesquels lever le bannissement.',
|
||||
'unban_selected_success' => 'Le bannissement des utilisateurs sélectionnés a été levé avec succès.',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Utilisateurs',
|
||||
'menu_label' => 'Paramètres utilisateurs',
|
||||
'menu_description' => 'Gérer les paramètres liés aux utilisateurs.',
|
||||
'activation_tab' => 'Activation',
|
||||
'signin_tab' => 'Connexion',
|
||||
'registration_tab' => 'Enregistrement',
|
||||
'notifications_tab' => 'Notifications',
|
||||
'allow_registration' => 'Autoriser l\'inscription des utilisateurs',
|
||||
'allow_registration_comment' => 'Si désactivé, les utilisateurs ne peuvent être créés que par des administrateurs.',
|
||||
'activate_mode' => 'Mode d’activation',
|
||||
'activate_mode_comment' => 'Choisissez la méthode d’activation des comptes d’utilisateurs.',
|
||||
'activate_mode_auto' => 'Automatique',
|
||||
'activate_mode_auto_comment' => 'Activation automatique après inscription.',
|
||||
'activate_mode_user' => 'Utilisateur',
|
||||
'activate_mode_user_comment' => 'L’utilisateur active son compte par email.',
|
||||
'activate_mode_admin' => 'Administrateur',
|
||||
'activate_mode_admin_comment' => 'Seul un administrateur peut activer un utilisateur.',
|
||||
'require_activation' => 'Vérifier l’activation des comptes utilisateurs lors de la connexion',
|
||||
'require_activation_comment' => 'Si activé, les utilisateurs doivent avoir leur compte activé pour pouvoir se connecter.',
|
||||
'use_throttle' => 'Tentatives de connexion ratées',
|
||||
'use_throttle_comment' => 'En cas de tentatives répétées de connexion, l’utilisateur sera suspendu temporairement.',
|
||||
'block_persistence' => 'Empêcher les sessions simultanées',
|
||||
'block_persistence_comment' => 'Lorsque activée, les utilisateurs ne peuvent pas se connecter à plusieurs appareils en même temps.',
|
||||
'login_attribute' => 'Attribut pour l’identifiant',
|
||||
'login_attribute_comment' => 'Choisissez l’attribut utilisateur à utiliser comme identifiant.',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Utilisateur',
|
||||
'id' => 'ID',
|
||||
'username' => 'Identifiant',
|
||||
'name' => 'Prénom',
|
||||
'name_empty' => 'Anonyme',
|
||||
'surname' => 'Nom',
|
||||
'email' => 'E-mail',
|
||||
'created_at' => 'Enregistré le',
|
||||
'last_seen' => 'Dernière connexion',
|
||||
'is_guest' => 'Invité',
|
||||
'joined' => 'Inscrit le',
|
||||
'is_online' => 'Est actuellement connecté',
|
||||
'is_offline' => 'N’est pas connecté',
|
||||
'send_invite' => 'Envoyer une invitation par email',
|
||||
'send_invite_comment' => 'Envoie un message de bienvenue contenant les informations de connexion et de mot de passe.',
|
||||
'create_password' => 'Créer un mot de passe',
|
||||
'create_password_comment' => 'Entrez un nouveau mot de passe de connexion.',
|
||||
'reset_password' => 'Réinitialiser le mot de passe',
|
||||
'reset_password_comment' => 'Pour effacer le mot de passe de cet utilisateur, entrez un nouveau mot de passe ici.',
|
||||
'confirm_password' => 'Confirmation du mot de passe',
|
||||
'confirm_password_comment' => 'Entrez à nouveau le mot de passe pour le confirmer.',
|
||||
'groups' => 'Groupes',
|
||||
'empty_groups' => 'Aucun groupe d\'utilisateurs disponible.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Détails',
|
||||
'account' => 'Compte',
|
||||
'block_mail' => 'Bloquer tous les e-mails sortants à destination de cet utilisateur.',
|
||||
'status_guest' => 'Invité',
|
||||
'status_activated' => 'Activé',
|
||||
'status_registered' => 'Enregistré',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Groupe d’utilisateurs',
|
||||
'id' => 'ID',
|
||||
'name' => 'Nom',
|
||||
'description_field' => 'Description',
|
||||
'code' => 'Code',
|
||||
'code_comment' => 'Entrez un code unique pour y accéder via l’API',
|
||||
'created_at' => 'Créé le',
|
||||
'users_count' => 'Nombre d’utilisateurs',
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Groupes',
|
||||
'all_groups' => 'Tous les groupes',
|
||||
'new_group' => 'Nouveau groupe',
|
||||
'delete_selected_confirm' => 'Confirmez-vous la suppression des groupes sélectionnés ?',
|
||||
'list_title' => 'Groupes d’utilisateurs',
|
||||
'delete_confirm' => 'Confirmez-vous la suppression de ce groupe d’utilisateurs ?',
|
||||
'delete_selected_success' => 'Les groupes d’utilisateurs sélectionnés ont été supprimés avec succès.',
|
||||
'delete_selected_empty' => 'Il n’a aucun groupe d’utilisateurs sélectionné à supprimer.',
|
||||
'return_to_list' => 'Retour à la liste des groupes',
|
||||
'return_to_users' => 'Retour à la liste des utilisateurs',
|
||||
'create_title' => 'Nouveau groupe d’utilisateurs',
|
||||
'update_title' => 'Modifier un groupe d’utilisateurs',
|
||||
'preview_title' => 'Visualiser le groupe d\'utilisateurs',
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'Email',
|
||||
'attribute_username' => 'Pseudo',
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Compte',
|
||||
'account_desc' => 'Gestion du compte utilisateur.',
|
||||
'banned' => 'Désolé, cet utilisateur n\'est actuellement pas activé. S\'il vous plaît contactez-nous pour plus d\'aide.',
|
||||
'redirect_to' => 'Rediriger vers',
|
||||
'redirect_to_desc' => 'Nom de la page de redirection après la mise à jour, la connexion ou l’enregistrement.',
|
||||
'code_param' => 'Paramètre code d’activation',
|
||||
'code_param_desc' => 'URL de la page utilisée pour l’enregistrement du code d’activation',
|
||||
'force_secure' => 'Forer le protocole sécurisé',
|
||||
'force_secure_desc' => 'Toujours rediriger l\'URL avec le schéma HTTPS.',
|
||||
'invalid_user' => 'Aucun utilisateur ne correspond aux identifiants fournis.',
|
||||
'invalid_activation_code' => 'Le code d’activation fourni est invalide.',
|
||||
'invalid_deactivation_pass' => 'Le mot de passe saisi est invalide.',
|
||||
'success_activation' => 'Votre compte a été activé avec succès !',
|
||||
'success_deactivation' => 'Votre compte a été désactivé avec succès. Nous somme navrés de vous voir partir !',
|
||||
'success_saved' => 'Vos paramètres ont été enregistrés avec succès !',
|
||||
'login_first' => 'Vous devez d’abord vous connecter !',
|
||||
'already_active' => 'Votre compte a déjà été activé !',
|
||||
'activation_email_sent' => 'Un e-mail d’activation a été envoyé sur votre adresse e-mail personnelle.',
|
||||
'registration_disabled' => 'La création de compte est désactivée pour le moment.',
|
||||
'sign_in' => 'Connexion',
|
||||
'register' => 'Créer un compte',
|
||||
'full_name' => 'Nom complet',
|
||||
'email' => 'E-mail',
|
||||
'password' => 'Mot de passe',
|
||||
'login' => 'Identifiant',
|
||||
'new_password' => 'Nouveau mot de passe',
|
||||
'new_password_confirm' => 'Confirmez le nouveau mot de passe',
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Réinitialiser le mot de passe',
|
||||
'reset_password_desc' => 'Formulaire de récupération du mot de passe.',
|
||||
'code_param' => 'Code de réinitialisation',
|
||||
'code_param_desc' => 'URL de la page utilisée pour le code de réinitialisation',
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Session',
|
||||
'session_desc' => 'Ajoute la session utilisateur à une page et permet de restreindre l’accès à la page.',
|
||||
'security_title' => 'Autorisations spéciales',
|
||||
'security_desc' => 'Personne(s) autorisée(s) à accéder à cette page.',
|
||||
'all' => 'Tous',
|
||||
'users' => 'Utilisateurs',
|
||||
'guests' => 'Invités',
|
||||
'allowed_groups_title' => 'Autoriser les groupes',
|
||||
'allowed_groups_description' => 'Choisissez les groupes autorisés ou aucun pour autoriser tous les groupes',
|
||||
'redirect_title' => 'Rediriger vers',
|
||||
'redirect_desc' => 'Nom de la page de redirection au cas où l’accès est refusé.',
|
||||
'logout' => 'Vous avez été déconnecté avec succès.',
|
||||
'stop_impersonate_success' => 'Vous n\'êtes plus en train d\'usurper l\'identité d\'un utilisateur',
|
||||
],
|
||||
|
||||
];
|
||||
|
|
@ -0,0 +1,223 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Felhasználók',
|
||||
'description' => 'Felhasználók menedzselése a weboldalon.',
|
||||
'tab' => 'Felhasználók',
|
||||
'access_users' => 'Fiókok kezelése',
|
||||
'access_groups' => 'Csoportok kezelése',
|
||||
'access_settings' => 'Beállítások kezelése',
|
||||
'impersonate_user' => 'Átjelentkezett felhasználók'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Felhasználók',
|
||||
'all_users' => 'Felhasználók',
|
||||
'new_user' => 'Új felhasználó',
|
||||
'list_title' => 'Felhasználók kezelése',
|
||||
'trashed_hint_title' => 'A felhasználók felfüggeszthetik a saját fiókjukat',
|
||||
'trashed_hint_desc' => 'Amennyiben nem akarnak megjelenni a weboldalon, úgy deaktiválhatják a saját fiókjukat. Bármikor újra engedélyezhetik, ha újra sikeresen bejelentkeznek a weboldalra.',
|
||||
'banned_hint_title' => 'A felhasználó tiltva van',
|
||||
'banned_hint_desc' => 'Ezt a felhasználót már tiltotta egy adminisztrátor, így nem lesz képes bejelentkezni.',
|
||||
'guest_hint_title' => 'Vendég felhasználó',
|
||||
'guest_hint_desc' => 'Ez a felhasználó ideglenesen lett eltárolva. Regisztrálnia kell, mielőtt bejelentkezik a weboldalra.',
|
||||
'activate_warning_title' => 'Nincs aktiválva a felhasználó!',
|
||||
'activate_warning_desc' => 'Ennek a felhasználónak nem történt meg az aktiválása, így nem tud bejelentkezni.',
|
||||
'activate_confirm' => 'Valóban aktiválni akarja ezt a felhasználót?',
|
||||
'activated_success' => 'A felhasználó aktiválása megtörtént',
|
||||
'activate_manually' => 'A felhasználó kézi aktiválása',
|
||||
'convert_guest_confirm' => 'Legyen átkonvertálva teljes értékű felhasználóvá?',
|
||||
'convert_guest_manually' => 'Felhasználóvá konvertálás',
|
||||
'convert_guest_success' => 'A felhasználó konvertálása sikeresen megtörtént.',
|
||||
'impersonate_user' => 'Átjelentkezés a fiókba',
|
||||
'impersonate_confirm' => 'Biztos benne, hogy átjelentkezik a felhasználó saját fiókjába? Ezáltal a jelenlegi munkamenetből ki lesz jelentkeztetve.',
|
||||
'impersonate_success' => 'Sikeresen átjelentkezett a másik fiókba',
|
||||
'delete_confirm' => 'Valóban törölni akarja ezt a felhasználót?',
|
||||
'unban_user' => 'Felhasználó engedélyezése',
|
||||
'unban_confirm' => 'Valóban engedélyezni akarja ezt a felhasználót?',
|
||||
'unbanned_success' => 'A felhasználó sikeresen engedélyezve lett.',
|
||||
'return_to_list' => 'Vissza a felhasználó listához',
|
||||
'update_details' => 'Adatok módosítása',
|
||||
'bulk_actions' => 'Műveletek',
|
||||
'delete_selected' => 'Eltávolítás',
|
||||
'delete_selected_confirm' => 'Valóban törölni akarja a kiválasztott felhasználókat?',
|
||||
'delete_selected_empty' => 'Nincs kiválasztva felhasználó a törléshez.',
|
||||
'delete_selected_success' => 'A kiválasztott felhasználók sikeresen törölve lettek.',
|
||||
'activate_selected' => 'Aktiválás',
|
||||
'activate_selected_confirm' => 'Valóban aktiválni akarja a kiválasztott felhasználókat?',
|
||||
'activate_selected_empty' => 'Nincs kiválasztva felhasználó az aktiváláshoz.',
|
||||
'activate_selected_success' => 'A kiválasztott felhasználók sikeresen aktiválva lettek.',
|
||||
'deactivate_selected' => 'Deaktiválás',
|
||||
'deactivate_selected_confirm' => 'Valóban deaktiválni akarja a kiválasztott felhasználókat?',
|
||||
'deactivate_selected_empty' => 'Nincs kiválasztva felhasználó a deaktiváláshoz.',
|
||||
'deactivate_selected_success' => 'A kiválasztott felhasználók sikeresen deaktiválva lettek.',
|
||||
'restore_selected' => 'Visszaállítás',
|
||||
'restore_selected_confirm' => 'Valóban vissza akarja állítani a kiválasztott felhasználókat?',
|
||||
'restore_selected_empty' => 'Nincs kiválasztva felhasználó a visszaállításhoz.',
|
||||
'restore_selected_success' => 'A kiválasztott felhasználók sikeresen vissza lettek állítva.',
|
||||
'ban_selected' => 'Letiltás',
|
||||
'ban_selected_confirm' => 'Valóban tiltani akarja a kiválasztott felhasználókat?',
|
||||
'ban_selected_empty' => 'Nincs kiválasztva felhasználó a tiltáshoz.',
|
||||
'ban_selected_success' => 'A kiválasztott felhasználók sikeresen tiltva lettek.',
|
||||
'unban_selected' => 'Engedélyezés',
|
||||
'unban_selected_confirm' => 'Valóban engedélyezni akarja a kiválasztott felhasználókat?',
|
||||
'unban_selected_empty' => 'Nincs kiválasztva felhasználó az engedélyezéshez.',
|
||||
'unban_selected_success' => 'A kiválasztott felhasználók sikeresen engedélyezve lettek.',
|
||||
'unsuspend' => 'Felfüggesztés',
|
||||
'unsuspend_success' => 'A felfüggesztés sikeresen megtörtént.',
|
||||
'unsuspend_confirm' => 'Felfüggeszti a felhasználót?'
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Felhasználók',
|
||||
'menu_label' => 'Beállítások',
|
||||
'menu_description' => 'A felhasználókhoz tartozó beállítások kezelése.',
|
||||
'activation_tab' => 'Aktiválás',
|
||||
'signin_tab' => 'Bejelentkezés',
|
||||
'registration_tab' => 'Regisztráció',
|
||||
'profile_tab' => 'Profil',
|
||||
'notifications_tab' => 'Értesítések',
|
||||
'allow_registration' => 'Regisztráció engedélyezése',
|
||||
'allow_registration_comment' => 'Tiltás esetén csak az adminisztrátorok adhatnak hozzá felhasználót.',
|
||||
'activate_mode' => 'Aktiválási mód',
|
||||
'activate_mode_comment' => 'Válassza ki, hogyan kell aktiválni egy felhasználói fiókot.',
|
||||
'activate_mode_auto' => 'Automatikus',
|
||||
'activate_mode_auto_comment' => 'Regisztráláskor automatikusan aktiválva.',
|
||||
'activate_mode_user' => 'Felhasználó',
|
||||
'activate_mode_user_comment' => 'A felhasználó levéllel aktiválja a saját fiókját.',
|
||||
'activate_mode_admin' => 'Adminisztrátor',
|
||||
'activate_mode_admin_comment' => 'Csak adminisztrátor aktiválhat felhasználót.',
|
||||
'require_activation' => 'A bejelentkezéshez aktiválás szükséges',
|
||||
'require_activation_comment' => 'A felhasználóknak aktivált fiókkal kell rendelkezniük a bejelentkezéshez.',
|
||||
'use_throttle' => 'Kísérletek késleltetése',
|
||||
'use_throttle_comment' => 'Az ismétlődő sikertelen bejelentkezések ideiglenesen felfüggesztik a felhasználót.',
|
||||
'use_register_throttle' => 'Többszörös regisztráció',
|
||||
'use_register_throttle_comment' => 'Akadályozzon meg több regisztrációt ugyanarról az IP-ről, ha röviddel egymás után történnek.',
|
||||
'block_persistence' => 'Egyidejű munkamenet',
|
||||
'block_persistence_comment' => 'Engedélyezés esetén a felhasználók nem tudnak bejelentkezni egyszerre több eszközről.',
|
||||
'login_attribute' => 'Bejelentkezési azonosító',
|
||||
'login_attribute_comment' => 'Válassza ki, hogy milyen felhasználói adatot kell használni a bejelentkezéshez.',
|
||||
'remember_login' => 'Emlékezzen a felhasználóra',
|
||||
'remember_login_comment' => 'Válassza ki az alábbiak közül a munkamenet időtartalmát.',
|
||||
'remember_always' => 'Mindig',
|
||||
'remember_never' => 'Soha',
|
||||
'remember_ask' => 'Kérdezzen rá'
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Felhasználó',
|
||||
'id' => 'Azonosító',
|
||||
'username' => 'Felhasználónév',
|
||||
'name' => 'Név',
|
||||
'name_empty' => 'Ismeretlen',
|
||||
'surname' => 'Családnév',
|
||||
'email' => 'E-mail cím',
|
||||
'created_at' => 'Regisztrált',
|
||||
'last_seen' => 'Belépve',
|
||||
'is_guest' => 'Vendég',
|
||||
'joined' => 'Csatlakozva',
|
||||
'is_online' => 'Elérhető',
|
||||
'is_offline' => 'Nem elérhető',
|
||||
'send_invite' => 'Üdvözlés küldése e-mailben',
|
||||
'send_invite_comment' => 'A kimenő levél tartalmazza a felhasználónevet és jelszót.',
|
||||
'create_password' => 'Jelszó megadása',
|
||||
'create_password_comment' => 'Kérjük használjon egyedi és erős jelszót.',
|
||||
'reset_password' => 'Új jelszó megadása',
|
||||
'reset_password_comment' => 'Kérjük használjon egyedi és erős jelszót.',
|
||||
'confirm_password' => 'Jelszó megerősítése',
|
||||
'confirm_password_comment' => 'Kérjük gépelje be újra a jelszót.',
|
||||
'groups' => 'Csoportok',
|
||||
'empty_groups' => 'Nincs létrehozva csoport.',
|
||||
'avatar' => 'Profilkép',
|
||||
'details' => 'Adatok',
|
||||
'account' => 'Fiók',
|
||||
'block_mail' => 'Az összes kimenő levél tiltása ennél a felhasználónál.',
|
||||
'status_guest' => 'Vendég',
|
||||
'status_activated' => 'Aktivált',
|
||||
'status_registered' => 'Regisztrált',
|
||||
'created_ip_address' => 'Létrehozott IP cím',
|
||||
'last_ip_address' => 'Legutóbbi IP cím'
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Csoport',
|
||||
'id' => 'Azonosító',
|
||||
'name' => 'Név',
|
||||
'description_field' => 'Leírás',
|
||||
'code' => 'Kód',
|
||||
'code_comment' => 'Egyedi azonosító az API eléréshez.',
|
||||
'created_at' => 'Létrehozva',
|
||||
'users_count' => 'Felhasználók'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Csoportok',
|
||||
'all_groups' => 'Csoportok',
|
||||
'new_group' => 'Új csoport',
|
||||
'delete_selected_confirm' => 'Valóban törölni akarja a kijelölt csoportokat?',
|
||||
'list_title' => 'Csoportok kezelése',
|
||||
'delete_confirm' => 'Valóban törölni akarja ezt a csoportot?',
|
||||
'delete_selected_success' => 'A csoportok sikeresen eltávolításra kerültek.',
|
||||
'delete_selected_empty' => 'A törléshez előbb ki kell választania legalább egy csoportot.',
|
||||
'return_to_list' => 'Vissza a csoportokhoz',
|
||||
'return_to_users' => 'Vissza a felhasználókhoz',
|
||||
'create_title' => 'Csoport létrehozása',
|
||||
'update_title' => 'Csoport szerkesztése',
|
||||
'preview_title' => 'Csoport előnézete'
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'E-mail cím',
|
||||
'attribute_username' => 'Felhasználónév'
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Fiók',
|
||||
'account_desc' => 'Felhasználó kezelési űrlap.',
|
||||
'banned' => 'Sajnáljuk, ez a felhasználói fiók nincs aktiválva. Kérjük vegye fel a kapcsolatot a weboldal üzemeltetőjével.',
|
||||
'redirect_to' => 'Átirányítás',
|
||||
'redirect_to_desc' => 'Az oldal neve az átirányításhoz frissítés, bejelentkezés vagy regisztrálás után.',
|
||||
'code_param' => 'Aktiválási kód',
|
||||
'code_param_desc' => 'A regisztrálás aktiválási kódjához használt oldal webcíme.',
|
||||
'force_secure' => 'Biztonságos protokoll kényszerítése',
|
||||
'force_secure_desc' => 'A webcím mindig legyen átírányítva HTTPS protokollra.',
|
||||
'invalid_user' => 'Nem található a megadott hitelesítési adatokkal rendelkező felhasználó.',
|
||||
'invalid_activation_code' => 'A megadott aktiválási kód érvénytelen.',
|
||||
'invalid_deactivation_pass' => 'A megadott jelszó érvénytelen.',
|
||||
'invalid_current_pass' => 'A megadott jelenlegi jelszó érvénytelen.',
|
||||
'success_activation' => 'A fiók aktiválása sikerült.',
|
||||
'success_deactivation' => 'Sikeresen felfüggesztette a fiókját. További szép napot kívánunk!',
|
||||
'success_saved' => 'Sikerült menteni a beállításokat!',
|
||||
'login_first' => 'Előbb be kell jelentkeznie!',
|
||||
'already_active' => 'Már aktiválta a fiókját!',
|
||||
'activation_email_sent' => 'Az aktiválási e-mail elküldése sikeresen megtörtént.',
|
||||
'activation_by_admin' => 'A regisztráció sikeresen megtörtént! A fiókja még nem aktív, azt a weboldal üzemeltetőjének még jóvá kell hagynia.',
|
||||
'registration_disabled' => 'A regisztráció jelenleg tiltva van az oldalon.',
|
||||
'registration_throttled' => 'Az újbóli regisztráció nem engedélyezett. Kérjük próbálja meg később.',
|
||||
'sign_in' => 'Bejelentkezés',
|
||||
'register' => 'Regisztráció',
|
||||
'full_name' => 'Teljes név',
|
||||
'email' => 'E-mail cím',
|
||||
'password' => 'Jelszó',
|
||||
'login' => 'Bejelentkezés',
|
||||
'new_password' => 'Új jelszó',
|
||||
'new_password_confirm' => 'Új jelszó megerősítése',
|
||||
'update_requires_password' => 'Biztonságos adatmódosítás',
|
||||
'update_requires_password_comment' => 'A profil megváltoztatásakor a rendszer elkéri a felhasználó jelenlegi jelszavát.'
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Új jelszó megadása',
|
||||
'reset_password_desc' => 'Elfelejtett jelszó űrlap.',
|
||||
'code_param' => 'Visszaállító kód',
|
||||
'code_param_desc' => 'A visszaállító kódhoz használt oldal webcíme.'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Munkamenet',
|
||||
'session_desc' => 'Hozzáadja egy oldqalhoz a felhasználói munkamenetet és korlátozhatja az oldalhoz való hozzáférést.',
|
||||
'security_title' => 'Csak engedélyezés',
|
||||
'security_desc' => 'Ki számára engedélyezett a hozzáférés ehhez az oldalhoz.',
|
||||
'all' => 'Mindenki',
|
||||
'users' => 'Felhasználók',
|
||||
'guests' => 'Vendégek',
|
||||
'allowed_groups_title' => 'Csoportok engedélyezése',
|
||||
'allowed_groups_description' => 'Válassza ki az engedélyezni kívánt csoportokat vagy egyiket sem az összes elfogadásához.',
|
||||
'redirect_title' => 'Átirányítás',
|
||||
'redirect_desc' => 'Az átirányítandó oldal neve, ha a hozzáférés meg van tagadva.',
|
||||
'logout' => 'Sikeresen kijelentkezett!',
|
||||
'stop_impersonate_success' => 'Sikeresen visszajelentkezett az eredeti profiljába.'
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,219 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Pengguna',
|
||||
'description' => 'Manajemen pengguna front-end',
|
||||
'tab' => 'Pengguna',
|
||||
'access_users' => 'Kelola Pengguna',
|
||||
'access_groups' => 'Kelola Grup Pengguna',
|
||||
'access_settings' => 'Kelola Pengaturan Pengguna',
|
||||
'impersonate_user' => 'Menyamar Sebagai Pengguna'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Pengguna',
|
||||
'all_users' => 'Semua Pengguna',
|
||||
'new_user' => 'Pengguna Baru',
|
||||
'list_title' => 'Kelola Pengguna',
|
||||
'trashed_hint_title' => 'Pengguna telah menonaktifkan akunnya',
|
||||
'trashed_hint_desc' => 'Pengguna ini telah menonaktifkan akunnya dan tidak ingin terlihat lagi di situs ini. Mereka dapat memulihkan akun mereka kapan saja dengan login kembali.',
|
||||
'banned_hint_title' => 'Pengguna telah diblokir',
|
||||
'banned_hint_desc' => 'Pengguna ini telah diblokir oleh administrator dan tidak dapat login.',
|
||||
'guest_hint_title' => 'Ini adalah pengguna tamu',
|
||||
'guest_hint_desc' => 'Pengguna ini disimpan untuk tujuan referensi saja dan perlu mendaftar sebelum login.',
|
||||
'activate_warning_title' => 'Pengguna tidak diaktifkan!',
|
||||
'activate_warning_desc' => 'Pengguna ini belum diaktifkan dan mungkin tidak dapat login.',
|
||||
'activate_confirm' => 'Apakah Anda benar-benar ingin mengaktifkan pengguna ini?',
|
||||
'activated_success' => 'Pengguna telah diaktifkan',
|
||||
'activate_manually' => 'Aktifkan pengguna ini secara manual',
|
||||
'convert_guest_confirm' => 'Ubah tamu menjadi penguna?',
|
||||
'convert_guest_manually' => 'Ubah tamu menjadi pengguna yang terdaftar',
|
||||
'convert_guest_success' => 'Pengguna telah diubah menjadi akun yang terdaftar',
|
||||
'impersonate_user' => 'Menyamar sebagai pengguna',
|
||||
'impersonate_confirm' => 'Menyamar sebagai pengguna? Anda dapat kembali ke keadaan semula dengan logout.',
|
||||
'impersonate_success' => 'Anda sekarang menyamar sebagai pengguna ini',
|
||||
'delete_confirm' => 'Apakah Anda benar-benar ingin menghapus pengguna ini?',
|
||||
'unban_user' => 'Batalkan pemblokiran pengguna ini',
|
||||
'unban_confirm' => 'Apakah Anda benar-benar ingin membatalkan pemblokiran pengguna ini?',
|
||||
'unbanned_success' => 'Pengguna tidak lagi diblokir',
|
||||
'return_to_list' => 'Kembali ke list pengguna',
|
||||
'update_details' => 'Perbarui detail',
|
||||
'bulk_actions' => 'Aksi masal',
|
||||
'delete_selected' => 'Hapus yang dipilih',
|
||||
'delete_selected_confirm' => 'Hapus pengguna yang dipilih?',
|
||||
'delete_selected_empty' => 'Tidak ada pengguna yang dipilih untuk dihapus.',
|
||||
'delete_selected_success' => 'Berhasil menghapus pengguna yang dipilih.',
|
||||
'activate_selected' => 'Aktifkan yang dipilih',
|
||||
'activate_selected_confirm' => 'Aktifkan pengguna yang dipilih?',
|
||||
'activate_selected_empty' => 'Tidak ada pengguna yang dipilih untuk diaktifkan.',
|
||||
'activate_selected_success' => 'Berhasil mengaktifkan pengguna yang dipilih.',
|
||||
'deactivate_selected' => 'Nonaktifkan yang dipilih',
|
||||
'deactivate_selected_confirm' => 'Nonaktifkan pengguna yang dipilih?',
|
||||
'deactivate_selected_empty' => 'Tidak ada pengguna yang dipilih untuk dinonaktifkan.',
|
||||
'deactivate_selected_success' => 'Berhasil menonaktifkan pengguna yang dipilih.',
|
||||
'restore_selected' => 'Pulihkan yang dipilih',
|
||||
'restore_selected_confirm' => 'Pulihkan pengguna yang dipilih?',
|
||||
'restore_selected_empty' => 'Tidak ada pengguna yang dipilih untuk dipulihkan.',
|
||||
'restore_selected_success' => 'Berhasil memulihkan pengguna yang dipilih.',
|
||||
'ban_selected' => 'Blokir yang dipilih',
|
||||
'ban_selected_confirm' => 'Blokir pengguna yang dipilih?',
|
||||
'ban_selected_empty' => 'Tidak ada pengguna yang dipilih untuk diblokir.',
|
||||
'ban_selected_success' => 'Berhasil memblokir pengguna yang dipilih.',
|
||||
'unban_selected' => 'Batalkan pemblokiran yang dipilih',
|
||||
'unban_selected_confirm' => 'Batalkan pemblokiran pengguna yang dipilih?',
|
||||
'unban_selected_empty' => 'Tidak ada pengguna yang dipilih untuk dibatalkan pemblokirannya.',
|
||||
'unban_selected_success' => 'Berhasil membatalkan pemblokiran pengguna yang dipilih.',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Pengguna',
|
||||
'menu_label' => 'Pengaturan pengguna',
|
||||
'menu_description' => 'Kelola pengaturan berbasis pengguna',
|
||||
'activation_tab' => 'Aktivasi',
|
||||
'signin_tab' => 'Login',
|
||||
'registration_tab' => 'Pendaftaran',
|
||||
'profile_tab' => 'Profil',
|
||||
'notifications_tab' => 'Notifikasi',
|
||||
'allow_registration' => 'Izinkan pendaftaran',
|
||||
'allow_registration_comment' => 'Jika tidak diaktfkan, pengguna hanya bisa dibuat oleh administrator.',
|
||||
'activate_mode' => 'Mode aktivasi',
|
||||
'activate_mode_comment' => 'Tentukan bagaimana akun pengguna haris diaktifkan',
|
||||
'activate_mode_auto' => 'Otomatis',
|
||||
'activate_mode_auto_comment' => 'Diaktifkan secara otomatis setelah pendaftaran.',
|
||||
'activate_mode_user' => 'Pengguna',
|
||||
'activate_mode_user_comment' => 'Pengguna mengaktifkan akun mereka menggunakan email.',
|
||||
'activate_mode_admin' => 'Administrator',
|
||||
'activate_mode_admin_comment' => 'Hanya administrator yang bisa mengaktifkan pengguna.',
|
||||
'require_activation' => 'Login memerlukan aktivasi',
|
||||
'require_activation_comment' => 'Pengguna harus aktif sebelum bisa login.',
|
||||
'use_throttle' => 'Upaya penangguhan',
|
||||
'use_throttle_comment' => 'Mengulangi upaya login yang gagal akan menangguhkan pengguna untuk sementara.',
|
||||
'use_register_throttle' => 'Pencekalan pendaftaran',
|
||||
'use_register_throttle_comment' => 'Cegah pendaftaran dari IP yang sama dalam kurun waktu singkat.',
|
||||
'block_persistence' => 'Cegah sesi bersamaan',
|
||||
'block_persistence_comment' => 'Saat diaktifkan, pengguna tidak dapat login ke beberapa perangkat secara bersamaan.',
|
||||
'login_attribute' => 'Atribut login',
|
||||
'login_attribute_comment' => 'Pilih detail atribut apa yang harus digunakan untuk masuk.',
|
||||
'remember_login' => 'Mode ingat login',
|
||||
'remember_login_comment' => 'Tentukan jika sesi pengguna harus persisten.',
|
||||
'remember_always' => 'Selalu',
|
||||
'remember_never' => 'Jangan pernah',
|
||||
'remember_ask' => 'Tanyakan saat login',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Pengguna',
|
||||
'id' => 'ID',
|
||||
'username' => 'Nama pengguna',
|
||||
'name' => 'Nama',
|
||||
'name_empty' => 'Anonim',
|
||||
'surname' => 'Nama keluarga',
|
||||
'email' => 'Email',
|
||||
'created_at' => 'Terdaftar',
|
||||
'last_seen' => 'Terakhir dilihat',
|
||||
'is_guest' => 'Tamu',
|
||||
'joined' => 'Bergabung',
|
||||
'is_online' => 'Sedang online',
|
||||
'is_offline' => 'Sedang offline',
|
||||
'send_invite' => 'Kirim undangan via email',
|
||||
'send_invite_comment' => 'Kirim pesan selamat datang dengan menyertakan informasi login dan kata sandi.',
|
||||
'create_password' => 'Buat Sandi',
|
||||
'create_password_comment' => 'Buat kata sandi baru untuk masuk.',
|
||||
'reset_password' => 'Setel Ulang Kata Sandi',
|
||||
'reset_password_comment' => 'Untuk menyetel ulang sandi, masukkan kata sandi baru disini.',
|
||||
'confirm_password' => 'Konfirmasi Kata Sandi',
|
||||
'confirm_password_comment' => 'Masukkan kembali kata sandi untuk konfirmasi.',
|
||||
'groups' => 'Grup',
|
||||
'empty_groups' => 'Tidak ada grup pengguna yang tersedia.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Detail',
|
||||
'account' => 'Akun',
|
||||
'block_mail' => 'Blokir semua pesan keluar yang dikirim ke pengguna ini.',
|
||||
'status_guest' => 'Tamu',
|
||||
'status_activated' => 'Diaktifkan',
|
||||
'status_registered' => 'Terdaftar',
|
||||
'created_ip_address' => 'Alamat IP Telah Dibuat',
|
||||
'last_ip_address' => 'Alamat IP Terakhir',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Grup',
|
||||
'id' => 'ID',
|
||||
'name' => 'Nama',
|
||||
'description_field' => 'Deskripsi',
|
||||
'code' => 'Kode',
|
||||
'code_comment' => 'Masukkan kode unik untuk mengidentifikasi grup ini.',
|
||||
'created_at' => 'Dibuat',
|
||||
'users_count' => 'Pengguna'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Grup',
|
||||
'all_groups' => 'Grup Pengguna',
|
||||
'new_group' => 'Grup Baru',
|
||||
'delete_selected_confirm' => 'Apakah Anda benar-benar ingin menghapus grup yang dipilih?',
|
||||
'list_title' => 'Kelola Grup',
|
||||
'delete_confirm' => 'Apakah Anda benar-benar ingin menghapus grup ini?',
|
||||
'delete_selected_success' => 'Berhasil menghapus grup yang dipilih.',
|
||||
'delete_selected_empty' => 'Tidak ada grup yang dipilih untuk dihapus.',
|
||||
'return_to_list' => 'Kembali ke daftar grup',
|
||||
'return_to_users' => 'Kembali ke daftar pengguna',
|
||||
'create_title' => 'Buat Grup Pengguna',
|
||||
'update_title' => 'Edit Grup Pengguna',
|
||||
'preview_title' => 'Pratinjau Grup Pengguna'
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'Email',
|
||||
'attribute_username' => 'Nama Pengguna'
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Akun',
|
||||
'account_desc' => 'Formulir manajemen pengguna.',
|
||||
'banned' => 'Maaf, pengguna saat ini tidak diaktifkan. Silakan hubungi kami untuk bantuan lebih lanjut.',
|
||||
'redirect_to' => 'Alihkan ke',
|
||||
'redirect_to_desc' => 'Nama halaman untuk dialihkan setelah pembaruan, masuk atau registrasi.',
|
||||
'code_param' => 'Parameter Kode Aktivasi',
|
||||
'code_param_desc' => 'Parameter URL pada halaman yang digunakan untuk kode aktivasi pendaftaran',
|
||||
'force_secure' => 'Paksa protokol yang aman',
|
||||
'force_secure_desc' => 'Selalu mengarahkan URL dengan skema HTTPS.',
|
||||
'invalid_user' => 'Pengguna dengan kredensial yang diberikan tidak ditemukan.',
|
||||
'invalid_activation_code' => 'Kode aktivasi yang diberikan tidak valid.',
|
||||
'invalid_deactivation_pass' => 'Kata sandi yang diberikan tidak valid.',
|
||||
'invalid_current_pass' => 'Kata sandi saat ini yang Anda masukkan tidak valid.',
|
||||
'success_activation' => 'Berhasil mengaktifkan akun Anda.',
|
||||
'success_deactivation' => 'Berhasil menonaktifkan akun Anda. Sedih melihat Anda pergi!',
|
||||
'success_saved' => 'Pengaturan berhasil disimpan!',
|
||||
'login_first' => 'Anda harus masuk terlebih dahulu!',
|
||||
'already_active' => 'Akun Anda sudah diaktifkan!',
|
||||
'activation_email_sent' => 'Email aktivasi telah dikirim ke alamat email Anda.',
|
||||
'registration_disabled' => 'Pendaftaran saat ini dinonaktifkan.',
|
||||
'registration_throttled' => 'Registrasi dibatasi. Silakan coba lagi nanti.',
|
||||
'sign_in' => 'Masuk',
|
||||
'register' => 'Daftar',
|
||||
'full_name' => 'Nama Lengkap',
|
||||
'email' => 'Email',
|
||||
'password' => 'Kata Sandi',
|
||||
'login' => 'Login',
|
||||
'new_password' => 'Kata Sandi Baru',
|
||||
'new_password_confirm' => 'Konfirmasi Kata Sandi Baru',
|
||||
'update_requires_password' => 'Konfirmasikan kata sandi saat pembaruan',
|
||||
'update_requires_password_comment' => 'Kata sandi diperlukan saat mengubah profil.'
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Setel Ulang Kata Sandi',
|
||||
'reset_password_desc' => 'Formulir lupa kata sandi.',
|
||||
'code_param' => 'Parameter Penyetelan Ulang Kata Sandi',
|
||||
'code_param_desc' => 'Parameter URL pada halaman yang digunakan untuk kode reset'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Sesi',
|
||||
'session_desc' => 'Menambahkan sesi pengguna ke halaman dan dapat membatasi akses halaman.',
|
||||
'security_title' => 'Hanya izinkan',
|
||||
'security_desc' => 'Siapa yang diizinkan mengakses halaman.',
|
||||
'all' => 'Semua',
|
||||
'users' => 'Pengguna',
|
||||
'guests' => 'Tamu',
|
||||
'allowed_groups_title' => 'Izinkan grup',
|
||||
'allowed_groups_description' => 'Pilih grup yang diizinkan, atau pilih tidak ada untuk mengizinkan semua grup',
|
||||
'redirect_title' => 'Alihkan ke',
|
||||
'redirect_desc' => 'Nama halaman untuk dialihkan jika akses ditolak.',
|
||||
'logout' => 'Anda telah berhasil keluar!',
|
||||
'stop_impersonate_success' => 'Anda tidak lagi bertidak sebagai pengguna.',
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,192 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Utenti',
|
||||
'description' => 'Gestione Utenti Front-End.',
|
||||
'tab' => 'Utenti',
|
||||
'access_users' => 'Gestisci Utenti',
|
||||
'access_groups' => 'Gestisci Gruppi di Utenti',
|
||||
'access_settings' => 'Gestisci Impostazioni Utenti'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Utenti',
|
||||
'all_users' => 'Tutti gli utenti',
|
||||
'new_user' => 'Nuovo Utente',
|
||||
'list_title' => 'Gestisci Utenti',
|
||||
'trashed_hint_title' => 'L\'utente ha disabilitato il suo account',
|
||||
'trashed_hint_desc' => 'Questo utente ha disattivato il suo account and e non vuole più apparire sul sito. Possono riattivarsi in qualsiasi momento effettuando l\'accesso.',
|
||||
'banned_hint_title' => 'Questo utente è stato bannato',
|
||||
'banned_hint_desc' => 'Questo utente è stato bannato da un amministratore e non potrà piú effettuare l\'accesso',
|
||||
'guest_hint_title' => 'Questo è un utente anonimo',
|
||||
'guest_hint_desc' => 'Questo utente è salvato solo per riferimento e deve registrarsi prima di poter effettuare l\'accesso',
|
||||
'activate_warning_title' => 'Utente non attivo!',
|
||||
'activate_warning_desc' => 'Questo utente non è stato attivato e potrebbe non essere in grado di effettuare l\'accesso',
|
||||
'activate_confirm' => 'Vuoi veramente attivare questo utente?',
|
||||
'activated_success' => 'Utente Attivato',
|
||||
'activate_manually' => 'Attiva questo utente manualmente',
|
||||
'convert_guest_confirm' => 'Convertire questo utente anonimo a un utente registrato?',
|
||||
'convert_guest_manually' => 'Converti a un utente registrato',
|
||||
'convert_guest_success' => 'Utente convertito a un account registrato',
|
||||
'delete_confirm' => 'Vuoi veramente cancellare questo utente?',
|
||||
'unban_user' => 'Sblocca questo utente',
|
||||
'unban_confirm' => 'Vuoi veramente sbloccare questo utente?',
|
||||
'unbanned_success' => 'L\'utente è stato sbloccato',
|
||||
'return_to_list' => 'Ritorna alla lista utenti',
|
||||
'update_details' => 'Aggiorna dettagli',
|
||||
'bulk_actions' => 'Azioni multiple',
|
||||
'delete_selected' => 'Elimina selezionati',
|
||||
'delete_selected_confirm' => 'Eliminare gli utenti selezionati?',
|
||||
'delete_selected_empty' => 'Non ci sono utenti selezionati da cancellare.',
|
||||
'delete_selected_success' => 'Gli utenti selezionati sono stati cancellati con successo.',
|
||||
'deactivate_selected' => 'Disabilita selezionati',
|
||||
'deactivate_selected_confirm' => 'Disattivare gli utenti selezionati?',
|
||||
'deactivate_selected_empty' => 'Non ci sono utenti selezionati da disattivare.',
|
||||
'deactivate_selected_success' => 'Utenti selezionati disattivati con successo.',
|
||||
'restore_selected' => 'Ripristina selezionati',
|
||||
'restore_selected_confirm' => 'Ripristinare gli utenti selezionati?',
|
||||
'restore_selected_empty' => 'Non ci sono utenti selezionati da ripristinare.',
|
||||
'restore_selected_success' => 'Utenti selezionati ripristinati con successo.',
|
||||
'ban_selected' => 'Blocca selezionati',
|
||||
'ban_selected_confirm' => 'Bloccare l\'utente selezionato?',
|
||||
'ban_selected_empty' => 'Non ci sono utenti selezionati da bloccare.',
|
||||
'ban_selected_success' => 'Utenti selezionati bloccati con successo.',
|
||||
'unban_selected' => 'Sblocca selezionati',
|
||||
'unban_selected_confirm' => 'Sbloccare gli utenti selezionati?',
|
||||
'unban_selected_empty' => 'Non ci sono utenti selezionati da sbloccare.',
|
||||
'unban_selected_success' => 'Utenti selezionati sbloccati con successo.',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Utenti',
|
||||
'menu_label' => 'Impostazioni Utenti',
|
||||
'menu_description' => 'Gestisci impostazioni degli utenti',
|
||||
'activation_tab' => 'Attivazione',
|
||||
'signin_tab' => 'Accesso',
|
||||
'registration_tab' => 'Registrazione',
|
||||
'notifications_tab' => 'Notifiche',
|
||||
'allow_registration' => 'Consenti registrazione utenti',
|
||||
'allow_registration_comment' => 'Se questo è disabilitato gli utenti possono essere creati solo da un amministratore.',
|
||||
'activate_mode' => 'Modalità di attivazione',
|
||||
'activate_mode_comment' => 'Scegli come un utente dovrebbe essere attivato',
|
||||
'activate_mode_auto' => 'Automaticamente',
|
||||
'activate_mode_auto_comment' => 'Attivato automaticamente alla registrazione',
|
||||
'activate_mode_user' => 'Utente',
|
||||
'activate_mode_user_comment' => 'L\'utente si attiva da solo confermando la sua email',
|
||||
'activate_mode_admin' => 'Amministratore',
|
||||
'activate_mode_admin_comment' => 'Solo un amminstratore può attivare un utente.',
|
||||
'require_activation' => 'Effettuare l\'accesso richiede l\'attivazione.',
|
||||
'require_activation_comment' => 'Gli utenti devono avere un account attivato per effettuare l\'accesso.',
|
||||
'block_persistence' => 'Previeni sessioni concorrenti',
|
||||
'block_persistence_comment' => 'Quando abilitato gli utenti non possono effettuare il log-in da diversi dispositivi contemporaneamente',
|
||||
'use_throttle' => 'Limita tentativi',
|
||||
'use_throttle_comment' => 'Ripetuti tentativi errati di accesso porteranno alla sospensione temporanea dell\'utente.',
|
||||
'login_attribute' => 'Metodo di login',
|
||||
'login_attribute_comment' => 'Seleziona che attributo gli utenti useranno per effettuare il login.' ,
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Utente',
|
||||
'id' => 'ID',
|
||||
'username' => 'Username',
|
||||
'name' => 'Nome',
|
||||
'name_empty' => 'Anonimo',
|
||||
'surname' => 'Cognome',
|
||||
'email' => 'Email',
|
||||
'created_at' => 'Registrato',
|
||||
'last_seen' => 'Ultimo accesso',
|
||||
'is_guest' => 'Anonimo',
|
||||
'joined' => 'Joined',
|
||||
'is_online' => 'Online adesso',
|
||||
'is_offline' => 'Al momento non collegato',
|
||||
'send_invite' => 'Invia invito via mail',
|
||||
'send_invite_comment' => 'Invia un messaggio di benvenuto contenente le informazioni per l\'accesso',
|
||||
'create_password' => 'Crea Password',
|
||||
'create_password_comment' => 'Inserisci una nuova password per l\'accesso.',
|
||||
'reset_password' => 'Cambia la Password',
|
||||
'reset_password_comment' => 'Per cambiare la password di questo utente, inserisci una nuova password quí',
|
||||
'confirm_password' => 'Conferma Password',
|
||||
'confirm_password_comment' => 'Inserisci nuovamente la password per confermare.',
|
||||
'groups' => 'Gruppi',
|
||||
'empty_groups' => 'Non ci sono gruppi di utenti disponibili.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Dettagli',
|
||||
'account' => 'Account',
|
||||
'block_mail' => 'Blocca tutte le mail verso questo utente.',
|
||||
'status_guest' => 'Anonimo',
|
||||
'status_activated' => 'Attivato',
|
||||
'status_registered' => 'Registrato',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Gruppo',
|
||||
'id' => 'ID',
|
||||
'name' => 'Nome',
|
||||
'description_field' => 'Descrizione',
|
||||
'code' => 'Codice',
|
||||
'code_comment' => 'Inserisci un codice univoco per identificare il gruppo.',
|
||||
'created_at' => 'Creato',
|
||||
'users_count' => 'Utenti'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Gruppi',
|
||||
'all_groups' => 'Gruppi di Utenti',
|
||||
'new_group' => 'Nuovo gruppo',
|
||||
'delete_selected_confirm' => 'Vuoi veramente cancellare i gruppi selezionati?',
|
||||
'list_title' => 'Gestisci Gruppi',
|
||||
'delete_confirm' => 'Vuoi veramente cancellare questo gruppo?',
|
||||
'delete_selected_success' => 'Gruppi selezionati cancellati con successo.',
|
||||
'delete_selected_empty' => 'Non ci sono gruppi selezionati da cancellare.',
|
||||
'return_to_list' => 'Torna all\'elenco dei gruppi',
|
||||
'return_to_users' => 'Torna alla lista utenti',
|
||||
'create_title' => 'Crea Gruppo di Utenti',
|
||||
'update_title' => 'Modifica Gruppo di Utenti',
|
||||
'preview_title' => 'Anteprima Gruppo'
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'Email',
|
||||
'attribute_username' => 'Username'
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Account',
|
||||
'account_desc' => 'Form di gestione account.',
|
||||
'redirect_to' => 'Reindirizza A',
|
||||
'redirect_to_desc' => 'Pagina verso cui essere reindirizzati dopo modifica, accesso o registrazione.',
|
||||
'code_param' => 'Parametro codice di attivazione',
|
||||
'code_param_desc' => 'Parametro dell\'URL usato per il codice di attivazione',
|
||||
'invalid_user' => 'Impossibile effettuare il login con le credenziali fornite.',
|
||||
'invalid_activation_code' => 'Codice di attivazione fornito non valido.',
|
||||
'invalid_deactivation_pass' => 'La password inserita non è valida.',
|
||||
'success_activation' => 'Account attivato con successo.',
|
||||
'success_deactivation' => 'Account disattivato con successo. Ci dispiace vederti andare via!',
|
||||
'success_saved' => 'Impostazioni salvate con successo!',
|
||||
'login_first' => 'Devi prima effettuare l\'accesso!',
|
||||
'already_active' => 'Il tuo account è già stato attivato!',
|
||||
'activation_email_sent' => 'Una mail di attivazione è stata inviata al tuo indirizzo mail.',
|
||||
'activation_by_admin' => 'Registrazione effettuata con successo. Il tuo account non è ancora attivo e deve essere approvato da un amministratore.',
|
||||
'registration_disabled' => 'La registrazione è al momento disattivata.',
|
||||
'sign_in' => 'Accedi',
|
||||
'register' => 'Registra',
|
||||
'full_name' => 'Nome Completo',
|
||||
'email' => 'Email',
|
||||
'password' => 'Password',
|
||||
'login' => 'Login',
|
||||
'new_password' => 'Nuova Password',
|
||||
'new_password_confirm' => 'Conferma Nuova Password'
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Ripristina Password',
|
||||
'reset_password_desc' => 'Form password dimenticata.',
|
||||
'code_param' => 'Parametro codice di ripristino',
|
||||
'code_param_desc' => 'Parametro dell\'URL usato per il codice di ripristino'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Sessione',
|
||||
'session_desc' => 'Aggiungi la sessione utente a una pagina per limitare l\'accesso.',
|
||||
'security_title' => 'Autorizza solo',
|
||||
'security_desc' => 'Chi è autorizzato ad accedere alla pagina.',
|
||||
'all' => 'Tutti',
|
||||
'users' => 'Utenti',
|
||||
'guests' => 'Anonimi',
|
||||
'redirect_title' => 'Reindirizza a',
|
||||
'redirect_desc' => 'Nome della pagina a cui reindirizzare se l\'accesso è negato.',
|
||||
'logout' => 'Sei stato scollegato con successo!'
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,205 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => '계정',
|
||||
'description' => '프론트 엔드 회원관리',
|
||||
'tab' => '회원관리',
|
||||
'access_users' => '회원관리',
|
||||
'access_groups' => '그룹관리',
|
||||
'access_settings' => '회원설정',
|
||||
'impersonate_user' => '위장 로그인'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => '계정',
|
||||
'all_users' => '전체계정',
|
||||
'new_user' => '신규계정',
|
||||
'list_title' => '계정관리',
|
||||
'trashed_hint_title' => '사용자가 계정을 비활성화했습니다.',
|
||||
'trashed_hint_desc' => '이 사용자는 자신의 계정을 비활성화했으며 더 이상 사이트에 나타나길 원치 않습니다. 다시 로그인하면 언제든지 계정을 복원 할 수 있습니다.',
|
||||
'banned_hint_title' => '차단된 계정입니다.',
|
||||
'banned_hint_desc' => '이 사용자는 관리자에 의해 차단되었으며 로그인 할 수 없습니다.',
|
||||
'guest_hint_title' => '방문자 입니다.',
|
||||
'guest_hint_desc' => '이 계정은 참조 목적으로 만 저장되며 로그인하기 전에 등록해야합니다.',
|
||||
'activate_warning_title' => '사용자가 활성화되지 않았습니다!',
|
||||
'activate_warning_desc' => '이 사용자는 비활성화 상태이며, 로그인 할 수 없습니다.',
|
||||
'activate_confirm' => '이 사용자를 활성화하시겠습니까?',
|
||||
'activated_success' => '사용자가 활성화되었습니다.',
|
||||
'activate_manually' => '수동으로 이 사용자 활성화',
|
||||
'convert_guest_confirm' => '이 방문자를 계정으로 변환하시겠습니까?',
|
||||
'convert_guest_manually' => '등록된 사용자로 변환',
|
||||
'convert_guest_success' => '사용자가 등록된 계정으로 변환되었습니다.',
|
||||
'impersonate_user' => '가장 로그인',
|
||||
'impersonate_confirm' => '이 사용자로 가장하시겠습니까? 로그 아웃하면 원래 상태로 되돌릴 수 있습니다.',
|
||||
'impersonate_success' => '이제 이 사용자를 가장하고 있습니다.',
|
||||
'delete_confirm' => '이 사용자를 삭제하시겠습니까??',
|
||||
'unban_user' => '이 사용자의 차단을 해제합니다.',
|
||||
'unban_confirm' => '이 사용자의 차단을 해제하시겠습니까?',
|
||||
'unbanned_success' => '사용자의 차단이 해제되었습니다.',
|
||||
'return_to_list' => '사용자 목록으로 돌아가기',
|
||||
'update_details' => '세부 정보 수정',
|
||||
'bulk_actions' => '대량 작업',
|
||||
'delete_selected' => '선택 항목 삭제',
|
||||
'delete_selected_confirm' => '선택한 사용자를 삭제하시겠습니까?',
|
||||
'delete_selected_empty' => '삭제할 대상이 없습니다.',
|
||||
'delete_selected_success' => '선택한 사용자를 성공적으로 삭제했습니다.',
|
||||
'activate_selected' => '선택한 항목 활성화',
|
||||
'activate_selected_confirm' => '선택한 사용자를 활성화하시겠습니까?',
|
||||
'activate_selected_empty' => '활성화할 선택한 사용자가 없습니다.',
|
||||
'activate_selected_success' => '선택한 사용자가 성공적으로 활성화되었습니다.',
|
||||
'deactivate_selected' => '비활성화 선택됨',
|
||||
'deactivate_selected_confirm' => '선택한 사용자를 비활성화하시겠습니까?',
|
||||
'deactivate_selected_empty' => '비활성화할 선택한 사용자가 없습니다.',
|
||||
'deactivate_selected_success' => '선택한 사용자를 성공적으로 비활성화했습니다.',
|
||||
'restore_selected' => '복원 선택됨',
|
||||
'restore_selected_confirm' => '선택한 사용자를 복원하시겠습니까?',
|
||||
'restore_selected_empty' => '복원할 선택한 사용자가 없습니다.',
|
||||
'restore_selected_success' => '선택한 사용자를 성공적으로 복원했습니다.',
|
||||
'ban_selected' => '차단 선택',
|
||||
'ban_selected_confirm' => '선택한 사용자의 차단하시겠습니까?',
|
||||
'ban_selected_empty' => '차단할 선택된 사용자가 없습니다.',
|
||||
'ban_selected_success' => '선택한 사용자를 성공적으로 차단했습니다.',
|
||||
'unban_selected' => '차단해제 선택',
|
||||
'unban_selected_confirm' => '선택한 사용자를 차단해제하시겠습니까?',
|
||||
'unban_selected_empty' => '차단해제할 선택한 사용자가 없습니다.',
|
||||
'unban_selected_success' => '선택한 사용자를 성공적으로 차단해제했습니다.',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => '사용자',
|
||||
'menu_label' => '사용자 설정',
|
||||
'menu_description' => '사용자 기본 설정을 관리합니다.',
|
||||
'activation_tab' => '활성화',
|
||||
'signin_tab' => '로그인',
|
||||
'registration_tab' => '등록.',
|
||||
'notifications_tab' => '알림',
|
||||
'allow_registration' => '사용자 등록 허용',
|
||||
'allow_registration_comment' => '이 기능을 사용하지 않도록 설정하면 관리자만 사용자를 생성할 수 있습니다.',
|
||||
'activate_mode' => '활성화 모드',
|
||||
'activate_mode_comment' => '사용자 계정을 활성화할 방법을 선택합니다.',
|
||||
'activate_mode_auto' => '자동',
|
||||
'activate_mode_auto_comment' => '등록 시 자동으로 활성화됩니다.',
|
||||
'activate_mode_user' => '사용자',
|
||||
'activate_mode_user_comment' => '사용자가 메일을 사용하여 자신의 계정을 활성화합니다.',
|
||||
'activate_mode_admin' => '관리자',
|
||||
'activate_mode_admin_comment' => '관리자만 사용자를 활성화할 수 있습니다.',
|
||||
'require_activation' => '로그인을 위해서는 활성화가 필요합니다.',
|
||||
'require_activation_comment' => '사용자가 로그인하려면 활성화된 계정이여야 합니다.',
|
||||
'use_throttle' => '스로틀 시도',
|
||||
'use_throttle_comment' => '실패한 로그인 시도를 반복하면 사용자가 일시적으로 일시 중지됩니다.',
|
||||
'block_persistence' => '동시 세션 방지',
|
||||
'block_persistence_comment' => '활성화된 경우 사용자는 한번에 여러 장치에 로그인할 수 없습니다.',
|
||||
'login_attribute' => '로그인 속성',
|
||||
'login_attribute_comment' => '로그인에 사용할 기본 사용자 세부 정보를 선택합니다.',
|
||||
],
|
||||
'user' => [
|
||||
'label' => '사용자',
|
||||
'id' => '아이디',
|
||||
'username' => '사용자 이름',
|
||||
'name' => '이름',
|
||||
'name_empty' => '익명',
|
||||
'surname' => '성',
|
||||
'email' => '이메일',
|
||||
'created_at' => '등록일',
|
||||
'last_seen' => '마지막 활동',
|
||||
'is_guest' => '손님',
|
||||
'joined' => '가입된',
|
||||
'is_online' => '지금 온라인',
|
||||
'is_offline' => '현재 오프라인 상태',
|
||||
'send_invite' => '이메일로 초대 메일 보내기',
|
||||
'send_invite_comment' => '로그인 및 비밀번호 정보가 포함된 환영 메시지를 보냅니다.',
|
||||
'create_password' => '비밀번호 생성',
|
||||
'create_password_comment' => '로그인에 사용되는 새 비밀번호를 입력합니다.',
|
||||
'reset_password' => '비밀번호 재설정',
|
||||
'reset_password_comment' => '이 사용자 암호를 재설정하려면 여기에 새 암호를 입력하십시오.',
|
||||
'confirm_password' => '비밀번호 확인',
|
||||
'confirm_password_comment' => '비밀번호를 다시 입력하여 확인합니다.',
|
||||
'groups' => '그룹',
|
||||
'empty_groups' => '사용 가능한 사용자 그룹이 없습니다.',
|
||||
'avatar' => '아바타',
|
||||
'details' => '세부 사항',
|
||||
'account' => '계정',
|
||||
'block_mail' => '이 사용자에게 보내는 보내는 메일을 모두 차단합니다.',
|
||||
'status_guest' => '손님',
|
||||
'status_activated' => '활성화 상태',
|
||||
'status_registered' => '등록한',
|
||||
],
|
||||
'group' => [
|
||||
'label' => '그룹',
|
||||
'id' => '아이디',
|
||||
'name' => '이름',
|
||||
'description_field' => '설명',
|
||||
'code' => '코드',
|
||||
'code_comment' => '이 그룹을 식별하는 데 사용되는 고유 한 코드를 입력하십시오.',
|
||||
'created_at' => '생성날짜',
|
||||
'users_count' => '사용자 수'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => '그룹 목록',
|
||||
'all_groups' => '회원 그룹 목록',
|
||||
'new_group' => '새로운 그룹',
|
||||
'delete_selected_confirm' => '선택한 그룹을 삭제하시겠습니까?',
|
||||
'list_title' => '그룹 관리',
|
||||
'delete_confirm' => '이 그룹을 삭제하시겠습니까?',
|
||||
'delete_selected_success' => '선택한 그룹을 성공적으로 삭제했습니다.',
|
||||
'delete_selected_empty' => '선택된 그룹이 없습니다.',
|
||||
'return_to_list' => '그룹 목록으로 돌아가기',
|
||||
'return_to_users' => '사용자 목록으로 돌아가기',
|
||||
'create_title' => '사용자 그룹 생성',
|
||||
'update_title' => '사용자 그룹 수정',
|
||||
'preview_title' => '사용자 그룹 미리 보기',
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => '이메일',
|
||||
'attribute_username' => '회원명',
|
||||
],
|
||||
'account' => [
|
||||
'account' => '계정',
|
||||
'account_desc' => '사용자 관리 폼',
|
||||
'banned' => '죄송합니다. 이 사용자는 현재 활성화되어 있지 않습니다. 도움이 필요하시면 저희에게 연락 주십시오.',
|
||||
'redirect_to' => '리디렉션',
|
||||
'redirect_to_desc' => '로그인, 등록, 업데이트 후 리디렉션 할 페이지 이름.',
|
||||
'code_param' => '활성화 코드 값',
|
||||
'code_param_desc' => '등록 활성화 코드에 사용되는 페이지 URL파라미터',
|
||||
'force_secure' => '강제 보안 프로토콜',
|
||||
'force_secure_desc' => '항상 URL을 HTTPS스키마로 리디렉션 하십시오.',
|
||||
'invalid_user' => '지정한 자격 증명을 가진 사용자를 찾을 수 없습니다.',
|
||||
'invalid_activation_code' => '제공된 활성화 코드가 잘못되었습니다.',
|
||||
'invalid_deactivation_pass' => '입력한 암호가 잘못되었습니다.',
|
||||
'success_activation' => '계정이 활성화되었습니다.',
|
||||
'success_deactivation' => '계정이 비활성화되었습니다. 죄송합니다!',
|
||||
'success_saved' => '설정이 성공적으로 저장되었습니다!',
|
||||
'login_first' => '먼저 로그인해야 합니다!',
|
||||
'already_active' => '계정이 이미 활성화되었습니다!',
|
||||
'activation_email_sent' => '활성화 이메일이 사용자의 이메일 주소로 전송되었습니다.',
|
||||
'registration_disabled' => '가입이 현재 비활성화되어 있습니다.',
|
||||
'sign_in' => '로그인',
|
||||
'register' => '회원가입',
|
||||
'full_name' => '전체 이름',
|
||||
'email' => '이메일',
|
||||
'password' => '비밀번호',
|
||||
'login' => '로그인.',
|
||||
'new_password' => '새 암호',
|
||||
'new_password_confirm' => '암호 재확인',
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => '비밀번호 재설정',
|
||||
'reset_password_desc' => '암호 형식을 잊어 버렸습니다.',
|
||||
'code_param' => '코드 매개 변수 재설정',
|
||||
'code_param_desc' => '재설정 코드에 사용되는 페이지 URL매개 변수',
|
||||
],
|
||||
'session' => [
|
||||
'session' => '기간',
|
||||
'session_desc' => '페이지에 사용자 세션을 추가하고 페이지 액세스를 제한할 수 있습니다.',
|
||||
'security_title' => '허용',
|
||||
'security_desc' => '누가 이 페이지에 액세스 할 수 있습니까?',
|
||||
'all' => '모든.',
|
||||
'users' => '사용자',
|
||||
'guests' => '방문자',
|
||||
'allowed_groups_title' => '그룹 허용',
|
||||
'allowed_groups_description' => '허용되는 그룹을 선택하거나, 모든 그룹을 허용할 그룹이 없도록 선택하십시오.',
|
||||
'redirect_title' => '리디렉션',
|
||||
'redirect_desc' => '액세스가 거부된 경우 리디렉션 할 페이지 이름입니다.',
|
||||
'logout' => '성공적으로 로그아웃되었습니다!',
|
||||
'stop_impersonate_success' => '더 이상 사용자를 가장하지 않습니다.',
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,224 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Gebruiker',
|
||||
'description' => 'Gebruikersbeheer voor de front-end.',
|
||||
'tab' => 'Gebruikers',
|
||||
'access_users' => 'Beheer Gebruikers',
|
||||
'access_groups' => 'Beheer Groepen',
|
||||
'access_settings' => 'Gebruikersinstellingen beheren',
|
||||
'impersonate_user' => 'Inloggen als gebruikers',
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Gebruikers',
|
||||
'all_users' => 'Alle gebruikers',
|
||||
'new_user' => 'Nieuwe gebruiker',
|
||||
'list_title' => 'Beheer gebruikers',
|
||||
'trashed_hint_title' => 'Gebruiker heeft zijn account gedeactiveerd',
|
||||
'trashed_hint_desc' => 'Deze gebruiker heeft zijn account gedeactiveerd en wil niet meer op de site verschijnen. Hij kan zijn account op elk moment herstellen door opnieuw in te loggen.',
|
||||
'banned_hint_title' => 'Gebruiker is verbannen',
|
||||
'banned_hint_desc' => 'Deze gebruiker is verbannen door een beheerder en kan niet meer inloggen.',
|
||||
'guest_hint_title' => 'Dit is een gastgebruiker',
|
||||
'guest_hint_desc' => 'Deze gebruiker wordt alleen voor referentiedoeleinden opgeslagen en moet zich registreren voordat hij zich aanmeldt.',
|
||||
'activate_warning_title' => 'Gebruiker is niet geactiveerd!',
|
||||
'activate_warning_desc' => 'Deze gebruiker is niet geactiveerd en kan niet inloggen.',
|
||||
'activate_confirm' => 'Weet u zeker dat u het gebruikersaccount wilt activeren?',
|
||||
'activated_success' => 'Gebruikersaccount succesvol geactiveerd!',
|
||||
'activate_manually' => 'Deze gebruiker handmatig activeren',
|
||||
'convert_guest_confirm' => 'Deze gast omzetten naar een gebruiker?',
|
||||
'convert_guest_manually' => 'Omzetten naar geregistreerde gebruiker',
|
||||
'convert_guest_success' => 'Gebruiker is omgezet naar een geregistreerd account',
|
||||
'impersonate_user' => 'Inloggen als',
|
||||
'impersonate_confirm' => 'Als deze gebruiker inloggen? U kunt terugkeren naar uw oorspronkelijke staat door uit te loggen.',
|
||||
'impersonate_success' => 'Je bent nu ingelogd als deze gebruiker',
|
||||
'delete_confirm' => 'Weet u zeker dat u deze gebruiker wilt verwijderen?',
|
||||
'unban_user' => 'Deblokkeer deze gebruiker',
|
||||
'unban_confirm' => 'Wil je deze gebruiker echt deblokkeren?',
|
||||
'unbanned_success' => 'Gebruiker is gedeblokkeerd',
|
||||
'return_to_list' => 'Terug naar overzicht',
|
||||
'update_details' => 'Details bijwerken',
|
||||
'bulk_actions' => 'Bulk acties',
|
||||
'delete_selected' => 'Geselecteerde verwijderen',
|
||||
'delete_selected_confirm' => 'Verwijder geselecteerde gebruikers?',
|
||||
'delete_selected_empty' => 'Er zijn geen geselecteerde gebruikers om te verwijderen.',
|
||||
'delete_selected_success' => 'Geselecteerde gebruikers verwijderd.',
|
||||
'activate_selected' => 'Activeer geselecteerde',
|
||||
'activate_selected_confirm' => 'De geselecteerde gebruikers activeren?',
|
||||
'activate_selected_empty' => 'Er zijn geen geselecteerde gebruikers om te activeren.',
|
||||
'activate_selected_success' => 'Geselecteerde gebruikers zijn succesvol geactiveerd.',
|
||||
'deactivate_selected' => 'Deactiveer geselecteerde',
|
||||
'deactivate_selected_confirm' => 'De geselecteerde gebruikers deactiveren?',
|
||||
'deactivate_selected_empty' => 'There are no selected users to deactivate.',
|
||||
'deactivate_selected_success' => 'Geselecteerde gebruikers zijn succesvol gedeactiveerd.',
|
||||
'restore_selected' => 'Herstel geselecteerde',
|
||||
'restore_selected_confirm' => 'De geselecteerde gebruikers herstellen?',
|
||||
'restore_selected_empty' => 'Er zijn geen geselecteerde gebruikers om te herstellen.',
|
||||
'restore_selected_success' => 'Geselecteerde gebruikers zijn succesvol hersteld.',
|
||||
'ban_selected' => 'Blokkeer geselecteerde',
|
||||
'ban_selected_confirm' => 'De geselecteerde gebruikers blokkeren?',
|
||||
'ban_selected_empty' => 'Er zijn geen gebruikers geselecteerd om te blokkeren.',
|
||||
'ban_selected_success' => 'Geselecteerde gebruikers zijn succesvol geblokkeerd.',
|
||||
'unban_selected' => 'Deblokkeer geselecteerde',
|
||||
'unban_selected_confirm' => 'De geselecteerde gebruikers deblokkeren?',
|
||||
'unban_selected_empty' => 'Er zijn geen gebruikers geselecteerd om te deblokkeren.',
|
||||
'unban_selected_success' => 'Geselecteerde gebruikers zijn succesvol gedeblokkeerd.',
|
||||
'unsuspend' => 'Blokkade opheffen',
|
||||
'unsuspend_success' => 'Blokkade voor de gebruiker is opgeheven.',
|
||||
'unsuspend_confirm' => 'Blokkade voor deze gebruiker opheffen?',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Gebruikers',
|
||||
'menu_label' => 'Instellingen',
|
||||
'menu_description' => 'Beheer de instellingen voor gebruikers.',
|
||||
'activation_tab' => 'Activatie',
|
||||
'signin_tab' => 'Inloggen',
|
||||
'registration_tab' => 'Registratie',
|
||||
'profile_tab' => 'Profiel',
|
||||
'notifications_tab' => 'Notificaties',
|
||||
'allow_registration' => 'Gebruikersregistratie toestaan',
|
||||
'allow_registration_comment' => 'Als deze optie is uitgeschakeld kunnen alleen beheerders gebruikers aanmaken.',
|
||||
'activate_mode' => 'Activatie modus',
|
||||
'activate_mode_comment' => 'Selecteer de wijze waarop een gebruikersaccount geactiveerd moet te worden.',
|
||||
'activate_mode_auto' => 'Automatisch',
|
||||
'activate_mode_auto_comment' => 'Het gebruikersaccount wordt meteen geactiveerd na registratie.',
|
||||
'activate_mode_user' => 'Gebruiker',
|
||||
'activate_mode_user_comment' => 'De gebruiker activeert het account d.m.v. e-mail.',
|
||||
'activate_mode_admin' => 'Beheerder',
|
||||
'activate_mode_admin_comment' => 'Alleen de beheerder kan het gebruikersaccount activeren.',
|
||||
'require_activation' => 'Inloggen vereist activatie',
|
||||
'require_activation_comment' => 'Gebruikers moeten een geactiveerd account hebben.',
|
||||
'use_throttle' => 'Beperk inlogpogingen',
|
||||
'use_throttle_comment' => 'Meerdere mislukte inlog pogingen resulteren in een tijdelijk uitgeschakeld gebruikersaccount.',
|
||||
'use_register_throttle' => 'Registraties beperken',
|
||||
'use_register_throttle_comment' => 'Voorkomen dat meerdere registraties van hetzelfde IP kort na elkaar plaatsvinden.',
|
||||
'block_persistence' => 'Voorkom gelijktijdige sessies ',
|
||||
'block_persistence_comment' => 'Indien ingeschakeld kunnen gebruikers zich niet aanmelden op meerdere apparaten tegelijk.',
|
||||
'login_attribute' => 'Inlog attribuut',
|
||||
'login_attribute_comment' => 'Selecteer het attribuut wat moet worden gebruikt om in te loggen.',
|
||||
'remember_login' => 'Onthoud inlogmodus',
|
||||
'remember_login_comment' => 'Selecteer of de gebruikerslogin onthouden moet worden.',
|
||||
'remember_always' => 'Altijd',
|
||||
'remember_never' => 'Nooit',
|
||||
'remember_ask' => 'Vraag de gebruiker bij het inloggen',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Gebruiker',
|
||||
'id' => 'ID',
|
||||
'username' => 'Gebruikersnaam',
|
||||
'name' => 'Voornaam',
|
||||
'name_empty' => 'Anoniem',
|
||||
'surname' => 'Achternaam',
|
||||
'email' => 'E-mailadres',
|
||||
'created_at' => 'Geregistreerd op',
|
||||
'last_seen' => 'Laatste login',
|
||||
'is_guest' => 'Gast',
|
||||
'joined' => 'Geregistreerd op',
|
||||
'is_online' => 'Momenteel online',
|
||||
'is_offline' => 'Momenteel offline',
|
||||
'send_invite' => 'Uitnodiging per e-mail sturen',
|
||||
'send_invite_comment' => 'Stuurt een welkomstbericht met login en wachtwoord informatie.',
|
||||
'create_password' => 'Wachtwoord aanmaken',
|
||||
'create_password_comment' => 'Voer een nieuw wachtwoord in dat wordt gebruikt om in te loggen.',
|
||||
'reset_password' => 'Reset wachtwoord',
|
||||
'reset_password_comment' => 'Voer een nieuw wachtwoord in om het wachtwoord te resetten.',
|
||||
'confirm_password' => 'Herhaal wachtwoord',
|
||||
'confirm_password_comment' => 'Voer het wachtwoord nogmaals in.',
|
||||
'groups' => 'Groep',
|
||||
'empty_groups' => 'Er zijn geen gebruikersgroepen beschikbaar.',
|
||||
'avatar' => 'Profielfoto',
|
||||
'details' => 'Details',
|
||||
'account' => 'Account',
|
||||
'block_mail' => 'Blokkeert alle uitgaande mail die naar deze gebruiker wordt gestuurd.',
|
||||
'status_guest' => 'Gast',
|
||||
'status_activated' => 'Geactiveerd',
|
||||
'status_registered' => 'Geregistreerd',
|
||||
'created_ip_address' => 'Registratie IP-address',
|
||||
'last_ip_address' => 'Laatste IP-address',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Groep',
|
||||
'id' => 'ID',
|
||||
'name' => 'Naam',
|
||||
'description_field' => 'Omschrijving',
|
||||
'code' => 'Code',
|
||||
'code_comment' => 'Voer een unieke code in als je deze groep wilt gebruiken met de API.',
|
||||
'created_at' => 'Aangemaakt op',
|
||||
'users_count' => 'Gebruikers',
|
||||
'is_new_user_default_field' => 'Voeg nieuwe beheerders automatisch toe aan deze groep.',
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Groepen',
|
||||
'all_groups' => 'Groepen',
|
||||
'new_group' => 'Nieuwe groep',
|
||||
'delete_selected_confirm' => 'Weet u zeker dat u de geselecteerde groepen wilt verwijderen?',
|
||||
'list_title' => 'Beheer groepen',
|
||||
'delete_confirm' => 'Weet u zeker dat u deze groep wilt verwijderen?',
|
||||
'delete_selected_success' => 'De geselecteerde groepen zijn verwijderd.',
|
||||
'delete_selected_empty' => 'Er zijn geen groepen geselecteerd om te verwijderen.',
|
||||
'return_to_list' => 'Terug naar overzicht',
|
||||
'return_to_users' => 'Back to users list',
|
||||
'create_title' => 'Groep aanmaken',
|
||||
'update_title' => 'Wijzig groep',
|
||||
'preview_title' => 'Voorbeeldweergave groep',
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'E-mailadres',
|
||||
'attribute_username' => 'Gebruikersnaam',
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Account',
|
||||
'account_desc' => 'Gebruikersaccount formulier.',
|
||||
'banned' => 'Sorry, deze gebruiker is momenteel niet geactiveerd. Neem contact met ons op voor verdere hulp.',
|
||||
'redirect_to' => 'Redirect naar',
|
||||
'redirect_to_desc' => 'Pagina om naar te redirecten na het bijwerken, inloggen of registreren.',
|
||||
'code_param' => 'Activatie Code parameter',
|
||||
'code_param_desc' => 'De pagina URL parameter die gebruikt wordt voor de registratie activatie code.',
|
||||
'force_secure' => 'Forceer beveiligd protocol',
|
||||
'force_secure_desc' => 'Stuur de URL altijd door naar HTTPS.',
|
||||
'invalid_user' => 'Geen gebruiker gevonden.',
|
||||
'invalid_activation_code' => 'Onjuiste activatie code',
|
||||
'invalid_deactivation_pass' => 'Het ingevoerde wachtwoord is ongeldig.',
|
||||
'invalid_current_pass' => 'Het ingevoerde huidige wachtwoord is ongeldig.',
|
||||
'success_activation' => 'Uw account is succesvol geactiveerd.',
|
||||
'success_deactivation' => 'Succesvol je account gedeactiveerd. Jammer dat je weggaat!',
|
||||
'success_saved' => 'Instellingen zijn opgeslagen.',
|
||||
'login_first' => 'U moet ingelogd zijn om deze pagina te bekijken.',
|
||||
'already_active' => 'Uw gebruikersaccount is reeds geactiveerd.',
|
||||
'activation_email_sent' => 'Een e-mailbericht met een activatie link is naar uw e-mailadres verzonden.',
|
||||
'activation_by_admin' => 'U bent succesvol geregistreerd. Uw account is nog niet actief en moet worden goedgekeurd door een beheerder.',
|
||||
'registration_disabled' => 'Registratie is momenteel uitgeschakeld.',
|
||||
'registration_throttled' => 'Registratie is geblokkeerd. Probeer het later nog eens.',
|
||||
'sign_in' => 'Inloggen',
|
||||
'register' => 'Registreren',
|
||||
'full_name' => 'Volledige naam',
|
||||
'email' => 'E-mailadres',
|
||||
'password' => 'Wachtwoord',
|
||||
'login' => 'Inloggen',
|
||||
'new_password' => 'Nieuw wachtwoord',
|
||||
'new_password_confirm' => 'Herhaal nieuw wachtwoord',
|
||||
'update_requires_password' => 'Bevestig wachtwoord bij update',
|
||||
'update_requires_password_comment' => 'Vereis het huidige wachtwoord van de gebruiker wanneer hij zijn profiel wijzigt.',
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Reset wachtwoord',
|
||||
'reset_password_desc' => 'Wachtwoord vergeten formulier.',
|
||||
'code_param' => 'Reset Code parameter',
|
||||
'code_param_desc' => 'De pagina URL parameter die gebruikt wordt voor de reset code.',
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Sessie',
|
||||
'session_desc' => 'Voegt de gebruikerssessie toe aan een pagina om pagina toegang te beperken.',
|
||||
'security_title' => 'Alleen toegestaan voor',
|
||||
'security_desc' => 'Wie toegestaan is om de pagina te bekijken.',
|
||||
'all' => 'Alle',
|
||||
'users' => 'Gebruikers',
|
||||
'guests' => 'Gasten',
|
||||
'allowed_groups_title' => 'Toegestane groepen',
|
||||
'allowed_groups_description' => 'Kies toegelaten groepen of geen om alle groepen toe te laten',
|
||||
'redirect_title' => 'Redirect naar',
|
||||
'redirect_desc' => 'Pagina om naar te redirecten als toegang is afgewezen.',
|
||||
'logout' => 'U bent succesvol uitgelogd.',
|
||||
'stop_impersonate_success' => 'Je doet je niet langer voor als een gebruiker.',
|
||||
],
|
||||
];
|
||||
|
|
@ -0,0 +1,205 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Użytkownik',
|
||||
'description' => 'Zarządzanie użytkownikami.',
|
||||
'tab' => 'Użytkownicy',
|
||||
'access_users' => 'Zarządzaj użytkownikami',
|
||||
'access_groups' => 'Zarządzaj grupami użytkowników',
|
||||
'access_settings' => 'Zarządzaj ustawieniami użytkownika',
|
||||
'impersonate_user' => 'Wcielaj się w użytkowników'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Użytkownicy',
|
||||
'all_users' => 'Wszyscy użytkownicy',
|
||||
'new_user' => 'Nowy użytkownik',
|
||||
'list_title' => 'Zarządzaj użytkownikami',
|
||||
'trashed_hint_title' => 'Użytkownik dezaktywował swoje konto',
|
||||
'trashed_hint_desc' => 'Ten użytkownik dezaktywował swoje konto i nie chce już wyświetlać się na stronie. Może przywrócić konto w dowolnym momencie, logując się z powrotem.',
|
||||
'banned_hint_title' => 'Użytkownik został zbanowany',
|
||||
'banned_hint_desc' => 'Ten użytkownik został zbanowany przez administratora i nie będzie mógł się zalogować.',
|
||||
'guest_hint_title' => 'To jest użytkownik gościnny',
|
||||
'guest_hint_desc' => 'Ten użytkownik jest przechowywany wyłącznie w celach informacyjnych i musi się zarejestrować przed zalogowaniem.',
|
||||
'activate_warning_title' => 'Użytkownik nie aktywowany!',
|
||||
'activate_warning_desc' => 'Ten użytkownik nie został aktywowany i może nie być w stanie się zalogować.',
|
||||
'activate_confirm' => 'Czy na pewno chcesz aktywować tego użytkownika?',
|
||||
'activated_success' => 'Użytkownik został aktywowany',
|
||||
'activate_manually' => 'Aktywuj tego użytkownika ręcznie',
|
||||
'convert_guest_confirm' => 'Konwertuj tego gościa do użytkownika?',
|
||||
'convert_guest_manually' => 'Konwertuj na zarejestrowanego użytkownika',
|
||||
'convert_guest_success' => 'Użytkownik został przekonwertowany na zarejestrowanego',
|
||||
'impersonate_user' => 'Wciel się w użytkownika',
|
||||
'impersonate_confirm' => 'Wcielić się w tego użytkownika? Możesz powrócić do pierwotnego stanu wylogowując się.',
|
||||
'impersonate_success' => 'Wcielasz się w tego użytkownika',
|
||||
'delete_confirm' => 'Czy na pewno chcesz usunąć tego użytkownika?',
|
||||
'unban_user' => 'Odbanuj tego użytkownika',
|
||||
'unban_confirm' => 'Czy na pewno chcesz odbanować tego użytkownika?',
|
||||
'unbanned_success' => 'Użytkownik został odbanowany',
|
||||
'return_to_list' => 'Wróć do listy użytkowników',
|
||||
'update_details' => 'Zaktualizuj szczegóły',
|
||||
'bulk_actions' => 'Działania masowe',
|
||||
'delete_selected' => 'Usuń wybrane',
|
||||
'delete_selected_confirm' => 'Usunąć wybranych użytkowników?',
|
||||
'delete_selected_empty' => 'Nie ma wybranych użytkowników do usunięcia.',
|
||||
'delete_selected_success' => 'Pomyślnie usunięto wybranych użytkowników.',
|
||||
'activate_selected' => 'Aktywuj wybranych',
|
||||
'activate_selected_confirm' => 'Aktywować wybranych użytkowników?',
|
||||
'activate_selected_empty' => 'Nie ma wybranych użytkowników do aktywacji.',
|
||||
'activate_selected_success' => 'Pomyślnie aktywowano wybranych użytkowników.',
|
||||
'deactivate_selected' => 'Dezaktywuj wybranych',
|
||||
'deactivate_selected_confirm' => 'Dezaktywować wybranych użytkowników?',
|
||||
'deactivate_selected_empty' => 'Nie ma wybranych użytkowników do dezaktywacji.',
|
||||
'deactivate_selected_success' => 'Pomyślnie dezaktywowano wybranych użytkowników.',
|
||||
'restore_selected' => 'Przywrócić wybranych',
|
||||
'restore_selected_confirm' => 'Przywrócić wybranych użytkowników?',
|
||||
'restore_selected_empty' => 'Nie ma wybranych użytkowników do przywrócenia.',
|
||||
'restore_selected_success' => 'Pomyślnie przywrócono wybranych użytkowników.',
|
||||
'ban_selected' => 'Zbanuj wybranych',
|
||||
'ban_selected_confirm' => 'Zbanować wybranych użytkowników?',
|
||||
'ban_selected_empty' => 'Nie ma wybranych użytkowników do banowania.',
|
||||
'ban_selected_success' => 'Z powodzeniem zbanowano wybranych użytkowników.',
|
||||
'unban_selected' => 'Odbanuj wybranych',
|
||||
'unban_selected_confirm' => 'Odbanować wybranych użytkowników?',
|
||||
'unban_selected_empty' => 'Nie ma wybranych użytkowników do odbanowania.',
|
||||
'unban_selected_success' => 'Z powodzeniem odbanowano wybranych użytkowników.',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Użytkownicy',
|
||||
'menu_label' => 'Ustawienia użytkownika',
|
||||
'menu_description' => 'Zarządzaj ogólnymi ustawieniami dla użytkowników.',
|
||||
'activation_tab' => 'Aktywacja',
|
||||
'signin_tab' => 'Zaloguj się',
|
||||
'registration_tab' => 'Rejestracja',
|
||||
'notifications_tab' => 'Powiadomienia',
|
||||
'allow_registration' => 'Zezwalaj na rejestrację użytkownika',
|
||||
'allow_registration_comment' => 'Jeśli jest to wyłączone, użytkownicy mogą być tworzeni tylko przez administratorów.',
|
||||
'activate_mode' => 'Tryb aktywacji',
|
||||
'activate_mode_comment' => 'Wybierz sposób aktywacji konta użytkownika.',
|
||||
'activate_mode_auto' => 'Automatyczny',
|
||||
'activate_mode_auto_comment' => 'Aktywowani automatycznie po rejestracji.',
|
||||
'activate_mode_user' => 'Użytkownik',
|
||||
'activate_mode_user_comment' => 'Użytkownik aktywuje własne konto za pomocą poczty e-mail.',
|
||||
'activate_mode_admin' => 'Administrator',
|
||||
'activate_mode_admin_comment' => 'Tylko administrator może aktywować użytkownika.',
|
||||
'require_activation' => 'Logowanie wymaga aktywacji konta',
|
||||
'require_activation_comment' => 'Użytkownicy muszą mieć aktywne konto, aby się zalogować.',
|
||||
'use_throttle' => 'Blokada prób logowania',
|
||||
'use_throttle_comment' => 'Powtórne nieudane próby zalogowania tymczasowo zawieszają użytkownika.',
|
||||
'block_persistence' => 'Zapobiegaj równoległym sesjom',
|
||||
'block_persistence_comment' => 'Aktywni użytkownicy nie mogą zalogować się na wielu urządzeniach w tym samym czasie.',
|
||||
'login_attribute' => 'Dane do logowania',
|
||||
'login_attribute_comment' => 'Wybierz, jakie podstawowe dane użytkownika mają być używane do logowania.',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Użytkownik',
|
||||
'id' => 'ID',
|
||||
'username' => 'Nazwa użytkownika',
|
||||
'name' => 'Imię / nick',
|
||||
'name_empty' => 'Anonimowy',
|
||||
'surname' => 'Nazwisko',
|
||||
'email' => 'Email',
|
||||
'created_at' => 'Zarejestrowany',
|
||||
'last_seen' => 'Ostatnio widziany',
|
||||
'is_guest' => 'Gość',
|
||||
'joined' => 'Dołączył',
|
||||
'is_online' => 'Online',
|
||||
'is_offline' => 'Offline',
|
||||
'send_invite' => 'Wyślij zaproszenie pocztą e-mail',
|
||||
'send_invite_comment' => 'Wysyła wiadomość powitalną zawierającą dane logowania i hasło.',
|
||||
'create_password' => 'Stwórz hasło',
|
||||
'create_password_comment' => 'Wprowadź nowe hasło używane do logowania.',
|
||||
'reset_password' => 'Zresetuj hasło',
|
||||
'reset_password_comment' => 'Aby zresetować hasło użytkownika, wprowadź nowe hasło.',
|
||||
'confirm_password' => 'Potwierdzenie hasła',
|
||||
'confirm_password_comment' => 'Wprowadź ponownie hasło, aby je potwierdzić.',
|
||||
'groups' => 'Grupy',
|
||||
'empty_groups' => 'Brak dostępnych grup użytkowników.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Szczegóły',
|
||||
'account' => 'Konto',
|
||||
'block_mail' => 'Zablokuj wszystkie wiadomości wychodzące wysyłane do tego użytkownika.',
|
||||
'status_guest' => 'Gość',
|
||||
'status_activated' => 'Aktywowany',
|
||||
'status_registered' => 'Zarejestrowany',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Grupa',
|
||||
'id' => 'ID',
|
||||
'name' => 'Nazwa',
|
||||
'description_field' => 'Opis',
|
||||
'code' => 'Kod',
|
||||
'code_comment' => 'Wpisz unikalny kod służący do identyfikacji tej grupy.',
|
||||
'created_at' => 'Utworzona',
|
||||
'users_count' => 'Użytkownicy'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Grupy',
|
||||
'all_groups' => 'Grupy użytkowników',
|
||||
'new_group' => 'Nowa grupa',
|
||||
'delete_selected_confirm' => 'Czy na pewno chcesz usunąć wybrane grupy?',
|
||||
'list_title' => 'Zarządzaj grupami',
|
||||
'delete_confirm' => 'Czy na pewno chcesz usunąć tę grupę?',
|
||||
'delete_selected_success' => 'Pomyślnie usunięto wybrane grupy.',
|
||||
'delete_selected_empty' => 'Brak wybranych grup do usunięcia.',
|
||||
'return_to_list' => 'Powrót do listy grup',
|
||||
'return_to_users' => 'Powrót do listy użytkowników',
|
||||
'create_title' => 'Utwórz grupę użytkowników',
|
||||
'update_title' => 'Edytuj grupę użytkowników',
|
||||
'preview_title' => 'Podejrzyj grupę użytkowników'
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'Email',
|
||||
'attribute_username' => 'Nazwa użytkownika'
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Konto',
|
||||
'account_desc' => 'Formularz zarządzania użytkownikiem.',
|
||||
'banned' => 'Przepraszamy, ten użytkownik jest obecnie nieaktywny. Skontaktuj się z nami, aby uzyskać dalszą pomoc.',
|
||||
'redirect_to' => 'Przekieruj do',
|
||||
'redirect_to_desc' => 'Nazwa strony do przekierowania po aktualizacji, zalogowaniu lub rejestracji.',
|
||||
'code_param' => 'Kod aktywacyjny - parametr',
|
||||
'code_param_desc' => 'Parametr URL strony używany do rejestracji',
|
||||
'force_secure' => 'Wymuś bezpieczny protokół',
|
||||
'force_secure_desc' => 'Zawsze przekierowuj adres URL ze schematem HTTPS.',
|
||||
'invalid_user' => 'Nie znaleziono użytkownika o podanych danych uwierzytelniających.',
|
||||
'invalid_activation_code' => 'Podano niepoprawny kod aktywacyjny.',
|
||||
'invalid_deactivation_pass' => 'Podane hasło jest nieprawidłowe.',
|
||||
'success_activation' => 'Pomyślnie aktywowałeś swoje konto.',
|
||||
'success_deactivation' => 'Pomyślnie dezaktywowaliśmy Twoje konto.',
|
||||
'success_saved' => 'Ustawienia zostały zapisane!',
|
||||
'login_first' => 'Musisz się najpierw zalogować!',
|
||||
'already_active' => 'Twoje konto jest już aktywowane!',
|
||||
'activation_email_sent' => 'Email aktywacyjny został wysłany na twój adres e-mail.',
|
||||
'registration_disabled' => 'Rejestracja jest obecnie wyłączona.',
|
||||
'sign_in' => 'Zaloguj się',
|
||||
'register' => 'Rejestracja',
|
||||
'full_name' => 'Imię',
|
||||
'email' => 'Email',
|
||||
'password' => 'Hasło',
|
||||
'login' => 'Login',
|
||||
'new_password' => 'Nowe hasło',
|
||||
'new_password_confirm' => 'Potwierdź nowe hasło'
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Zresetuj hasło',
|
||||
'reset_password_desc' => 'Formularz zapomnianego hasła.',
|
||||
'code_param' => 'Kod do resetu hasła - parametr',
|
||||
'code_param_desc' => 'Parametr URL strony używany do resetu hasła'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Sesja',
|
||||
'session_desc' => 'Dodaje sesję użytkownika do strony i może ograniczyć dostęp do strony.',
|
||||
'security_title' => 'Zezwól tylko',
|
||||
'security_desc' => 'Kto ma dostęp do tej strony.',
|
||||
'all' => 'Wszyscy',
|
||||
'users' => 'Użytkownicy',
|
||||
'guests' => 'Goście',
|
||||
'allowed_groups_title' => 'Zezwól grupom',
|
||||
'allowed_groups_description' => 'Wybierz dozwolone grupy lub brak grup, aby umożliwić wszystkim grupom',
|
||||
'redirect_title' => 'Przekieruj do',
|
||||
'redirect_desc' => 'Nazwa strony do przekierowania w przypadku odmowy dostępu.',
|
||||
'logout' => 'Wylogowałeś się poprawnie!',
|
||||
'stop_impersonate_success' => 'Nie wcielasz się już w użytkownika.',
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Usuário',
|
||||
'description' => 'Gerenciamento de usuários de front-end.',
|
||||
'tab' => 'Usuário',
|
||||
'access_users' => 'Gerenciar usuários',
|
||||
'access_groups' => 'Gerenciar Grupos de Usuários',
|
||||
'access_settings' => 'Gerenciar configurações do usuário'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Usuários',
|
||||
'all_users' => 'Todos os Usuários',
|
||||
'new_user' => 'Novo Usuário',
|
||||
'list_title' => 'Gerenciar Usuários',
|
||||
'trashed_hint_title' => 'O usuário desativou sua conta',
|
||||
'trashed_hint_desc' => 'Este usuário desativou sua conta e não quer mais aparecer no site. Eles podem restaurar sua conta a qualquer momento, fazendo login novamente.',
|
||||
'banned_hint_title' => 'O usuário foi banido',
|
||||
'banned_hint_desc' => 'Este usuário foi banido por um administrador e não poderá iniciar sessão.',
|
||||
'guest_hint_title' => 'Este é um usuário convidado',
|
||||
'guest_hint_desc' => 'Esse usuário é armazenado apenas para fins de referência e precisa se registrar antes de fazer login.',
|
||||
'activate_warning_title' => 'Usuário não ativado!',
|
||||
'activate_warning_desc' => 'Este usuário ainda não foi ativado e pode ser incapaz de fazer login.',
|
||||
'activate_confirm' => 'Deseja realmente ativar este usuário?',
|
||||
'activated_success' => 'O usuário foi ativado',
|
||||
'activate_manually' => 'Ativar este usuário manualmente',
|
||||
'convert_guest_confirm' => 'Converter este convidado para um usuário?',
|
||||
'convert_guest_manually' => 'Converter para usuário registrado',
|
||||
'convert_guest_success' => 'O usuário foi convertido em uma conta registrada',
|
||||
'delete_confirm' => 'Deseja mesmo excluir este usuário?',
|
||||
'unban_user' => 'Desbanir este usuário',
|
||||
'unban_confirm' => 'Você realmente quer desbanir este usuário?',
|
||||
'unbanned_success' => 'O usuário foi desbanido',
|
||||
'return_to_list' => 'Voltar à lista de usuários',
|
||||
'update_details' => 'Atualizar detalhes',
|
||||
'bulk_actions' => 'Ações em massa',
|
||||
'delete_selected' => 'Excluir selecionado',
|
||||
'delete_selected_confirm' => 'Excluir os usuários selecionados?',
|
||||
'delete_selected_empty' => 'Não há usuários selecionados a serem excluídos.',
|
||||
'delete_selected_success' => 'Os usuários selecionados foram excluídos com êxito.',
|
||||
'deactivate_selected' => 'Desativar selecionado',
|
||||
'deactivate_selected_confirm' => 'Desativar os usuários selecionados?',
|
||||
'deactivate_selected_empty' => 'Não há usuários selecionados para desativar.',
|
||||
'deactivate_selected_success' => 'Os Usuários selecionados foram desativados com sucesso.',
|
||||
'restore_selected' => 'Restaurar selecionado',
|
||||
'restore_selected_confirm' => 'Restaurar usuários selecionados?',
|
||||
'restore_selected_empty' => 'Não há usuários selecionados para restaurar.',
|
||||
'restore_selected_success' => 'Os usuários selecionados foram restaurado com sucesso.',
|
||||
'ban_selected' => 'Banir selecionado',
|
||||
'ban_selected_confirm' => 'Banir os usuários selecionados?',
|
||||
'ban_selected_empty' => 'Não há usuários selecionados para banir.',
|
||||
'ban_selected_success' => 'Os usuários selecionados foram banidos com sucesso',
|
||||
'unban_selected' => 'Desbanir selecionado',
|
||||
'unban_selected_confirm' => 'Desbanir os usuários selecionados?',
|
||||
'unban_selected_empty' => 'Não há usuários selecionados para desbanir.',
|
||||
'unban_selected_success' => 'Os usuários selecionados foram desbanidos com sucesso.',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Usuários',
|
||||
'menu_label' => 'Configurações de usuário',
|
||||
'menu_description' => 'Gerenciar configurações relacionadas a usuários.',
|
||||
'activation_tab' => 'Ativação',
|
||||
'signin_tab' => 'Login',
|
||||
'registration_tab' => 'Registração',
|
||||
'notifications_tab' => 'Notificações',
|
||||
'allow_registration' => 'Permitir o registro do usuário',
|
||||
'allow_registration_comment' => 'Se isso estiver desabilitado, os usuários só podem ser criados por administradores.',
|
||||
'activate_mode' => 'Modo de ativação',
|
||||
'activate_mode_comment' => 'Selecione como uma conta de usuário deve ser ativada.',
|
||||
'activate_mode_auto' => 'Automática',
|
||||
'activate_mode_auto_comment' => 'Ativada automaticamente mediante o cadastro.',
|
||||
'activate_mode_user' => 'Usuário',
|
||||
'activate_mode_user_comment' => 'O usuário ativa sua própria conta usando o email.',
|
||||
'activate_mode_admin' => 'Administrador',
|
||||
'activate_mode_admin_comment' => 'Apenas um Administrador pode ativar um usuário.',
|
||||
'require_activation' => 'Login requer ativação',
|
||||
'require_activation_comment' => 'Usuários precisam ter uma conta ativada para logar.',
|
||||
'use_throttle' => 'Tentativas limitadas',
|
||||
'use_throttle_comment' => 'Tentativas repetidas de login mal-sucedidas suspenderão temporariamente o usuário.',
|
||||
'login_attribute' => 'Atributo para login',
|
||||
'login_attribute_comment' => 'Selecione qual atributo do usuário deve ser usado para logar.',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Usuário',
|
||||
'id' => 'ID',
|
||||
'username' => 'Nome de usuário',
|
||||
'name' => 'Nome',
|
||||
'name_empty' => 'Anônimo',
|
||||
'surname' => 'Sobrenome',
|
||||
'email' => 'Email',
|
||||
'created_at' => 'Registrado',
|
||||
'last_seen' => 'Visto pela última vez',
|
||||
'is_guest' => 'Convidado',
|
||||
'joined' => 'Ingressou',
|
||||
'is_online' => 'Online agora',
|
||||
'is_offline' => 'Affline agora',
|
||||
'send_invite' => 'Enviar convite por e-mail',
|
||||
'send_invite_comment' => 'Envia uma mensagem de boas-vindas contendo informações de login e senha.',
|
||||
'create_password' => 'Criar Senha',
|
||||
'create_password_comment' => 'Informe uma senha para login do usuário.',
|
||||
'reset_password' => 'Resetar senha',
|
||||
'reset_password_comment' => 'Para resetar a senha deste usuário, informe uma nova senha aqui.',
|
||||
'confirm_password' => 'Confirmação de Senha',
|
||||
'confirm_password_comment' => 'Informe a senha novamente para confirmá-la.',
|
||||
'groups' => 'Grupos',
|
||||
'empty_groups' => 'Não há grupos disponíveis.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Detalhes',
|
||||
'account' => 'Conta',
|
||||
'block_mail' => 'Bloquear todos os envios de e-mail para este usuário.',
|
||||
'status_guest' => 'Convidado',
|
||||
'status_activated' => 'Ativado',
|
||||
'status_registered' => 'Registrado'
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Grupo',
|
||||
'id' => 'ID',
|
||||
'name' => 'Nome',
|
||||
'description_field' => 'Descrição',
|
||||
'code' => 'Código',
|
||||
'code_comment' => 'Insira um código exclusivo usado para identificar esse grupo.',
|
||||
'created_at' => 'Criado',
|
||||
'users_count' => 'Usuários'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Grupos',
|
||||
'all_groups' => 'Grupos de Usuários',
|
||||
'new_group' => 'Novo grupo',
|
||||
'delete_selected_confirm' => 'Deseja realmente excluir grupos selecionados?',
|
||||
'list_title' => 'Gerenciar grupos',
|
||||
'delete_confirm' => 'Deseja realmente excluir este grupo?',
|
||||
'delete_selected_success' => 'Os grupos selecionados foram excluídos com êxito.',
|
||||
'delete_selected_empty' => 'Não há grupos selecionados para excluir.',
|
||||
'return_to_list' => 'Voltar à lista de grupos',
|
||||
'return_to_users' => 'Voltar à lista de usuários',
|
||||
'create_title' => 'Criar grupo de Usuários',
|
||||
'update_title' => 'Editar grupo de usuários',
|
||||
'preview_title' => 'Visualização de grupo de usuário'
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'Email',
|
||||
'attribute_username' => 'Nome de usuário'
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Conta',
|
||||
'account_desc' => 'Formulário de gerenciamento de usuário.',
|
||||
'redirect_to' => 'Redirecionar para',
|
||||
'redirect_to_desc' => 'Nome da página para a qual redirecionar após atualização, login ou cadastro.',
|
||||
'code_param' => 'Parâmetro de Código de Ativação',
|
||||
'code_param_desc' => 'O parâmetro de URL da página usado para o código de ativação de cadastro',
|
||||
'invalid_user' => 'Não foi encontrado um usuário com as credenciais informadas.',
|
||||
'invalid_activation_code' => 'Código de ativação informado inválido',
|
||||
'invalid_deactivation_pass' => 'A senha inserida é inválida.',
|
||||
'success_activation' => 'Sua conta foi ativada com sucesso.',
|
||||
'success_deactivation' => 'Sua conta foi desativada com sucesso. Lamentamos ver você ir!',
|
||||
'success_saved' => 'Configurações salvas com sucesso!',
|
||||
'login_first' => 'Você precisa logar primeiro!',
|
||||
'already_active' => 'Sua conta já está ativada!',
|
||||
'activation_email_sent' => 'Email de ativação foi enviado para o endereço de e-mail informado.',
|
||||
'registration_disabled' => 'Atualmente, as inscrições estão desabilitadas.',
|
||||
'sign_in' => 'Entrar',
|
||||
'register' => 'Cadastrar-se',
|
||||
'full_name' => 'Nome Completo',
|
||||
'email' => 'Email',
|
||||
'password' => 'Senha',
|
||||
'login' => 'Entrar',
|
||||
'new_password' => 'Nova Senha',
|
||||
'new_password_confirm' => 'Confirmar Nova Senha'
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Resetar Senha',
|
||||
'reset_password_desc' => 'Formulário de resetar senha.',
|
||||
'code_param' => 'Parâmetro de código para resetar senha ',
|
||||
'code_param_desc' => 'O parâmetro de URL da página usado para o código'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Sessão',
|
||||
'session_desc' => 'Adiciona a sessão do usuário a uma página e pode restringir o acesso à página.',
|
||||
'security_title' => 'Permitir apenas',
|
||||
'security_desc' => 'Quem tem permissão para acessar esta página.',
|
||||
'all' => 'Todos',
|
||||
'users' => 'Usuários',
|
||||
'guests' => 'Convidados',
|
||||
'redirect_title' => 'Redirecionar para',
|
||||
'redirect_desc' => 'Nome da página para qual redirecionar se o acesso for negado.',
|
||||
'logout' => 'Você foi desconectado com sucesso!'
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Utilizador',
|
||||
'description' => 'Gestão de utilizadores de front-end.',
|
||||
'tab' => 'Utilizador',
|
||||
'access_users' => 'Gerir utilizadores',
|
||||
'access_groups' => 'Gerir grupos de utilizadores',
|
||||
'access_settings' => 'Gerir definições de utilizador'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Utilizadores',
|
||||
'all_users' => 'Todos os utilizadores',
|
||||
'new_user' => 'Novo Utilizador',
|
||||
'list_title' => 'Gerir utilizadores',
|
||||
'trashed_hint_title' => 'O utilizador desactivou esta conta.',
|
||||
'trashed_hint_desc' => 'O utilizador desactivou esta conta e não pretende aceder ao site. O mesmo pode restaurar a conta em qualquer altura fazendo novamente a entrada.',
|
||||
'banned_hint_title' => 'O utilizador foi banido.',
|
||||
'banned_hint_desc' => 'Este utilizador foi banido por um administrador e não conseguirá fazer a entrada.',
|
||||
'guest_hint_title' => 'Utilizador convidado.',
|
||||
'guest_hint_desc' => 'Utilizador guardado para fins de referência e apenas precisa fazer registo antes de poder entrar.',
|
||||
'activate_warning_title' => 'Utilizador não activado!',
|
||||
'activate_warning_desc' => 'Este utilizador não foi activado e estará impossibilitado de entrar.',
|
||||
'activate_confirm' => 'Deseja ativar este utilizador?',
|
||||
'activated_success' => 'O Utilizador foi ativado com sucesso!',
|
||||
'activate_manually' => 'Activar este utilizador manualmente',
|
||||
'convert_guest_confirm' => 'Converter este convidado para utilizador?',
|
||||
'convert_guest_manually' => 'Converter para utilizador registado.',
|
||||
'convert_guest_success' => 'O utilizador foi convertido para uma conta registada',
|
||||
'delete_confirm' => 'Deseja eliminar este utilizador?',
|
||||
'unban_user' => 'Remover banimento a este utilizador',
|
||||
'unban_confirm' => 'Pretende remover banimento a este utilizador?',
|
||||
'unbanned_success' => 'Foi removido banimento deste utilizador',
|
||||
'return_to_list' => 'Regressar à lista de Utilizadores',
|
||||
'update_details' => 'Actualizar detalhes',
|
||||
'bulk_actions' => 'Acções em bloco',
|
||||
'delete_selected' => 'Eliminar seleccionados',
|
||||
'delete_selected_confirm' => 'Eliminar os utilizadores selecionados?',
|
||||
'delete_selected_empty' => 'Não há utilizadores selecionados para eliminar.',
|
||||
'delete_selected_success' => 'Utilizadores selecionados eliminados com sucesso.',
|
||||
'deactivate_selected' => 'Inactivar utilizadores seleccionados',
|
||||
'deactivate_selected_confirm' => 'Inactivar utilizadores seleccionados?',
|
||||
'deactivate_selected_empty' => 'Não existem utilizadores seleccionados para inactivar.',
|
||||
'deactivate_selected_success' => 'Utilizadores seleccionados inactivados com sucesso.',
|
||||
'restore_selected' => 'Restaurar utilizadores seleccionados',
|
||||
'restore_selected_confirm' => 'Restaurar utilizadores seleccionados?',
|
||||
'restore_selected_empty' => 'Não existem utilizadores seleccionados para restaurar.',
|
||||
'restore_selected_success' => 'Utilizadores seleccionados restaurados com sucesso.',
|
||||
'ban_selected' => 'Banir utilizadores seleccionados',
|
||||
'ban_selected_confirm' => 'Banir utilizadores seleccionados?',
|
||||
'ban_selected_empty' => 'Não existem utilizadores seleccionados para banir.',
|
||||
'ban_selected_success' => 'Utilizadores seleccionados banidos com sucesso.',
|
||||
'unban_selected' => 'Remover banimento a utilizadores seleccionados',
|
||||
'unban_selected_confirm' => 'Remover banimento a utilizadores seleccionados?',
|
||||
'unban_selected_empty' => 'Não existem utilizadores seleccionados para remover banimento.',
|
||||
'unban_selected_success' => 'Removido banimento com sucesso aos utilizadores seleccionados.',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Utilizadores',
|
||||
'menu_label' => 'Configurações de Utilizador',
|
||||
'menu_description' => 'Gerir configurações relacionadas a Utilizadores.',
|
||||
'activation_tab' => 'Activação',
|
||||
'signin_tab' => 'Entrar',
|
||||
'registration_tab' => 'Registo',
|
||||
'notifications_tab' => 'Notificatções',
|
||||
'allow_registration' => 'Permitir registo de utilizador',
|
||||
'allow_registration_comment' => 'Se inactivo os utilizadores só poderão ser criados por administradores.',
|
||||
'activate_mode' => 'Modo de activação',
|
||||
'activate_mode_comment' => 'Selecione como uma conta de utilizador deve ser activada.',
|
||||
'activate_mode_auto' => 'Automático',
|
||||
'activate_mode_auto_comment' => 'Activada automaticamente mediante o registo.',
|
||||
'activate_mode_user' => 'Utilizador',
|
||||
'activate_mode_user_comment' => 'O utilizador activa a própria conta usando o e-mail.',
|
||||
'activate_mode_admin' => 'Administrador',
|
||||
'activate_mode_admin_comment' => 'Apenas um Administrador pode activar um utilizador.',
|
||||
'require_activation' => 'Permissão para entrar requer ativação',
|
||||
'require_activation_comment' => 'Utilizadores precisam ter uma conta activada para entrar.',
|
||||
'use_throttle' => 'Tentativas limitadas',
|
||||
'use_throttle_comment' => 'Tentativas repetidas de entrada mal-sucedidas suspenderão temporariamente o utilizador.',
|
||||
'login_attribute' => 'Atributo para entrar',
|
||||
'login_attribute_comment' => 'Selecione qual atributo do utilizador deve ser usado para entrar.',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Utilizador',
|
||||
'id' => 'ID',
|
||||
'username' => 'Nome de utilizador',
|
||||
'name' => 'Nome',
|
||||
'name_empty' => 'Anonymous',
|
||||
'surname' => 'Último nome',
|
||||
'email' => 'E-mail',
|
||||
'created_at' => 'Registado em',
|
||||
'last_seen' => 'Visto por último',
|
||||
'is_guest' => 'Convidado',
|
||||
'joined' => 'Registou-se a',
|
||||
'is_online' => 'Online agora',
|
||||
'is_offline' => 'Desligado',
|
||||
'send_invite' => 'E-mail de convite enviado',
|
||||
'send_invite_comment' => 'Emvia uma mensagem de Boas Vindas contendo informações de acesso.',
|
||||
'create_password' => 'Criar password',
|
||||
'create_password_comment' => 'Informe uma password para entrada do utilizador.',
|
||||
'reset_password' => 'Redefinir password',
|
||||
'reset_password_comment' => 'Para redefinir a password deste utilizador, informe uma nova password aqui.',
|
||||
'confirm_password' => 'Confirmação de password',
|
||||
'confirm_password_comment' => 'Informe a password novamente para confirmá-la.',
|
||||
'groups' => 'Grupos',
|
||||
'empty_groups' => 'Não há grupos disponíveis.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Detalhes',
|
||||
'account' => 'Conta',
|
||||
'block_mail' => 'Bloquear todos os envios de e-mail para este Utilizador.',
|
||||
'status_guest' => 'Convidado',
|
||||
'status_activated' => 'Activado',
|
||||
'status_registered' => 'Registado',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Grupo',
|
||||
'id' => 'ID',
|
||||
'name' => 'Nome',
|
||||
'description_field' => 'Descrição',
|
||||
'code' => 'Código',
|
||||
'code_comment' => 'Introduza um código único para identificar este grupo.',
|
||||
'created_at' => 'Criado',
|
||||
'users_count' => 'Utilizadores'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Grupos',
|
||||
'all_groups' => 'Grupos de utilizador',
|
||||
'new_group' => 'Novo grupo',
|
||||
'delete_selected_confirm' => 'Pretende eliminar os grupos seleccionados?',
|
||||
'list_title' => 'Gerir grupos',
|
||||
'delete_confirm' => 'Pretende eliminar este grupo?',
|
||||
'delete_selected_success' => 'Grupos seleccionados eliminados com sucesso.',
|
||||
'delete_selected_empty' => 'Não existem grupos seleccionados para elimianr.',
|
||||
'return_to_list' => 'Regressar à lista de grupos',
|
||||
'return_to_users' => 'Regressar à lista de utilizadores',
|
||||
'create_title' => 'Criar Grupo de utilizadores',
|
||||
'update_title' => 'Editar grupo de utilizadores',
|
||||
'preview_title' => 'Previsão de grupo de utilizadores'
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'E-mail',
|
||||
'attribute_username' => 'Nome de utilizador'
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Conta',
|
||||
'account_desc' => 'Formulário de gerenciamento de utilizador.',
|
||||
'redirect_to' => 'Redirecionar para',
|
||||
'redirect_to_desc' => 'Nome da página para a qual redirecionar após atualização, entrada ou registo.',
|
||||
'code_param' => 'Parâmetro de Código de Ativação',
|
||||
'code_param_desc' => 'O parâmetro de URL da página usado para o código de ativação de registo',
|
||||
'invalid_user' => 'Não foi encontrado um utilizador com as credenciais informadas.',
|
||||
'invalid_activation_code' => 'Código de ativação inserido é inválido',
|
||||
'invalid_deactivation_pass' => 'A password inserida é inválida.',
|
||||
'success_activation' => 'Conta foi ativada com sucesso.',
|
||||
'success_deactivation' => 'A conta foi inactivada com sucesso. Lamentamos vê-lo ir-se embora!',
|
||||
'success_saved' => 'Configurações guardadas com sucesso!',
|
||||
'login_first' => 'Precisa efectuar a entrada primeiro!',
|
||||
'already_active' => 'A sua conta já está ativada!',
|
||||
'activation_email_sent' => 'E-mail de activação foi enviado para o endereço de e-mail fornecido.',
|
||||
'registration_disabled' => 'Registrations are currently disabled.',
|
||||
'sign_in' => 'Entrar',
|
||||
'register' => 'Fazer registo',
|
||||
'full_name' => 'Nome Completo',
|
||||
'email' => 'E-mail',
|
||||
'password' => 'Password',
|
||||
'login' => 'Entrar',
|
||||
'new_password' => 'Nova Password',
|
||||
'new_password_confirm' => 'Confirmar nova password'
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Redefinir password',
|
||||
'reset_password_desc' => 'Formulário de redefinição de password .',
|
||||
'code_param' => 'Parâmetro de código para redefinir password ',
|
||||
'code_param_desc' => 'O parâmetro de URL da página usado para o código'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Sessão',
|
||||
'session_desc' => 'Adiciona a sessão do utilizador a uma página e pode restringir o acesso à página.',
|
||||
'security_title' => 'Permitir apenas',
|
||||
'security_desc' => 'Quem tem permissão para aceder a esta página.',
|
||||
'all' => 'Todos',
|
||||
'users' => 'Utilizadores',
|
||||
'guests' => 'Visitantes',
|
||||
'redirect_title' => 'Redirecionar para',
|
||||
'redirect_desc' => 'Nome da página para qual redirecionar se o acesso for negado.',
|
||||
'logout' => 'A sessão foi terminada com sucesso!'
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,228 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Пользователи',
|
||||
'description' => 'Фронтенд управление пользователями.',
|
||||
'tab' => 'Пользователи',
|
||||
'access_users' => 'Управление пользователями',
|
||||
'access_groups' => 'Управление группами пользователей',
|
||||
'access_settings' => 'Управление настройками пользователей',
|
||||
'impersonate_user' => 'Войти как этот пользователь',
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Пользователи',
|
||||
'all_users' => 'Все пользователи',
|
||||
'new_user' => 'Новый пользователь',
|
||||
'list_title' => 'Управление пользователями',
|
||||
'trashed_hint_title' => 'Пользователь деактивировал свой аккаунт',
|
||||
'trashed_hint_desc' => 'Этот пользователь деактивировал свой аккаунт. Он может реактивировать свой аккаунт в любое время.',
|
||||
'banned_hint_title' => 'Пользователь заблокирован',
|
||||
'banned_hint_desc' => 'Этот пользователь заблокирован администратором и не сможет авторизоваться.',
|
||||
'guest_hint_title' => 'Это гостевая учётная запись',
|
||||
'guest_hint_desc' => 'Этот пользователь сохранен только для справочных целей и должен быть зарегистрирован, прежде чем сможет выполнить вход.',
|
||||
'activate_warning_title' => 'Пользователь не активирован!',
|
||||
'activate_warning_desc' => 'Этот пользователь не активирован и не сможет войти.',
|
||||
'activate_confirm' => 'Вы действительно хотите активировать данного пользователя?',
|
||||
'activated_success' => 'Пользователь был успешно активирован!',
|
||||
'activate_manually' => 'Активировать этого пользователя вручную',
|
||||
'convert_guest_confirm' => 'Преобразовать гостя в пользователя?',
|
||||
'convert_guest_manually' => 'Преобразовать в зарегистрированного пользователя',
|
||||
'convert_guest_success' => 'Гостевая учётная запись преобразована в зарегистрированную.',
|
||||
'impersonate_user' => 'Войти как этот пользователь',
|
||||
'impersonate_confirm' => 'Войти как этот пользователь? Вы сможете вернуться в исходное состояние после разлогинивания.',
|
||||
'impersonate_success' => 'Вы теперь представлены как другой пользователь',
|
||||
'delete_confirm' => 'Вы действительно хотите удалить этого пользователя?',
|
||||
'unban_user' => 'Разблокировать',
|
||||
'unban_confirm' => 'Вы уверены, что хотите разблокировать этого пользователя?',
|
||||
'unbanned_success' => 'Пользователь разблокирован',
|
||||
'return_to_list' => 'Вернуться к списку пользователей',
|
||||
'update_details' => 'Изменить данные',
|
||||
'bulk_actions' => 'Массовые действия',
|
||||
'delete_selected' => 'Удалить выбранные',
|
||||
'delete_selected_confirm' => 'Удалить выбранных пользователей?',
|
||||
'delete_selected_empty' => 'Нет выбранных пользователей для удаления.',
|
||||
'delete_selected_success' => 'Выбранные пользователи успешно удалены.',
|
||||
'activate_selected' => 'Активировать выбранные',
|
||||
'activate_selected_confirm' => 'Активировать выбранных пользователей?',
|
||||
'activate_selected_empty' => 'Нет выбранных пользователей для активации.',
|
||||
'activate_selected_success' => 'Выбранные пользователи успешно активированы.',
|
||||
'deactivate_selected' => 'Деактивировать выбранные',
|
||||
'deactivate_selected_confirm' => 'Деактивировать выбранных пользователей?',
|
||||
'deactivate_selected_empty' => 'Нет выбранных пользователей для деактивации.',
|
||||
'deactivate_selected_success' => 'Выбранные пользователи успешно деактивированы.',
|
||||
'restore_selected' => 'Восстановить выбранные',
|
||||
'restore_selected_confirm' => 'Восстановить выбранных пользователей?',
|
||||
'restore_selected_empty' => 'Нет выбранных пользователей для восстановления.',
|
||||
'restore_selected_success' => 'Выбранные пользователи успешно восстановлены.',
|
||||
'ban_selected' => 'Заблокировать выбранные',
|
||||
'ban_selected_confirm' => 'Заблокировать выбранных пользователей?',
|
||||
'ban_selected_empty' => 'Нет выбранных пользователей для блокировки.',
|
||||
'ban_selected_success' => 'Выбранные пользователи успешно заблокированы.',
|
||||
'unban_selected' => 'Разблокировать выбранные',
|
||||
'unban_selected_confirm' => 'Разблокировать выбранных пользователей?',
|
||||
'unban_selected_empty' => 'Нет выбранных пользователей для разблокировки.',
|
||||
'unban_selected_success' => 'Выбранные пользователи успешно разблокированы.',
|
||||
'unsuspend' => 'Приостановлен',
|
||||
'unsuspend_success' => 'Пользователь был приостановлен.',
|
||||
'unsuspend_confirm' => 'Приостановить данного пользователя?'
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Пользователи',
|
||||
'menu_label' => 'Настройки пользователя',
|
||||
'menu_description' => 'Управления параметрами пользователя.',
|
||||
'activation_tab' => 'Активация',
|
||||
'signin_tab' => 'Авторизация',
|
||||
'registration_tab' => 'Регистрация',
|
||||
'profile_tab' => 'Профиль',
|
||||
'notifications_tab' => 'Оповещения',
|
||||
'allow_registration' => 'Разрешить регистрацию',
|
||||
'allow_registration_comment' => 'Если эта опция выключена, только администраторы смогут регистрировать пользователей.',
|
||||
'activate_mode' => 'Активация',
|
||||
'activate_mode_comment' => 'Активация пользователя.',
|
||||
'activate_mode_auto' => 'Автоматическая',
|
||||
'activate_mode_auto_comment' => 'Автоматическая активация при регистрации.',
|
||||
'activate_mode_user' => 'Стандартная',
|
||||
'activate_mode_user_comment' => 'Активация при помощи электронной почты.',
|
||||
'activate_mode_admin' => 'Ручная',
|
||||
'activate_mode_admin_comment' => 'Только администратор может активировать пользователя.',
|
||||
'require_activation' => 'Обязательная активация аккаунта',
|
||||
'require_activation_comment' => 'Пользователи должны иметь активированный аккаунт для входа.',
|
||||
'use_throttle' => 'Отслеживание неудачных попыток авторизации',
|
||||
'use_throttle_comment' => 'При множественных неудачных попытках авторизации пользователь будет заморожен.',
|
||||
'use_register_throttle' => 'Приостанавливать регистрацию',
|
||||
'use_register_throttle_comment' => 'Предотвращение большого количества регистраций с одного IP-адреса в короткий срок.',
|
||||
'block_persistence' => 'Запретить параллельные сессии',
|
||||
'block_persistence_comment' => 'Если включено, пользователи не могут войти с разных устройств одновременно.',
|
||||
'login_attribute' => 'Логин',
|
||||
'login_attribute_comment' => 'Поле, используемое в качестве логина пользователя.',
|
||||
'remember_login' => 'Режим "Запомнить меня"',
|
||||
'remember_login_comment' => 'Выберите, должна ли сессия пользователя быть постоянной.',
|
||||
'remember_always' => 'Всегда',
|
||||
'remember_never' => 'Никогда',
|
||||
'remember_ask' => 'Спросить пользователя при входе',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Пользователь',
|
||||
'id' => 'ID',
|
||||
'username' => 'Имя пользователя',
|
||||
'name' => 'Имя',
|
||||
'name_empty' => 'Аноним',
|
||||
'surname' => 'Фамилия',
|
||||
'email' => 'Email',
|
||||
'created_at' => 'Дата регистрации',
|
||||
'last_seen' => 'Последняя активность',
|
||||
'is_guest' => 'Гость',
|
||||
'joined' => 'Зарегистрирован',
|
||||
'is_online' => 'В сети',
|
||||
'is_offline' => 'Не в сети',
|
||||
'send_invite' => 'Отправить приглашение по почте',
|
||||
'send_invite_comment' => 'Отправляет приветственнное сообщение на почту с логином и паролем для входа.',
|
||||
'create_password' => 'Создать пароль',
|
||||
'create_password_comment' => 'Введите новый пароль для пользователя.',
|
||||
'reset_password' => 'Сброс пароля',
|
||||
'reset_password_comment' => 'Для сброса пароля пользователя введите здесь новый пароль.',
|
||||
'confirm_password' => 'Подтверждение пароля',
|
||||
'confirm_password_comment' => 'Введите пароль еще раз для подтверждения.',
|
||||
'groups' => 'Группы',
|
||||
'empty_groups' => 'Нет групп, доступных пользователю.',
|
||||
'avatar' => 'Аватар',
|
||||
'details' => 'Информация',
|
||||
'account' => 'Аккаунт',
|
||||
'block_mail' => 'Отключить всю исходящую почту для этого пользователя.',
|
||||
'status_label' => 'Статус',
|
||||
'status_guest' => 'Гость',
|
||||
'status_activated' => 'Активирован',
|
||||
'status_registered' => 'Зарегистрирован',
|
||||
'created_ip_address' => 'Создан с IP-адреса',
|
||||
'last_ip_address' => 'Последний IP-адрес',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Группа',
|
||||
'id' => 'ID',
|
||||
'name' => 'Имя',
|
||||
'description_field' => 'Описание',
|
||||
'code' => 'Код',
|
||||
'code_comment' => 'Введите уникальный код для идентификации этой группы.',
|
||||
'created_at' => 'Дата создания',
|
||||
'users_count' => 'Пользователей',
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Группы',
|
||||
'all_groups' => 'Группы пользователей',
|
||||
'new_group' => 'Новая группа',
|
||||
'delete_selected_confirm' => 'Вы действительно хотите удалить выбранные группы?',
|
||||
'list_title' => 'Управление группами',
|
||||
'delete_confirm' => 'Вы действительно хотите удалить эту группу?',
|
||||
'delete_selected_success' => 'Выбранные группы удалены.',
|
||||
'delete_selected_empty' => 'Не выбраны группы для удаления.',
|
||||
'return_to_list' => 'Вернутся к списку групп',
|
||||
'return_to_users' => 'Вернутся к списку пользователей',
|
||||
'create_title' => 'Создание группы',
|
||||
'update_title' => 'Редактирование группы',
|
||||
'preview_title' => 'Предпросмотр группы',
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'Email',
|
||||
'attribute_username' => 'Имя пользователя',
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Аккаунт',
|
||||
'account_desc' => 'Управление формой.',
|
||||
'banned' => 'Извините, этот пользователь заблокирован. Обратитесь к администратору за помощью.',
|
||||
'redirect_to' => 'Перенаправление',
|
||||
'redirect_to_desc' => 'Страница для перенаправления после обновления, входа или регистрации.',
|
||||
'code_param' => 'Параметр кода',
|
||||
'code_param_desc' => 'Параметр, в котором передаётся код активации.',
|
||||
'force_secure' => 'Использовать HTTPS',
|
||||
'force_secure_desc' => 'Всегда перенаправлять через HTTPS.',
|
||||
'invalid_user' => 'Пользователь с такими данным не найден.',
|
||||
'invalid_activation_code' => 'Неверный код активации.',
|
||||
'invalid_deactivation_pass' => 'Введенный Вами пароль некорректен.',
|
||||
'invalid_current_pass' => 'Текущий пароль который вы ввели - недействителен.',
|
||||
'success_activation' => 'Успешная активация пользователя.',
|
||||
'success_deactivation' => 'Ваш аккаунт был деактивирован.',
|
||||
'success_saved' => 'Настройки успешно сохранены!',
|
||||
'login_first' => 'Вам необходимо войти под своими данными!',
|
||||
'already_active' => 'Ваш аккаунт ещё активирован!',
|
||||
'activation_email_sent' => 'Письмо с дальнейшими инструкциями по активации было отправлено на указанный адрес электронной почты.',
|
||||
'activation_by_admin' => 'Вы успешно зарегистрировались. Ваша учетная запись пока еще не активна и должна быть одобрена администратором.',
|
||||
'registration_disabled' => 'Регистрация сейчас недоступна.',
|
||||
'registration_throttled' => 'Регистрация приостановлена. Пожалуйста, попробуйте позже.',
|
||||
'sign_in' => 'Авторизация',
|
||||
'register' => 'Регистрация',
|
||||
'full_name' => 'Полное имя',
|
||||
'email' => 'Email',
|
||||
'password' => 'Пароль',
|
||||
'login' => 'Логин',
|
||||
'new_password' => 'Новый пароль',
|
||||
'new_password_confirm' => 'Подтверждение пароля',
|
||||
'update_requires_password' => 'Подтверждать пароль при обновлении',
|
||||
'update_requires_password_comment' => 'Запрашивать текущий пароль пользователя при редактировании его профиля.',
|
||||
'activation_page' => 'Страница активации',
|
||||
'activation_page_comment' => 'Выберите страницу для активации аккаунта пользователя.',
|
||||
'reset_page' => 'Страница сброса пароля',
|
||||
'reset_page_comment' => 'Выберите страницу для сброса проля аккаунта.',
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Сброс пароля',
|
||||
'reset_password_desc' => 'Форма восстановления пароля.',
|
||||
'code_param' => 'Параметр кода',
|
||||
'code_param_desc' => 'Параметр, в котором передаётся код сброса пароля.',
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Сессия',
|
||||
'session_desc' => 'Добавление пользовательского сеанса к странице (доступ)',
|
||||
'security_title' => 'Доступ к странице',
|
||||
'security_desc' => 'Кто имеет право на доступ к этой странице.',
|
||||
'all' => 'Все',
|
||||
'users' => 'Пользователи',
|
||||
'guests' => 'Гости',
|
||||
'allowed_groups_title' => 'Разрешённые группы',
|
||||
'allowed_groups_description' => 'Выберите разрешённые группы или ничего, чтобы разрешить все',
|
||||
'redirect_title' => 'Перенаправление',
|
||||
'redirect_desc' => 'Страница для перенаправления при отсутствии доступа.',
|
||||
'logout' => 'Вы успешно вышли из системы!',
|
||||
'stop_impersonate_success' => 'Вы больше не представлены как другой пользователь.',
|
||||
],
|
||||
];
|
||||
|
|
@ -0,0 +1,228 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'පරිශීලක',
|
||||
'description' => 'ඉදිරිපස පරිශීලක කළමනාකරණය.',
|
||||
'tab' => 'පරිශීලකයන්',
|
||||
'access_users' => 'පරිශීලකයන් කළමනාකරණය කරන්න',
|
||||
'access_groups' => 'පරිශීලක කණ්ඩායම් කළමනාකරණය කරන්න',
|
||||
'access_settings' => 'පරිශීලක සැකසුම් කළමනාකරණය කරන්න',
|
||||
'impersonate_user' => 'පරිශීලකයන් ලෙස පෙනී සිටින්න'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'පරිශීලකයන්',
|
||||
'all_users' => 'සියලුම පරිශීලකයින්',
|
||||
'new_user' => 'නව පරිශීලක',
|
||||
'list_title' => 'පරිශීලකයන් කළමනාකරණය කරන්න',
|
||||
'trashed_hint_title' => 'පරිශීලකයා ඔවුන්ගේ ගිණුම අක්රිය කර ඇත',
|
||||
'trashed_hint_desc' => 'මෙම පරිශීලකයා ඔවුන්ගේ ගිණුම අක්රිය කර ඇති අතර තවදුරටත් අඩවියේ පෙනී සිටීමට අවශ්ය නැත. ඔවුන්ට නැවත පුරනය වීමෙන් ඕනෑම වේලාවක ඔවුන්ගේ ගිණුම ප්රතිසාධනය කළ හැක.',
|
||||
'banned_hint_title' => 'පරිශීලකයා තහනම් කර ඇත',
|
||||
'banned_hint_desc' => 'මෙම පරිශීලකයා පරිපාලකයෙකු විසින් තහනම් කර ඇති අතර ඔහුට පුරනය වීමට නොහැකි වනු ඇත.',
|
||||
'guest_hint_title' => 'මෙය ආගන්තුක පරිශීලකයෙකි',
|
||||
'guest_hint_desc' => 'මෙම පරිශීලකයා ගබඩා කර ඇත්තේ යොමු අරමුණු සඳහා පමණක් වන අතර පුරනය වීමට පෙර ලියාපදිංචි වීමට අවශ්ය වේ.',
|
||||
'activate_warning_title' => 'පරිශීලකයා සක්රිය කර නැත!',
|
||||
'activate_warning_desc' => 'මෙම පරිශීලකයා සක්රිය කර නොමැති අතර පුරනය වීමට නොහැකි විය හැක.',
|
||||
'activate_confirm' => 'ඔබට ඇත්තටම මෙම පරිශීලකයා සක්රිය කිරීමට අවශ්යද?',
|
||||
'activated_success' => 'පරිශීලකයා සක්රිය කර ඇත',
|
||||
'activate_manually' => 'මෙම පරිශීලකයා අතින් සක්රිය කරන්න',
|
||||
'convert_guest_confirm' => 'මෙම අමුත්තා පරිශීලකයෙකු බවට පරිවර්තනය කරන්නද?',
|
||||
'convert_guest_manually' => 'ලියාපදිංචි පරිශීලකයා බවට පරිවර්තනය කරන්න',
|
||||
'convert_guest_success' => 'පරිශීලක ලියාපදිංචි ගිණුමක් බවට පරිවර්තනය කර ඇත',
|
||||
'impersonate_user' => 'පරිශීලක ලෙස පෙනී සිටින්න',
|
||||
'impersonate_confirm' => 'මෙම පරිශීලකයා ලෙස පෙනී සිටින්නද? ලොග් අවුට් වීමෙන් ඔබට ඔබේ මුල් තත්වයට ආපසු යා හැක.',
|
||||
'impersonate_success' => 'ඔබ දැන් මෙම පරිශීලකයා ලෙස පෙනී සිටියි',
|
||||
'delete_confirm' => 'ඔබට ඇත්තටම මෙම පරිශීලකයා මකා දැමීමට අවශ්යද?',
|
||||
'unban_user' => 'මෙම පරිශීලක තහනම ඉවත් කරන්න',
|
||||
'unban_confirm' => 'ඔබට ඇත්තටම මෙම පරිශීලකයාගේ තහනම ඉවත් කිරීමට අවශ්යද?',
|
||||
'unbanned_success' => 'පරිශීලක තහනම ඉවත් කර ඇත',
|
||||
'return_to_list' => 'පරිශීලක ලැයිස්තුව වෙත ආපසු යන්න',
|
||||
'update_details' => 'යාවත්කාලීන විස්තර',
|
||||
'bulk_actions' => 'තොග ක්රියාවන්',
|
||||
'delete_selected' => 'තෝරාගත් මකන්න',
|
||||
'delete_selected_confirm' => 'තෝරාගත් පරිශීලකයින් මකන්නද?',
|
||||
'delete_selected_empty' => 'මකා දැමීමට තෝරාගත් පරිශීලකයන් නැත.',
|
||||
'delete_selected_success' => 'තෝරාගත් පරිශීලකයින් සාර්ථකව මකා දමන ලදී.',
|
||||
'activate_selected' => 'තෝරාගත් සක්රිය කරන්න',
|
||||
'activate_selected_confirm' => 'තෝරාගත් පරිශීලකයන් සක්රිය කරන්නද?',
|
||||
'activate_selected_empty' => 'සක්රිය කිරීමට තෝරාගත් පරිශීලකයන් නොමැත.',
|
||||
'activate_selected_success' => ' තෝරාගත් පරිශීලකයින් සාර්ථකව සක්රිය කර ඇත.',
|
||||
'deactivate_selected' => 'තෝරාගත් අක්රිය කරන්න',
|
||||
'deactivate_selected_confirm' => 'තෝරාගත් පරිශීලකයන් අක්රිය කරන්නද?',
|
||||
'deactivate_selected_empty' => 'අක්රිය කිරීමට තෝරාගත් පරිශීලකයන් නැත.',
|
||||
'deactivate_selected_success' => 'තෝරාගත් පරිශීලකයින් සාර්ථකව අක්රිය කර ඇත.',
|
||||
'restore_selected' => 'තෝරාගත් ප්රතිසාධනය කරන්න',
|
||||
'restore_selected_confirm' => 'තෝරාගත් පරිශීලකයන් ප්රතිසාධනය කරන්නද?',
|
||||
'restore_selected_empty' => 'ප්රතිසාධනය කිරීමට තෝරාගත් පරිශීලකයන් නැත.',
|
||||
'restore_selected_success' => 'තෝරාගත් පරිශීලකයින් සාර්ථකව ප්රතිසාධනය කරන ලදී.',
|
||||
'ban_selected' => 'තහනම් තෝරන ලදී',
|
||||
'ban_selected_confirm' => 'තෝරාගත් පරිශීලකයින් තහනම් කරන්නද?',
|
||||
'ban_selected_empty' => 'තහනම් කිරීමට තෝරාගත් පරිශීලකයන් නොමැත.',
|
||||
'ban_selected_success' => 'තෝරාගත් පරිශීලකයින් සාර්ථකව තහනම් කරන ලදී.',
|
||||
'unban_selected' => 'තහනම් ඉවත් කිරීම තෝරා ඇත',
|
||||
'unban_selected_confirm' => 'තෝරාගත් පරිශීලකයින් තහනම් නොකරන්නද?',
|
||||
'unban_selected_empty' => 'තහනම් කිරීම ඉවත් කිරීමට තෝරාගත් පරිශීලකයන් නොමැත.',
|
||||
'unban_selected_success' => 'තෝරාගත් පරිශීලකයින් සාර්ථකව තහනම් කිරීම ඉවත් කරන ලදී.',
|
||||
'unsuspend' => 'අත්හිටුවීම ඉවත් කරන්න',
|
||||
'unsuspend_success' => 'පරිශීලකයාගේ අත්හිටුවීම ඉවත් කර ඇත.',
|
||||
'unsuspend_confirm' => 'මෙම පරිශීලකයාගේ අත්හිටුවීම ඉවත් කරන්නද?'
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'පරිශීලකයන්',
|
||||
'menu_label' => 'පරිශීලක සැකසුම්',
|
||||
'menu_description' => 'පරිශීලක සත්යාපනය, ලියාපදිංචිය සහ සක්රිය කිරීමේ සැකසුම් කළමනාකරණය කරන්න.',
|
||||
'activation_tab' => 'සක්රිය කිරීම',
|
||||
'signin_tab' => 'පුරන්න',
|
||||
'registration_tab' => 'ලියාපදිංචි කිරීම',
|
||||
'profile_tab' => 'පැතිකඩ',
|
||||
'notifications_tab' => 'දැනුම්දීම්',
|
||||
'allow_registration' => 'පරිශීලක ලියාපදිංචියට ඉඩ දෙන්න',
|
||||
'allow_registration_comment' => 'මෙය ආබාධිත නම්, පරිශීලකයින් නිර්මාණය කළ හැක්කේ පරිපාලකයින්ට පමණි.',
|
||||
'activate_mode' => 'සක්රිය කිරීමේ මාදිලිය',
|
||||
'activate_mode_comment' => 'පරිශීලක ගිණුමක් සක්රිය කළ යුතු ආකාරය තෝරන්න.',
|
||||
'activate_mode_auto' => 'ස්වයංක්රීය',
|
||||
'activate_mode_auto_comment' => 'ලියාපදිංචි වීමෙන් පසු ස්වයංක්රීයව සක්රිය කර ඇත.',
|
||||
'activate_mode_user' => 'පරිශීලක',
|
||||
'activate_mode_user_comment' => 'පරිශීලකයා තැපෑල භාවිතයෙන් තමන්ගේම ගිණුම සක්රිය කරයි.',
|
||||
'activate_mode_admin' => 'පරිපාලක',
|
||||
'activate_mode_admin_comment' => 'පරිශීලකයෙකු සක්රිය කළ හැක්කේ පරිපාලකයෙකුට පමණි.',
|
||||
'require_activation' => 'පුරනය වීමට සක්රිය කිරීම අවශ්ය වේ',
|
||||
'require_activation_comment' => 'පුරනය වීමට පරිශීලකයින්ට සක්රිය කළ ගිණුමක් තිබිය යුතුය.',
|
||||
'use_throttle' => 'Throttle උත්සාහයන්',
|
||||
'use_throttle_comment' => 'නැවත නැවත අසාර්ථක පුරනය වීමේ උත්සාහයන් පරිශීලකයා තාවකාලිකව අත්හිටුවනු ඇත.',
|
||||
'use_register_throttle' => 'Throttle ලියාපදිංචිය',
|
||||
'use_register_throttle_comment' => 'කෙටි කාලීනව එකම IP වෙතින් බහු ලියාපදිංචි කිරීම් වලක්වන්න.',
|
||||
'block_persistence' => 'සමගාමී සැසි වැළැක්වීම',
|
||||
'block_persistence_comment' => 'සබල කළ විට පරිශීලකයින්ට එකවර උපාංග කිහිපයකට පුරනය විය නොහැක.',
|
||||
'login_attribute' => 'පිවිසුම් ගුණාංගය',
|
||||
'login_attribute_comment' => 'පුරනය වීම සඳහා භාවිතා කළ යුතු මූලික පරිශීලක විස්තර තෝරන්න.',
|
||||
'remember_login' => 'පිවිසුම් මාදිලිය මතක තබා ගන්න',
|
||||
'remember_login_comment' => 'පරිශීලක සැසිය ස්ථීර විය යුතුද යන්න තෝරන්න.',
|
||||
'remember_always' => 'සැමවිටම',
|
||||
'remember_never' => 'කවදාවත් නැහැ',
|
||||
'remember_ask' => 'පුරනය වීමේදී පරිශීලකයාගෙන් විමසන්න',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'පරිශීලක',
|
||||
'id' => 'හැඳුනුම්පත',
|
||||
'username' => 'පරිශීලක නාමය',
|
||||
'name' => 'නම',
|
||||
'name_empty' => 'නිර්නාමික',
|
||||
'surname' => 'වාසගම',
|
||||
'email' => 'විද්යුත් තැපෑල',
|
||||
'created_at' => 'ලියාපදිංචි',
|
||||
'last_seen' => 'අන්තිමට දැක්කේ',
|
||||
'is_guest' => 'අමුත්තන්ගේ',
|
||||
'joined' => 'එකතු වුණා',
|
||||
'is_online' => 'දැන් ඔන්ලයින්',
|
||||
'is_offline' => 'දැනට නොබැඳි',
|
||||
'send_invite' => 'විද්යුත් තැපෑලෙන් ආරාධනාවක් යවන්න',
|
||||
'send_invite_comment' => 'පිවිසුම් සහ මුරපද තොරතුරු අඩංගු පිළිගැනීමේ පණිවිඩයක් යවයි.',
|
||||
'create_password' => 'මුරපදය සාදන්න',
|
||||
'create_password_comment' => 'පුරනය වීමට භාවිතා කරන නව මුරපදයක් ඇතුලත් කරන්න.',
|
||||
'reset_password' => 'මුරපදය නැවත සකසන්න',
|
||||
'reset_password_comment' => 'මෙම පරිශීලක මුරපදය නැවත සැකසීමට, මෙහි නව මුරපදයක් ඇතුළත් කරන්න.',
|
||||
'confirm_password' => 'මුරපදය තහවුරු කිරීම',
|
||||
'confirm_password_comment' => 'එය තහවුරු කිරීමට මුරපදය නැවත ඇතුල් කරන්න.',
|
||||
'groups' => 'කණ්ඩායම්',
|
||||
'empty_groups' => 'ලබා ගත හැකි පරිශීලක කණ්ඩායම් නොමැත.',
|
||||
'avatar' => 'පැතිකඩ පින්තූරය',
|
||||
'details' => 'විස්තර',
|
||||
'account' => 'ගිණුම',
|
||||
'block_mail' => 'මෙම පරිශීලකයාට යවන සියලුම පිටතට යන තැපැල් අවහිර කරන්න.',
|
||||
'status_label' => 'තත්ත්වය',
|
||||
'status_guest' => 'අමුත්තන්ගේ',
|
||||
'status_activated' => 'සක්රිය කර ඇත',
|
||||
'status_registered' => 'ලියාපදිංචි',
|
||||
'created_ip_address' => 'සාදන ලද IP ලිපිනය',
|
||||
'last_ip_address' => 'අවසාන IP ලිපිනය',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'සමූහය',
|
||||
'id' => 'හැඳුනුම්පත',
|
||||
'name' => 'නම',
|
||||
'description_field' => 'විස්තර',
|
||||
'code' => 'කේතය',
|
||||
'code_comment' => 'මෙම කණ්ඩායම හඳුනා ගැනීමට භාවිතා කරන අද්විතීය කේතයක් ඇතුළත් කරන්න.',
|
||||
'created_at' => 'නිර්මාණය කළා',
|
||||
'users_count' => 'පරිශීලකයන්'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'කණ්ඩායම්',
|
||||
'all_groups' => 'පරිශීලක කණ්ඩායම්',
|
||||
'new_group' => 'නව සමූහය',
|
||||
'delete_selected_confirm' => 'ඔබට ඇත්තටම තෝරාගත් කණ්ඩායම් මැකීමට අවශ්යද?',
|
||||
'list_title' => 'කණ්ඩායම් කළමනාකරණය කරන්න',
|
||||
'delete_confirm' => 'ඔබට ඇත්තටම මෙම සමූහය මැකීමට අවශ්යද?',
|
||||
'delete_selected_success' => 'තෝරාගත් කණ්ඩායම් සාර්ථකව මකා දමන ලදී.',
|
||||
'delete_selected_empty' => 'මකා දැමීමට තෝරාගත් කණ්ඩායම් නොමැත.',
|
||||
'return_to_list' => 'කණ්ඩායම් ලැයිස්තුව වෙත ආපසු යන්න',
|
||||
'return_to_users' => 'පරිශීලක ලැයිස්තුව වෙත ආපසු යන්න',
|
||||
'create_title' => 'පරිශීලක කණ්ඩායමක් සාදන්න',
|
||||
'update_title' => 'පරිශීලක කණ්ඩායම සංස්කරණය කරන්න',
|
||||
'preview_title' => 'පරිශීලක කණ්ඩායම පෙරදසුන් කරන්න'
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'විද්යුත් තැපෑල',
|
||||
'attribute_username' => 'පරිශීලක නාමය'
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'ගිණුම',
|
||||
'account_desc' => 'පරිශීලක කළමනාකරණ පෝරමය.',
|
||||
'banned' => 'සමාවන්න, මෙම පරිශීලකයා දැනට සක්රිය කර නැත. වැඩිදුර සහාය සඳහා කරුණාකර අප හා සම්බන්ධ වන්න.',
|
||||
'redirect_to' => 'වෙත හරවා යවන්න',
|
||||
'redirect_to_desc' => 'යාවත්කාලීන කිරීම, පුරනය වීම හෝ ලියාපදිංචි වීමෙන් පසු නැවත යොමු කිරීමට පිටුවේ නම.',
|
||||
'code_param' => 'සක්රිය කිරීමේ කේතය පරාමිතිය',
|
||||
'code_param_desc' => 'ලියාපදිංචි සක්රිය කිරීමේ කේතය සඳහා භාවිතා කරන පිටු URL පරාමිතිය',
|
||||
'force_secure' => 'ආරක්ෂිත ප්රොටෝකෝලය බල කරන්න',
|
||||
'force_secure_desc' => 'සෑම විටම URL HTTPS ක්රමයෙන් හරවා යවන්න.',
|
||||
'invalid_user' => 'ලබා දී ඇති අක්තපත්ර සමඟ පරිශීලකයෙකු හමු නොවීය.',
|
||||
'invalid_activation_code' => 'වලංගු නොවන සක්රීය කිරීමේ කේතයක් සපයා ඇත.',
|
||||
'invalid_deactivation_pass' => 'ඔබ ඇතුළු කළ මුරපදය වලංගු නොවේ.',
|
||||
'invalid_current_pass' => 'ඔබ ඇතුළත් කළ වත්මන් මුරපදය වලංගු නොවේ.',
|
||||
'success_activation' => 'ඔබගේ ගිණුම සාර්ථකව සක්රිය කර ඇත.',
|
||||
'success_deactivation' => 'ඔබගේ ගිණුම සාර්ථකව අක්රිය කර ඇත. ඔබ යනවා දැකීම ගැන කණගාටුයි!',
|
||||
'success_saved' => 'සැකසීම් සාර්ථකව සුරකින ලදී!',
|
||||
'login_first' => 'ඔබ මුලින්ම ලොග් විය යුතුය!',
|
||||
'already_active' => 'ඔබගේ ගිණුම දැනටමත් සක්රිය කර ඇත!',
|
||||
'activation_email_sent' => 'ඔබගේ ඊමේල් ලිපිනයට සක්රිය කිරීමේ විද්යුත් තැපෑලක් යවා ඇත.',
|
||||
'activation_by_admin' => 'ඔබ සාර්ථකව ලියාපදිංචි වී ඇත. ඔබගේ ගිණුම තවමත් සක්රිය නොවන අතර පරිපාලකයෙකු විසින් අනුමත කළ යුතුය.',
|
||||
'registration_disabled' => 'ලියාපදිංචි කිරීම් දැනට අබල කර ඇත.',
|
||||
'registration_throttled' => 'ලියාපදිංචිය අවහිර කර ඇත. කරුණාකර පසුව නැවත උත්සාහ කරන්න.',
|
||||
'sign_in' => 'පුරන්න',
|
||||
'register' => 'ලියාපදිංචි කරන්න',
|
||||
'full_name' => 'සම්පූර්ණ නම',
|
||||
'email' => 'විද්යුත් තැපෑල',
|
||||
'password' => 'මුරපදය',
|
||||
'login' => 'ඇතුල් වන්න',
|
||||
'new_password' => 'නව මුරපදය',
|
||||
'new_password_confirm' => 'නව මුරපදය තහවුරු කරන්න',
|
||||
'update_requires_password' => 'යාවත්කාලීන කිරීමේදී මුරපදය තහවුරු කරන්න',
|
||||
'update_requires_password_comment' => 'ඔවුන්ගේ පැතිකඩ වෙනස් කිරීමේදී පරිශීලකයාගේ වත්මන් මුරපදය අවශ්ය වේ.',
|
||||
'activation_page' => 'සක්රිය කිරීමේ පිටුව',
|
||||
'activation_page_comment' => 'පරිශීලක ගිණුම සක්රිය කිරීම සඳහා භාවිතා කිරීමට පිටුවක් තෝරන්න',
|
||||
'reset_page' => 'පිටුව යළි පිහිටුවන්න',
|
||||
'reset_page_comment' => 'ගිණුමේ මුරපදය යළි පිහිටුවීම සඳහා භාවිතා කිරීමට පිටුවක් තෝරන්න',
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'මුරපදය නැවත සකසන්න',
|
||||
'reset_password_desc' => ' අමතක වූ මුරපද පෝරමය.',
|
||||
'code_param' => 'පරාමිතිය කේතය නැවත සකසන්න',
|
||||
'code_param_desc' => 'යළි පිහිටුවීමේ කේතය සඳහා භාවිතා කරන ලද පිටු URL පරාමිතිය'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'වාරය',
|
||||
'session_desc' => 'පරිශීලක සැසිය පිටුවකට එක් කරන අතර පිටු ප්රවේශය සීමා කළ හැක.',
|
||||
'security_title' => 'පමණක් ඉඩ දෙන්න',
|
||||
'security_desc' => 'මෙම පිටුවට ප්රවේශ වීමට අවසර ඇත්තේ කාටද.',
|
||||
'all' => 'සියලුම',
|
||||
'users' => 'පරිශීලකයන්',
|
||||
'guests' => 'අමුත්තන්',
|
||||
'allowed_groups_title' => 'කණ්ඩායම් වලට ඉඩ දෙන්න',
|
||||
'allowed_groups_description' => 'සියලුම කණ්ඩායම්වලට ඉඩ දීමට අවසර දී ඇති කණ්ඩායම් හෝ කිසිවෙකුට ඉඩ නොදෙන්න',
|
||||
'redirect_title' => 'වෙත හරවා යවන්න',
|
||||
'redirect_desc' => 'ප්රවේශය ප්රතික්ෂේප කළහොත් යළි-යොමු කිරීමට පිටුවේ නම.',
|
||||
'logout' => 'ඔබ සාර්ථකව ලොග් අවුට් වී ඇත!',
|
||||
'stop_impersonate_success' => 'ඔබ තවදුරටත් පරිශීලකයෙකු ලෙස පෙනී සිටින්නේ නැත.',
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,204 @@
|
|||
<?php
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Požívateľ',
|
||||
'description' => 'Správa front-end používateľov.',
|
||||
'tab' => 'Požívatelia',
|
||||
'access_users' => 'Správa používateľov',
|
||||
'access_groups' => 'Správa skupín používateľov',
|
||||
'access_settings' => 'Správa používateľských nastavení',
|
||||
'impersonate_user' => 'Zosobniť používateľov'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Používatelia',
|
||||
'all_users' => 'Všetci používatelia',
|
||||
'new_user' => 'Nový používateľ',
|
||||
'list_title' => 'Správa používateľov',
|
||||
'trashed_hint_title' => 'Používateľ deaktivoval svoj účet',
|
||||
'trashed_hint_desc' => 'Tento používateľ deaktivoval svoj účet a už nechce byť zobrazovaný na webe. Môže kedykoľvek obnoviť svoj účet, keď sa prihlási späť.',
|
||||
'banned_hint_title' => 'Používateľ bol zakázaný',
|
||||
'banned_hint_desc' => 'Tento pouužívateľ bol zakázaný administrátorom a nebude sa môcť prihlásiť.',
|
||||
'guest_hint_title' => 'Toto je hosťujúci používateľ',
|
||||
'guest_hint_desc' => 'Tento používateľ je uložený iba na účely odkazovania a musí sa zaregistrovať pred prihlásením.',
|
||||
'activate_warning_title' => 'Používateľ nie je aktivovaný!',
|
||||
'activate_warning_desc' => 'Tento používateľ nebol aktivovaný a nemusí byť schopný sa prihlásiť.',
|
||||
'activate_confirm' => 'Naozaj chcete aktivovať tohto používateľa?',
|
||||
'activated_success' => 'Používateľ bol aktivovaný',
|
||||
'activate_manually' => 'Aktivovať tohto používateľa manuálne',
|
||||
'convert_guest_confirm' => 'Konvertovať tohto hosťa na používateľa?',
|
||||
'convert_guest_manually' => 'Konvertovať na registrovaného používateľa',
|
||||
'convert_guest_success' => 'Používateľ bol prevedený na zaregistrovaný účet',
|
||||
'impersonate_user' => 'Zosobniť používateľa',
|
||||
'impersonate_confirm' => 'Zosobniť toto používateľa? Môžete sa vrátiť do pôvodného stavu odhlásením.',
|
||||
'impersonate_success' => 'Teraz zosobňujete tohoto používateľa',
|
||||
'delete_confirm' => 'Naozaj chcete zmazať tohto používateľa?',
|
||||
'unban_user' => 'Zrušiť zákaz tohto používateľa',
|
||||
'unban_confirm' => 'Naozaj chcete zrušiť zákaz tohto používateľa?',
|
||||
'unbanned_success' => 'Zákaz používateľa bol zrušený',
|
||||
'return_to_list' => 'Vrátiť sa na zoznam používateľov',
|
||||
'update_details' => 'Aktualizujte detaily',
|
||||
'bulk_actions' => 'Hromadné akcie',
|
||||
'delete_selected' => 'Zmazať označené',
|
||||
'delete_selected_confirm' => 'Zmazať vybraných používateľov?',
|
||||
'delete_selected_empty' => 'Nie sú vybraní žiadni používatelia na odstránenie.',
|
||||
'delete_selected_success' => 'Úspešne ste odstránili vybraných používateľov.',
|
||||
'activate_selected' => 'Aktivovať vybraných',
|
||||
'activate_selected_confirm' => 'Aktivovať vybraných používateľov?',
|
||||
'activate_selected_empty' => 'Nie sú vybraní žiadni používatelia na aktiváciu.',
|
||||
'activate_selected_success' => 'Vybraní používatelia boli úspešne aktivovaní.',
|
||||
'deactivate_selected' => 'Deaktivovať vybraných',
|
||||
'deactivate_selected_confirm' => 'Deaktivovať vybraných používateľov?',
|
||||
'deactivate_selected_empty' => 'Nie sú vybraní žiadni používatelia na deaktiváciu.',
|
||||
'deactivate_selected_success' => 'Vybraní používatelia boli úspešne deaktivovaní.',
|
||||
'restore_selected' => 'Obnoviť vybraných',
|
||||
'restore_selected_confirm' => 'Obnoviť vybraných používateľov?',
|
||||
'restore_selected_empty' => 'Nie sú vybraní žiadni používatelia na obnovenie.',
|
||||
'restore_selected_success' => 'Vybraní používatelia boli úspešne obnovení.',
|
||||
'ban_selected' => 'Zakázať vybraných',
|
||||
'ban_selected_confirm' => 'Zakázať vybraných používateľov?',
|
||||
'ban_selected_empty' => 'Nie sú vybraní žiadni používatelia na zakázanie.',
|
||||
'ban_selected_success' => 'Vybraní používatelia boli úspešne zakázaní.',
|
||||
'unban_selected' => 'Zrušiť zákaz vybraných',
|
||||
'unban_selected_confirm' => 'Zrušiť zakáz vybraných používateľov?',
|
||||
'unban_selected_empty' => 'Nie sú vybraní žiadni používatelia na zrušenie zakázu.',
|
||||
'unban_selected_success' => 'Vybraným používateľom bol úspešne zrušený zakáz.',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Používatelia',
|
||||
'menu_label' => 'Nastavenie používateľov',
|
||||
'menu_description' => 'Správa nastavení používateľov.',
|
||||
'activation_tab' => 'Aktivácia',
|
||||
'signin_tab' => 'Prihlásenie',
|
||||
'registration_tab' => 'Registrácia',
|
||||
'notifications_tab' => 'Notifikácie',
|
||||
'allow_registration' => 'Povoliť registráciu používateľa',
|
||||
'allow_registration_comment' => 'Ak je to zakázané, použávatelia môžu byť vytvorený iba administrátormi.',
|
||||
'activate_mode' => 'Režim aktivácie',
|
||||
'activate_mode_comment' => 'Vyberte spôsob aktivácie používateľského účtu.',
|
||||
'activate_mode_auto' => 'Automatický',
|
||||
'activate_mode_auto_comment' => 'Automaticky sa aktivuje pri registrácii.',
|
||||
'activate_mode_user' => 'Používateľ',
|
||||
'activate_mode_user_comment' => 'Používateľ aktivuje svoj vlastný účet emailom.',
|
||||
'activate_mode_admin' => 'Administrátor',
|
||||
'activate_mode_admin_comment' => 'Iba Administrátor môže aktivovať používateľa.',
|
||||
'require_activation' => 'Prihlásenie vyžaduje aktiváciu',
|
||||
'require_activation_comment' => 'Používatelia musia mať aktivovaný účet na prihlásenie.',
|
||||
'use_throttle' => 'Obmedziť pokusy',
|
||||
'use_throttle_comment' => 'Opakované neúspešné pokusy o prihlásenie používateľov dočasne zablokuje.',
|
||||
'block_persistence' => 'Zabrániť súbežným reláciám',
|
||||
'block_persistence_comment' => 'Po zapnutí sa používatelia nemôžu prihlásiť do viacerých zariadení súčasne.',
|
||||
'login_attribute' => 'Prihlasovací atribút',
|
||||
'login_attribute_comment' => 'Vyberte, aké základný údaj používateľa sa má použiť pri prihlasovaní.',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Používateľ',
|
||||
'id' => 'ID',
|
||||
'username' => 'Užívateľské meno',
|
||||
'name' => 'Meno',
|
||||
'name_empty' => 'Anonym',
|
||||
'surname' => 'Priezvisko',
|
||||
'email' => 'E-mail',
|
||||
'created_at' => 'Registrovaný',
|
||||
'last_seen' => 'Naposledy videný',
|
||||
'is_guest' => 'Hosť',
|
||||
'joined' => 'Pridaný',
|
||||
'is_online' => 'Teraz online',
|
||||
'is_offline' => 'Momentálne je offline',
|
||||
'send_invite' => 'Poslať pozvánku e-mailom',
|
||||
'send_invite_comment' => 'Odošle uvítaciu správu obsahujúcu informácie o prihlásení a hesle.',
|
||||
'create_password' => 'Vytvoriť heslo',
|
||||
'create_password_comment' => 'Zadajte nové heslo, ktoré sa používa na prihlásenie.',
|
||||
'reset_password' => 'Obnoviť heslo',
|
||||
'reset_password_comment' => 'Ak chcete obnoviť heslo používateľa, zadajte nové heslo tu.',
|
||||
'confirm_password' => 'Potvrdenie hesla',
|
||||
'confirm_password_comment' => 'Znova zadajte heslo a potvrďte ho.',
|
||||
'groups' => 'Skupiny',
|
||||
'empty_groups' => 'Neexistujú žiadne skupiny používateľov.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Detaily',
|
||||
'account' => '=Účet',
|
||||
'block_mail' => 'Zablokujte všetku odchádzajúcu poštu odoslanú tomuto používateľovi.',
|
||||
'status_guest' => 'Hosť',
|
||||
'status_activated' => 'Aktivovaný',
|
||||
'status_registered' => 'Registrovaný',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Skupina',
|
||||
'id' => 'ID',
|
||||
'name' => 'Meno',
|
||||
'description_field' => 'Popis',
|
||||
'code' => 'Kód',
|
||||
'code_comment' => 'Zadajte jedinečný kód použitý na identifikáciu tejto skupiny.',
|
||||
'created_at' => 'Vytvorená',
|
||||
'users_count' => 'Používatelia'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Skupiny',
|
||||
'all_groups' => 'Skupiny používateľov',
|
||||
'new_group' => 'Nová skupina',
|
||||
'delete_selected_confirm' => 'Naozaj chcete odstrániť vybrané skupiny?',
|
||||
'list_title' => 'Správa skupín',
|
||||
'delete_confirm' => 'Naozaj chcete odstrániť túto skupinu?',
|
||||
'delete_selected_success' => 'Vybrané skupiny boli úspešne odstránené.',
|
||||
'delete_selected_empty' => 'Nie sú vybrané žiadne skupiny na odstránenie.',
|
||||
'return_to_list' => 'Späť na zoznam skupín',
|
||||
'return_to_users' => 'Späť na zoznam používateľov',
|
||||
'create_title' => 'Vytvoriť skupinu používateľov',
|
||||
'update_title' => 'Upraviť skupinu používateľov',
|
||||
'preview_title' => 'Ukážka skupiny používateľov'
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'E-mail',
|
||||
'attribute_username' => 'Užívateľské meno'
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Účet',
|
||||
'account_desc' => 'Formulár správy používateľov.',
|
||||
'banned' => 'Ospravedlňujeme sa, tento používateľ momentálne nie je aktivovaný. Kontaktujte nás pre ďalšiu pomoc.',
|
||||
'redirect_to' => 'Presmerovať na',
|
||||
'redirect_to_desc' => 'Názov stránky na presmerovanie po aktualizácii, prihlásení alebo registrácii.',
|
||||
'code_param' => 'Aktivačný kód Parameter',
|
||||
'code_param_desc' => 'Parameter URL stránky použitý ako kód aktivácie registrácie',
|
||||
'force_secure' => 'Vynútiť bezpečný protokol',
|
||||
'force_secure_desc' => 'Vždy presmerujte adresu URL schémou HTTPS.',
|
||||
'invalid_user' => 'Používateľ s uvedenými povereniami nebol nájdený.',
|
||||
'invalid_activation_code' => 'Bol zadaný neplatný aktivačný kód.',
|
||||
'invalid_deactivation_pass' => 'Zadané heslo je neplatné.',
|
||||
'success_activation' => 'Váš účet bol úspešne aktivovaný.',
|
||||
'success_deactivation' => 'Váš účet bol úspešne deaktivovaný. Je nám ľúto, že vás odchádzate!',
|
||||
'success_saved' => 'Nastavenia boli úspešne uložené!',
|
||||
'login_first' => 'Najprv musíte byť prihlásení!',
|
||||
'already_active' => 'Váš účet je už aktivovaný!',
|
||||
'activation_email_sent' => 'Na vašu e-mailovú adresu bol odoslaný aktivačný e-mail.',
|
||||
'registration_disabled' => 'Registrácie sú momentálne nedostupné.',
|
||||
'sign_in' => 'Prihlásiť sa',
|
||||
'register' => 'Registrovať',
|
||||
'full_name' => 'Celé meno',
|
||||
'email' => 'E-mail',
|
||||
'password' => 'Heslo',
|
||||
'login' => 'Prihlásiť sa',
|
||||
'new_password' => 'Nové heslo',
|
||||
'new_password_confirm' => 'Potvrďte nové heslo'
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Obnoviť heslo',
|
||||
'reset_password_desc' => 'Formulár pre zabudnuté heslo.',
|
||||
'code_param' => 'Obnovovací kód Parameter',
|
||||
'code_param_desc' => 'Parameter URL stránky použitý pre obnovovací kód'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Relácia',
|
||||
'session_desc' => 'Pridá reláciu používateľa na stránku a môže obmedziť prístup na stránku.',
|
||||
'security_title' => 'Povoliť iba',
|
||||
'security_desc' => 'Kto má prístup na túto stránku.',
|
||||
'all' => 'Všetci',
|
||||
'users' => 'Užívatelia',
|
||||
'guests' => 'Hostia',
|
||||
'allowed_groups_title' => 'Povoliť skupiny',
|
||||
'allowed_groups_description' => 'Vyberte povolené skupiny alebo žiadne, aby ste povolili všetky skupiny',
|
||||
'redirect_title' => 'Presmerovať na',
|
||||
'redirect_desc' => 'Názov stránky pre presmerovanie, ak je prístup zamietnutý.',
|
||||
'logout' => 'Úspešne ste sa odhlásili!',
|
||||
'stop_impersonate_success' => 'Už sa nezosobňujete používateľa.',
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,227 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Uporabniki',
|
||||
'description' => 'Upravljanje uporabnikov spletne strani.',
|
||||
'tab' => 'Uporabniki',
|
||||
'access_users' => 'Upravljanje uporabnikov',
|
||||
'access_groups' => 'Upravljanje uporabniških skupin',
|
||||
'access_settings' => 'Upravljanje uporabniških nastavitev',
|
||||
'impersonate_user' => 'Impersonacija uporabnikov',
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Uporabniki',
|
||||
'all_users' => 'Vsi uporabniki',
|
||||
'new_user' => 'Nov uporabnik',
|
||||
'list_title' => 'Upravljanje uporabnikov',
|
||||
'trashed_hint_title' => 'Uporabnik je deaktiviral svoj račun',
|
||||
'trashed_hint_desc' => 'Ta uporabnik je deaktiviral svoj račun in se ne želi več pojavljati na spletni strani. Svoj račun lahko kadarkoli obnovi s prijavo.',
|
||||
'banned_hint_title' => 'Uporabnik je bil blokiran',
|
||||
'banned_hint_desc' => 'Tega uporabnika je administrator blokiral in se ne more več prijaviti.',
|
||||
'guest_hint_title' => 'Ta uporabnik je gost',
|
||||
'guest_hint_desc' => 'Ta uporabnik je shranjen samo za referenčne namene. Če se želi prijaviti, se mora najprej registrirati.',
|
||||
'activate_warning_title' => 'Uporabnik ni aktiviran!',
|
||||
'activate_warning_desc' => 'Ta uporabnik ni bil aktiviran in se ne more prijaviti.',
|
||||
'activate_confirm' => 'Ali ste prepričani, da želite aktivirati tega uporabnika?',
|
||||
'activated_success' => 'Uporabnik je bil aktiviran.',
|
||||
'activate_manually' => 'Ročno aktivirajte tega uporabnika',
|
||||
'convert_guest_confirm' => 'Želite gosta spremeniti v uporabnika?',
|
||||
'convert_guest_manually' => 'Spremeni v registriranega uporabnika',
|
||||
'convert_guest_success' => 'Uporabnik je bil spremenjen v registriranega uporabnika.',
|
||||
'impersonate_user' => 'Impersoniraj uporabnika',
|
||||
'impersonate_confirm' => 'Ali ste prepričani, da želite impersonirati tega uporabnika? V prvotno stanje se lahko vrnete tako, da se odjavite.',
|
||||
'impersonate_success' => 'Sedaj impersonirate tega uporabnika.',
|
||||
'delete_confirm' => 'Ali ste prepričani, da želite izbrisati tega uporabnika?',
|
||||
'unban_user' => 'Odblokiranje uporabnika',
|
||||
'unban_confirm' => 'Ali ste prepričani, da želite odblokirati tega uporabnika?',
|
||||
'unbanned_success' => 'Uporabnik je bil odblokiran.',
|
||||
'return_to_list' => 'Vrni se na seznam uporabnikov',
|
||||
'update_details' => 'Posodobite podrobnosti',
|
||||
'bulk_actions' => 'Skupna dejanja',
|
||||
'delete_selected' => 'Izbriši izbrane',
|
||||
'delete_selected_confirm' => 'Izbrišem izbrane uporabnike?',
|
||||
'delete_selected_empty' => 'Ni izbranih uporabnikov za izbris.',
|
||||
'delete_selected_success' => 'Izbrani uporabniki so bili uspešno izbrisani.',
|
||||
'activate_selected' => 'Aktiviraj izbrane',
|
||||
'activate_selected_confirm' => 'Aktiviram izbrane uporabnike?',
|
||||
'activate_selected_empty' => 'Ni izbranih uporabnikov za aktiviranje.',
|
||||
'activate_selected_success' => 'Izbrani uporabniki so bili uspešno aktivirani.',
|
||||
'deactivate_selected' => 'Deaktiviraj izbrane',
|
||||
'deactivate_selected_confirm' => 'Deaktiviram izbrane uporabnike?',
|
||||
'deactivate_selected_empty' => 'Ni izbranih uporabnikov za deaktiviranje.',
|
||||
'deactivate_selected_success' => 'Izbrani uporabniki so bili uspešno deaktivirani.',
|
||||
'restore_selected' => 'Obnovi izbrane',
|
||||
'restore_selected_confirm' => 'Obnovim izbrane uporabnike?',
|
||||
'restore_selected_empty' => 'Ni izbranih uporabnikov za obnovitev.',
|
||||
'restore_selected_success' => 'Izbrani uporabniki so bili uspešno obnovljeni.',
|
||||
'ban_selected' => 'Blokiraj izbrane',
|
||||
'ban_selected_confirm' => 'Blokiram izbrane uporabnike?',
|
||||
'ban_selected_empty' => 'Ni izbranih uporabnikov za blokiranje.',
|
||||
'ban_selected_success' => 'Izbrani uporabniki so bili uspešno blokirani.',
|
||||
'unban_selected' => 'Odblokiraj izbrane',
|
||||
'unban_selected_confirm' => 'Odblokiram izbrane uporabnike?',
|
||||
'unban_selected_empty' => 'Ni izbranih uporabnikov za deblokiranje.',
|
||||
'unban_selected_success' => 'Izbrani uporabniki so bili uspešno odblokirani.',
|
||||
'unsuspend' => 'Odsuspendiraj',
|
||||
'unsuspend_success' => 'Uporabnik ni več suspendiran.',
|
||||
'unsuspend_confirm' => 'Odsuspendiram tega uporabnika?',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Uporabniki',
|
||||
'menu_label' => 'Nastavitve za uporabnike',
|
||||
'menu_description' => 'Upravljanje z nastavitvami za uporabnike.',
|
||||
'activation_tab' => 'Aktivacija',
|
||||
'signin_tab' => 'Prijava',
|
||||
'registration_tab' => 'Registracija',
|
||||
'profile_tab' => 'Profil',
|
||||
'notifications_tab' => 'Obvestila',
|
||||
'allow_registration' => 'Dovoli registracijo uporabnikov',
|
||||
'allow_registration_comment' => 'Če je onemogočeno, lahko uporabnike ustvarijo le administratorji.',
|
||||
'activate_mode' => 'Način aktivacije',
|
||||
'activate_mode_comment' => 'Izberite, na kakšen način naj bo aktiviran uporabniški račun.',
|
||||
'activate_mode_auto' => 'Avtomatski',
|
||||
'activate_mode_auto_comment' => 'Aktiviranje je avtomatsko in se zgodi takoj po registraciji.',
|
||||
'activate_mode_user' => 'Uporabniški',
|
||||
'activate_mode_user_comment' => 'Uporabnik sam aktivira svoj račun z uporabo e-pošte.',
|
||||
'activate_mode_admin' => 'Administratorski',
|
||||
'activate_mode_admin_comment' => 'Uporabnika lahko aktivira le administrator.',
|
||||
'require_activation' => 'Prijava zahteva aktiviranje',
|
||||
'require_activation_comment' => 'Uporabniki potrebujejo za prijavo aktiviran račun.',
|
||||
'use_throttle' => 'Blokiranje večkratnih prijav',
|
||||
'use_throttle_comment' => 'Večkratni ponovljeni neuspešni poskusi prijave bodo uporabnika začasno suspendirali.',
|
||||
'use_register_throttle' => 'Blokiranje registracij',
|
||||
'use_register_throttle_comment' => 'Prepreči več zaporednih registracij z istega IP naslova v kratkem času.',
|
||||
'block_persistence' => 'Prepreči sočasne prijave',
|
||||
'block_persistence_comment' => 'Če je omogočeno, se uporabniki ne morejo prijaviti v več naprav hkrati.',
|
||||
'login_attribute' => 'Atribut prijave',
|
||||
'login_attribute_comment' => 'Izberite, kateri primarni atribut uporabnika naj bo uporabljen za prijavo.',
|
||||
'remember_login' => 'Zapomni si način prijave',
|
||||
'remember_login_comment' => 'Določite ali naj bo uporabniška seja obstojna.',
|
||||
'remember_always' => 'Vedno',
|
||||
'remember_never' => 'Nikoli',
|
||||
'remember_ask' => 'Vprašaj uporabnika ob prijavi',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Uporabnik',
|
||||
'id' => 'ID',
|
||||
'username' => 'Uporabniško ime',
|
||||
'name' => 'Ime',
|
||||
'name_empty' => 'Anonimni uporabnik',
|
||||
'surname' => 'Priimek',
|
||||
'email' => 'E-pošta',
|
||||
'created_at' => 'Registriran dne',
|
||||
'last_seen' => 'Zadnjič viden',
|
||||
'is_guest' => 'Gost',
|
||||
'joined' => 'Prijavljen',
|
||||
'is_online' => 'Trenutno na spletu',
|
||||
'is_offline' => 'Trenutno ni na spletu',
|
||||
'send_invite' => 'Pošlji povabilo prek e-pošte',
|
||||
'send_invite_comment' => 'Pošlje pozdravno sporočilo, ki vsebuje podatke za prijavo.',
|
||||
'create_password' => 'Geslo',
|
||||
'create_password_comment' => 'Ustvarite novo geslo, ki se bo uporabljalo za prijavo.',
|
||||
'reset_password' => 'Ponastavi geslo',
|
||||
'reset_password_comment' => 'Če želite ponastaviti geslo tega uporabnika, vnesite tukaj novo geslo.',
|
||||
'confirm_password' => 'Potrditev gesla',
|
||||
'confirm_password_comment' => 'Za potrditev ponovno vnesite geslo.',
|
||||
'groups' => 'Skupine',
|
||||
'empty_groups' => 'Ni uporabniških skupin.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Podrobnosti',
|
||||
'account' => 'Račun',
|
||||
'block_mail' => 'Blokiraj vso odhodno pošto, poslano temu uporabniku.',
|
||||
'status_label' => 'Status',
|
||||
'status_guest' => 'Gost',
|
||||
'status_activated' => 'Aktiviran',
|
||||
'status_registered' => 'Registriran',
|
||||
'created_ip_address' => 'Ustvarjen IP naslov',
|
||||
'last_ip_address' => 'Zadnji IP naslov',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Skupina',
|
||||
'id' => 'ID',
|
||||
'name' => 'Ime',
|
||||
'description_field' => 'Opis',
|
||||
'code' => 'Koda',
|
||||
'code_comment' => 'Vnesite unikatno kodo za identifikacijo te skupine.',
|
||||
'created_at' => 'Ustvarjeno',
|
||||
'users_count' => 'Uporabniki',
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Skupine',
|
||||
'all_groups' => 'Skupine uporabnikov',
|
||||
'new_group' => 'Nova skupina',
|
||||
'delete_selected_confirm' => 'Ali ste prepričani, da želite izbrisati izbrane skupine?',
|
||||
'list_title' => 'Upravljanje skupin',
|
||||
'delete_confirm' => 'Ali ste prepričani, da želite izbrisati to skupino?',
|
||||
'delete_selected_success' => 'Izbrane skupine so uspešno izbrisane.',
|
||||
'delete_selected_empty' => 'Ni izbranih skupin za izbris.',
|
||||
'return_to_list' => 'Nazaj na seznam skupin',
|
||||
'return_to_users' => 'Nazaj na seznam uporabnikov',
|
||||
'create_title' => 'Ustvari skupino uporabnikov',
|
||||
'update_title' => 'Uredi skupino uporabnikov',
|
||||
'preview_title' => 'Predogled skupine uporabnikov',
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'E-pošta',
|
||||
'attribute_username' => 'Uporabniško ime',
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Račun',
|
||||
'account_desc' => 'Upravljanje uporabnika.',
|
||||
'banned' => 'Oprostite, ta uporabnik trenutno ni aktiviran. Prosimo, kontaktirajte nas za nadaljnjo pomoč.',
|
||||
'redirect_to' => 'Preusmeritev na',
|
||||
'redirect_to_desc' => 'Stran, na katero bo uporabnik preusmerjen po posodobitvi profila, po prijavi ali po registraciji.',
|
||||
'code_param' => 'Parameter aktivacijske kode',
|
||||
'code_param_desc' => 'Parameter v URL-ju strani, ki se uporablja za aktivacijsko kodo registracije.',
|
||||
'force_secure' => 'Vsili zaščitni protokol',
|
||||
'force_secure_desc' => 'URL vedno preusmeri s shemo HTTPS.',
|
||||
'invalid_user' => 'Uporabnik s podanimi podatki ne obstaja.',
|
||||
'invalid_activation_code' => 'Podana je neveljavna aktivacijska koda.',
|
||||
'invalid_deactivation_pass' => 'Geslo, ki ste ga vnesli, je neveljavno.',
|
||||
'invalid_current_pass' => 'Trenutno geslo, ki ste ga vnesli, je neveljavno.',
|
||||
'success_activation' => 'Vaš račun je uspešno aktiviran.',
|
||||
'success_deactivation' => 'Vaš račun je bil uspešno deaktiviran. Žal nam je, ker nas zapuščate!',
|
||||
'success_saved' => 'Nastavitve so uspešno shranjene.',
|
||||
'login_first' => 'Najprej se morate prijaviti.',
|
||||
'already_active' => 'Vaš račun je že aktiviran.',
|
||||
'activation_email_sent' => 'Aktivacijsko sporočilo je bilo poslano na vaš e-poštni naslov.',
|
||||
'registration_disabled' => 'Registracije so trenutno onemogočene.',
|
||||
'registration_throttled' => 'Registracija je trenutno onemogočena. Prosimo, poskusite zopet kasneje.',
|
||||
'sign_in' => 'Prijava',
|
||||
'register' => 'Registracija',
|
||||
'full_name' => 'Polno ime',
|
||||
'email' => 'E-pošta',
|
||||
'password' => 'Geslo',
|
||||
'login' => 'Prijava',
|
||||
'new_password' => 'Novo geslo',
|
||||
'new_password_confirm' => 'Potrdite novo geslo',
|
||||
'update_requires_password' => 'Posodobitev zahteva geslo',
|
||||
'update_requires_password_comment' => 'Spreminjanje profila uporabnika zahteva vnos trenutnega gesla.',
|
||||
'activation_page' => 'Aktivacijska stran',
|
||||
'activation_page_comment' => 'Izberite stran za aktiviranje uporabniškega računa.',
|
||||
'reset_page' => 'Ponastavitvena stran',
|
||||
'reset_page_comment' => 'Izberite stran za ponastavitev gesla računa.',
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Ponastavitev gesla',
|
||||
'reset_password_desc' => 'Obrazec za pozabljeno geslo.',
|
||||
'code_param' => 'Parameter za ponastavitev',
|
||||
'code_param_desc' => 'Parameter v URL-ju strani, ki se uporablja za ponastavitev gesla.',
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Seja',
|
||||
'session_desc' => 'Namestitev uporabniške seje, ki lahko omeji dostop do strani.',
|
||||
'security_title' => 'Dovoljenje za dostop',
|
||||
'security_desc' => 'Določite, kdo lahko dostopa do te strani.',
|
||||
'all' => 'Vsi',
|
||||
'users' => 'Uporabniki',
|
||||
'guests' => 'Gosti',
|
||||
'allowed_groups_title' => 'Dovoljenje za skupine',
|
||||
'allowed_groups_description' => 'Določite, katere skupine lahko dostopajo do te strani. Če ne izberete nobene, imajo dovoljenje vse skupine.',
|
||||
'redirect_title' => 'Preusmeritev na stran',
|
||||
'redirect_desc' => 'Določite stran, na katero je preusmerjen uporabnik, če je dostop onemogočen.',
|
||||
'logout' => 'Uspešno ste se odjavili.',
|
||||
'stop_impersonate_success' => 'Uporabnika ne impersonirate več.',
|
||||
],
|
||||
];
|
||||
|
|
@ -0,0 +1,205 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Användare',
|
||||
'description' => 'Hantera front-end användare.',
|
||||
'tab' => 'Användare',
|
||||
'access_users' => 'Hantera användare',
|
||||
'access_groups' => 'Hantera användargrupper',
|
||||
'access_settings' => 'Hantera användarinställningar',
|
||||
'impersonate_user' => 'Personifiera Användare'
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Användare',
|
||||
'all_users' => 'Alla användare',
|
||||
'new_user' => 'Ny användare',
|
||||
'list_title' => 'Hantera användare',
|
||||
'trashed_hint_title' => 'Användaren har avaktiverat sitt konto',
|
||||
'trashed_hint_desc' => 'Den här användaren har inaktiverat sitt konto och vill inte längre visas på webbplatsen. De kan återställa sitt konto när som helst genom att logga in igen. ',
|
||||
'banned_hint_title' => 'Användaren har blivit bannad',
|
||||
'banned_hint_desc' => 'Den här användaren har blivit bannad av en administratör och kommer inte att kunna logga in.',
|
||||
'guest_hint_title' => 'Detta är en gästanvändare',
|
||||
'guest_hint_desc' => 'Den här användaren är endast lagrad för referensändamål och måste registreras innan du loggar in.',
|
||||
'activate_warning_title' => 'Användare inte aktiverad!',
|
||||
'activate_warning_desc' => 'Den här användaren har inte aktiverats och kan inte logga in.',
|
||||
'activate_confirm' => 'Vill du verkligen aktivera den här användaren?',
|
||||
'activated_success' => 'Användaren har aktiverats',
|
||||
'activate_manually' => 'Aktivera den här användaren manuellt',
|
||||
'convert_guest_confirm' => 'Konvertera denna gäst till en användare?',
|
||||
'convert_guest_manually' => 'Konvertera till registrerad användare',
|
||||
'convert_guest_success' => 'Användaren har konverterats till ett registrerat konto',
|
||||
'impersonate_user' => 'Personifiera användaren',
|
||||
'impersonate_confirm' => 'Impersonera den här användaren? Du kan återgå till ditt ursprungliga tillstånd genom att logga ut. ',
|
||||
'impersonate_success' => 'Du är nu efterliknar den här användaren',
|
||||
'delete_confirm' => 'Vill du verkligen radera den här användaren?',
|
||||
'unban_user' => 'Unban den här användaren',
|
||||
'unban_confirm' => 'Vill du verkligen avbryta denna användare?',
|
||||
'unbanned_success' => 'Användaren har blivit unbanned',
|
||||
'return_to_list' => 'Återvänd till användarlistan',
|
||||
'update_details' => 'Uppdatera detaljer',
|
||||
'bulk_actions' => 'Massåtgärder',
|
||||
'delete_selected' => 'Radera vald',
|
||||
'delete_selected_confirm' => 'Ta bort de valda användarna?',
|
||||
'delete_selected_empty' => 'Det finns inga utvalda användare att ta bort.',
|
||||
'delete_selected_success' => 'Ta bort de valda användarna framgångsrikt.',
|
||||
'activate_selected' => 'Aktivera vald',
|
||||
'activate_selected_confirm' => 'Aktivera de valda användarna?',
|
||||
'activate_selected_empty' => 'Det finns inga utvalda användare att aktivera.',
|
||||
'activate_selected_success' => 'Aktiverade de valda användarna framgångsrikt.',
|
||||
'deactivate_selected' => 'Inaktivera vald',
|
||||
'deactivate_selected_confirm' => 'Inaktivera de valda användarna?',
|
||||
'deactivate_selected_empty' => 'Det finns inga utvalda användare att avaktivera.',
|
||||
'deactivate_selected_success' => 'Deaktiverade de valda användarna framgångsrikt.',
|
||||
'restore_selected' => 'Återställ valda',
|
||||
'restore_selected_confirm' => 'Återställ de valda användarna?',
|
||||
'restore_selected_empty' => 'Det finns inga utvalda användare att återställa.',
|
||||
'restore_selected_success' => 'Återställde de valda användarna framgångsrikt.',
|
||||
'ban_selected' => 'Ban vald',
|
||||
'ban_selected_confirm' => 'Förbjud de valda användarna?',
|
||||
'ban_selected_empty' => 'Det finns inga utvalda användare att förbuda.',
|
||||
'ban_selected_success' => 'Förbannade de valda användarna framgångsrikt.',
|
||||
'unban_selected' => 'Unban vald',
|
||||
'unban_selected_confirm' => 'Unban de valda användarna?',
|
||||
'unban_selected_empty' => 'Det finns inga utvalda användare att unban.',
|
||||
'unban_selected_success' => 'Unbanned de utvalda användarna.',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Användare',
|
||||
'menu_label' => 'Användarinställningar',
|
||||
'menu_description' => 'Hantera användarbaserade inställningar.',
|
||||
'activation_tab' => 'Aktivering',
|
||||
'signin_tab' => 'Logga in',
|
||||
'registration_tab' => 'Registrering',
|
||||
'notifications_tab' => 'Meddelanden',
|
||||
'allow_registration' => 'Tillåt användarregistrering',
|
||||
'allow_registration_comment' => 'Om detta är inaktiverat kan användare endast skapas av administratörer.',
|
||||
'activate_mode' => 'Aktiveringsläge',
|
||||
'activate_mode_comment' => 'Välj hur ett användarkonto ska aktiveras.',
|
||||
'activate_mode_auto' => 'Automatisk',
|
||||
'activate_mode_auto_comment' => 'Aktiveras automatiskt vid registrering.',
|
||||
'activate_mode_user' => 'Användare',
|
||||
'activate_mode_user_comment' => 'Användaren aktiverar sitt eget konto via e-post.',
|
||||
'activate_mode_admin' => 'Administratör',
|
||||
'activate_mode_admin_comment' => 'Endast en administratör kan aktivera en användare.',
|
||||
'require_activation' => 'Logga in kräver aktivering',
|
||||
'require_activation_comment' => 'Användare måste ha ett aktiverat konto för att logga in.',
|
||||
'use_throttle' => 'Upprepningsförsök',
|
||||
'use_throttle_comment' => 'Upprepade misslyckade inloggningsförsök kommer tillfälligt att stoppa användaren.',
|
||||
'block_persistence' => 'Förhindra samtidiga sessioner',
|
||||
'block_persistence_comment' => 'När aktiverade användare inte kan logga in på flera enheter samtidigt.',
|
||||
'login_attribute' => 'Logga in egenskaper',
|
||||
'login_attribute_comment' => 'Välj vilken primär användarinfo som ska användas för inloggning.',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'Användare',
|
||||
'id' => 'ID',
|
||||
'username' => 'Användarnamn',
|
||||
'name' => 'Namn',
|
||||
'name_empty' => 'Anonym',
|
||||
'surname' => 'Efternamn',
|
||||
'email' => 'Email',
|
||||
'created_at' => 'Registrerad',
|
||||
'last_seen' => 'Senast sett',
|
||||
'is_guest' => 'Gäst',
|
||||
'joined' => 'Anställd',
|
||||
'is_online' => 'Online nu',
|
||||
'is_offline' => 'För närvarande offline',
|
||||
'send_invite' => 'Skicka inbjudan via e-post',
|
||||
'send_invite_comment' => 'Skickar ett välkomstmeddelande som innehåller inloggnings- och lösenordsinformation.',
|
||||
'create_password' => 'Skapa lösenord',
|
||||
'create_password_comment' => 'Ange ett nytt lösenord som används för inloggning.',
|
||||
'reset_password' => 'Återställ lösenord',
|
||||
'reset_password_comment' => 'För att återställa användarens lösenord, ange ett nytt lösenord här.',
|
||||
'confirm_password' => 'Bekräftelse av lösenord',
|
||||
'confirm_password_comment' => 'Ange lösenordet igen för att bekräfta det.',
|
||||
'groups' => 'Grupper',
|
||||
'empty_groups' => 'Det finns inga användargrupper tillgängliga.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Detaljer',
|
||||
'account' => 'Konto',
|
||||
'block_mail' => 'Blockera alla utgående mail som skickas till den här användaren.',
|
||||
'status_guest' => 'Gäst',
|
||||
'status_activated' => 'Aktiverad',
|
||||
'status_registered' => 'Registrerad',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Grupp',
|
||||
'id' => 'ID',
|
||||
'name' => 'Namn',
|
||||
'description_field' => 'Beskrivning',
|
||||
'code' => 'Kod',
|
||||
'code_comment' => 'Ange en unik kod som används för att identifiera den här gruppen.',
|
||||
'created_at' => 'Skapat',
|
||||
'users_count' => 'Användare'
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Grupper',
|
||||
'all_groups' => 'Användargrupper',
|
||||
'new_group' => 'Ny grupp',
|
||||
'delete_selected_confirm' => 'Vill du verkligen radera valda grupper?',
|
||||
'list_title' => 'Hantera grupper',
|
||||
'delete_confirm' => 'Vill du verkligen radera den här gruppen?',
|
||||
'delete_selected_success' => 'Tog bort de valda grupperna framgångsrikt',
|
||||
'delete_selected_empty' => 'Det finns inga valda grupper att radera.',
|
||||
'return_to_list' => 'Tillbaka till grupplista',
|
||||
'return_to_users' => 'Tillbaka till användarlistan',
|
||||
'create_title' => 'Skapa användargrupp',
|
||||
'update_title' => 'Redigera användargrupp',
|
||||
'preview_title' => 'Förhandsgranska användargrupp'
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'Email',
|
||||
'attribute_username' => 'Användarnamn'
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Konto',
|
||||
'account_desc' => 'Användarhanteringsformulär.',
|
||||
'banned' => 'Tyvärr, den här användaren är för närvarande inte aktiverad. Vänligen kontakta oss för ytterligare hjälp. ',
|
||||
'redirect_to' => 'Omdirigera till',
|
||||
'redirect_to_desc' => 'Sidnamn för att omdirigera till efter uppdatering, logga in eller registrera.',
|
||||
'code_param' => 'Aktiveringskod Param',
|
||||
'code_param_desc' => 'Sidadressadressparametern som används för registreringsaktiveringskoden',
|
||||
'force_secure' => 'Tvinga säkert protokoll',
|
||||
'force_secure_desc' => 'Omdirigera alltid URL-adressen med HTTPS-schemat.',
|
||||
'invalid_user' => 'En användare kunde inte hittas med angivna referenser.',
|
||||
'invalid_activation_code' => 'Ogiltig aktiveringskod medföljer.',
|
||||
'invalid_deactivation_pass' => 'Lösenordet du angav var ogiltigt.',
|
||||
'success_activation' => 'Aktiverat ditt konto.',
|
||||
'success_deactivation' => 'Inaktiverade ditt konto framgångsrikt. Tråkigt att du lämnar oss! ',
|
||||
'success_saved' => 'Inställningar sparades framgångsrikt!',
|
||||
'login_first' => 'Du måste vara inloggad först!',
|
||||
'already_active' => 'Ditt konto är redan aktiverat!',
|
||||
'activation_email_sent' => 'Ett aktiverings-e-postmeddelande har skickats till din e-postadress.',
|
||||
'registration_disabled' => 'Registreringar är för närvarande inaktiverade.',
|
||||
'sign_in' => 'Logga in',
|
||||
'register' => 'Registrera',
|
||||
'full_name' => 'Fullständigt namn',
|
||||
'email' => 'Email',
|
||||
'password' => 'Lösenord',
|
||||
'login' => 'Logga in',
|
||||
'new_password' => 'Nytt lösenord',
|
||||
'new_password_confirm' => 'Bekräfta nytt lösenord'
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Återställ lösenord',
|
||||
'reset_password_desc' => 'Glömt lösenordsformulär.',
|
||||
'code_param' => 'Återställ kodparam',
|
||||
'code_param_desc' => 'Sidadressparametern som används för återställningskoden'
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Session',
|
||||
'session_desc' => 'Lägger till användarsessionen på en sida och kan begränsa sidåtkomst.',
|
||||
'security_title' => 'Tillåt bara',
|
||||
'security_desc' => 'Vem får komma åt denna sida.',
|
||||
'all' => 'Alla',
|
||||
'users' => 'Användare',
|
||||
'guests' => 'Gäster',
|
||||
'allowed_groups_title' => 'Tillåt grupper',
|
||||
'allowed_groups_description' => 'Välj tillåtna grupper eller ingen för att tillåta alla grupper',
|
||||
'redirect_title' => 'Omdirigera till',
|
||||
'redirect_desc' => 'Sidnamn att omdirigera om åtkomst nekas.',
|
||||
'logout' => 'Du har blivit framgångsrik utloggad!',
|
||||
'stop_impersonate_success' => 'Du personifierar inte längre en användare.',
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,222 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => 'Üye',
|
||||
'description' => 'Ön-yüz üye yönetimi.',
|
||||
'tab' => 'Üyeler',
|
||||
'access_users' => 'Üyeleri Yönet',
|
||||
'access_groups' => 'Üye Gruplarını Yönet',
|
||||
'access_settings' => 'Üye Ayarlarını Yönet',
|
||||
'impersonate_user' => 'Üye Gibi Gezin',
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => 'Üyeler',
|
||||
'all_users' => 'Bütün Üyeler',
|
||||
'new_user' => 'Yeni Üye',
|
||||
'list_title' => 'Üyeleri Yönet',
|
||||
'trashed_hint_title' => 'Üye hesabını pasifleştirmiş',
|
||||
'trashed_hint_desc' => 'Üye hesabını pasifleştirmiş ve bu sitede görünmek istemiyor. Tekrar hesabına giriş yaparak hesabını istediği zaman aktifleştirebilir.',
|
||||
'banned_hint_title' => 'Üye engellendi.',
|
||||
'banned_hint_desc' => 'Üye bir yönetici tarafından engellendi ve giriş yapamayacak.',
|
||||
'guest_hint_title' => 'Bu üye ziyaretçi.',
|
||||
'guest_hint_desc' => 'Bu üye ziyaretçi olarak eklenmiş ve giriş yapabilmesi için kayıt olması gerekiyor.',
|
||||
'activate_warning_title' => 'Üye hesabı aktif edilmemiş!',
|
||||
'activate_warning_desc' => 'Bu üye hesabı aktif edilmedi ve oturum açamayacaktır.',
|
||||
'activate_confirm' => 'Bu üyeyi gerçekten aktif etmek istediğinize emin misiniz?',
|
||||
'activated_success' => 'Üye aktifleştirildi',
|
||||
'activate_manually' => 'Bu üyeyi aktif et',
|
||||
'convert_guest_confirm' => 'Ziyaretçiyi üyeye çevirmek istiyor musunuz?',
|
||||
'convert_guest_manually' => 'Kayıtlı üyeye çevir',
|
||||
'convert_guest_success' => 'Ziyaretçi, kayıtlı üyeye çevrildi.',
|
||||
'impersonate_user' => 'Üye Gibi Gezin',
|
||||
'impersonate_confirm' => 'Bu üye gibi giriş yapmak istediğinize emin misiniz? Çıkış yaparak tekrar orjinal halinize dönebilirsiniz.',
|
||||
'impersonate_success' => 'Şimdi üye gibi gezinebilirsiniz.',
|
||||
'delete_confirm' => 'Bu üyeyi gerçekten silmek istediğinize emin misiniz?',
|
||||
'unban_user' => 'Üyenin engelini kaldır',
|
||||
'unban_confirm' => 'Bu üyenin engelini kaldırmak istediğinize emin misiniz?',
|
||||
'unbanned_success' => 'Üyenin engeli kaldırıldı',
|
||||
'return_to_list' => 'Üye listesine geri dön',
|
||||
'update_details' => 'Detayları değiştir',
|
||||
'bulk_actions' => 'Toplu işlemler',
|
||||
'delete_selected' => 'Seçileni sil',
|
||||
'delete_selected_confirm' => 'Seçili üyeleri sil?',
|
||||
'delete_selected_empty' => 'Silmek için seçili üye yok.',
|
||||
'delete_selected_success' => 'Seçili üyeler başarıyla silindi.',
|
||||
'activate_selected' => 'Seçileni etkinleştir',
|
||||
'activate_selected_confirm' => 'Seçili kullanıcılar etkinleştirilsin mi?',
|
||||
'activate_selected_empty' => 'Etkinleştirilecek seçili kullanıcı yok.',
|
||||
'activate_selected_success' => 'Seçilen kullanıcılar başarıyla etkinleştirildi.',
|
||||
'deactivate_selected' => 'Seçileni pasifleştir',
|
||||
'deactivate_selected_confirm' => 'Seçilen üyeler pasifleştirilsin mi?',
|
||||
'deactivate_selected_empty' => 'Pasifleştirmek için üye seçmelisiniz.',
|
||||
'deactivate_selected_success' => 'Seçilen üyeler pasifleştirildi.',
|
||||
'restore_selected' => 'Seçileni aktifleştir',
|
||||
'restore_selected_confirm' => 'Seçilen üyeler aktifleştirilsin mi?',
|
||||
'restore_selected_empty' => 'Aktifleştirmek için üye seçmelisiniz.',
|
||||
'restore_selected_success' => 'Seçilen üyeler aktifleştirildi.',
|
||||
'ban_selected' => 'Seçileni engelle',
|
||||
'ban_selected_confirm' => 'Seçilen üyeler engellensin mi?',
|
||||
'ban_selected_empty' => 'Engellemek için üye seçmelisiniz.',
|
||||
'ban_selected_success' => 'Seçilen üyeler engellendi.',
|
||||
'unban_selected' => 'Seçilenin engelini kaldır',
|
||||
'unban_selected_confirm' => 'Seçilen üyelerin engeli kaldırılsın mi?',
|
||||
'unban_selected_empty' => 'Engeli kaldırmak için üye seçmelisiniz.',
|
||||
'unban_selected_success' => 'Seçilen üyelerin engeli kaldırıldı.',
|
||||
'unsuspend' => 'Askıya alma',
|
||||
'unsuspend_success' => 'Üye askıya alındı.',
|
||||
'unsuspend_confirm' => 'Üye askıya alınsın mı?'
|
||||
],
|
||||
'settings' => [
|
||||
'users' => 'Üyeler',
|
||||
'menu_label' => 'Üye ayarları',
|
||||
'menu_description' => 'Üye bazlı ayarları yönetin.',
|
||||
'activation_tab' => 'Aktivasyon',
|
||||
'signin_tab' => 'Oturum Açma',
|
||||
'registration_tab' => 'Kayıt',
|
||||
'profile_tab' => 'Profil',
|
||||
'notifications_tab' => 'Bildirimler',
|
||||
'allow_registration' => 'Üye kaydını aktifleştir',
|
||||
'allow_registration_comment' => 'Eğer bu seçenek pasifleştirilirse sadece yöneticiler tarafından üye kaydı yapılabilecektir.',
|
||||
'min_password_length' => 'Minimum şifre uzunluğu',
|
||||
'min_password_length_comment' => 'Üye şifresi için gereken minimum şifre uzunluğu',
|
||||
'activate_mode' => 'Aktivasyon Modu',
|
||||
'activate_mode_comment' => 'Üyenin nasıl aktif edileceğini seçin.',
|
||||
'activate_mode_auto' => 'Otomatik',
|
||||
'activate_mode_auto_comment' => 'Üye olduğu an aktif edilsin.',
|
||||
'activate_mode_user' => 'Üye',
|
||||
'activate_mode_user_comment' => 'Eposta adresini kullanarak aktif etsin.',
|
||||
'activate_mode_admin' => 'Yönetici',
|
||||
'activate_mode_admin_comment' => 'Sadece yöneticiler aktif edebilsin.',
|
||||
'require_activation' => 'Üye girişleri aktivasyon gerektirsin',
|
||||
'require_activation_comment' => 'Üyeler oturum açabilmek için aktif edilmiş bir hesaba sahip olmalıdırlar.',
|
||||
'use_throttle' => 'Boğma Girişimleri',
|
||||
'use_throttle_comment' => 'Tekrarlayan hatalı girişlerde kısa süreliğine üyeyi askıya al.',
|
||||
'block_persistence' => 'Eşzamanlı oturumları engelle',
|
||||
'block_persistence_comment' => 'Etkinleştirildiğinde, kullanıcılar aynı anda birden fazla cihazda oturum açamazlar.',
|
||||
'login_attribute' => 'Oturum Açma Yöntemi',
|
||||
'login_attribute_comment' => 'Üye girişlerinde hangi üye detayının kullanılacağını seçin.',
|
||||
'remember_login' => 'Şifre hatırlama modu',
|
||||
'remember_login_comment' => 'Üye oturumu kalıcı olsun.',
|
||||
'remember_always' => 'Her zaman',
|
||||
'remember_never' => 'Hiçbir zaman',
|
||||
'remember_ask' => 'Üye girişi sırasında sor',
|
||||
],
|
||||
'user' => [
|
||||
'label' => 'User',
|
||||
'id' => 'ID',
|
||||
'username' => 'Üye Adı',
|
||||
'name' => 'Adı',
|
||||
'name_empty' => '-İsimsiz-',
|
||||
'surname' => 'Soyadı',
|
||||
'email' => 'Eposta',
|
||||
'created_at' => 'Kayıtlı',
|
||||
'last_seen' => 'Son görülme',
|
||||
'is_guest' => 'Ziyaretçi',
|
||||
'joined' => 'Katılım Tarihi',
|
||||
'is_online' => 'Şuan çevrimiçi',
|
||||
'is_offline' => 'Şuan çevrimdışı',
|
||||
'send_invite' => 'E-mail ile davet gönder',
|
||||
'send_invite_comment' => 'Giriş bilgilerinin bulunduğu bir e-mail gönder.',
|
||||
'create_password' => 'Şifre oluştur',
|
||||
'create_password_comment' => 'Giriş için bir şifre oluşturun.',
|
||||
'reset_password' => 'Şifre sıfırla',
|
||||
'reset_password_comment' => 'Bu üyenin parolasını sıfırlamak için buraya yenisini girin.',
|
||||
'confirm_password' => 'Parola tekrar',
|
||||
'confirm_password_comment' => 'Sıfırlamayı onaylamak için şifreyi tekrar girin.',
|
||||
'groups' => 'Gruplar',
|
||||
'empty_groups' => 'Gösterilecek grup yok.',
|
||||
'avatar' => 'Avatar',
|
||||
'details' => 'Detaylar',
|
||||
'account' => 'Hesap',
|
||||
'block_mail' => 'Bu üyenin mail göndermesini engelle.',
|
||||
'status_guest' => 'Ziyaretçi',
|
||||
'status_activated' => 'Aktif',
|
||||
'status_registered' => 'Kayıtlı',
|
||||
'created_ip_address' => 'Kayıt olduğu IP Adresi',
|
||||
'last_ip_address' => 'Son IP Adresi',
|
||||
],
|
||||
'group' => [
|
||||
'label' => 'Grup',
|
||||
'id' => 'No',
|
||||
'name' => 'İsim',
|
||||
'description_field' => 'Açıklama',
|
||||
'code' => 'Kod',
|
||||
'code_comment' => 'Bu grubu tanımlayan eşsiz bir kod girin.',
|
||||
'created_at' => 'Oluşturulma',
|
||||
'users_count' => 'Üyeler',
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => 'Gruplar',
|
||||
'all_groups' => 'Üye Grupları',
|
||||
'new_group' => 'Yeni Grup',
|
||||
'delete_selected_confirm' => 'Seçilen grupları silmek istediğinize emin misiniz?',
|
||||
'list_title' => 'Grupları Yönet',
|
||||
'delete_confirm' => 'Bu grubu silmek istediğinize emin misiniz?',
|
||||
'delete_selected_success' => 'Seçilen gruplar silindi.',
|
||||
'delete_selected_empty' => 'Silinecek grup seçmelisiniz.',
|
||||
'return_to_list' => 'Grup listesine dön',
|
||||
'return_to_users' => 'Üye listesine dön',
|
||||
'create_title' => 'Üye grubu oluştur',
|
||||
'update_title' => 'Üye grubunu düzenle',
|
||||
'preview_title' => 'Grubu önizle',
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => 'Eposta',
|
||||
'attribute_username' => 'Üye Adı',
|
||||
],
|
||||
'account' => [
|
||||
'account' => 'Hesap',
|
||||
'account_desc' => 'Üye yönetimi formu.',
|
||||
'banned' => 'Maalesef, bu kullanıcı şu anda etkin değil. Daha fazla yardım için lütfen bizimle iletişime geçin.',
|
||||
'redirect_to' => 'Yönlendir',
|
||||
'redirect_to_desc' => 'Güncellemeden sonra yönlendirilecek sayfanın adı, oturum aç ya da kayıt ol.',
|
||||
'code_param' => 'Aktivasyon Kodu Parametresi',
|
||||
'code_param_desc' => 'Üyelik aktivasyon kodu için sayfanın URL parametresi kullanılır.',
|
||||
'force_secure' => 'Güvenli protokole zorla',
|
||||
'force_secure_desc' => 'URL’yi her zaman HTTPS şemasına yönlendirin.',
|
||||
'invalid_user' => 'Girilen bilgilerle eşleşen bir üye yok.',
|
||||
'invalid_activation_code' => 'Geçersiz aktivasyon kodu',
|
||||
'invalid_current_pass' => 'Mevcut şifrenizi hatalı girdiniz.',
|
||||
'invalid_deactivation_pass' => 'Girdiğiniz şifre geçersiz.',
|
||||
'success_activation' => 'Hesabınız başarıyla aktifleştirildi.',
|
||||
'success_deactivation' => 'Hesabınız pasifleştirildi. Aramıza tekrar bekleriz!',
|
||||
'success_saved' => 'Ayarlar başarıyla kaydedildi!',
|
||||
'login_first' => 'Önce oturum açmalısınız!',
|
||||
'already_active' => 'Hesabın zaten aktifleştirildi!',
|
||||
'activation_email_sent' => 'Tanımladığınız eposta adresine aktivasyon maili gönderildi.',
|
||||
'registration_disabled' => 'Üye kaydı geçici olarak durduruldu.',
|
||||
'registration_throttled' => 'Üye kayıt işleminiz kısıtlandı ve geçersiz oldu. Lütfen daha sonra tekrar deneyin.',
|
||||
'sign_in' => 'Oturum Aç',
|
||||
'register' => 'Kayıt Ol',
|
||||
'full_name' => 'Tam İsim',
|
||||
'email' => 'Email',
|
||||
'password' => 'Parola',
|
||||
'login' => 'Oturum Aç',
|
||||
'new_password' => 'Yeni Parola',
|
||||
'new_password_confirm' => 'Yeni Şifre Onayla',
|
||||
'update_requires_password' => 'Güncelleme sırasında onay gereksin',
|
||||
'update_requires_password_comment' => 'Üye bilgi güncelleme ekranında mevcut şifre zorunlu olsun.'
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => 'Parolanızı Sıfırlayın',
|
||||
'reset_password_desc' => 'Unutulan şifreyi sıfırlama formu.',
|
||||
'code_param' => 'Sıfırlama Kodu Parametresi',
|
||||
'code_param_desc' => 'Sıfırlama kodu için sayfanın URL parametresi kullanılır.',
|
||||
],
|
||||
'session' => [
|
||||
'session' => 'Oturum',
|
||||
'session_desc' => 'Üye oturumlarını sayfaya ekler ve sayfaya erişimi kısıtlayın.',
|
||||
'security_title' => 'Görüntüleme İzni',
|
||||
'security_desc' => 'Bu sayfaya erişim izni olanlar.',
|
||||
'all' => 'Hepsi',
|
||||
'users' => 'Üyeler',
|
||||
'guests' => 'Misafirler',
|
||||
'allowed_groups_title' => 'Gruplara izin ver',
|
||||
'allowed_groups_description' => 'İzin verilecek grupları seçin, veya "hiçbiri" seçerek tüm gruplara izin verin.',
|
||||
'redirect_title' => 'Yönlendir ',
|
||||
'redirect_desc' => 'Erişimi engelliyse yönlendirilecek sayfa.',
|
||||
'logout' => 'Başarıyla çıkış yaptınız!',
|
||||
'stop_impersonate_success' => 'Artık üye gibi gezinmiyorsunuz. Kendi hesabınızı kullanabilirsiniz.',
|
||||
],
|
||||
];
|
||||
|
|
@ -0,0 +1,231 @@
|
|||
<?php return [
|
||||
'plugin' => [
|
||||
'name' => '用户',
|
||||
'description' => '用户管理.',
|
||||
'tab' => '用户',
|
||||
'access_users' => '管理用戶',
|
||||
'access_groups' => '管理用户组',
|
||||
'access_settings' => '管理用户设置',
|
||||
'impersonate_user' => '模拟用户',
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => '用户',
|
||||
'all_users' => '所有用户',
|
||||
'new_user' => '添加新用户',
|
||||
'list_title' => '管理用户',
|
||||
'trashed_hint_title' => '用户已停用其帐户',
|
||||
'trashed_hint_desc' => '此用户已停用其帐户,不再希望出现在网站上。他们可以在任何时候通过重新登录来恢复帐户。',
|
||||
'banned_hint_title' => '用户已被禁止',
|
||||
'banned_hint_desc' => '该用户已被管理员禁止,无法登录。',
|
||||
'guest_hint_title' => '这是一个游客用户',
|
||||
'guest_hint_desc' => '此用户仅供参考,在登录前需要注册。',
|
||||
'activate_warning_title' => '用户未激活!',
|
||||
'activate_warning_desc' => '用户未激活,无法登录.',
|
||||
'activate_confirm' => '确认激活该用户?',
|
||||
'activated_success' => '用户激活成功!',
|
||||
'activate_manually' => '手动激活该用户',
|
||||
'convert_guest_confirm' => '转换访客为用户吗?',
|
||||
'convert_guest_manually' => '转换为注册用户',
|
||||
'convert_guest_success' => '用户已转换为注册帐户',
|
||||
'impersonate_user' => '模拟用户',
|
||||
'impersonate_confirm' => '模拟此用户? 您可以通过注销恢复到原始状态。',
|
||||
'impersonate_success' => '你现在模拟这个用户',
|
||||
'delete_confirm' => '确认删除该用户?',
|
||||
'unban_user' => '解禁用户',
|
||||
'unban_confirm' => '确定解禁该用户吗?',
|
||||
'unbanned_success' => '用户已经解禁',
|
||||
'return_to_list' => '返回用户列表',
|
||||
'update_details' => '更新详细信息',
|
||||
'bulk_actions' => '批量操作',
|
||||
'delete_selected' => '删除选中',
|
||||
'delete_selected_confirm' => '删除所选用户?',
|
||||
'delete_selected_empty' => '未选择任何用户.',
|
||||
'delete_selected_success' => '成功删除所选用户.',
|
||||
'activate_selected' => '激活选中的',
|
||||
'activate_selected_confirm' => '激活选定的用户?',
|
||||
'activate_selected_empty' => '没有选定的用户可以激活。',
|
||||
'activate_selected_success' => '已成功激活所选用户。',
|
||||
'deactivate_selected' => '停用选中',
|
||||
'deactivate_selected_confirm' => '确定停用选中的用户吗?',
|
||||
'deactivate_selected_empty' => '没有选中任何要停用的用户。',
|
||||
'deactivate_selected_success' => '成功停用选定的用户。',
|
||||
'restore_selected' => '恢复选中',
|
||||
'restore_selected_confirm' => '确定恢复选中的用户吗?',
|
||||
'restore_selected_empty' => '没有选中任何要恢复的用户。',
|
||||
'restore_selected_success' => '成功恢复选中选中的用户。',
|
||||
'ban_selected' => '禁用选中',
|
||||
'ban_selected_confirm' => '确定禁止选中的用户吗?',
|
||||
'ban_selected_empty' => '没有选中的用户需要禁用。',
|
||||
'ban_selected_success' => '成功禁用选中用户',
|
||||
'unban_selected' => '启用选中',
|
||||
'unban_selected_confirm' => '确定启用选中的用户吗?',
|
||||
'unban_selected_empty' => '没有选中的用户可以启用。',
|
||||
'unban_selected_success' => '成功启用选中的用户。',
|
||||
'unsuspend' => '取消冻结',
|
||||
'unsuspend_success' => '用户已解除冻结。',
|
||||
'unsuspend_confirm' => '取消冻结该用户?',
|
||||
'activating' => '激活中...',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => '用户',
|
||||
'menu_label' => '用户选项',
|
||||
'menu_description' => '管理用户选项.',
|
||||
'activation_tab' => '激活',
|
||||
'signin_tab' => '登录',
|
||||
'registration_tab' => '注册',
|
||||
'profile_tab' => 'Profile',
|
||||
'notifications_tab' => '提醒',
|
||||
'allow_registration' => '允许用户注册',
|
||||
'allow_registration_comment' => '如果禁用注册,用户只能由管理员创建。',
|
||||
'activate_mode' => '激活模式',
|
||||
'activate_mode_comment' => '选择激活方式.',
|
||||
'activate_mode_auto' => '自动',
|
||||
'activate_mode_auto_comment' => '注册成功后自动激活.',
|
||||
'activate_mode_user' => '用户',
|
||||
'activate_mode_user_comment' => '邮件激活.',
|
||||
'activate_mode_admin' => '管理员',
|
||||
'activate_mode_admin_comment' => '管理员激活.',
|
||||
'require_activation' => '选项',
|
||||
'require_activation_comment' => '用户必须激活后才能登录.',
|
||||
'use_throttle' => '登录限制',
|
||||
'use_throttle_comment' => '用户重复登录失败时禁用用户.',
|
||||
'use_register_throttle' => '注册频率',
|
||||
'use_register_throttle_comment' => '防止在短时间内从同一 IP 进行多次注册。',
|
||||
'block_persistence' => '防止并发会话',
|
||||
'block_persistence_comment' => '启用后,用户无法同时登录多个设备。',
|
||||
'login_attribute' => '登录字段',
|
||||
'login_attribute_comment' => '选择用户登录类型.',
|
||||
'remember_login' => '记住登录模式',
|
||||
'remember_login_comment' => '选择用户会话是否应该是持久的。',
|
||||
'remember_always' => '总是',
|
||||
'remember_never' => '绝不',
|
||||
'remember_ask' => '在登录时询问用户',
|
||||
'welcome_template' => '欢迎模版',
|
||||
'welcome_template_comment' => '用户激活成功后邮件模版.',
|
||||
'no_mail_template' => '不发送邮件提醒',
|
||||
'hint_templates' => '你可以通过管理面板 邮件 > 邮件模版 设置邮件正文模版.',
|
||||
],
|
||||
'user' => [
|
||||
'label' => '用户',
|
||||
'id' => 'ID',
|
||||
'username' => '用户名',
|
||||
'name' => '名',
|
||||
'name_empty' => '匿名的',
|
||||
'surname' => '姓',
|
||||
'email' => '邮箱',
|
||||
'created_at' => '注册时间',
|
||||
'last_seen' => '上次登录时间',
|
||||
'is_guest' => '访客',
|
||||
'joined' => '加入',
|
||||
'is_online' => '当前在线',
|
||||
'is_offline' => '当前离线',
|
||||
'send_invite' => '用邮件发送邀请',
|
||||
'send_invite_comment' => '发送一个包含用户名和密码的欢迎消息',
|
||||
'create_password' => '创建密码',
|
||||
'create_password_comment' => '输入登陆新密码',
|
||||
'reset_password' => '重置密码',
|
||||
'reset_password_comment' => '请输入新密码.',
|
||||
'confirm_password' => '确认密码',
|
||||
'confirm_password_comment' => '再次输入密码.',
|
||||
'groups' => '群组',
|
||||
'empty_groups' => '无可用用户群组',
|
||||
'avatar' => '头像',
|
||||
'details' => '描述',
|
||||
'account' => '帐号',
|
||||
'block_mail' => '阻止向该用户发送邮件',
|
||||
'status_label' => 'Status',
|
||||
'status_guest' => '访客',
|
||||
'status_activated' => '活跃的',
|
||||
'status_registered' => '在册的',
|
||||
'created_ip_address' => '创建的 IP 地址',
|
||||
'last_ip_address' => '最后一个 IP 地址',
|
||||
],
|
||||
'group' => [
|
||||
'label' => '群组',
|
||||
'id' => 'ID',
|
||||
'name' => '姓名',
|
||||
'description_field' => '描述',
|
||||
'code' => '编码',
|
||||
'code_comment' => '输入一个唯一编码来标志当前用户组',
|
||||
'created_at' => '创建',
|
||||
'users_count' => '用户',
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => '群组',
|
||||
'all_groups' => '用户群组',
|
||||
'new_group' => '新的用户组',
|
||||
'delete_selected_confirm' => '确定清空选中用户组么?',
|
||||
'list_title' => '管理群组',
|
||||
'delete_confirm' => '确定要删除该群组吗?',
|
||||
'delete_selected_success' => '成功删除选中的群组。',
|
||||
'delete_selected_empty' => '没有选中的要删除的群组。',
|
||||
'return_to_list' => '返回群组列表',
|
||||
'return_to_users' => '返回用户列表',
|
||||
'create_title' => '创建群组',
|
||||
'update_title' => '编辑群组',
|
||||
'preview_title' => '上一个群组',
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => '邮箱',
|
||||
'attribute_username' => '用户名',
|
||||
],
|
||||
'account' => [
|
||||
'account' => '帐号',
|
||||
'account_desc' => '用户信息.',
|
||||
'banned' => '抱歉,此用户当前未激活。 请联系我们以获得进一步的帮助。',
|
||||
'redirect_to' => '跳转至',
|
||||
'redirect_to_desc' => '登录或注册成功后跳转页面.',
|
||||
'code_param' => '激活码参数。',
|
||||
'code_param_desc' => '激活码的验证页面URL参数',
|
||||
'force_secure' => '强制安全协议',
|
||||
'force_secure_desc' => '始终使用 HTTPS 架构重定向 URL。',
|
||||
'invalid_user' => '未找到该用户。',
|
||||
'invalid_activation_code' => '错误的激活码',
|
||||
'invalid_deactivation_pass' => '密码不正确。',
|
||||
'invalid_current_pass' => '您输入的当前密码无效。',
|
||||
'success_activation' => '您的帐号已成功激活.',
|
||||
'success_deactivation' => '成功停用您的账号,很抱歉看到您离我而去!',
|
||||
'success_saved' => '设置保存成功!',
|
||||
'login_first' => '您需要先登录帐号才能访问该页面!',
|
||||
'already_active' => '您的帐号暂未激活!',
|
||||
'activation_email_sent' => '激活邮件已发送至您的邮箱.',
|
||||
'activation_by_admin' => '您已经成功注册了。 您的帐户尚未激活,必须得到管理员的批准。',
|
||||
'registration_disabled' => '当前已经禁用注册。',
|
||||
'registration_throttled' => '注册受到限制。 请稍后再试。',
|
||||
'sign_in' => '登录',
|
||||
'register' => '注册',
|
||||
'full_name' => '全名',
|
||||
'email' => '邮箱',
|
||||
'password' => '密码',
|
||||
'login' => '登录',
|
||||
'new_password' => '设置密码',
|
||||
'new_password_confirm' => '确认密码',
|
||||
'update_requires_password' => '更新时确认密码',
|
||||
'update_requires_password_comment' => '更改个人资料时需要用户的当前密码。',
|
||||
'activation_page' => '激活页面',
|
||||
'activation_page_comment' => '选择用于激活用户帐户的页面',
|
||||
'reset_page' => '重置页面',
|
||||
'reset_page_comment' => '选择用于重置帐户密码的页面',
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => '重置密码',
|
||||
'reset_password_desc' => '找回密码.',
|
||||
'code_param' => '重置验证码参数',
|
||||
'code_param_desc' => '重置密码的验证码页面URL参数',
|
||||
],
|
||||
'session' => [
|
||||
'session' => '会话',
|
||||
'session_desc' => '将用户会话添加到页面,可以限制页访问。',
|
||||
'security_title' => '仅允许',
|
||||
'security_desc' => '谁可以访问这个页面。',
|
||||
'all' => '所有人',
|
||||
'users' => '注册用户',
|
||||
'guests' => '游客',
|
||||
'allowed_groups_title' => '允许组',
|
||||
'allowed_groups_description' => '选择允许的组或无以允许所有组',
|
||||
'redirect_title' => '跳转至',
|
||||
'redirect_desc' => '拒绝访问时重定向到页面的名字。',
|
||||
'logout' => '你已经成功退出登陆!',
|
||||
'stop_impersonate_success' => '您不再模拟用户。',
|
||||
],
|
||||
];
|
||||
|
|
@ -0,0 +1,222 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'plugin' => [
|
||||
'name' => '會員',
|
||||
'description' => '前台會員管理系統。',
|
||||
'tab' => '會員',
|
||||
'access_users' => '管理會員',
|
||||
'access_groups' => '管理會員群組',
|
||||
'access_settings' => '管理會員設定',
|
||||
'impersonate_user' => '以指定會員登入',
|
||||
],
|
||||
'users' => [
|
||||
'menu_label' => '會員',
|
||||
'all_users' => '所有會員',
|
||||
'new_user' => '新會員',
|
||||
'list_title' => '管理會員',
|
||||
'trashed_hint_title' => '會員帳號已停用',
|
||||
'trashed_hint_desc' => '此會員已主動停用帳號,且不會在網站上出現。會員可隨時登入號以恢復其帳號。',
|
||||
'banned_hint_title' => '會員已封鎖',
|
||||
'banned_hint_desc' => '此會員已被管理者封鎖,且不能再次登入。',
|
||||
'guest_hint_title' => '遊客',
|
||||
'guest_hint_desc' => '此會員資料尚未註冊僅供參考。',
|
||||
'activate_warning_title' => '帳號未啟用!',
|
||||
'activate_warning_desc' => '此帳號尚未啟用,可能無法登入。',
|
||||
'activate_confirm' => '是否啟用此帳號?',
|
||||
'activated_success' => '帳號已啟用。',
|
||||
'activate_manually' => '手動啟用此帳號',
|
||||
'convert_guest_confirm' => '是否轉換遊客為正式會員?',
|
||||
'convert_guest_manually' => '轉換為正式會員',
|
||||
'convert_guest_success' => '帳號轉換成功。',
|
||||
'impersonate_user' => '登入此會員',
|
||||
'impersonate_confirm' => '是否以此會員登入?你可以登出以切換為原狀態。',
|
||||
'impersonate_success' => '你已模仿該會員登入。',
|
||||
'delete_confirm' => '是否刪除此會員?',
|
||||
'unban_user' => '解除封鎖此會員',
|
||||
'unban_confirm' => '是否解除封鎖此會員?',
|
||||
'unbanned_success' => '使用者已解除封鎖。',
|
||||
'return_to_list' => '返回會員列表',
|
||||
'update_details' => '更新資訊',
|
||||
'bulk_actions' => '批次處理',
|
||||
'delete_selected' => '刪除選取',
|
||||
'delete_selected_confirm' => '是否刪除所選的會員?',
|
||||
'delete_selected_empty' => '沒有會員被選取。',
|
||||
'delete_selected_success' => '已成功刪除會員。',
|
||||
'activate_selected' => '啟動帳號',
|
||||
'activate_selected_confirm' => '是否啟動所選的帳號?',
|
||||
'activate_selected_empty' => '沒有會員被選取。',
|
||||
'activate_selected_success' => '已成功啟動會員。',
|
||||
'deactivate_selected' => '停用帳號',
|
||||
'deactivate_selected_confirm' => '是否停用所選的帳號?',
|
||||
'deactivate_selected_empty' => '沒有會員被選取。',
|
||||
'deactivate_selected_success' => '已成功停用帳號。',
|
||||
'restore_selected' => '復原帳號',
|
||||
'restore_selected_confirm' => '是否復原所選的帳號?',
|
||||
'restore_selected_empty' => '沒有會員被選取。',
|
||||
'restore_selected_success' => '已成功復原帳號。',
|
||||
'ban_selected' => '封鎖帳號',
|
||||
'ban_selected_confirm' => '是否封鎖所選的帳號?',
|
||||
'ban_selected_empty' => '沒有會員被選取。',
|
||||
'ban_selected_success' => '已成功封鎖帳號。',
|
||||
'unban_selected' => '解除封鎖',
|
||||
'unban_selected_confirm' => '是否解除封鎖所選的帳號?',
|
||||
'unban_selected_empty' => '沒有會員被選取。',
|
||||
'unban_selected_success' => '已成功解除封鎖帳號。',
|
||||
'unsuspend' => '解除停用帳號',
|
||||
'unsuspend_success' => '帳號已解除停用。',
|
||||
'unsuspend_confirm' => '解除停用此帳號?',
|
||||
],
|
||||
'settings' => [
|
||||
'users' => '會員',
|
||||
'menu_label' => '會員設定',
|
||||
'menu_description' => '管理會員基本設定。',
|
||||
'activation_tab' => '啟用',
|
||||
'signin_tab' => '登入',
|
||||
'registration_tab' => '註冊',
|
||||
'profile_tab' => '會員資料',
|
||||
'notifications_tab' => '通知',
|
||||
'allow_registration' => '允許會員註冊',
|
||||
'allow_registration_comment' => '關閉此項將只有管理員能新增會員帳號。',
|
||||
'activate_mode' => '啟用模式',
|
||||
'activate_mode_comment' => '選擇會員如何啟用帳號。',
|
||||
'activate_mode_auto' => '自動',
|
||||
'activate_mode_auto_comment' => '註冊後自動啟用。',
|
||||
'activate_mode_user' => '會員',
|
||||
'activate_mode_user_comment' => '會員使用電子郵件啟用帳號。',
|
||||
'activate_mode_admin' => '管理員',
|
||||
'activate_mode_admin_comment' => '僅管理員可啟用帳號。',
|
||||
'require_activation' => '需啟動後登入',
|
||||
'require_activation_comment' => '會員在首次登入前須先啟動帳號。',
|
||||
'use_throttle' => '節制嘗試登入',
|
||||
'use_throttle_comment' => '重複登入失敗將會暫時停用帳號。',
|
||||
'use_register_throttle' => '節制嘗試註冊',
|
||||
'use_register_throttle_comment' => '防止短期間內來自同個 IP 的註冊請求。',
|
||||
'block_persistence' => '禁止多重登入',
|
||||
'block_persistence_comment' => '開啟後會員將無法在多個裝置同時登入。',
|
||||
'login_attribute' => '登入帳號',
|
||||
'login_attribute_comment' => '選擇會員登入所使用的帳號資料。',
|
||||
'remember_login' => '保留登入狀態',
|
||||
'remember_login_comment' => '選擇會員登入狀態是否保留。',
|
||||
'remember_always' => '總是',
|
||||
'remember_never' => '永不',
|
||||
'remember_ask' => '會員登入時決定',
|
||||
],
|
||||
'user' => [
|
||||
'label' => '會員',
|
||||
'id' => 'ID',
|
||||
'username' => '會員名稱',
|
||||
'name' => '名',
|
||||
'name_empty' => 'Anonymous',
|
||||
'surname' => '姓',
|
||||
'email' => '信箱',
|
||||
'created_at' => '註冊日期',
|
||||
'last_seen' => '最後上線',
|
||||
'is_guest' => '遊客',
|
||||
'joined' => '加入時間',
|
||||
'is_online' => '線上',
|
||||
'is_offline' => '已離線',
|
||||
'send_invite' => '寄送邀請函',
|
||||
'send_invite_comment' => '寄送一封含有帳號密碼的邀請函。',
|
||||
'create_password' => '設定密碼',
|
||||
'create_password_comment' => '請出入登入用密碼。',
|
||||
'reset_password' => '重設密碼',
|
||||
'reset_password_comment' => '請輸入密碼以重設。',
|
||||
'confirm_password' => '確認密碼',
|
||||
'confirm_password_comment' => '請重新輸入密碼。',
|
||||
'groups' => '群組',
|
||||
'empty_groups' => '尚無會員群組',
|
||||
'avatar' => '頭像',
|
||||
'details' => '資訊',
|
||||
'account' => '帳號',
|
||||
'block_mail' => '取消所有寄送至此帳號的郵件。',
|
||||
'status_guest' => '遊客',
|
||||
'status_activated' => '已啟用',
|
||||
'status_registered' => '已註冊',
|
||||
'created_ip_address' => '註冊位置',
|
||||
'last_ip_address' => '最後位置',
|
||||
],
|
||||
'group' => [
|
||||
'label' => '群組',
|
||||
'id' => 'ID',
|
||||
'name' => '名稱',
|
||||
'description_field' => '描述',
|
||||
'code' => '代碼',
|
||||
'code_comment' => '輸入識別此群組用的唯一代碼。',
|
||||
'created_at' => '創建日期',
|
||||
'users_count' => '會員數',
|
||||
],
|
||||
'groups' => [
|
||||
'menu_label' => '群組',
|
||||
'all_groups' => '會員群組',
|
||||
'new_group' => '新增群組',
|
||||
'delete_selected_confirm' => '是否刪除所選的群組?',
|
||||
'list_title' => '管理群組',
|
||||
'delete_confirm' => '是否刪除此群組?',
|
||||
'delete_selected_success' => '已成功刪除群組。',
|
||||
'delete_selected_empty' => '沒有會員被選取。',
|
||||
'return_to_list' => '回到群組列表',
|
||||
'return_to_users' => '回到會員列表',
|
||||
'create_title' => '建立群組',
|
||||
'update_title' => '編輯群組',
|
||||
'preview_title' => '預覽群組',
|
||||
],
|
||||
'login' => [
|
||||
'attribute_email' => '信箱',
|
||||
'attribute_username' => '使用者名稱',
|
||||
],
|
||||
'account' => [
|
||||
'account' => '帳號',
|
||||
'account_desc' => '會員管理表單。',
|
||||
'banned' => '很抱歉,此會員尚未啟動,請聯繫我們以取得協助。',
|
||||
'redirect_to' => '重新導向',
|
||||
'redirect_to_desc' => '成功登入、更新或註冊後重新導向的頁面。',
|
||||
'code_param' => '啟動碼參數名稱',
|
||||
'code_param_desc' => '用於夾帶啟動碼的網址參數名稱。',
|
||||
'force_secure' => '強制使用 HTTPS',
|
||||
'force_secure_desc' => '強制使用 HTTPS 重新導向此網址。',
|
||||
'invalid_user' => '帳號有誤。',
|
||||
'invalid_activation_code' => '啟動碼錯誤。',
|
||||
'invalid_deactivation_pass' => '您輸入的密碼有誤。',
|
||||
'invalid_current_pass' => '您輸入的密碼有誤。',
|
||||
'success_activation' => '已啟用您的帳號。',
|
||||
'success_deactivation' => '已停用您的帳號。',
|
||||
'success_saved' => '已儲存您的設定。',
|
||||
'login_first' => '請先登入您的帳號。',
|
||||
'already_active' => '您的帳號已啟動!',
|
||||
'activation_email_sent' => '已寄送帳號啟動信件至您的信箱。',
|
||||
'registration_disabled' => '目前暫不開放註冊。',
|
||||
'registration_throttled' => '註冊狀態異常,請稍後重試。',
|
||||
'sign_in' => '登入',
|
||||
'register' => '註冊',
|
||||
'full_name' => '全名',
|
||||
'email' => '信箱',
|
||||
'password' => '密碼',
|
||||
'login' => '登入',
|
||||
'new_password' => '新密碼',
|
||||
'new_password_confirm' => '確認新密碼',
|
||||
'update_requires_password' => '更新時要求密碼',
|
||||
'update_requires_password_comment' => '修改會員資料時須輸入目前的密碼。',
|
||||
],
|
||||
'reset_password' => [
|
||||
'reset_password' => '重設密碼',
|
||||
'reset_password_desc' => '忘記密碼表單。',
|
||||
'code_param' => '重設參數名稱',
|
||||
'code_param_desc' => '用於重設密碼的網址參數名稱。',
|
||||
],
|
||||
'session' => [
|
||||
'session' => '工作階段',
|
||||
'session_desc' => '工作階段可限制會員存取頁面。',
|
||||
'security_title' => '僅允許',
|
||||
'security_desc' => '誰可存取此頁面。',
|
||||
'all' => '全部',
|
||||
'users' => '會員',
|
||||
'guests' => '遊客',
|
||||
'allowed_groups_title' => '允許群組',
|
||||
'allowed_groups_description' => '選擇允許的群組,留白允許全部。',
|
||||
'redirect_title' => '重新導向',
|
||||
'redirect_desc' => '無法存取的頁面將重新導向至所選的頁面。',
|
||||
'logout' => '您已成功登出!',
|
||||
'stop_impersonate_success' => '以停止模仿該會員登入狀態。',
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,278 @@
|
|||
<?php namespace RainLab\User\Models;
|
||||
|
||||
use Form;
|
||||
use Model;
|
||||
use System\Models\MailTemplate;
|
||||
use Exception;
|
||||
|
||||
/**
|
||||
* Mail Blocker
|
||||
*
|
||||
* A utility model that allows a user to block specific
|
||||
* mail views/templates from being sent to their address.
|
||||
*/
|
||||
class MailBlocker extends Model
|
||||
{
|
||||
/**
|
||||
* @var string The database table used by the model.
|
||||
*/
|
||||
public $table = 'rainlab_user_mail_blockers';
|
||||
|
||||
/**
|
||||
* @var array Guarded fields
|
||||
*/
|
||||
protected $guarded = [];
|
||||
|
||||
/**
|
||||
* @var array Relations
|
||||
*/
|
||||
public $belongsTo = [
|
||||
'user' => User::class
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array Templates names that cannot be blocked.
|
||||
*/
|
||||
protected static $safeTemplates = [
|
||||
'rainlab.user::mail.restore'
|
||||
];
|
||||
|
||||
/**
|
||||
* Sets mail blocking preferences for a user. Eg:
|
||||
*
|
||||
* MailBlocker::setPreferences($user, [acme.blog::post.new_reply => 0])
|
||||
*
|
||||
* MailBlocker::setPreferences($user, [acme.blog::post.new_reply => 0], [fillable => [acme.blog::post.new_reply]])
|
||||
*
|
||||
* MailBlocker::setPreferences($user, [template_alias => 0], [aliases => [template_alias => acme.blog::post.new_reply]])
|
||||
*
|
||||
* Supported options:
|
||||
* - aliases: Alias definitions, with alias as key and template as value.
|
||||
* - fillable: An array of expected templates, undefined templates are ignored.
|
||||
* - verify: Only allow mail templates that are registered in the system.
|
||||
*
|
||||
* @param array $templates Template name as key and boolean as value. If false, template is blocked.
|
||||
* @param RainLab\User\Models\User $user
|
||||
* @param array $options
|
||||
* @return void
|
||||
*/
|
||||
public static function setPreferences($user, $templates, $options = [])
|
||||
{
|
||||
$templates = (array) $templates;
|
||||
|
||||
if (!$user) {
|
||||
throw new Exception('A user must be provided for MailBlocker::setPreferences');
|
||||
}
|
||||
|
||||
extract(array_merge([
|
||||
'aliases' => [],
|
||||
'fillable' => [],
|
||||
'verify' => false,
|
||||
], $options));
|
||||
|
||||
if ($aliases) {
|
||||
$fillable = array_merge($fillable, array_values($aliases));
|
||||
$templates = array_build($templates, function($key, $value) use ($aliases) {
|
||||
return [array_get($aliases, $key, $key), $value];
|
||||
});
|
||||
}
|
||||
|
||||
if ($fillable) {
|
||||
$templates = array_intersect_key($templates, array_flip($fillable));
|
||||
}
|
||||
|
||||
if ($verify) {
|
||||
$existing = MailTemplate::listAllTemplates();
|
||||
$templates = array_intersect_key($templates, $existing);
|
||||
}
|
||||
|
||||
$currentBlocks = array_flip(static::checkAllForUser($user));
|
||||
foreach ($templates as $template => $value) {
|
||||
// User wants to receive mail and is blocking
|
||||
if ($value && isset($currentBlocks[$template])) {
|
||||
static::removeBlock($template, $user);
|
||||
}
|
||||
// User does not want to receive mail and not blocking
|
||||
elseif (!$value && !isset($currentBlocks[$template])) {
|
||||
static::addBlock($template, $user);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a block for a user and a mail view/template code.
|
||||
* @param string $template
|
||||
* @param RainLab\User\Models\User $user
|
||||
* @return bool
|
||||
*/
|
||||
public static function addBlock($template, $user)
|
||||
{
|
||||
$blocker = static::where([
|
||||
'template' => $template,
|
||||
'user_id' => $user->id
|
||||
])->first();
|
||||
|
||||
if ($blocker && $blocker->email == $user->email) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$blocker) {
|
||||
$blocker = new static;
|
||||
$blocker->template = $template;
|
||||
$blocker->user_id = $user->id;
|
||||
}
|
||||
|
||||
$blocker->email = $user->email;
|
||||
$blocker->save();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a block for a user and a mail view/template code.
|
||||
* @param string $template
|
||||
* @param RainLab\User\Models\User $user
|
||||
* @return bool
|
||||
*/
|
||||
public static function removeBlock($template, $user)
|
||||
{
|
||||
$blocker = static::where([
|
||||
'template' => $template,
|
||||
'user_id' => $user->id
|
||||
])->orWhere(function ($query) use ($template, $user) {
|
||||
$query->where([
|
||||
'template' => $template,
|
||||
'email' => $user->email
|
||||
]);
|
||||
})->get();
|
||||
|
||||
if (!$blocker->count()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$blocker->each(function($block) {
|
||||
$block->delete();
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Blocks all mail messages for a user.
|
||||
* @param RainLab\User\Models\User $user
|
||||
* @return bool
|
||||
*/
|
||||
public static function blockAll($user)
|
||||
{
|
||||
return static::addBlock('*', $user);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes block on all mail messages for a user.
|
||||
* @param RainLab\User\Models\User $user
|
||||
* @return bool
|
||||
*/
|
||||
public static function unblockAll($user)
|
||||
{
|
||||
return static::removeBlock('*', $user);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a user is blocking all templates.
|
||||
* @param RainLab\User\Models\User $user
|
||||
* @return bool
|
||||
*/
|
||||
public static function isBlockAll($user)
|
||||
{
|
||||
return count(static::checkForEmail('*', $user->email)) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates mail blockers for a user if they change their email address
|
||||
* @param Model $user
|
||||
* @return mixed
|
||||
*/
|
||||
public static function syncUser($user)
|
||||
{
|
||||
return static::where('user_id', $user->id)->update(['email' => $user->email]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of mail templates blocked by the user.
|
||||
* @param Model $user
|
||||
* @return array
|
||||
*/
|
||||
public static function checkAllForUser($user)
|
||||
{
|
||||
return static::where('user_id', $user->id)->lists('template');
|
||||
}
|
||||
|
||||
/**
|
||||
* checkForEmail checks if an email address has blocked a given template,
|
||||
* returns an array of blocked emails.
|
||||
* @param string $template
|
||||
* @param string $email
|
||||
* @return array
|
||||
*/
|
||||
public static function checkForEmail($template, $email)
|
||||
{
|
||||
if (in_array($template, static::$safeTemplates)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
if (empty($email)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
if (!is_array($email)) {
|
||||
$email = [$email => null];
|
||||
}
|
||||
|
||||
$emails = array_keys($email);
|
||||
|
||||
return static::where(function($q) use ($template) {
|
||||
$q->where('template', $template)->orWhere('template', '*');
|
||||
})
|
||||
->whereIn('email', $emails)
|
||||
->lists('email');
|
||||
}
|
||||
|
||||
/**
|
||||
* filterMessage filters a Illuminate\Mail\Message and removes blocked recipients.
|
||||
* If no recipients remain, false is returned. Returns null if mailing
|
||||
* should proceed.
|
||||
* @param string $template
|
||||
* @param Illuminate\Mail\Message $message
|
||||
* @return bool|null
|
||||
*/
|
||||
public static function filterMessage($template, $message)
|
||||
{
|
||||
$recipients = $message->getTo();
|
||||
$blockedAddresses = static::checkForEmail($template, $recipients);
|
||||
|
||||
if (!count($blockedAddresses)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
foreach ($recipients as $index => $address) {
|
||||
// October v2
|
||||
if ($address instanceof \Symfony\Component\Mime\Address) {
|
||||
if (in_array($address->getAddress(), $blockedAddresses)) {
|
||||
unset($recipients[$index]);
|
||||
}
|
||||
}
|
||||
// October v1
|
||||
else {
|
||||
// Swift message, index is address
|
||||
if (in_array($index, $blockedAddresses)) {
|
||||
unset($recipients[$index]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Override recipients
|
||||
$message->to($recipients, null, true);
|
||||
|
||||
return count($recipients) ? null : false;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
<?php namespace RainLab\User\Models;
|
||||
|
||||
use Model;
|
||||
|
||||
class Settings extends Model
|
||||
{
|
||||
/**
|
||||
* @var array Behaviors implemented by this model.
|
||||
*/
|
||||
public $implement = [
|
||||
\System\Behaviors\SettingsModel::class
|
||||
];
|
||||
|
||||
public $settingsCode = 'user_settings';
|
||||
public $settingsFields = 'fields.yaml';
|
||||
|
||||
|
||||
const ACTIVATE_AUTO = 'auto';
|
||||
const ACTIVATE_USER = 'user';
|
||||
const ACTIVATE_ADMIN = 'admin';
|
||||
|
||||
const LOGIN_EMAIL = 'email';
|
||||
const LOGIN_USERNAME = 'username';
|
||||
|
||||
const REMEMBER_ALWAYS = 'always';
|
||||
const REMEMBER_NEVER = 'never';
|
||||
const REMEMBER_ASK = 'ask';
|
||||
|
||||
public function initSettingsData()
|
||||
{
|
||||
$this->require_activation = config('rainlab.user::requireActivation', true);
|
||||
$this->activate_mode = config('rainlab.user::activateMode', self::ACTIVATE_AUTO);
|
||||
$this->use_throttle = config('rainlab.user::useThrottle', true);
|
||||
$this->block_persistence = config('rainlab.user::blockPersistence', false);
|
||||
$this->allow_registration = config('rainlab.user::allowRegistration', true);
|
||||
$this->login_attribute = config('rainlab.user::loginAttribute', self::LOGIN_EMAIL);
|
||||
$this->remember_login = config('rainlab.user::rememberLogin', self::REMEMBER_ALWAYS);
|
||||
$this->use_register_throttle = config('rainlab.user::useRegisterThrottle', true);
|
||||
}
|
||||
|
||||
public function getActivateModeOptions()
|
||||
{
|
||||
return [
|
||||
self::ACTIVATE_AUTO => [
|
||||
'rainlab.user::lang.settings.activate_mode_auto',
|
||||
'rainlab.user::lang.settings.activate_mode_auto_comment'
|
||||
],
|
||||
self::ACTIVATE_USER => [
|
||||
'rainlab.user::lang.settings.activate_mode_user',
|
||||
'rainlab.user::lang.settings.activate_mode_user_comment'
|
||||
],
|
||||
self::ACTIVATE_ADMIN => [
|
||||
'rainlab.user::lang.settings.activate_mode_admin',
|
||||
'rainlab.user::lang.settings.activate_mode_admin_comment'
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
public function getActivateModeAttribute($value)
|
||||
{
|
||||
if (!$value) {
|
||||
return self::ACTIVATE_AUTO;
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function getLoginAttributeOptions()
|
||||
{
|
||||
return [
|
||||
self::LOGIN_EMAIL => ['rainlab.user::lang.login.attribute_email'],
|
||||
self::LOGIN_USERNAME => ['rainlab.user::lang.login.attribute_username']
|
||||
];
|
||||
}
|
||||
|
||||
public function getRememberLoginOptions()
|
||||
{
|
||||
return [
|
||||
self::REMEMBER_ALWAYS => [
|
||||
'rainlab.user::lang.settings.remember_always',
|
||||
],
|
||||
self::REMEMBER_NEVER => [
|
||||
'rainlab.user::lang.settings.remember_never',
|
||||
],
|
||||
self::REMEMBER_ASK => [
|
||||
'rainlab.user::lang.settings.remember_ask',
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
public function getRememberLoginAttribute($value)
|
||||
{
|
||||
if (!$value) {
|
||||
return self::REMEMBER_ALWAYS;
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<?php namespace RainLab\User\Models;
|
||||
|
||||
use October\Rain\Auth\Models\Throttle as ThrottleBase;
|
||||
|
||||
class Throttle extends ThrottleBase
|
||||
{
|
||||
/**
|
||||
* @var string The database table used by the model.
|
||||
*/
|
||||
protected $table = 'user_throttle';
|
||||
|
||||
/**
|
||||
* @var array Relations
|
||||
*/
|
||||
public $belongsTo = [
|
||||
'user' => User::class
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,566 @@
|
|||
<?php namespace RainLab\User\Models;
|
||||
|
||||
use Str;
|
||||
use Auth;
|
||||
use Mail;
|
||||
use Event;
|
||||
use Config;
|
||||
use Carbon\Carbon;
|
||||
use October\Rain\Auth\Models\User as UserBase;
|
||||
use RainLab\User\Models\Settings as UserSettings;
|
||||
use Illuminate\Validation\Rules\Password as PasswordRule;
|
||||
use October\Rain\Auth\AuthException;
|
||||
|
||||
class User extends UserBase
|
||||
{
|
||||
use \October\Rain\Database\Traits\SoftDelete;
|
||||
|
||||
/**
|
||||
* @var string The database table used by the model.
|
||||
*/
|
||||
protected $table = 'users';
|
||||
|
||||
/**
|
||||
* Validation rules
|
||||
*/
|
||||
public $rules = [
|
||||
'email' => 'required|between:6,255|email|unique:users',
|
||||
'avatar' => 'nullable|image|max:4000',
|
||||
'username' => 'required|between:2,255|unique:users',
|
||||
'password' => 'required:create|between:8,255|confirmed',
|
||||
'password_confirmation' => 'required_with:password|between:8,255',
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array Relations
|
||||
*/
|
||||
public $belongsToMany = [
|
||||
'groups' => [UserGroup::class, 'table' => 'users_groups']
|
||||
];
|
||||
|
||||
public $attachOne = [
|
||||
'avatar' => \System\Models\File::class
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'surname',
|
||||
'login',
|
||||
'username',
|
||||
'email',
|
||||
'password',
|
||||
'password_confirmation',
|
||||
'created_ip_address',
|
||||
'last_ip_address'
|
||||
];
|
||||
|
||||
/**
|
||||
* Reset guarded fields, because we use $fillable instead.
|
||||
* @var array The attributes that aren't mass assignable.
|
||||
*/
|
||||
protected $guarded = ['*'];
|
||||
|
||||
/**
|
||||
* Purge attributes from data set.
|
||||
*/
|
||||
protected $purgeable = ['password_confirmation', 'send_invite'];
|
||||
|
||||
/**
|
||||
* @var array dates
|
||||
*/
|
||||
protected $dates = [
|
||||
'last_seen',
|
||||
'deleted_at',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'activated_at',
|
||||
'last_login'
|
||||
];
|
||||
|
||||
/**
|
||||
* @var string|null loginAttribute
|
||||
*/
|
||||
public static $loginAttribute = null;
|
||||
|
||||
/**
|
||||
* Sends the confirmation email to a user, after activating.
|
||||
* @param string $code
|
||||
* @return bool
|
||||
*/
|
||||
public function attemptActivation($code)
|
||||
{
|
||||
if ($this->trashed()) {
|
||||
if ($code === $this->activation_code) {
|
||||
$this->restore();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
$result = parent::attemptActivation($code);
|
||||
|
||||
if ($result === false) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Event::fire('rainlab.user.activate', [$this]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a guest user to a registered one and sends an invitation notification.
|
||||
* @return void
|
||||
*/
|
||||
public function convertToRegistered($sendNotification = true)
|
||||
{
|
||||
// Already a registered user
|
||||
if (!$this->is_guest) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($sendNotification) {
|
||||
$this->generatePassword();
|
||||
}
|
||||
|
||||
$this->is_guest = false;
|
||||
$this->save();
|
||||
|
||||
if ($sendNotification) {
|
||||
$this->sendInvitation();
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Constructors
|
||||
//
|
||||
|
||||
/**
|
||||
* findByEmail looks up a user by their email address.
|
||||
* @return self
|
||||
*/
|
||||
public static function findByEmail($email)
|
||||
{
|
||||
if (!$email) {
|
||||
return;
|
||||
}
|
||||
|
||||
return self::where('email', $email)->first();
|
||||
}
|
||||
|
||||
//
|
||||
// Getters
|
||||
//
|
||||
|
||||
/**
|
||||
* clearPersistCode will forcibly sign the user out
|
||||
*/
|
||||
public function clearPersistCode()
|
||||
{
|
||||
$this->persist_code = null;
|
||||
$this->timestamps = false;
|
||||
$this->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a code for when the user is persisted to a cookie or session which identifies the user.
|
||||
* @return string
|
||||
*/
|
||||
public function getPersistCode()
|
||||
{
|
||||
$block = UserSettings::get('block_persistence', false);
|
||||
|
||||
if ($block || !$this->persist_code) {
|
||||
return parent::getPersistCode();
|
||||
}
|
||||
|
||||
return $this->persist_code;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the public image file path to this user's avatar.
|
||||
*/
|
||||
public function getAvatarThumb($size = 25, $options = null)
|
||||
{
|
||||
if (is_string($options)) {
|
||||
$options = ['default' => $options];
|
||||
}
|
||||
elseif (!is_array($options)) {
|
||||
$options = [];
|
||||
}
|
||||
|
||||
// Default is "mm" (Mystery man)
|
||||
$default = array_get($options, 'default', 'mm');
|
||||
|
||||
if ($this->avatar) {
|
||||
return $this->avatar->getThumb($size, $size, $options);
|
||||
}
|
||||
else {
|
||||
return '//www.gravatar.com/avatar/'.
|
||||
md5(strtolower(trim($this->email))).
|
||||
'?s='.$size.
|
||||
'&d='.urlencode($default);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name for the user's login.
|
||||
* @return string
|
||||
*/
|
||||
public function getLoginName()
|
||||
{
|
||||
if (static::$loginAttribute !== null) {
|
||||
return static::$loginAttribute;
|
||||
}
|
||||
|
||||
return static::$loginAttribute = UserSettings::get('login_attribute', UserSettings::LOGIN_EMAIL);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the minimum length for a new password from settings.
|
||||
* @return int
|
||||
*/
|
||||
public static function getMinPasswordLength()
|
||||
{
|
||||
return Config::get('rainlab.user::minPasswordLength', 8);
|
||||
}
|
||||
|
||||
//
|
||||
// Scopes
|
||||
//
|
||||
|
||||
/**
|
||||
* scopeIsActivated
|
||||
*/
|
||||
public function scopeIsActivated($query)
|
||||
{
|
||||
return $query->where('is_activated', 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* scopeFilterByGroup
|
||||
*/
|
||||
public function scopeFilterByGroup($query, $filter)
|
||||
{
|
||||
return $query->whereHas('groups', function($group) use ($filter) {
|
||||
$group->whereIn('id', $filter);
|
||||
});
|
||||
}
|
||||
|
||||
//
|
||||
// Events
|
||||
//
|
||||
|
||||
/**
|
||||
* beforeValidate event
|
||||
* @return void
|
||||
*/
|
||||
public function beforeValidate()
|
||||
{
|
||||
/*
|
||||
* Guests are special
|
||||
*/
|
||||
if ($this->is_guest && !$this->password) {
|
||||
$this->generatePassword();
|
||||
}
|
||||
|
||||
/*
|
||||
* When the username is not used, the email is substituted.
|
||||
*/
|
||||
if (
|
||||
(!$this->username) ||
|
||||
($this->isDirty('email') && $this->getOriginal('email') == $this->username)
|
||||
) {
|
||||
$this->username = $this->email;
|
||||
}
|
||||
|
||||
/*
|
||||
* Apply rules Settings
|
||||
*/
|
||||
$minPasswordLength = Settings::get('min_password_length', static::getMinPasswordLength());
|
||||
$passwordRule = PasswordRule::min($minPasswordLength);
|
||||
if (Settings::get('require_mixed_case')) {
|
||||
$passwordRule->mixedCase();
|
||||
}
|
||||
|
||||
if (Settings::get('require_uncompromised')) {
|
||||
$passwordRule->uncompromised();
|
||||
}
|
||||
|
||||
if (Settings::get('require_number')) {
|
||||
$passwordRule->numbers();
|
||||
}
|
||||
|
||||
if (Settings::get('require_symbol')) {
|
||||
$passwordRule->symbols();
|
||||
}
|
||||
|
||||
$this->addValidationRule('password', $passwordRule);
|
||||
$this->addValidationRule('password_confirmation', $passwordRule);
|
||||
}
|
||||
|
||||
/**
|
||||
* afterCreate event
|
||||
* @return void
|
||||
*/
|
||||
public function afterCreate()
|
||||
{
|
||||
$this->restorePurgedValues();
|
||||
|
||||
if ($this->send_invite) {
|
||||
$this->sendInvitation();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* beforeLogin event
|
||||
* @return void
|
||||
*/
|
||||
public function beforeLogin()
|
||||
{
|
||||
if ($this->is_guest) {
|
||||
$login = $this->getLogin();
|
||||
throw new AuthException(sprintf(
|
||||
'Cannot login user "%s" as they are not registered.', $login
|
||||
));
|
||||
}
|
||||
|
||||
parent::beforeLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
* afterLogin event
|
||||
* @return void
|
||||
*/
|
||||
public function afterLogin()
|
||||
{
|
||||
$this->last_login = $this->freshTimestamp();
|
||||
|
||||
if ($this->trashed()) {
|
||||
$this->restore();
|
||||
|
||||
Mail::sendTo($this, 'rainlab.user::mail.reactivate', [
|
||||
'name' => $this->name
|
||||
]);
|
||||
|
||||
Event::fire('rainlab.user.reactivate', [$this]);
|
||||
}
|
||||
else {
|
||||
parent::afterLogin();
|
||||
}
|
||||
|
||||
Event::fire('rainlab.user.login', [$this]);
|
||||
}
|
||||
|
||||
/**
|
||||
* afterDelete event
|
||||
* @return void
|
||||
*/
|
||||
public function afterDelete()
|
||||
{
|
||||
if ($this->isSoftDelete()) {
|
||||
Event::fire('rainlab.user.deactivate', [$this]);
|
||||
return;
|
||||
}
|
||||
|
||||
$this->avatar && $this->avatar->delete();
|
||||
|
||||
parent::afterDelete();
|
||||
}
|
||||
|
||||
//
|
||||
// Banning
|
||||
//
|
||||
|
||||
/**
|
||||
* Ban this user, preventing them from signing in.
|
||||
* @return void
|
||||
*/
|
||||
public function ban()
|
||||
{
|
||||
Auth::findThrottleByUserId($this->id)->ban();
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the ban on this user.
|
||||
* @return void
|
||||
*/
|
||||
public function unban()
|
||||
{
|
||||
Auth::findThrottleByUserId($this->id)->unban();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the user is banned.
|
||||
* @return bool
|
||||
*/
|
||||
public function isBanned()
|
||||
{
|
||||
$throttle = Auth::createThrottleModel()->where('user_id', $this->id)->first();
|
||||
return $throttle ? $throttle->is_banned : false;
|
||||
}
|
||||
|
||||
//
|
||||
// Suspending
|
||||
//
|
||||
|
||||
/**
|
||||
* Check if the user is suspended.
|
||||
* @return bool
|
||||
*/
|
||||
public function isSuspended()
|
||||
{
|
||||
return Auth::findThrottleByUserId($this->id)->checkSuspended();
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the suspension on this user.
|
||||
* @return void
|
||||
*/
|
||||
public function unsuspend()
|
||||
{
|
||||
Auth::findThrottleByUserId($this->id)->unsuspend();
|
||||
}
|
||||
|
||||
//
|
||||
// IP Recording and Throttle
|
||||
//
|
||||
|
||||
/**
|
||||
* Records the last_ip_address to reflect the last known IP for this user.
|
||||
* @param string|null $ipAddress
|
||||
* @return void
|
||||
*/
|
||||
public function touchIpAddress($ipAddress)
|
||||
{
|
||||
$this
|
||||
->newQuery()
|
||||
->where('id', $this->id)
|
||||
->update(['last_ip_address' => $ipAddress])
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if IP address is throttled and cannot register
|
||||
* again. Maximum 3 registrations every 60 minutes.
|
||||
* @param string|null $ipAddress
|
||||
* @return bool
|
||||
*/
|
||||
public static function isRegisterThrottled($ipAddress)
|
||||
{
|
||||
if (!$ipAddress) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$timeLimit = Carbon::now()->subMinutes(60);
|
||||
$count = static::make()
|
||||
->where('created_ip_address', $ipAddress)
|
||||
->where('created_at', '>', $timeLimit)
|
||||
->count()
|
||||
;
|
||||
|
||||
return $count > 2;
|
||||
}
|
||||
|
||||
//
|
||||
// Last Seen
|
||||
//
|
||||
|
||||
/**
|
||||
* Checks if the user has been seen in the last 5 minutes, and if not,
|
||||
* updates the last_seen timestamp to reflect their online status.
|
||||
* @return void
|
||||
*/
|
||||
public function touchLastSeen()
|
||||
{
|
||||
if ($this->isOnline()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$oldTimestamps = $this->timestamps;
|
||||
$this->timestamps = false;
|
||||
|
||||
$this
|
||||
->newQuery()
|
||||
->where('id', $this->id)
|
||||
->update(['last_seen' => $this->freshTimestamp()])
|
||||
;
|
||||
|
||||
$this->last_seen = $this->freshTimestamp();
|
||||
$this->timestamps = $oldTimestamps;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the user has been active within the last 5 minutes.
|
||||
* @return bool
|
||||
*/
|
||||
public function isOnline()
|
||||
{
|
||||
if (!$this->last_seen) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $this->last_seen > $this->freshTimestamp()->subMinutes(5);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the date this user was last seen.
|
||||
* @deprecated use last_seen attribute
|
||||
* @return Carbon\Carbon
|
||||
*/
|
||||
public function getLastSeen()
|
||||
{
|
||||
return $this->last_seen ?: $this->created_at;
|
||||
}
|
||||
|
||||
//
|
||||
// Utils
|
||||
//
|
||||
|
||||
/**
|
||||
* Returns the variables available when sending a user notification.
|
||||
* @return array
|
||||
*/
|
||||
public function getNotificationVars()
|
||||
{
|
||||
$vars = [
|
||||
'name' => $this->name,
|
||||
'email' => $this->email,
|
||||
'username' => $this->username,
|
||||
'login' => $this->getLogin(),
|
||||
'password' => $this->getOriginalHashValue('password')
|
||||
];
|
||||
|
||||
/*
|
||||
* Extensibility
|
||||
*/
|
||||
$result = Event::fire('rainlab.user.getNotificationVars', [$this]);
|
||||
if ($result && is_array($result)) {
|
||||
$vars = call_user_func_array('array_merge', $result) + $vars;
|
||||
}
|
||||
|
||||
return $vars;
|
||||
}
|
||||
|
||||
/**
|
||||
* sendInvitation sends an invitation to the user using template
|
||||
* "rainlab.user::mail.invite"
|
||||
* @return void
|
||||
*/
|
||||
protected function sendInvitation()
|
||||
{
|
||||
Mail::sendTo($this, 'rainlab.user::mail.invite', $this->getNotificationVars());
|
||||
}
|
||||
|
||||
/**
|
||||
* generatePassword assigns this user with a random password.
|
||||
* @return void
|
||||
*/
|
||||
protected function generatePassword()
|
||||
{
|
||||
$this->password = $this->password_confirmation = Str::random(static::getMinPasswordLength());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
<?php namespace RainLab\User\Models;
|
||||
|
||||
use October\Rain\Auth\Models\Group as GroupBase;
|
||||
use ApplicationException;
|
||||
|
||||
/**
|
||||
* User Group Model
|
||||
*/
|
||||
class UserGroup extends GroupBase
|
||||
{
|
||||
const GROUP_GUEST = 'guest';
|
||||
const GROUP_REGISTERED = 'registered';
|
||||
|
||||
/**
|
||||
* @var string The database table used by the model.
|
||||
*/
|
||||
protected $table = 'user_groups';
|
||||
|
||||
/**
|
||||
* Validation rules
|
||||
*/
|
||||
public $rules = [
|
||||
'name' => 'required|between:3,64',
|
||||
'code' => 'required|regex:/^[a-zA-Z0-9_\-]+$/|unique:user_groups',
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array Relations
|
||||
*/
|
||||
public $belongsToMany = [
|
||||
'users' => [User::class, 'table' => 'users_groups'],
|
||||
'users_count' => [User::class, 'table' => 'users_groups', 'count' => true]
|
||||
];
|
||||
|
||||
/**
|
||||
* @var array The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'code',
|
||||
'description'
|
||||
];
|
||||
|
||||
protected static $guestGroup = null;
|
||||
|
||||
/**
|
||||
* Returns the guest user group.
|
||||
* @return RainLab\User\Models\UserGroup
|
||||
*/
|
||||
public static function getGuestGroup()
|
||||
{
|
||||
if (self::$guestGroup !== null) {
|
||||
return self::$guestGroup;
|
||||
}
|
||||
|
||||
$group = self::where('code', self::GROUP_GUEST)->first() ?: false;
|
||||
|
||||
return self::$guestGroup = $group;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
# ===================================
|
||||
# Field Definitions
|
||||
# ===================================
|
||||
|
||||
tabs:
|
||||
fields:
|
||||
# Throttle Sign In
|
||||
use_throttle:
|
||||
span: left
|
||||
label: rainlab.user::lang.settings.use_throttle
|
||||
comment: rainlab.user::lang.settings.use_throttle_comment
|
||||
type: switch
|
||||
tab: rainlab.user::lang.settings.signin_tab
|
||||
|
||||
# Prevent concurrent sessions
|
||||
block_persistence:
|
||||
span: right
|
||||
label: rainlab.user::lang.settings.block_persistence
|
||||
comment: rainlab.user::lang.settings.block_persistence_comment
|
||||
type: switch
|
||||
tab: rainlab.user::lang.settings.signin_tab
|
||||
|
||||
# Login Attribute
|
||||
login_attribute:
|
||||
span: left
|
||||
label: rainlab.user::lang.settings.login_attribute
|
||||
commentAbove: rainlab.user::lang.settings.login_attribute_comment
|
||||
type: radio
|
||||
tab: rainlab.user::lang.settings.signin_tab
|
||||
|
||||
# Remeber Login Mode
|
||||
remember_login:
|
||||
span: right
|
||||
label: rainlab.user::lang.settings.remember_login
|
||||
commentAbove: rainlab.user::lang.settings.remember_login_comment
|
||||
type: radio
|
||||
tab: rainlab.user::lang.settings.signin_tab
|
||||
|
||||
# Require Activation
|
||||
allow_registration:
|
||||
span: left
|
||||
label: rainlab.user::lang.settings.allow_registration
|
||||
comment: rainlab.user::lang.settings.allow_registration_comment
|
||||
type: switch
|
||||
tab: rainlab.user::lang.settings.registration_tab
|
||||
|
||||
# Enable registration throttling
|
||||
use_register_throttle:
|
||||
span: right
|
||||
label: rainlab.user::lang.settings.use_register_throttle
|
||||
comment: rainlab.user::lang.settings.use_register_throttle_comment
|
||||
type: switch
|
||||
tab: rainlab.user::lang.settings.registration_tab
|
||||
|
||||
# Require Activation
|
||||
require_activation:
|
||||
span: left
|
||||
label: rainlab.user::lang.settings.require_activation
|
||||
comment: rainlab.user::lang.settings.require_activation_comment
|
||||
type: switch
|
||||
tab: rainlab.user::lang.settings.activation_tab
|
||||
|
||||
# Activation Mode
|
||||
activate_mode:
|
||||
span: left
|
||||
commentAbove: rainlab.user::lang.settings.activate_mode_comment
|
||||
label: rainlab.user::lang.settings.activate_mode
|
||||
type: radio
|
||||
tab: rainlab.user::lang.settings.activation_tab
|
||||
|
||||
# Min Password Length
|
||||
min_password_length:
|
||||
span: left
|
||||
label: rainlab.user::lang.settings.min_password_length
|
||||
type: number
|
||||
comment: rainlab.user::lang.settings.min_password_length_comment
|
||||
tab: rainlab.user::lang.settings.password_policy_tab
|
||||
|
||||
# Require Mixed Case
|
||||
require_mixed_case:
|
||||
span: left
|
||||
label: rainlab.user::lang.settings.require_mixed_case
|
||||
type: switch
|
||||
comment: rainlab.user::lang.settings.require_mixed_case_comment
|
||||
tab: rainlab.user::lang.settings.password_policy_tab
|
||||
|
||||
# Require Uncompromised
|
||||
require_uncompromised:
|
||||
span: right
|
||||
label: rainlab.user::lang.settings.require_uncompromised
|
||||
type: switch
|
||||
comment: rainlab.user::lang.settings.require_uncompromised_comment
|
||||
tab: rainlab.user::lang.settings.password_policy_tab
|
||||
|
||||
# Require number
|
||||
require_number:
|
||||
span: left
|
||||
label: rainlab.user::lang.settings.require_number
|
||||
type: switch
|
||||
tab: rainlab.user::lang.settings.password_policy_tab
|
||||
|
||||
# Require symbol
|
||||
require_symbol:
|
||||
span: right
|
||||
label: rainlab.user::lang.settings.require_symbol
|
||||
type: switch
|
||||
tab: rainlab.user::lang.settings.password_policy_tab
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# ===================================
|
||||
# Column Definitions
|
||||
# ===================================
|
||||
|
||||
columns:
|
||||
|
||||
id:
|
||||
label: rainlab.user::lang.user.id
|
||||
invisible: true
|
||||
|
||||
username:
|
||||
label: rainlab.user::lang.user.username
|
||||
searchable: true
|
||||
invisible: true
|
||||
|
||||
name:
|
||||
label: rainlab.user::lang.user.name
|
||||
searchable: true
|
||||
|
||||
surname:
|
||||
label: rainlab.user::lang.user.surname
|
||||
searchable: true
|
||||
invisible: true
|
||||
|
||||
email:
|
||||
label: rainlab.user::lang.user.email
|
||||
searchable: true
|
||||
|
||||
created_at:
|
||||
label: rainlab.user::lang.user.created_at
|
||||
type: timetense
|
||||
|
||||
last_seen:
|
||||
label: rainlab.user::lang.user.last_seen
|
||||
type: timetense
|
||||
|
||||
is_guest:
|
||||
label: rainlab.user::lang.user.is_guest
|
||||
type: switch
|
||||
invisible: true
|
||||
|
||||
created_ip_address:
|
||||
label: rainlab.user::lang.user.created_ip_address
|
||||
searchable: true
|
||||
invisible: true
|
||||
|
||||
last_ip_address:
|
||||
label: rainlab.user::lang.user.last_ip_address
|
||||
searchable: true
|
||||
invisible: true
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
fields:
|
||||
name:
|
||||
label: 'rainlab.user::lang.user.name'
|
||||
span: auto
|
||||
type: text
|
||||
surname:
|
||||
label: 'rainlab.user::lang.user.surname'
|
||||
span: auto
|
||||
type: text
|
||||
tabs:
|
||||
fields:
|
||||
email:
|
||||
label: 'rainlab.user::lang.user.email'
|
||||
tab: 'rainlab.user::lang.user.account'
|
||||
span: full
|
||||
type: text
|
||||
send_invite:
|
||||
type: checkbox
|
||||
label: 'rainlab.user::lang.user.send_invite'
|
||||
comment: 'rainlab.user::lang.user.send_invite_comment'
|
||||
tab: 'rainlab.user::lang.user.account'
|
||||
default: true
|
||||
context: create
|
||||
block_mail:
|
||||
label: 'rainlab.user::lang.user.block_mail'
|
||||
tab: 'rainlab.user::lang.user.account'
|
||||
type: checkbox
|
||||
span: full
|
||||
cssClass: field-align-above
|
||||
context: update
|
||||
password@create:
|
||||
label: 'rainlab.user::lang.user.create_password'
|
||||
comment: 'rainlab.user::lang.user.create_password_comment'
|
||||
tab: 'rainlab.user::lang.user.account'
|
||||
type: password
|
||||
span: left
|
||||
password@update:
|
||||
label: 'rainlab.user::lang.user.reset_password'
|
||||
comment: 'rainlab.user::lang.user.reset_password_comment'
|
||||
tab: 'rainlab.user::lang.user.account'
|
||||
type: password
|
||||
span: left
|
||||
password_confirmation:
|
||||
label: 'rainlab.user::lang.user.confirm_password'
|
||||
comment: 'rainlab.user::lang.user.confirm_password_comment'
|
||||
tab: 'rainlab.user::lang.user.account'
|
||||
type: password
|
||||
span: right
|
||||
context:
|
||||
- create
|
||||
- update
|
||||
username:
|
||||
label: 'rainlab.user::lang.user.username'
|
||||
tab: 'rainlab.user::lang.user.account'
|
||||
hidden: true
|
||||
span: left
|
||||
type: text
|
||||
groups:
|
||||
label: 'rainlab.user::lang.user.groups'
|
||||
tab: 'rainlab.user::lang.user.account'
|
||||
type: relation
|
||||
emptyOption: 'rainlab.user::lang.user.empty_groups'
|
||||
created_ip_address:
|
||||
label: 'rainlab.user::lang.user.created_ip_address'
|
||||
span: auto
|
||||
disabled: true
|
||||
tab: 'rainlab.user::lang.user.account'
|
||||
context: preview
|
||||
type: text
|
||||
last_ip_address:
|
||||
label: 'rainlab.user::lang.user.last_ip_address'
|
||||
span: auto
|
||||
disabled: true
|
||||
tab: 'rainlab.user::lang.user.account'
|
||||
context: preview
|
||||
type: text
|
||||
seller_id:
|
||||
label: 'Seller Id'
|
||||
span: auto
|
||||
type: number
|
||||
tab: 'Seller Settings'
|
||||
secondaryTabs:
|
||||
fields:
|
||||
avatar:
|
||||
label: 'rainlab.user::lang.user.avatar'
|
||||
type: fileupload
|
||||
mode: image
|
||||
imageHeight: 260
|
||||
imageWidth: 260
|
||||
tab: Misc
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# ===================================
|
||||
# Filter Scope Definitions
|
||||
# ===================================
|
||||
|
||||
scopes:
|
||||
|
||||
groups:
|
||||
# Filter name
|
||||
label: rainlab.user::lang.group.label
|
||||
# Model Class name
|
||||
modelClass: RainLab\User\Models\UserGroup
|
||||
# Model attribute to display for the name
|
||||
nameFrom: name
|
||||
# Filter scope
|
||||
scope: filterByGroup
|
||||
|
||||
created_at:
|
||||
label: rainlab.user::lang.user.created_at
|
||||
type: daterange
|
||||
conditions: created_at >= ':after' AND created_at <= ':before'
|
||||
|
||||
activated:
|
||||
# Filter name
|
||||
label: rainlab.user::lang.user.status_activated
|
||||
# Filter type
|
||||
type: switch
|
||||
# SQL conditions
|
||||
conditions:
|
||||
- is_activated = '0'
|
||||
- is_activated = '1'
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
# ===================================
|
||||
# Column Definitions
|
||||
# ===================================
|
||||
|
||||
columns:
|
||||
|
||||
id:
|
||||
label: rainlab.user::lang.group.id
|
||||
invisible: true
|
||||
|
||||
name:
|
||||
label: rainlab.user::lang.group.name
|
||||
searchable: true
|
||||
|
||||
code:
|
||||
label: rainlab.user::lang.group.code
|
||||
|
||||
created_at:
|
||||
label: rainlab.user::lang.group.created_at
|
||||
|
||||
users_count:
|
||||
label: rainlab.user::lang.group.users_count
|
||||
relation: users_count
|
||||
valueFrom: count
|
||||
default: 0
|
||||
sortable: false
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# ===================================
|
||||
# Field Definitions
|
||||
# ===================================
|
||||
|
||||
fields:
|
||||
name:
|
||||
label: rainlab.user::lang.group.name
|
||||
span: left
|
||||
|
||||
code:
|
||||
label: rainlab.user::lang.group.code
|
||||
comment: rainlab.user::lang.group.code_comment
|
||||
span: right
|
||||
preset: name
|
||||
|
||||
description:
|
||||
label: rainlab.user::lang.group.description_field
|
||||
type: textarea
|
||||
size: tiny
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<?php namespace RainLab\User\NotifyRules;
|
||||
|
||||
use RainLab\User\Classes\UserEventBase;
|
||||
|
||||
class UserActivatedEvent extends UserEventBase
|
||||
{
|
||||
/**
|
||||
* Returns information about this event, including name and description.
|
||||
*/
|
||||
public function eventDetails()
|
||||
{
|
||||
return [
|
||||
'name' => 'Activated',
|
||||
'description' => 'A user is activated',
|
||||
'group' => 'user'
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
<?php namespace RainLab\User\NotifyRules;
|
||||
|
||||
use RainLab\Notify\Classes\ModelAttributesConditionBase;
|
||||
use ApplicationException;
|
||||
|
||||
class UserAttributeCondition extends ModelAttributesConditionBase
|
||||
{
|
||||
protected $modelClass = \RainLab\User\Models\User::class;
|
||||
|
||||
public function getGroupingTitle()
|
||||
{
|
||||
return 'User attribute';
|
||||
}
|
||||
|
||||
public function getTitle()
|
||||
{
|
||||
return 'User attribute';
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the condition is TRUE for specified parameters
|
||||
* @param array $params Specifies a list of parameters as an associative array.
|
||||
* @return bool
|
||||
*/
|
||||
public function isTrue(&$params)
|
||||
{
|
||||
$hostObj = $this->host;
|
||||
|
||||
$attribute = $hostObj->subcondition;
|
||||
|
||||
if (!$user = array_get($params, 'user')) {
|
||||
throw new ApplicationException('Error evaluating the user attribute condition: the user object is not found in the condition parameters.');
|
||||
}
|
||||
|
||||
return parent::evalIsTrue($user);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<?php namespace RainLab\User\NotifyRules;
|
||||
|
||||
use RainLab\User\Classes\UserEventBase;
|
||||
|
||||
class UserRegisteredEvent extends UserEventBase
|
||||
{
|
||||
/**
|
||||
* Returns information about this event, including name and description.
|
||||
*/
|
||||
public function eventDetails()
|
||||
{
|
||||
return [
|
||||
'name' => 'Registered',
|
||||
'description' => 'A user has registered',
|
||||
'group' => 'user'
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
# ===================================
|
||||
# Condition Attribute Definitions
|
||||
# ===================================
|
||||
|
||||
attributes:
|
||||
|
||||
name:
|
||||
label: Name
|
||||
|
||||
surname:
|
||||
label: Surname
|
||||
|
||||
username:
|
||||
label: Login / Username
|
||||
|
||||
email:
|
||||
label: Email address
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit
|
||||
backupGlobals="false"
|
||||
backupStaticAttributes="false"
|
||||
bootstrap="../../../modules/system/tests/bootstrap.php"
|
||||
colors="true"
|
||||
convertErrorsToExceptions="true"
|
||||
convertNoticesToExceptions="true"
|
||||
convertWarningsToExceptions="true"
|
||||
processIsolation="false"
|
||||
stopOnFailure="false"
|
||||
>
|
||||
<testsuites>
|
||||
<testsuite name="RainLab User Plugin">
|
||||
<directory>./tests</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
<php>
|
||||
<env name="APP_ENV" value="testing" />
|
||||
<env name="APP_LOCALE" value="en" />
|
||||
<env name="CACHE_DRIVER" value="array" />
|
||||
<env name="SESSION_DRIVER" value="array" />
|
||||
<env name="DB_CONNECTION" value="sqlite" />
|
||||
<env name="DB_DATABASE" value=":memory:" />
|
||||
</php>
|
||||
<coverage processUncoveredFiles="true">
|
||||
<include>
|
||||
<directory suffix=".php">./classes</directory>
|
||||
<directory suffix=".php">./components</directory>
|
||||
<directory suffix=".php">./controllers</directory>
|
||||
<directory suffix=".php">./facades</directory>
|
||||
<directory suffix=".php">./models</directory>
|
||||
<directory suffix=".php">./notifyrules</directory>
|
||||
</include>
|
||||
<exclude>
|
||||
<file>./Plugin.php</file>
|
||||
<directory>./tests</directory>
|
||||
<directory>./updates</directory>
|
||||
<directory>./vendor</directory>
|
||||
</exclude>
|
||||
</coverage>
|
||||
</phpunit>
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
<?php namespace RainLab\User\Tests;
|
||||
|
||||
use App;
|
||||
use PluginTestCase;
|
||||
use Illuminate\Foundation\AliasLoader;
|
||||
use RainLab\User\Models\Settings;
|
||||
|
||||
/**
|
||||
* UserPluginTestCase
|
||||
*/
|
||||
abstract class UserPluginTestCase extends PluginTestCase
|
||||
{
|
||||
/**
|
||||
* setUp test case
|
||||
*/
|
||||
public function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
// Reset any modified settings
|
||||
Settings::resetDefault();
|
||||
|
||||
// Log out after each test
|
||||
\RainLab\User\Classes\AuthManager::instance()->logout();
|
||||
|
||||
// Register the auth facade
|
||||
$alias = AliasLoader::getInstance();
|
||||
$alias->alias('Auth', \RainLab\User\Facades\Auth::class);
|
||||
|
||||
App::singleton('user.auth', function () {
|
||||
return \RainLab\User\Classes\AuthManager::instance();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
<?php namespace RainLab\User\Tests\Unit\Facades;
|
||||
|
||||
use Auth;
|
||||
use Event;
|
||||
use RainLab\User\Models\User;
|
||||
use RainLab\User\Tests\UserPluginTestCase;
|
||||
|
||||
class AuthFacadeTest extends UserPluginTestCase
|
||||
{
|
||||
public function testRegisterUser()
|
||||
{
|
||||
$user = Auth::register([
|
||||
'name' => 'Some User',
|
||||
'email' => 'some@website.tld',
|
||||
'password' => 'changeme',
|
||||
'password_confirmation' => 'changeme',
|
||||
]);
|
||||
|
||||
$this->assertEquals(1, User::count());
|
||||
$this->assertInstanceOf(\RainLab\User\Models\User::class, $user);
|
||||
|
||||
$this->assertFalse($user->is_activated);
|
||||
$this->assertEquals('Some User', $user->name);
|
||||
$this->assertEquals('some@website.tld', $user->email);
|
||||
}
|
||||
|
||||
public function testRegisterUserWithAutoActivation()
|
||||
{
|
||||
// Stop activation events from other plugins
|
||||
Event::forget('rainlab.user.activate');
|
||||
|
||||
$user = Auth::register([
|
||||
'name' => 'Some User',
|
||||
'email' => 'some@website.tld',
|
||||
'password' => 'changeme',
|
||||
'password_confirmation' => 'changeme',
|
||||
], true);
|
||||
|
||||
$this->assertTrue($user->is_activated);
|
||||
|
||||
$this->assertTrue(Auth::check());
|
||||
}
|
||||
|
||||
public function testRegisterGuest()
|
||||
{
|
||||
$guest = Auth::registerGuest(['email' => 'person@acme.tld']);
|
||||
|
||||
$this->assertEquals(1, User::count());
|
||||
$this->assertInstanceOf(\RainLab\User\Models\User::class, $guest);
|
||||
|
||||
$this->assertTrue($guest->is_guest);
|
||||
$this->assertEquals('person@acme.tld', $guest->email);
|
||||
}
|
||||
|
||||
public function testLoginAndCheckAuth()
|
||||
{
|
||||
$this->assertFalse(Auth::check());
|
||||
|
||||
$user = User::create([
|
||||
'name' => 'Some User',
|
||||
'email' => 'some@website.tld',
|
||||
'password' => 'changeme',
|
||||
'password_confirmation' => 'changeme',
|
||||
]);
|
||||
|
||||
$user->is_activated = true;
|
||||
$user->activated_at = now();
|
||||
$user->save();
|
||||
|
||||
Auth::login($user);
|
||||
|
||||
$this->assertTrue(Auth::check());
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue