LfsProtocolServlet: Pass HTTP Authorization header to getLargeFileRepository
This allows implementations to reject operations that do not include proper authentication. Change-Id: If301476d8fb56a0899e424be3789c7576097d185 Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
This commit is contained in:
parent
993f2b3473
commit
5094c1a5c8
|
@ -54,6 +54,7 @@
|
|||
import static org.eclipse.jgit.lfs.lib.Constants.DOWNLOAD;
|
||||
import static org.eclipse.jgit.lfs.lib.Constants.UPLOAD;
|
||||
import static org.eclipse.jgit.lfs.lib.Constants.VERIFY;
|
||||
import static org.eclipse.jgit.util.HttpSupport.HDR_AUTHORIZATION;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
|
@ -143,9 +144,54 @@ public abstract class LfsProtocolServlet extends HttpServlet {
|
|||
* <dd>when an unexpected internal server error occurred</dd>
|
||||
* </dl>
|
||||
* @since 4.5
|
||||
* @deprecated use
|
||||
* {@link #getLargeFileRepository(LfsRequest, String, String)}
|
||||
*/
|
||||
@Deprecated
|
||||
protected LargeFileRepository getLargeFileRepository(LfsRequest request,
|
||||
String path) throws LfsException {
|
||||
return getLargeFileRepository(request, path, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the large file repository for the given request and path.
|
||||
*
|
||||
* @param request
|
||||
* the request
|
||||
* @param path
|
||||
* the path
|
||||
* @param auth
|
||||
* the Authorization HTTP header
|
||||
*
|
||||
* @return the large file repository storing large files.
|
||||
* @throws LfsException
|
||||
* implementations should throw more specific exceptions to
|
||||
* signal which type of error occurred:
|
||||
* <dl>
|
||||
* <dt>{@link LfsValidationError}</dt>
|
||||
* <dd>when there is a validation error with one or more of the
|
||||
* objects in the request</dd>
|
||||
* <dt>{@link LfsRepositoryNotFound}</dt>
|
||||
* <dd>when the repository does not exist for the user</dd>
|
||||
* <dt>{@link LfsRepositoryReadOnly}</dt>
|
||||
* <dd>when the user has read, but not write access. Only
|
||||
* applicable when the operation in the request is "upload"</dd>
|
||||
* <dt>{@link LfsRateLimitExceeded}</dt>
|
||||
* <dd>when the user has hit a rate limit with the server</dd>
|
||||
* <dt>{@link LfsBandwidthLimitExceeded}</dt>
|
||||
* <dd>when the bandwidth limit for the user or repository has
|
||||
* been exceeded</dd>
|
||||
* <dt>{@link LfsInsufficientStorage}</dt>
|
||||
* <dd>when there is insufficient storage on the server</dd>
|
||||
* <dt>{@link LfsUnavailable}</dt>
|
||||
* <dd>when LFS is not available</dd>
|
||||
* <dt>{@link LfsException}</dt>
|
||||
* <dd>when an unexpected internal server error occurred</dd>
|
||||
* </dl>
|
||||
* @since 4.7
|
||||
*/
|
||||
protected abstract LargeFileRepository getLargeFileRepository(
|
||||
LfsRequest request, String path) throws LfsException;
|
||||
LfsRequest request, String path, String auth) throws LfsException;
|
||||
|
||||
/**
|
||||
* LFS request.
|
||||
|
@ -214,7 +260,8 @@ protected void doPost(HttpServletRequest req, HttpServletResponse res)
|
|||
res.setContentType(CONTENTTYPE_VND_GIT_LFS_JSON);
|
||||
LargeFileRepository repo = null;
|
||||
try {
|
||||
repo = getLargeFileRepository(request, path);
|
||||
repo = getLargeFileRepository(request, path,
|
||||
req.getHeader(HDR_AUTHORIZATION));
|
||||
if (repo == null) {
|
||||
String error = MessageFormat
|
||||
.format(LfsText.get().lfsFailedToGetRepository, path);
|
||||
|
|
|
@ -255,7 +255,7 @@ protected void run() throws Exception {
|
|||
|
||||
@Override
|
||||
protected LargeFileRepository getLargeFileRepository(
|
||||
LfsRequest request, String path) {
|
||||
LfsRequest request, String path, String auth) {
|
||||
return repository;
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue