aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Controller/Admin/Users.pm
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2019-05-24 12:43:23 +0100
committerMatthew Somerville <matthew-github@dracos.co.uk>2019-05-28 17:19:27 +0100
commit4b88125da243aba9ad9754619c53cd5c50512c6d (patch)
tree89ec74c2e902db8f49b7be7c675197881fa1c4c3 /perllib/FixMyStreet/App/Controller/Admin/Users.pm
parentc34949cf7bc386f057781b8d7b7a97c3aa9db2da (diff)
Add role to users from admin user list page.
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Admin/Users.pm')
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin/Users.pm17
1 files changed, 17 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin/Users.pm b/perllib/FixMyStreet/App/Controller/Admin/Users.pm
index 898399cd1..e55a3d111 100644
--- a/perllib/FixMyStreet/App/Controller/Admin/Users.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin/Users.pm
@@ -27,6 +27,23 @@ Admin pages for editing users
sub index :Path : Args(0) {
my ( $self, $c ) = @_;
+ if ($c->req->method eq 'POST') {
+ my @uids = $c->get_param_list('uid');
+ my @role_ids = $c->get_param_list('roles');
+ my $user_rs = FixMyStreet::DB->resultset("User")->search({ id => \@uids });
+ foreach my $user ($user_rs->all) {
+ $user->admin_user_body_permissions->delete;
+ $user->user_roles->search({
+ role_id => { -not_in => \@role_ids },
+ })->delete;
+ foreach my $role (@role_ids) {
+ $user->user_roles->find_or_create({
+ role_id => $role,
+ });
+ }
+ }
+ $c->stash->{status_message} = _('Updated!');
+ }
my $search = $c->get_param('search');
my $role = $c->get_param('role');