New route to expose PGP Keys
This commit is contained in:
parent
8b4c32268d
commit
fa6b421d70
1
api.go
1
api.go
@ -14,6 +14,7 @@ func declareAPIRoutes(router *gin.Engine) {
|
||||
declareAPIAuthRoutes(apiRoutes)
|
||||
declareAPISurveysRoutes(apiRoutes)
|
||||
declareAPIWorksRoutes(apiRoutes)
|
||||
declareAPIKeysRoutes(apiRoutes)
|
||||
declareCallbacksRoutes(apiRoutes)
|
||||
|
||||
authRoutes := router.Group("")
|
||||
|
30
keys.go
30
keys.go
@ -13,6 +13,36 @@ import (
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func declareAPIKeysRoutes(router *gin.RouterGroup) {
|
||||
usersRoutes := router.Group("/users/:uid")
|
||||
usersRoutes.Use(userHandler)
|
||||
|
||||
usersRoutes.GET("/pgp_keys", func(c *gin.Context) {
|
||||
var u *User
|
||||
if user, ok := c.Get("user"); ok {
|
||||
u = user.(*User)
|
||||
} else {
|
||||
u = c.MustGet("LoggedUser").(*User)
|
||||
}
|
||||
|
||||
keys, err := u.GetKeys()
|
||||
if err != nil {
|
||||
log.Println("Unable to GetKeys:", err)
|
||||
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": "Unable to retrieve your keys. Please try again in a few moment."})
|
||||
return
|
||||
}
|
||||
|
||||
var ret []byte
|
||||
for _, key := range keys {
|
||||
if key.Type == "pgp" {
|
||||
ret = append(ret, []byte(key.Content)...)
|
||||
}
|
||||
}
|
||||
|
||||
c.Data(http.StatusOK, "application/pgp-keys", ret)
|
||||
})
|
||||
}
|
||||
|
||||
func declareAPIAuthKeysRoutes(router *gin.RouterGroup) {
|
||||
router.GET("/keys", func(c *gin.Context) {
|
||||
var u *User
|
||||
|
@ -349,24 +349,12 @@ func TriggerTagUpdate(c *gin.Context, work *Work, repo *Repository, u *User, tag
|
||||
repo_tag = *tag
|
||||
}
|
||||
|
||||
var pgp_keys string
|
||||
keys, err := u.GetKeys()
|
||||
if err != nil {
|
||||
c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"errmsg": "Something goes really wrong with your PGP keys: unable to retrieve them."})
|
||||
return
|
||||
}
|
||||
|
||||
for _, k := range keys {
|
||||
pgp_keys += k.Content + "\n"
|
||||
}
|
||||
|
||||
client := drone.NewClient(droneEndpoint, droneConfig)
|
||||
result, err := client.BuildCreate("srs", "atsebay.t-worker", "", "master", map[string]string{
|
||||
"REPO_URL": repo.URI,
|
||||
"REPO_TAG": repo_tag,
|
||||
"USER_PGP_PUBKEY": pgp_keys,
|
||||
"LOGIN": u.Login,
|
||||
"DEST": fmt.Sprintf("%d", work.Id),
|
||||
"REPO_URL": repo.URI,
|
||||
"REPO_TAG": repo_tag,
|
||||
"LOGIN": u.Login,
|
||||
"DEST": fmt.Sprintf("%d", work.Id),
|
||||
})
|
||||
if err != nil {
|
||||
log.Println("Unable to communicate with Drone:", err.Error())
|
||||
|
Reference in New Issue
Block a user