mirror of
https://github.com/gitbucket/gitbucket.git
synced 2026-01-05 07:09:56 +01:00
(refs #1499)Allow guest users to read private repositories via HTTP
This commit is contained in:
@@ -18,9 +18,9 @@ class GitAuthenticationFilter extends Filter with RepositoryService with Account
|
||||
private val logger = LoggerFactory.getLogger(classOf[GitAuthenticationFilter])
|
||||
|
||||
def init(config: FilterConfig) = {}
|
||||
|
||||
|
||||
def destroy(): Unit = {}
|
||||
|
||||
|
||||
def doFilter(req: ServletRequest, res: ServletResponse, chain: FilterChain): Unit = {
|
||||
val request = req.asInstanceOf[HttpServletRequest]
|
||||
val response = res.asInstanceOf[HttpServletResponse]
|
||||
@@ -85,11 +85,16 @@ class GitAuthenticationFilter extends Filter with RepositoryService with Account
|
||||
auth <- Option(request.getHeader("Authorization"))
|
||||
Array(username, password) = AuthUtil.decodeAuthHeader(auth).split(":", 2)
|
||||
account <- authenticate(settings, username, password)
|
||||
} yield if (isUpdating || repository.repository.isPrivate) {
|
||||
} yield if (isUpdating) {
|
||||
if (hasDeveloperRole(repository.owner, repository.name, Some(account))) {
|
||||
request.setAttribute(Keys.Request.UserName, account.userName)
|
||||
true
|
||||
} else false
|
||||
} else if(repository.repository.isPrivate){
|
||||
if (hasGuestRole(repository.owner, repository.name, Some(account))) {
|
||||
request.setAttribute(Keys.Request.UserName, account.userName)
|
||||
true
|
||||
} else false
|
||||
} else true
|
||||
passed.getOrElse(false)
|
||||
}
|
||||
@@ -114,4 +119,4 @@ class GitAuthenticationFilter extends Filter with RepositoryService with Account
|
||||
|
||||
action()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user