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 11:24:02 +0100
committerMatthew Somerville <matthew-github@dracos.co.uk>2019-05-28 17:19:27 +0100
commitc34949cf7bc386f057781b8d7b7a97c3aa9db2da (patch)
tree0a9fe2190cb89aeb11e7b38cd5e50ad9b7a6dbff /perllib/FixMyStreet/App/Controller/Admin/Users.pm
parent71da3960ab0c80ed5dd7a3532216576a3885ccfa (diff)
User import allowing roles.
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Admin/Users.pm')
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin/Users.pm27
1 files changed, 19 insertions, 8 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin/Users.pm b/perllib/FixMyStreet/App/Controller/Admin/Users.pm
index 29c8f805c..898399cd1 100644
--- a/perllib/FixMyStreet/App/Controller/Admin/Users.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin/Users.pm
@@ -444,9 +444,8 @@ sub import :Local {
my $fh = $c->req->upload('csvfile')->fh;
$csv->getline($fh); # discard the header
while (my $row = $csv->getline($fh)) {
- my ($name, $email, $from_body, $permissions) = @$row;
+ my ($name, $email, $from_body, $permissions, $roles) = @$row;
$email = lc Utils::trim_text($email);
- my @permissions = split(/:/, $permissions);
my $user = FixMyStreet::DB->resultset("User")->find_or_new({ email => $email, email_verified => 1 });
if ($user->in_storage) {
@@ -458,12 +457,24 @@ sub import :Local {
$user->from_body($from_body || undef);
$user->update_or_insert;
- my @user_permissions = grep { $available_permissions{$_} } @permissions;
- foreach my $permission_type (@user_permissions) {
- $user->user_body_permissions->find_or_create({
- body_id => $user->from_body->id,
- permission_type => $permission_type,
- });
+ if ($roles) {
+ my @roles = split(/:/, $roles);
+ foreach my $role (@roles) {
+ $role = FixMyStreet::DB->resultset("Role")->find({
+ body_id => $user->from_body->id,
+ name => $role,
+ }) or next;
+ $user->add_to_roles($role);
+ }
+ } else {
+ my @permissions = split(/:/, $permissions);
+ my @user_permissions = grep { $available_permissions{$_} } @permissions;
+ foreach my $permission_type (@user_permissions) {
+ $user->user_body_permissions->find_or_create({
+ body_id => $user->from_body->id,
+ permission_type => $permission_type,
+ });
+ }
}
push @{$c->stash->{new_users}}, $user;