mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-02-10 00:23:00 +00:00
commit
158295d02a
2 changed files with 52 additions and 0 deletions
|
@ -2,6 +2,7 @@ package session
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"os"
|
||||||
|
|
||||||
"github.com/drone/drone/model"
|
"github.com/drone/drone/model"
|
||||||
"github.com/drone/drone/remote"
|
"github.com/drone/drone/remote"
|
||||||
|
@ -104,6 +105,8 @@ func Perm(c *gin.Context) *model.Perm {
|
||||||
}
|
}
|
||||||
|
|
||||||
func SetPerm() gin.HandlerFunc {
|
func SetPerm() gin.HandlerFunc {
|
||||||
|
PUBLIC_MODE := os.Getenv("PUBLIC_MODE")
|
||||||
|
|
||||||
return func(c *gin.Context) {
|
return func(c *gin.Context) {
|
||||||
user := User(c)
|
user := User(c)
|
||||||
repo := Repo(c)
|
repo := Repo(c)
|
||||||
|
@ -164,6 +167,11 @@ func SetPerm() gin.HandlerFunc {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// all build logs are visible in public mode
|
||||||
|
if PUBLIC_MODE != "" {
|
||||||
|
perm.Pull = true
|
||||||
|
}
|
||||||
|
|
||||||
if user != nil {
|
if user != nil {
|
||||||
log.Debugf("%s granted %+v permission to %s",
|
log.Debugf("%s granted %+v permission to %s",
|
||||||
user.Login, perm, repo.FullName)
|
user.Login, perm, repo.FullName)
|
||||||
|
|
44
router/middleware/session/repo_test.go
Normal file
44
router/middleware/session/repo_test.go
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
package session
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/drone/drone/model"
|
||||||
|
"github.com/franela/goblin"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetPerm(t *testing.T) {
|
||||||
|
g := goblin.Goblin(t)
|
||||||
|
g.Describe("SetPerm", func() {
|
||||||
|
g.BeforeEach(func() {
|
||||||
|
os.Unsetenv("PUBLIC_MODE")
|
||||||
|
})
|
||||||
|
g.It("Should set pull to false (private repo, user not logged in)", func() {
|
||||||
|
c := gin.Context{}
|
||||||
|
c.Set("repo", &model.Repo{
|
||||||
|
IsPrivate: true,
|
||||||
|
})
|
||||||
|
SetPerm()(&c)
|
||||||
|
v, ok := c.Get("perm")
|
||||||
|
g.Assert(ok).IsTrue("perm was not set")
|
||||||
|
p, ok := v.(*model.Perm)
|
||||||
|
g.Assert(ok).IsTrue("perm was the wrong type")
|
||||||
|
g.Assert(p.Pull).IsFalse("pull should be false")
|
||||||
|
})
|
||||||
|
g.It("Should set pull to true (private repo, user not logged in, public mode)", func() {
|
||||||
|
os.Setenv("PUBLIC_MODE", "true")
|
||||||
|
c := gin.Context{}
|
||||||
|
c.Set("repo", &model.Repo{
|
||||||
|
IsPrivate: true,
|
||||||
|
})
|
||||||
|
SetPerm()(&c)
|
||||||
|
v, ok := c.Get("perm")
|
||||||
|
g.Assert(ok).IsTrue("perm was not set")
|
||||||
|
p, ok := v.(*model.Perm)
|
||||||
|
g.Assert(ok).IsTrue("perm was the wrong type")
|
||||||
|
g.Assert(p.Pull).IsTrue("pull should be true")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
Loading…
Reference in a new issue