| |
---|
| | override def setCharacterEncoding(encoding: String) = {} |
---|
| | } |
---|
| | |
---|
| | val isUpdating = request.getRequestURI.endsWith("/git-receive-pack") || "service=git-receive-pack".equals(request.getQueryString) |
---|
| | |
---|
| | val settings = loadSystemSettings() |
---|
| | |
---|
| | try { |
---|
| | defining(request.paths){ |
---|
| |
---|
| | case null => requireAuth(response) |
---|
| | case auth => decodeAuthHeader(auth).split(":") match { |
---|
| | case Array(username, password) => { |
---|
| | authenticate(settings, username, password) match { |
---|
| | case Some(account) => { |
---|
| | if(isUpdating && hasWritePermission(repository.owner, repository.name, Some(account))){ |
---|
| | case Some(account) if (isUpdating || repository.repository.isPrivate) => { |
---|
| | if(hasWritePermission(repository.owner, repository.name, Some(account))){ |
---|
| | request.setAttribute(Keys.Request.UserName, account.userName) |
---|
| | chain.doFilter(req, wrappedResponse) |
---|
| | } else { |
---|
| | requireAuth(response) |
---|
| | } |
---|
| | chain.doFilter(req, wrappedResponse) |
---|
| | } |
---|
| | case None => requireAuth(response) |
---|
| | case _ => requireAuth(response) |
---|
| | } |
---|
| | } |
---|
| | case _ => requireAuth(response) |
---|
| | } |
---|
| |
---|
| | |