admin: When deleting team, also delete associations
This commit is contained in:
parent
2ca2018485
commit
02bd5f316a
|
@ -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))
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue