Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/DashBoard/Controls/AddUser/Control.latte
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{control form}
81 changes: 81 additions & 0 deletions app/DashBoard/Controls/AddUser/Control.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<?php declare(strict_types = 1);

namespace Pd\Monitoring\DashBoard\Controls\AddUser;

class Control extends \Nette\Application\UI\Control
{

private \Pd\Monitoring\DashBoard\Forms\UserAddEditFormFactory $userAddEditFormFactory;

private \Pd\Monitoring\User\UsersRepository $usersRepository;

private \Nette\Security\User $user;

private \Nette\Security\Passwords $passwords;


public function __construct(
//\Pd\Monitoring\User\User $identity,
\Pd\Monitoring\DashBoard\Forms\UserAddEditFormFactory $userAddEditFormFactory,
\Pd\Monitoring\User\UsersRepository $usersRepository,
\Nette\Security\User $user,
\Nette\Security\Passwords $passwords
)
{
$this->userAddEditFormFactory = $userAddEditFormFactory;
$this->usersRepository = $usersRepository;
$this->user = $user;
$this->passwords = $passwords;
}


public function render(): void
{
$this->getTemplate()->setFile(__DIR__ . '/Control.latte');
$this->getTemplate()->render();
}


protected function createComponentForm(): \Nette\Application\UI\Form
{
$form = $this->userAddEditFormFactory->create();

$form->getComponent(\Pd\Monitoring\DashBoard\Forms\UserAddEditFormFactory::FIELD_PASSWORD)
->setRequired();

$form->onSuccess[] = function (\Nette\Forms\Form $form, \Pd\Monitoring\DashBoard\Forms\UserEditFormData $values): void
{
$this->processAddForm($form, $values);
};

return $form;
}


protected function processAddForm(\Nette\Forms\Form $form, \Pd\Monitoring\DashBoard\Forms\UserEditFormData $values): void
{

$user = new \Pd\Monitoring\User\User();
$user->gitHubName = $values->gitHubName;
$user->slackId = $values->slackId;

/** @var bool $administrator */
$administrator = $values->administrator;
$user->administrator = $administrator;

$user->email = $values->email;

/** @var string $password */
$password = $values->password;
$user->password = $this->passwords->hash($password);

$this->usersRepository->persistAndFlush($user);

if ($this->user->isAllowed(\Pd\Monitoring\User\AclFactory::RESOURCE_USER, \Pd\Monitoring\User\AclFactory::PRIVILEGE_ADD)) {
$this->getPresenter()->redirect(':DashBoard:User:');
} else {
$this->getPresenter()->redirect(':DashBoard:HomePage:');
}
}

}
10 changes: 10 additions & 0 deletions app/DashBoard/Controls/AddUser/IFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php declare(strict_types = 1);

namespace Pd\Monitoring\DashBoard\Controls\AddUser;

interface IFactory
{

public function create(): Control;

}
10 changes: 5 additions & 5 deletions app/DashBoard/Controls/EditUser/Control.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
class Control extends \Nette\Application\UI\Control
{

private \Pd\Monitoring\DashBoard\Forms\UserEditFormFactory $userEditFormFactory;
private \Pd\Monitoring\DashBoard\Forms\UserAddEditFormFactory $userAddEditFormFactory;

private \Pd\Monitoring\User\User $identity;

Expand All @@ -18,14 +18,14 @@ class Control extends \Nette\Application\UI\Control

public function __construct(
\Pd\Monitoring\User\User $identity,
\Pd\Monitoring\DashBoard\Forms\UserEditFormFactory $userEditFormFactory,
\Pd\Monitoring\DashBoard\Forms\UserAddEditFormFactory $userAddEditFormFactory,
\Pd\Monitoring\User\UsersRepository $usersRepository,
\Nette\Security\User $user,
\Nette\Security\Passwords $passwords
)
{
$this->identity = $identity;
$this->userEditFormFactory = $userEditFormFactory;
$this->userAddEditFormFactory = $userAddEditFormFactory;
$this->usersRepository = $usersRepository;
$this->user = $user;
$this->passwords = $passwords;
Expand All @@ -46,10 +46,10 @@ public function render(): void

protected function createComponentForm(): \Nette\Application\UI\Form
{
$form = $this->userEditFormFactory->create();
$form = $this->userAddEditFormFactory->create();

if (!$this->user->isAllowed($this->identity, \Pd\Monitoring\User\AclFactory::PRIVILEGE_EDIT)) {
$form->removeComponent($form->getComponent(\Pd\Monitoring\DashBoard\Forms\UserEditFormFactory::FIELD_PASSWORD));
$form->removeComponent($form->getComponent(\Pd\Monitoring\DashBoard\Forms\UserAddEditFormFactory::FIELD_PASSWORD));
}

$form->onSuccess[] = function (\Nette\Forms\Form $form, \Pd\Monitoring\DashBoard\Forms\UserEditFormData $values): void
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Pd\Monitoring\DashBoard\Forms;

class UserEditFormFactory
class UserAddEditFormFactory
{

public const FIELD_GIT_HUB_NAME = 'gitHubName';
Expand Down
18 changes: 18 additions & 0 deletions app/DashBoard/Presenters/UserPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
class UserPresenter extends BasePresenter
{

private \Pd\Monitoring\DashBoard\Controls\AddUser\IFactory $addUserControlFactory;

private \Pd\Monitoring\DashBoard\Controls\EditUser\IFactory $editUserControlFactory;

private \Pd\Monitoring\User\User $editedUser;
Expand All @@ -13,11 +15,13 @@ class UserPresenter extends BasePresenter


public function __construct(
\Pd\Monitoring\DashBoard\Controls\AddUser\IFactory $addUserControlFactory,
\Pd\Monitoring\DashBoard\Controls\EditUser\IFactory $editUserControlFactory,
\Pd\Monitoring\DashBoard\Controls\UserList\IFactory $userListControlFactory
)
{
parent::__construct();
$this->addUserControlFactory = $addUserControlFactory;
$this->editUserControlFactory = $editUserControlFactory;
$this->userListControlFactory = $userListControlFactory;
}
Expand All @@ -31,6 +35,14 @@ public function actionDefault(): void
}


public function actionAdd(): void
{
if ( ! $this->user->isAllowed(\Pd\Monitoring\User\AclFactory::RESOURCE_USER, \Pd\Monitoring\User\AclFactory::PRIVILEGE_ADD)) {
throw new \Nette\Application\ForbiddenRequestException();
}
}


public function actionEdit(\Pd\Monitoring\User\User $user): void
{
if ( ! $this->user->isAllowed($user, \Pd\Monitoring\User\AclFactory::PRIVILEGE_EDIT)) {
Expand All @@ -41,6 +53,12 @@ public function actionEdit(\Pd\Monitoring\User\User $user): void
}


protected function createComponentAddUser(): \Nette\Application\UI\Control
{
return $this->addUserControlFactory->create();
}


protected function createComponentEditUser(): \Nette\Application\UI\Control
{
return $this->editUserControlFactory->create($this->editedUser);
Expand Down
8 changes: 8 additions & 0 deletions app/DashBoard/Presenters/templates/User/add.latte
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{block title}
Přidání uživatele
{/block}

{block content}
{control addUser}
{/block}

8 changes: 8 additions & 0 deletions app/DashBoard/Presenters/templates/User/default.latte
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,11 @@
{block content}
{control userList}
{/block}

{block buttons}
<div class="buttons">
<div class="btn-group">
<a n:href="User:add" class="btn btn-success" n:if="$user->isAllowed(\Pd\Monitoring\User\AclFactory::RESOURCE_USER, \Pd\Monitoring\User\AclFactory::PRIVILEGE_ADD)"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Nový uživatel</a>
</div>
</div>
{/block}
4 changes: 2 additions & 2 deletions app/User/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

/**
* @property int $id {primary}
* @property int $gitHubId
* @property int|null $gitHubId
* @property string $gitHubName
* @property string $gitHubToken
* @property string|null $gitHubToken
* @property bool $administrator
* @property string|null $slackId
* @property string|null $password
Expand Down
5 changes: 4 additions & 1 deletion app/config/config.neon
Original file line number Diff line number Diff line change
Expand Up @@ -353,11 +353,14 @@ services:
arguments:
user: @\Nette\Security\User::getIdentity()

-
implement: Pd\Monitoring\DashBoard\Controls\AddUser\IFactory

-
implement: Pd\Monitoring\DashBoard\Controls\EditUser\IFactory

-
factory: Pd\Monitoring\DashBoard\Forms\UserEditFormFactory
factory: Pd\Monitoring\DashBoard\Forms\UserAddEditFormFactory

-
implement: Pd\Monitoring\DashBoard\Controls\Settings\IFactory
Expand Down
3 changes: 3 additions & 0 deletions migrations/structures/2021-09-04-124000-github-null.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ALTER TABLE `users`
CHANGE `git_hub_id` `git_hub_id` int(11) NULL AFTER `id`,
CHANGE `git_hub_token` `git_hub_token` varchar(255) COLLATE 'utf8_general_ci' NULL AFTER `git_hub_name`;
2 changes: 1 addition & 1 deletion phpstan-baseline.neon
Original file line number Diff line number Diff line change
Expand Up @@ -1521,7 +1521,7 @@ parameters:
path: app/Github/Presenters/LoginPresenter.php

-
message: "#^Property Pd\\\\Monitoring\\\\User\\\\User\\:\\:\\$gitHubId \\(int\\) does not accept string\\|null\\.$#"
message: "#^Property Pd\\\\Monitoring\\\\User\\\\User\\:\\:\\$gitHubId \\(int\\|null\\) does not accept string\\|null\\.$#"
count: 1
path: app/Github/Presenters/LoginPresenter.php

Expand Down