backend: check the team has access to the exercice/flag before doing the action

This commit is contained in:
nemunaire 2019-02-05 03:24:52 +01:00
parent ff7c89af9f
commit 15d108497e
4 changed files with 29 additions and 5 deletions

View file

@ -25,14 +25,16 @@ func treatOpeningHint(pathname string, team fic.Team) {
log.Println("[WRN] Invalid content in hint file: ", pathname)
os.Remove(pathname)
} else if hint, err := fic.GetHint(ask.HintId); err != nil {
log.Println("[ERR]", err)
log.Println("[ERR] Unable to retrieve the given hint:", err)
} else if exercice, err := hint.GetExercice(); err != nil {
log.Println("[ERR] Unable to retrieve the hint's underlying exercice:", err)
} else if !team.HasAccess(exercice) {
log.Println("[!!!] The team asks to open an hint whereas it doesn't have access to the exercice")
} else if err = team.OpenHint(hint); err != nil {
log.Println("[ERR]", err)
log.Println("[ERR] Unable to open hint", err)
} else {
// Write event
if exercice, err := hint.GetExercice(); err != nil {
log.Println("[WRN]", err)
} else if lvl, err := exercice.GetLevel(); err != nil {
if lvl, err := exercice.GetLevel(); err != nil {
log.Println("[WRN]", err)
} else if theme, err := fic.GetTheme(exercice.IdTheme); err != nil {
log.Println("[WRN]", err)