admin: When deleting team, also delete associations

This commit is contained in:
nemunaire 2022-02-03 10:16:52 +01:00
parent 2ca2018485
commit 02bd5f316a
3 changed files with 28 additions and 10 deletions

View File

@ -96,10 +96,7 @@ func init() {
})))
router.DELETE("/api/teams/:tid/associations/:assoc", apiHandler(teamAssocHandler(
func(team *fic.Team, assoc string, _ []byte) (interface{}, error) {
if err := os.Remove(path.Join(TeamsDir, assoc)); err != nil {
return nil, err
}
return "null", nil
return "null", pki.DeleteTeamAssociation(TeamsDir, assoc)
})))
router.GET("/api/certs/", apiHandler(getCertificates))

View File

@ -53,10 +53,7 @@ func init() {
})))
router.PUT("/api/teams/:tid/", apiHandler(teamHandler(updateTeam)))
router.POST("/api/teams/:tid/", apiHandler(teamHandler(addTeamMember)))
router.DELETE("/api/teams/:tid/", apiHandler(teamHandler(
func(team *fic.Team, _ []byte) (interface{}, error) {
return team.Delete()
})))
router.DELETE("/api/teams/:tid/", apiHandler(teamHandler(deleteTeam)))
router.GET("/api/teams/:tid/score-grid.json", apiHandler(teamHandler(
func(team *fic.Team, _ []byte) (interface{}, error) {
return team.ScoreGrid()
@ -229,6 +226,23 @@ func enableAllTeams(_ httprouter.Params, _ []byte) (interface{}, error) {
}
}
func deleteTeam(team *fic.Team, _ []byte) (interface{}, error) {
assocs, err := pki.GetTeamAssociations(TeamsDir, team.Id)
if err != nil {
return nil, err
}
for _, assoc := range assocs {
err = pki.DeleteTeamAssociation(TeamsDir, assoc)
}
if err != nil {
return nil, err
}
return team.Delete()
}
func addTeamMember(team *fic.Team, body []byte) (interface{}, error) {
var members []fic.Member
if err := json.Unmarshal(body, &members); err != nil {

View File

@ -13,7 +13,7 @@ import (
const SymlinkPrefix = "_AUTH_ID_"
func GetCertificateAssociation(serial uint64) string {
return fmt.Sprintf(SymlinkPrefix + "%0[2]*[1]X", serial, int(math.Ceil(math.Log2(float64(serial))/8)*2))
return fmt.Sprintf(SymlinkPrefix+"%0[2]*[1]X", serial, int(math.Ceil(math.Log2(float64(serial))/8)*2))
}
func GetAssociation(dirname string) (assocs string, err error) {
@ -25,7 +25,7 @@ func GetAssociations(dirname string) (assocs []string, err error) {
return nil, errr
} else {
for _, d := range ds {
if d.Mode() & os.ModeSymlink == os.ModeSymlink {
if d.Mode()&os.ModeSymlink == os.ModeSymlink {
assocs = append(assocs, d.Name())
}
}
@ -70,3 +70,10 @@ func GetTeamAssociations(dirname string, id_team int64) (teamAssocs []string, er
}
return
}
func DeleteTeamAssociation(dirname string, assoc string) error {
if err := os.Remove(path.Join(dirname, assoc)); err != nil {
return err
}
return nil
}