diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java index 05879a2f0cce1d38112acdfcca98d194e339c632..9b4ccb2978319d51d64c25d9a8e3b0df1de144a0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java @@ -462,13 +462,12 @@ public abstract class AbstractServer<T> extends AbstractServiceWithLogger<T> imp return null; } final Session session = sessionManager.getSession(sessionToken); - final List<PersonPE> persons = daoFactory.getPersonDAO().listPersons(); - assert persons.size() > 0 : "At least system user should be in the database"; - // If only one user (system user), then this is the first logged user. + List<PersonPE> persons = null; PersonPE person = daoFactory.getPersonDAO().tryFindPersonByUserId(session.getUserName()); final Set<RoleAssignmentPE> roles; if (person == null) { + persons = daoFactory.getPersonDAO().listPersons(); final PersonPE systemUser = getSystemUser(persons); final DisplaySettings defaultDisplaySettings = getDefaultDisplaySettings(sessionToken); person = createPerson(session.getPrincipal(), systemUser, defaultDisplaySettings); @@ -485,6 +484,10 @@ public abstract class AbstractServer<T> extends AbstractServiceWithLogger<T> imp if (roles.isEmpty()) { + if (persons == null) + { + persons = daoFactory.getPersonDAO().listPersons(); + } if (isFirstLoggedUser(person, persons)) { grantRoleAtFirstLogin(persons, person, RoleCode.ADMIN);