admin: Use gin-gonic as router
This commit is contained in:
parent
83468ad723
commit
8b3fbdb64a
32 changed files with 2785 additions and 1635 deletions
|
@ -4,67 +4,97 @@ import (
|
|||
"bytes"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net/http"
|
||||
"path"
|
||||
"text/template"
|
||||
|
||||
"srs.epita.fr/fic-server/admin/pki"
|
||||
"srs.epita.fr/fic-server/libfic"
|
||||
|
||||
"github.com/julienschmidt/httprouter"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
var OidcSecret = ""
|
||||
|
||||
func init() {
|
||||
router.POST("/api/password", apiHandler(
|
||||
func(httprouter.Params, []byte) (interface{}, error) {
|
||||
if passwd, err := fic.GeneratePassword(); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
return map[string]string{"password": passwd}, nil
|
||||
func declarePasswordRoutes(router *gin.RouterGroup) {
|
||||
router.POST("/password", func(c *gin.Context) {
|
||||
passwd, err := fic.GeneratePassword()
|
||||
if err != nil {
|
||||
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"password": passwd})
|
||||
})
|
||||
router.GET("/api/dex.yaml", func(c *gin.Context) {
|
||||
cfg, err := genDexConfig()
|
||||
if err != nil {
|
||||
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.String(http.StatusOK, string(cfg))
|
||||
})
|
||||
router.POST("/api/dex.yaml", func(c *gin.Context) {
|
||||
if dexcfg, err := genDexConfig(); err != nil {
|
||||
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()})
|
||||
return
|
||||
} else if err := ioutil.WriteFile(path.Join(pki.PKIDir, "shared", "dex-config.yaml"), []byte(dexcfg), 0644); err != nil {
|
||||
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, true)
|
||||
})
|
||||
router.GET("/api/dex-password.tpl", func(c *gin.Context) {
|
||||
passtpl, err := genDexPasswordTpl()
|
||||
if err != nil {
|
||||
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.String(http.StatusOK, string(passtpl))
|
||||
})
|
||||
router.POST("/api/dex-password.tpl", func(c *gin.Context) {
|
||||
if dexcfg, err := genDexPasswordTpl(); err != nil {
|
||||
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()})
|
||||
return
|
||||
} else if err := ioutil.WriteFile(path.Join(pki.PKIDir, "shared", "dex-password.tpl"), []byte(dexcfg), 0644); err != nil {
|
||||
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, true)
|
||||
})
|
||||
}
|
||||
|
||||
func declareTeamsPasswordRoutes(router *gin.RouterGroup) {
|
||||
router.GET("/password", func(c *gin.Context) {
|
||||
team := c.MustGet("team").(*fic.Team)
|
||||
|
||||
c.String(http.StatusOK, *team.Password)
|
||||
})
|
||||
router.POST("/password", func(c *gin.Context) {
|
||||
team := c.MustGet("team").(*fic.Team)
|
||||
|
||||
if passwd, err := fic.GeneratePassword(); err != nil {
|
||||
log.Println("Unable to GeneratePassword:", err.Error())
|
||||
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": "Something went wrong when generating the new team password"})
|
||||
return
|
||||
} else {
|
||||
team.Password = &passwd
|
||||
|
||||
t, err := team.Update()
|
||||
if err != nil {
|
||||
log.Println("Unable to Update Team:", err.Error())
|
||||
c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": "Something went wrong when updating the new team password"})
|
||||
return
|
||||
}
|
||||
}))
|
||||
router.GET("/api/teams/:tid/password", apiHandler(teamHandler(
|
||||
func(team *fic.Team, _ []byte) (interface{}, error) {
|
||||
return team.Password, nil
|
||||
})))
|
||||
router.POST("/api/teams/:tid/password", apiHandler(teamHandler(
|
||||
func(team *fic.Team, _ []byte) (interface{}, error) {
|
||||
if passwd, err := fic.GeneratePassword(); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
team.Password = &passwd
|
||||
return team.Update()
|
||||
}
|
||||
})))
|
||||
router.GET("/api/dex.yaml", apiHandler(
|
||||
func(httprouter.Params, []byte) (interface{}, error) {
|
||||
return genDexConfig()
|
||||
}))
|
||||
router.POST("/api/dex.yaml", apiHandler(
|
||||
func(httprouter.Params, []byte) (interface{}, error) {
|
||||
if dexcfg, err := genDexConfig(); err != nil {
|
||||
return nil, err
|
||||
} else if err := ioutil.WriteFile(path.Join(pki.PKIDir, "shared", "dex-config.yaml"), []byte(dexcfg), 0644); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
return true, nil
|
||||
}
|
||||
}))
|
||||
router.GET("/api/dex-password.tpl", apiHandler(
|
||||
func(httprouter.Params, []byte) (interface{}, error) {
|
||||
return genDexPasswordTpl()
|
||||
}))
|
||||
router.POST("/api/dex-password.tpl", apiHandler(
|
||||
func(httprouter.Params, []byte) (interface{}, error) {
|
||||
if dexcfg, err := genDexPasswordTpl(); err != nil {
|
||||
return nil, err
|
||||
} else if err := ioutil.WriteFile(path.Join(pki.PKIDir, "shared", "dex-password.tpl"), []byte(dexcfg), 0644); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
return true, nil
|
||||
}
|
||||
}))
|
||||
|
||||
c.JSON(http.StatusOK, t)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const dexcfgtpl = `issuer: https://fic.srs.epita.fr
|
||||
|
|
Reference in a new issue