From b78a844d77fa1e7d6bd0fe870bb01f16c1045404 Mon Sep 17 00:00:00 2001 From: Celestino Bellone Date: Wed, 21 Oct 2015 08:20:45 +0200 Subject: [PATCH] #62 - configure the user role --- .../config/ConfigurationStatusChecker.java | 3 +- .../api/admin/UsersApiController.java | 26 +++++---- .../manager/TicketReservationManager.java | 3 +- .../java/alfio/manager/user/UserManager.java | 53 ++++++++++++++----- .../model/modification/UserModification.java | 3 ++ src/main/java/alfio/model/user/Authority.java | 6 +-- src/main/java/alfio/model/user/Role.java | 36 +++++++++++++ .../repository/user/AuthorityRepository.java | 7 ++- .../java/alfio/util/ValidationResult.java | 7 +++ .../admin/partials/main/edit-user.html | 5 ++ .../resources/js/admin/feature/user/user.js | 14 +++-- .../manager/ConfigurationManagerTest.java | 4 +- .../manager/TicketReservationManagerTest.java | 3 +- .../system/DataMigratorIntegrationTest.java | 3 +- .../alfio/test/util/IntegrationTestUtil.java | 5 +- 15 files changed, 134 insertions(+), 44 deletions(-) create mode 100644 src/main/java/alfio/model/user/Role.java diff --git a/src/main/java/alfio/config/ConfigurationStatusChecker.java b/src/main/java/alfio/config/ConfigurationStatusChecker.java index eb94d4e4d1..6b585a50d0 100644 --- a/src/main/java/alfio/config/ConfigurationStatusChecker.java +++ b/src/main/java/alfio/config/ConfigurationStatusChecker.java @@ -20,6 +20,7 @@ import alfio.manager.system.DataMigrator; import alfio.manager.user.UserManager; import alfio.model.system.Configuration; +import alfio.model.user.Role; import alfio.repository.user.AuthorityRepository; import alfio.repository.user.UserRepository; import alfio.util.PasswordGenerator; @@ -66,7 +67,7 @@ public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { if (!initCompleted) { String adminPassword = PasswordGenerator.generateRandomPassword(); userRepository.create(UserManager.ADMIN_USERNAME, passwordEncoder.encode(adminPassword), "The", "Administrator", "admin@localhost", true); - authorityRepository.create(UserManager.ADMIN_USERNAME, AuthorityRepository.ROLE_ADMIN); + authorityRepository.create(UserManager.ADMIN_USERNAME, Role.ADMIN.getRoleName()); log.info("*******************************************************"); log.info(" This is the first time you're running alf.io"); log.info(" here the generated admin credentials:"); diff --git a/src/main/java/alfio/controller/api/admin/UsersApiController.java b/src/main/java/alfio/controller/api/admin/UsersApiController.java index 8876727c54..c5b8444baa 100644 --- a/src/main/java/alfio/controller/api/admin/UsersApiController.java +++ b/src/main/java/alfio/controller/api/admin/UsersApiController.java @@ -20,12 +20,14 @@ import alfio.model.modification.OrganizationModification; import alfio.model.modification.UserModification; import alfio.model.user.Organization; +import alfio.model.user.Role; import alfio.model.user.User; import alfio.model.user.UserWithPassword; import alfio.util.ImageUtil; import alfio.util.Json; import alfio.util.ValidationResult; import lombok.extern.log4j.Log4j2; +import org.apache.commons.lang3.Validate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; @@ -34,10 +36,7 @@ import javax.servlet.http.HttpSession; import java.io.IOException; import java.security.Principal; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; import static org.springframework.web.bind.annotation.RequestMethod.*; @@ -64,6 +63,11 @@ public String unhandledException(Exception e) { return e.getMessage(); } + @RequestMapping(value = "/roles", method = GET) + public Collection getAllRoles(Principal principal) { + return userManager.getAvailableRoles(principal.getName()); + } + @RequestMapping(value = "/organizations", method = GET) @ResponseStatus(HttpStatus.OK) public List getAllOrganizations(Principal principal) { @@ -101,19 +105,21 @@ public ValidationResult validateOrganization(@RequestBody OrganizationModificati @RequestMapping(value = "/users/check", method = POST) public ValidationResult validateUser(@RequestBody UserModification userModification) { return userManager.validateUser(userModification.getId(), userModification.getUsername(), - userModification.getOrganizationId(), userModification.getFirstName(), + userModification.getOrganizationId(), userModification.getRole(), userModification.getFirstName(), userModification.getLastName(), userModification.getEmailAddress()); } @RequestMapping(value = "/users/edit", method = POST) - public String editUser(@RequestBody UserModification userModification) { - userManager.editUser(userModification.getId(), userModification.getOrganizationId(), userModification.getUsername(), userModification.getFirstName(), userModification.getLastName(), userModification.getEmailAddress()); + public String editUser(@RequestBody UserModification userModification, Principal principal) { + userManager.editUser(userModification.getId(), userModification.getOrganizationId(), userModification.getUsername(), userModification.getFirstName(), userModification.getLastName(), userModification.getEmailAddress(), Role.valueOf(userModification.getRole()), principal.getName()); return OK; } @RequestMapping(value = "/users/new", method = POST) - public UserWithPassword insertUser(@RequestBody UserModification userModification, HttpSession session) { - UserWithPassword userWithPassword = userManager.insertUser(userModification.getOrganizationId(), userModification.getUsername(), userModification.getFirstName(), userModification.getLastName(), userModification.getEmailAddress()); + public UserWithPassword insertUser(@RequestBody UserModification userModification, HttpSession session, Principal principal) { + Role requested = Role.valueOf(userModification.getRole()); + Validate.isTrue(userManager.getAvailableRoles(principal.getName()).stream().anyMatch(requested::equals), String.format("Requested role %s is not available for current user", userModification.getRole())); + UserWithPassword userWithPassword = userManager.insertUser(userModification.getOrganizationId(), userModification.getUsername(), userModification.getFirstName(), userModification.getLastName(), userModification.getEmailAddress(), requested); storePasswordImage(session, userWithPassword); return userWithPassword; } @@ -148,7 +154,7 @@ public String deleteUser(@PathVariable("id") int userId, Principal principal) { public UserModification loadUser(@PathVariable("id") int userId) { User user = userManager.findUser(userId); List userOrganizations = userManager.findUserOrganizations(user); - return new UserModification(user.getId(), userOrganizations.get(0).getId(), user.getUsername(), user.getFirstName(), user.getLastName(), user.getEmailAddress()); + return new UserModification(user.getId(), userOrganizations.get(0).getId(), userManager.getUserRole(user).name(), user.getUsername(), user.getFirstName(), user.getLastName(), user.getEmailAddress()); } @RequestMapping(value = "/users/{id}/reset-password", method = PUT) diff --git a/src/main/java/alfio/manager/TicketReservationManager.java b/src/main/java/alfio/manager/TicketReservationManager.java index 184959f2ea..d36f99e920 100644 --- a/src/main/java/alfio/manager/TicketReservationManager.java +++ b/src/main/java/alfio/manager/TicketReservationManager.java @@ -34,6 +34,7 @@ import alfio.model.system.Configuration; import alfio.model.transaction.PaymentProxy; import alfio.model.user.Organization; +import alfio.model.user.Role; import alfio.repository.*; import alfio.repository.user.AuthorityRepository; import alfio.repository.user.OrganizationRepository; @@ -795,7 +796,7 @@ public void updateTicketOwner(Ticket ticket, } private boolean isAdmin(Optional userDetails) { - return userDetails.flatMap(u -> u.getAuthorities().stream().filter(a -> AuthorityRepository.ROLE_ADMIN.equals(a.getAuthority())).findFirst()).isPresent(); + return userDetails.flatMap(u -> u.getAuthorities().stream().map(a -> Role.fromRoleName(a.getAuthority())).filter(Role.ADMIN::equals).findFirst()).isPresent(); } private void sendTicketByEmail(Ticket ticket, Locale locale, Event event, PartialTicketTextGenerator confirmationTextBuilder, PartialTicketPDFGenerator pdfTemplateGenerator) { diff --git a/src/main/java/alfio/manager/user/UserManager.java b/src/main/java/alfio/manager/user/UserManager.java index a8e58f677c..22584823c5 100644 --- a/src/main/java/alfio/manager/user/UserManager.java +++ b/src/main/java/alfio/manager/user/UserManager.java @@ -16,10 +16,7 @@ */ package alfio.manager.user; -import alfio.model.user.Authority; -import alfio.model.user.Organization; -import alfio.model.user.User; -import alfio.model.user.UserWithPassword; +import alfio.model.user.*; import alfio.repository.user.AuthorityRepository; import alfio.repository.user.OrganizationRepository; import alfio.repository.user.UserRepository; @@ -27,16 +24,17 @@ import alfio.util.PasswordGenerator; import alfio.util.ValidationResult; import ch.digitalfondue.npjt.AffectedRowCountAndKey; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; +import org.apache.commons.lang3.tuple.Pair; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; +import org.springframework.validation.ValidationUtils; -import java.util.List; -import java.util.Optional; -import java.util.UUID; +import java.util.*; import java.util.function.Function; import java.util.function.Predicate; @@ -87,6 +85,26 @@ public User findUser(int id) { return userRepository.findById(id); } + public Collection getAvailableRoles(String username) { + User user = findUserByUsername(username); + if(isAdmin(user)) { + return EnumSet.of(Role.OWNER, Role.OPERATOR); + } + if(isOwner(user)) { + return EnumSet.of(Role.OPERATOR); + } + return Collections.emptySet(); + } + + /** + * Return the most privileged role of a user + * @param user + * @return user role + */ + public Role getUserRole(User user) { + return getUserAuthorities(user).stream().map(Authority::getRole).sorted().findFirst().orElse(Role.OPERATOR); + } + public List findUserOrganizations(String username) { return findUserOrganizations(userRepository.getByUsername(username)); } @@ -110,11 +128,11 @@ public List findUserOrganizations(User user) { } public boolean isAdmin(User user) { - return checkRole(user, a -> a.getRole().equals(AuthorityRepository.ROLE_ADMIN)); + return checkRole(user, a -> a.getRole().equals(Role.ADMIN)); } public boolean isOwner(User user) { - return checkRole(user, a -> a.getRole().equals(AuthorityRepository.ROLE_ADMIN) || a.getRole().equals(AuthorityRepository.ROLE_OWNER)); + return checkRole(user, a -> a.getRole().equals(Role.ADMIN) || a.getRole().equals(Role.OWNER)); } public boolean isOwnerOfOrganization(User user, int organizationId) { @@ -151,20 +169,23 @@ public ValidationResult validateOrganization(Integer id, String name, String ema } @Transactional - public void editUser(int id, int organizationId, String username, String firstName, String lastName, String emailAddress) { + public void editUser(int id, int organizationId, String username, String firstName, String lastName, String emailAddress, Role role, String currentUsername) { int userOrganizationResult = userOrganizationRepository.updateUserOrganization(id, organizationId); Assert.isTrue(userOrganizationResult == 1, "unexpected error during organization update"); int userResult = userRepository.update(id, username, firstName, lastName, emailAddress); Assert.isTrue(userResult == 1, "unexpected error during user update"); + Assert.isTrue(getAvailableRoles(currentUsername).contains(role), "cannot assign role "+role); + authorityRepository.revokeAll(username); + authorityRepository.create(username, role.getRoleName()); } @Transactional - public UserWithPassword insertUser(int organizationId, String username, String firstName, String lastName, String emailAddress) { + public UserWithPassword insertUser(int organizationId, String username, String firstName, String lastName, String emailAddress, Role role) { Organization organization = organizationRepository.getById(organizationId); String userPassword = PasswordGenerator.generateRandomPassword(); AffectedRowCountAndKey result = userRepository.create(username, passwordEncoder.encode(userPassword), firstName, lastName, emailAddress, true); userOrganizationRepository.create(result.getKey(), organization.getId()); - authorityRepository.create(username, AuthorityRepository.ROLE_OPERATOR); + authorityRepository.create(username, role.getRoleName()); return new UserWithPassword(userRepository.findById(result.getKey()), userPassword, UUID.randomUUID().toString()); } @@ -183,7 +204,7 @@ public void deleteUser(int userId, String currentUsername) { Assert.isTrue(userRepository.toggleEnabled(userId, false) == 1, "unexpected update result"); } - public ValidationResult validateUser(Integer id, String username, int organizationId, String firstName, String lastName, String emailAddress) { + public ValidationResult validateUser(Integer id, String username, int organizationId, String role, String firstName, String lastName, String emailAddress) { int userId = ID_EVALUATOR.apply(id); final long existing = userRepository.findByUsername(username) .stream() @@ -192,7 +213,11 @@ public ValidationResult validateUser(Integer id, String username, int organizati if(existing > 0) { return ValidationResult.failed(new ValidationResult.ValidationError("username", "There is already another user with the same username.")); } - return ValidationResult.success(); + return ValidationResult.of(Arrays.asList(Pair.of(firstName, "firstName"), Pair.of(lastName, "lastName"), Pair.of(emailAddress, "emailAddress")) + .stream() + .filter(p -> StringUtils.isEmpty(p.getKey())) + .map(p -> new ValidationResult.ValidationError(p.getKey(), p.getValue() + " is required")) + .collect(toList())); } diff --git a/src/main/java/alfio/model/modification/UserModification.java b/src/main/java/alfio/model/modification/UserModification.java index a189ae536a..2190c0f64e 100644 --- a/src/main/java/alfio/model/modification/UserModification.java +++ b/src/main/java/alfio/model/modification/UserModification.java @@ -25,6 +25,7 @@ public class UserModification { private final Integer id; private final int organizationId; + private final String role; private final String username; private final String firstName; private final String lastName; @@ -33,12 +34,14 @@ public class UserModification { @JsonCreator public UserModification(@JsonProperty("id") Integer id, @JsonProperty("organizationId") int organizationId, + @JsonProperty("role") String role, @JsonProperty("username") String username, @JsonProperty("firstName") String firstName, @JsonProperty("lastName") String lastName, @JsonProperty("emailAddress") String emailAddress) { this.id = id; this.organizationId = organizationId; + this.role = role; this.username = username; this.firstName = firstName; this.lastName = lastName; diff --git a/src/main/java/alfio/model/user/Authority.java b/src/main/java/alfio/model/user/Authority.java index 65506148ff..d5a1a5bf61 100644 --- a/src/main/java/alfio/model/user/Authority.java +++ b/src/main/java/alfio/model/user/Authority.java @@ -22,10 +22,10 @@ @Getter public class Authority { private final String username; - private final String role; + private final Role role; - public Authority(@Column("username") String username, @Column("role") String role) { + public Authority(@Column("username") String username, @Column("role") String roleName) { this.username = username; - this.role = role; + this.role = Role.fromRoleName(roleName); } } diff --git a/src/main/java/alfio/model/user/Role.java b/src/main/java/alfio/model/user/Role.java new file mode 100644 index 0000000000..ac2879539d --- /dev/null +++ b/src/main/java/alfio/model/user/Role.java @@ -0,0 +1,36 @@ +/** + * This file is part of alf.io. + * + * alf.io is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * alf.io is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with alf.io. If not, see . + */ +package alfio.model.user; + +import lombok.Getter; + +import java.util.Arrays; + +@Getter +public enum Role { + ADMIN("ROLE_ADMIN"), OWNER("ROLE_OWNER"), OPERATOR("ROLE_OPERATOR"); + + private final String roleName; + + Role(String roleName) { + this.roleName = roleName; + } + + public static Role fromRoleName(String roleName) { + return Arrays.stream(values()).filter(r -> r.getRoleName().equals(roleName)).findFirst().orElse(OPERATOR); + } +} diff --git a/src/main/java/alfio/repository/user/AuthorityRepository.java b/src/main/java/alfio/repository/user/AuthorityRepository.java index 288e4a2ea5..f03e5198e1 100644 --- a/src/main/java/alfio/repository/user/AuthorityRepository.java +++ b/src/main/java/alfio/repository/user/AuthorityRepository.java @@ -26,13 +26,12 @@ @QueryRepository public interface AuthorityRepository { - String ROLE_ADMIN = "ROLE_ADMIN"; - String ROLE_OWNER = "ROLE_OWNER"; - String ROLE_OPERATOR = "ROLE_OPERATOR"; - @Query("SELECT * from authority where username = :username") List findGrantedAuthorities(@Bind("username") String username); @Query("INSERT INTO authority(username, role) VALUES (:username, :role)") int create(@Bind("username") String username, @Bind("role") String role); + + @Query("DELETE from authority where username = :username") + int revokeAll(@Bind("username") String username); } diff --git a/src/main/java/alfio/util/ValidationResult.java b/src/main/java/alfio/util/ValidationResult.java index 03c598b40b..8ac5561436 100644 --- a/src/main/java/alfio/util/ValidationResult.java +++ b/src/main/java/alfio/util/ValidationResult.java @@ -50,6 +50,13 @@ public static ValidationResult failed(ValidationError... errors) { return failed(Arrays.asList(errors)); } + public static ValidationResult of(List errors) { + if(errors.size() > 0) { + return failed(errors); + } + return success(); + } + public ValidationResult ifSuccess(Operation operation) { if(errorCount == 0) { operation.doIt(); diff --git a/src/main/webapp/resources/angular-templates/admin/partials/main/edit-user.html b/src/main/webapp/resources/angular-templates/admin/partials/main/edit-user.html index 99d4a52d9d..9824614eb6 100644 --- a/src/main/webapp/resources/angular-templates/admin/partials/main/edit-user.html +++ b/src/main/webapp/resources/angular-templates/admin/partials/main/edit-user.html @@ -4,6 +4,11 @@ +
+ + + +
diff --git a/src/main/webapp/resources/js/admin/feature/user/user.js b/src/main/webapp/resources/js/admin/feature/user/user.js index 23ba5d0f33..49199f7de9 100644 --- a/src/main/webapp/resources/js/admin/feature/user/user.js +++ b/src/main/webapp/resources/js/admin/feature/user/user.js @@ -92,12 +92,13 @@ self.user = result; }); } - var organizations = []; self.user = {}; self.organizations = []; - OrganizationService.getAllOrganizations().success(function(result) { - organizations = result; - self.organizations = result; + self.roles = []; + + $q.all([OrganizationService.getAllOrganizations(), UserService.getAllRoles()]).then(function(results) { + self.organizations = results[0].data; + self.roles = results[1].data; }); self.save = function(form, user) { @@ -130,7 +131,7 @@ } - EditUserController.$inject = ['$state', '$stateParams', '$rootScope', '$q', 'OrganizationService', 'UserService', 'ValidationService']; + EditUserController.$inject = ['$state', '$stateParams', '$rootScope', '$q', 'OrganizationService', 'UserService', 'ValidationService', '$q']; function OrganizationService($http, HttpErrorHandler) { return { @@ -156,6 +157,9 @@ function UserService($http, $modal, $window, HttpErrorHandler) { return { + getAllRoles: function() { + return $http.get('/admin/api/roles.json').error(HttpErrorHandler.handle); + }, getAllUsers : function() { return $http.get('/admin/api/users.json').error(HttpErrorHandler.handle); }, diff --git a/src/test/java/alfio/manager/ConfigurationManagerTest.java b/src/test/java/alfio/manager/ConfigurationManagerTest.java index f4a5979af4..618e0e9c09 100644 --- a/src/test/java/alfio/manager/ConfigurationManagerTest.java +++ b/src/test/java/alfio/manager/ConfigurationManagerTest.java @@ -33,6 +33,7 @@ import alfio.model.system.ConfigurationKeys; import alfio.model.system.ConfigurationPathLevel; import alfio.model.user.Organization; +import alfio.model.user.Role; import alfio.repository.TicketCategoryRepository; import alfio.repository.system.ConfigurationRepository; import alfio.repository.user.AuthorityRepository; @@ -100,8 +101,7 @@ public void prepareEnv() { organizationRepository.create("org", "org", "email@example.com"); Organization organization = organizationRepository.findByName("org").get(0); - userManager.insertUser(organization.getId(), USERNAME, "test", "test", "test@example.com"); - authorityRepository.create(USERNAME, AuthorityRepository.ROLE_OWNER); + userManager.insertUser(organization.getId(), USERNAME, "test", "test", "test@example.com", Role.OWNER); Map desc = new HashMap<>(); desc.put("en", "muh description"); diff --git a/src/test/java/alfio/manager/TicketReservationManagerTest.java b/src/test/java/alfio/manager/TicketReservationManagerTest.java index d74eb8ec24..fd536d2e1a 100644 --- a/src/test/java/alfio/manager/TicketReservationManagerTest.java +++ b/src/test/java/alfio/manager/TicketReservationManagerTest.java @@ -29,6 +29,7 @@ import alfio.model.system.Configuration; import alfio.model.transaction.PaymentProxy; import alfio.model.user.Organization; +import alfio.model.user.Role; import alfio.repository.*; import alfio.repository.user.AuthorityRepository; import alfio.repository.user.OrganizationRepository; @@ -88,7 +89,7 @@ public class TicketReservationManagerTest {{ TicketReservation reservation = mock(TicketReservation.class); when(original.getTicketsReservationId()).thenReturn(ticketReservationId); when(ticketReservationRepository.findReservationById(eq(ticketReservationId))).thenReturn(reservation); - UserDetails userDetails = new User("user", "password", singletonList(new SimpleGrantedAuthority(AuthorityRepository.ROLE_ADMIN))); + UserDetails userDetails = new User("user", "password", singletonList(new SimpleGrantedAuthority(Role.ADMIN.getRoleName()))); trm.updateTicketOwner(original, Locale.ENGLISH, event, form, (a) -> null,(b) -> null, (c) -> null, Optional.of(userDetails)); verify(messageSource, never()).getMessage(eq("ticket-has-changed-owner-subject"), eq(new Object[] {"short-name"}), eq(Locale.ITALIAN)); }); diff --git a/src/test/java/alfio/manager/system/DataMigratorIntegrationTest.java b/src/test/java/alfio/manager/system/DataMigratorIntegrationTest.java index eb124e592e..6b665b6b0f 100644 --- a/src/test/java/alfio/manager/system/DataMigratorIntegrationTest.java +++ b/src/test/java/alfio/manager/system/DataMigratorIntegrationTest.java @@ -34,6 +34,7 @@ import alfio.model.system.EventMigration; import alfio.model.transaction.PaymentProxy; import alfio.model.user.Organization; +import alfio.model.user.Role; import alfio.repository.EventRepository; import alfio.repository.TicketCategoryRepository; import alfio.repository.TicketRepository; @@ -124,7 +125,7 @@ private Pair initEvent(List categories organizationRepository.create(organizationName, "org", "email@example.com"); Organization organization = organizationRepository.findByName(organizationName).get(0); - userManager.insertUser(organization.getId(), username, "test", "test", "test@example.com"); + userManager.insertUser(organization.getId(), username, "test", "test", "test@example.com", Role.OPERATOR); Map desc = new HashMap<>(); desc.put("en", "muh description"); diff --git a/src/test/java/alfio/test/util/IntegrationTestUtil.java b/src/test/java/alfio/test/util/IntegrationTestUtil.java index cfcf2470ac..bde0bb59fa 100644 --- a/src/test/java/alfio/test/util/IntegrationTestUtil.java +++ b/src/test/java/alfio/test/util/IntegrationTestUtil.java @@ -25,6 +25,7 @@ import alfio.model.modification.TicketCategoryModification; import alfio.model.modification.support.LocationDescriptor; import alfio.model.user.Organization; +import alfio.model.user.Role; import alfio.repository.user.AuthorityRepository; import alfio.repository.user.OrganizationRepository; import alfio.repository.user.UserRepository; @@ -63,7 +64,7 @@ public static Pair initEvent(List cat organizationRepository.create(organizationName, "org", "email@example.com"); Organization organization = organizationRepository.findByName(organizationName).get(0); - userManager.insertUser(organization.getId(), username, "test", "test", "test@example.com"); + userManager.insertUser(organization.getId(), username, "test", "test", "test@example.com", Role.OPERATOR); LocalDateTime expiration = LocalDateTime.now().plusDays(5).plusHours(1); @@ -84,6 +85,6 @@ public static Pair initEvent(List cat public static void initAdminUser(UserRepository userRepository, AuthorityRepository authorityRepository) { userRepository.create(UserManager.ADMIN_USERNAME, "", "The", "Administrator", "admin@localhost", true); - authorityRepository.create(UserManager.ADMIN_USERNAME, AuthorityRepository.ROLE_ADMIN); + authorityRepository.create(UserManager.ADMIN_USERNAME, Role.ADMIN.getRoleName()); } }