Update Admin\Users page
Added function to create a new user
This commit is contained in:
parent
400cec1ef4
commit
2c7ef0dab5
7 changed files with 208 additions and 0 deletions
|
@ -146,6 +146,10 @@ class Routing
|
|||
|
||||
$r->add(self::GET, '/admin/users/promote/{uid:[2-9]|[1-9]\d+}/{pid:[1-9]\d*}/{token}', 'AdminUsersPromote:promote', 'AdminUserPromote');
|
||||
|
||||
if ($user->isAdmin) {
|
||||
$r->add(self::DUO, '/admin/users/new', 'AdminUsersNew:view', 'AdminUsersNew');
|
||||
}
|
||||
|
||||
if ($this->c->userRules->banUsers) {
|
||||
$r->add(self::DUO, '/admin/bans', 'AdminBans:view', 'AdminBans');
|
||||
$r->add(self::DUO, '/admin/bans/new[/{ids:\d+(?:-\d+)*}[/{uid:[2-9]|[1-9]\d+}]]', 'AdminBans:add', 'AdminBansNew');
|
||||
|
|
137
app/Models/Pages/Admin/Users/NewUser.php
Normal file
137
app/Models/Pages/Admin/Users/NewUser.php
Normal file
|
@ -0,0 +1,137 @@
|
|||
<?php
|
||||
|
||||
namespace ForkBB\Models\Pages\Admin\Users;
|
||||
|
||||
use ForkBB\Core\Validator;
|
||||
use ForkBB\Models\Page;
|
||||
use ForkBB\Models\Pages\Admin\Users;
|
||||
use RuntimeException;
|
||||
|
||||
class NewUser extends Users
|
||||
{
|
||||
/**
|
||||
* Подготавливает данные для шаблона добавление пользователя
|
||||
*
|
||||
* @param array $args
|
||||
* @param string $method
|
||||
*
|
||||
* @throws RuntimeException
|
||||
*
|
||||
* @return Page
|
||||
*/
|
||||
public function view(array $args, string $method): Page
|
||||
{
|
||||
$this->c->Lang->load('register');
|
||||
|
||||
$data = [];
|
||||
|
||||
if ('POST' === $method) {
|
||||
$v = $this->c->Validator->reset()
|
||||
->addValidators([
|
||||
])->addRules([
|
||||
'token' => 'token:AdminUsersNew',
|
||||
'email' => 'required|string:trim|email:noban,unique',
|
||||
'username' => 'required|string:trim,spaces|username',
|
||||
'password' => 'required|string|min:16|password',
|
||||
])->addAliases([
|
||||
'email' => 'Email',
|
||||
'username' => 'Username',
|
||||
'password' => 'Passphrase',
|
||||
])->addMessages([
|
||||
'password.password' => 'Pass format',
|
||||
'username.login' => 'Login format',
|
||||
]);
|
||||
|
||||
if ($v->validation($_POST)) {
|
||||
$user = $this->c->users->create();
|
||||
|
||||
$user->username = $v->username;
|
||||
$user->password = \password_hash($v->password, PASSWORD_DEFAULT);
|
||||
$user->group_id = $this->c->config->o_default_user_group;
|
||||
$user->email = $v->email;
|
||||
$user->email_confirmed = 0;
|
||||
$user->activate_string = '';
|
||||
$user->u_mark_all_read = \time();
|
||||
$user->email_setting = $this->c->config->o_default_email_setting;
|
||||
$user->timezone = $this->c->config->o_default_timezone;
|
||||
$user->dst = $this->c->config->o_default_dst;
|
||||
$user->language = $this->c->config->o_default_lang;
|
||||
$user->style = $this->c->config->o_default_style;
|
||||
$user->registered = \time();
|
||||
$user->registration_ip = '127.0.0.1';
|
||||
$user->signature = '';
|
||||
|
||||
$this->c->users->insert($user);
|
||||
|
||||
return $this->c->Redirect->page('User', ['id' => $user->id, 'name' => $user->username])->message('New user added redirect');
|
||||
}
|
||||
|
||||
$this->fIswev = $v->getErrors();
|
||||
$data = $v->getData();
|
||||
}
|
||||
|
||||
$this->nameTpl = 'admin/users';
|
||||
$this->formNew = $this->formNew($data);
|
||||
$this->aCrumbs[] = [$this->c->Router->link('AdminUsersNew'), \ForkBB\__('Add user')];
|
||||
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Подготавливает массив данных для формы
|
||||
*
|
||||
* @param array $data
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function formNew(array $data): array
|
||||
{
|
||||
return [
|
||||
'action' => $this->c->Router->link('AdminUsersNew'),
|
||||
'hidden' => [
|
||||
'token' => $this->c->Csrf->create('AdminUsersNew'),
|
||||
],
|
||||
'sets' => [
|
||||
'reg' => [
|
||||
'legend' => \ForkBB\__('Add user legend'),
|
||||
'fields' => [
|
||||
'username' => [
|
||||
'autofocus' => true,
|
||||
'type' => 'text',
|
||||
'maxlength' => 25,
|
||||
'value' => $data['username'] ?? null,
|
||||
'caption' => \ForkBB\__('Username'),
|
||||
'info' => \ForkBB\__('Login format'),
|
||||
'required' => true,
|
||||
'pattern' => '^.{2,25}$',
|
||||
],
|
||||
'email' => [
|
||||
'type' => 'text',
|
||||
'maxlength' => 80,
|
||||
'value' => $data['email'] ?? null,
|
||||
'caption' => \ForkBB\__('Email'),
|
||||
'info' => \ForkBB\__('Email info'),
|
||||
'required' => true,
|
||||
'pattern' => '.+@.+',
|
||||
],
|
||||
'password' => [
|
||||
'type' => 'text',
|
||||
'caption' => \ForkBB\__('Passphrase'),
|
||||
'info' => \ForkBB\__('Pass format') . ' ' . \ForkBB\__('Pass info'),
|
||||
'required' => true,
|
||||
'pattern' => '^.{16,}$',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
'btns' => [
|
||||
'add' => [
|
||||
'type' => 'submit',
|
||||
'value' => \ForkBB\__('Add'),
|
||||
'accesskey' => 's',
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
|
@ -124,9 +124,37 @@ class View extends Users
|
|||
$this->formIP = $this->formIP($data);
|
||||
}
|
||||
|
||||
if ($this->user->isAdmin) {
|
||||
$this->formNew = $this->formNew();
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Создает массив данных для кнопки добавления пользователя
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function formNew(): array
|
||||
{
|
||||
$form = [
|
||||
'action' => $this->c->Router->link('AdminUsers'),
|
||||
'hidden' => [],
|
||||
'sets' => [],
|
||||
'btns' => [
|
||||
'new' => [
|
||||
'type' => 'btn',
|
||||
'value' => \ForkBB\__('New user'),
|
||||
'link' => $this->c->Router->link('AdminUsersNew'),
|
||||
'accesskey' => 'n',
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
/**
|
||||
* Создает массив данных для формы поиска
|
||||
*
|
||||
|
|
|
@ -178,6 +178,7 @@ return [
|
|||
'AdminUsersStat' => \ForkBB\Models\Pages\Admin\Users\Stat::class,
|
||||
'AdminUsersAction' => \ForkBB\Models\Pages\Admin\Users\Action::class,
|
||||
'AdminUsersPromote' => \ForkBB\Models\Pages\Admin\Users\Promote::class,
|
||||
'AdminUsersNew' => \ForkBB\Models\Pages\Admin\Users\NewUser::class,
|
||||
'AdminHost' => \ForkBB\Models\Pages\Admin\Host::class,
|
||||
'AdminBans' => \ForkBB\Models\Pages\Admin\Bans::class,
|
||||
'AdminReports' => \ForkBB\Models\Pages\Admin\Reports::class,
|
||||
|
|
|
@ -356,3 +356,18 @@ msgstr "You are trying to change your own group."
|
|||
|
||||
msgid "User is ban"
|
||||
msgstr "The user %s is ban."
|
||||
|
||||
msgid "New user head"
|
||||
msgstr "New user"
|
||||
|
||||
msgid "New user"
|
||||
msgstr "New user"
|
||||
|
||||
msgid "Add user"
|
||||
msgstr "Add user"
|
||||
|
||||
msgid "Add user legend"
|
||||
msgstr "Add user"
|
||||
|
||||
msgid "New user added redirect"
|
||||
msgstr "New user added. Redirecting …"
|
||||
|
|
|
@ -356,3 +356,18 @@ msgstr "Вы пытаетесь изменить свою собственную
|
|||
|
||||
msgid "User is ban"
|
||||
msgstr "Пользователь %s забанен."
|
||||
|
||||
msgid "New user head"
|
||||
msgstr "Новый пользователь"
|
||||
|
||||
msgid "New user"
|
||||
msgstr "Новый пользователь"
|
||||
|
||||
msgid "Add user"
|
||||
msgstr "Добавление пользователя"
|
||||
|
||||
msgid "Add user legend"
|
||||
msgstr "Добавление пользователя"
|
||||
|
||||
msgid "New user added redirect"
|
||||
msgstr "Новый пользователь добавлен. Переадресация …"
|
||||
|
|
|
@ -15,3 +15,11 @@
|
|||
</div>
|
||||
</section>
|
||||
@endif
|
||||
@if ($form = $p->formNew)
|
||||
<section class="f-admin f-new-user-form">
|
||||
<h2>{!! __('New user head') !!}</h2>
|
||||
<div class="f-fdiv">
|
||||
@include ('layouts/form')
|
||||
</div>
|
||||
</section>
|
||||
@endif
|
||||
|
|
Loading…
Add table
Reference in a new issue