Merge pull request #1671 from bburnichon/admin-management-PHRAS-949

Demote Admin users on request
This commit is contained in:
Thibaud Fabre
2016-02-09 13:44:32 +01:00
4 changed files with 21 additions and 7 deletions

View File

@@ -124,6 +124,10 @@ class DashboardController extends Controller
public function addAdmins(Request $request)
{
$admins = $request->request->get('admins', []);
// Remove empty values
$admins = array_filter($admins);
if (!is_array($admins) || count($admins) === 0) {
$this->app->abort(400, '"admins" parameter must contains at least one value.');
}
@@ -134,6 +138,15 @@ class DashboardController extends Controller
}
$userRepository = $this->getUserRepository();
$demotedAdmins = [];
foreach ($userRepository->findAdmins() as $admin) {
if (!in_array($admin->getId(), $admins)) {
$demotedAdmins[$admin->getId()] = $admin;
}
}
$userRepository->findBy(['id' => $admins]);
$admins = array_map(function ($usrId) use ($userRepository) {
if (null === $user = $userRepository->find($usrId)) {
@@ -145,7 +158,10 @@ class DashboardController extends Controller
/** @var UserManipulator $userManipulator */
$userManipulator = $this->app['manipulator.user'];
$userManipulator->demote($demotedAdmins);
$userManipulator->promote($admins);
/** @var ACLManipulator $aclManipulator */
$aclManipulator = $this->app['manipulator.acl'];
$aclManipulator->resetAdminRights($admins);

View File

@@ -347,9 +347,9 @@ class UserManipulator implements ManipulatorInterface
/**
* Makes given variable traversable.
*
* @param mixed $var
* @param User|User[] $var
*
* @return array
* @return array|\Traversable|User[]
*/
private function makeTraversable($var)
{

View File

@@ -25,7 +25,7 @@ class UserRepository extends EntityRepository
/**
* Finds admins.
*
* @return array
* @return User[]
*/
public function findAdmins()
{

View File

@@ -106,11 +106,9 @@
</label>
</li>
{% endfor %}
</ul>
<div class="input-append" style="margin-left:20px">
<input class="admin_adder input-large" placeholder="{{ 'Add an admin' | trans }}"/>
<input type="submit" class="btn btn-warning" value="{{ 'boutton::valider' | trans }}" />
</div>
</ul>
<input type="submit" class="btn btn-warning" value="{{ 'boutton::valider' | trans }}" />
<input type="hidden" class="new" name="admins[]" />
</fieldset>
</form>