This performance optimization results from the fact that during namespace loading, read permissions are no longer verified for every repository, but only for those that would result in a new namespace. Simply put: If a namespace has already been discovered, no further repositories within that namespace are checked.
We need the new function `streamAll` for this, because the `getAllRepositories` would create all repositories before returning them, which would make it impossible to intervene in time using the filter parameter.
To still support the editor plugin, a new field in the
browse command results is needed to indicate, whether
such a result or rather the requested revision can be
modified by a new commit.
This is the case, when
- for Subversion repositories either the new 'head' or the
latest revision has been requested, or
- for Git and HG when a branch (or the default by specifying
no concrete revision) has been used.
We need this setting to be able to display PDF files in the file view in Firefox (Chrome does this nonethelss, only Firefox seems to have a problem without this header).
Pushed-by: Rene Pfeuffer<rene.pfeuffer@cloudogu.com>
Co-authored-by: René Pfeuffer<rene.pfeuffer@cloudogu.com>
Committed-by: René Pfeuffer<rene.pfeuffer@cloudogu.com>
With this change,
- logs are only written to console when the server is started in foreground (prevents writing to scm-server.out file)
- the location of the log file is determined correctly, when it is configured with a relative path
- less logs are written to console on startup
- enabling file and console appenders via config.yml
This fixes the following security issue: If a user creates a new repository in a namespace this user had no permission to read any repository from, the user gets OWNER permissions on this namespace and all other permissions are removed from this namespace.
Pushed-by: Rene Pfeuffer<rene.pfeuffer@cloudogu.com>
Co-authored-by: René Pfeuffer<rene.pfeuffer@cloudogu.com>
Committed-by: René Pfeuffer<rene.pfeuffer@cloudogu.com>
A notification will be displayed when an external user
management system is activated to inform that users
created within the SCMM will not be transferred to the
external system.
Co-authored-by: René Pfeuffer<rene.pfeuffer@cloudogu.com>
Previously a query was only parsed by lucene as it is, if the query
contained a colon (:) or a wildcard character (*). With this, every query
gets parsed as it is, as long as there is one operator contained inside
the query (colon, quotation marks, logical operators, ...). These are
called "expert queries". All other queries are still processed as
"simple queries" where every part of the query is extended with a
wildcard operator.
Addtionally the user is now getting feedback for every
search, if the query is a simple query or an expert query. The syntax
documentation got also extended with the quotation mark operator
and the definition of the two query types.
Co-authored-by: René Pfeuffer<rene.pfeuffer@cloudogu.com>
With this change, every repository initializer gets its own modification command and therefore its own commit. This allows each initializer to decide on its own, if he want to use the default path of the repository.
The missing description of the plugin condition in the
logs during a condition mismatch is now included and
also displayed in a readable way. Additionally, a
specialised error will be displayed during the installation
or update of plugins detailing that a condition mismatch
happened and also which condition was not fulfilled
instead of a generic internal server error.
After uninstalling a plugin (without restart) and then discarding the
changes, plugins which are required for the plugin can be uninstalled
even if the uninstallation was reverted. This was caused by not updating
the dependency relations between the plugins when an uninstallation has
been canceled. Therefore, the updating step is added.
This removes repeated exceptions from the api key service when checking requests without an api key. Despite of throwing an exception, the service now simply returns `null`, when the authentication was not successful.
Pushed-by: Rene Pfeuffer<rene.pfeuffer@cloudogu.com>
Co-authored-by: René Pfeuffer<rene.pfeuffer@cloudogu.com>