diff options
author | Matthew Somerville <matthew-github@dracos.co.uk> | 2019-05-24 12:43:23 +0100 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2019-05-28 17:19:27 +0100 |
commit | 4b88125da243aba9ad9754619c53cd5c50512c6d (patch) | |
tree | 89ec74c2e902db8f49b7be7c675197881fa1c4c3 /perllib/FixMyStreet/App/Controller/Admin/Users.pm | |
parent | c34949cf7bc386f057781b8d7b7a97c3aa9db2da (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.pm | 17 |
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'); |