diff --git a/admin/api/team.go b/admin/api/team.go index 7b04dfe9..828ff18b 100644 --- a/admin/api/team.go +++ b/admin/api/team.go @@ -30,10 +30,12 @@ func init() { router.GET("/api/teams/", apiHandler( func(httprouter.Params,[]byte) (interface{}, error) { return fic.GetTeams() })) + router.POST("/api/teams/", apiHandler(createTeam)) router.GET("/api/teams/:tid/", apiHandler(teamHandler( func(team fic.Team, _ []byte) (interface{}, error) { return team, nil }))) + 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() }))) @@ -126,23 +128,23 @@ type uploadedMember struct { Company string } -func createTeam(args map[string]string, body []byte) (interface{}, error) { +func createTeam(_ httprouter.Params, body []byte) (interface{}, error) { var ut uploadedTeam if err := json.Unmarshal(body, &ut); err != nil { return nil, err } - return fic.CreateTeam(ut.Name, ut.Color) + return fic.CreateTeam(strings.TrimSpace(ut.Name), ut.Color) } -func addTeamMember(team fic.Team, args map[string]string, body []byte) (interface{}, error) { +func addTeamMember(team fic.Team, body []byte) (interface{}, error) { var members []uploadedMember if err := json.Unmarshal(body, &members); err != nil { return nil, err } for _, member := range members { - team.AddMember(member.Firstname, member.Lastname, member.Nickname, member.Company) + team.AddMember(strings.TrimSpace(member.Firstname), strings.TrimSpace(member.Lastname), strings.TrimSpace(member.Nickname), strings.TrimSpace(member.Company)) } return team.GetMembers() diff --git a/libfic/team.go b/libfic/team.go index b5cd9a82..74189b21 100644 --- a/libfic/team.go +++ b/libfic/team.go @@ -1,6 +1,7 @@ package fic import ( + "regexp" "time" ) @@ -59,7 +60,9 @@ func GetTeamByInitialName(initialName string) (Team, error) { // CRUD method func CreateTeam(name string, color uint32) (Team, error) { - if res, err := DBExec("INSERT INTO teams (initial_name, name, color) VALUES (?, ?, ?)", name, name, color); err != nil { + re := regexp.MustCompile("[^a-zA-Z0-9]+") + initialName := re.ReplaceAllLiteralString(name, "_") + if res, err := DBExec("INSERT INTO teams (initial_name, name, color) VALUES (?, ?, ?)", initialName, name, color); err != nil { return Team{}, err } else if tid, err := res.LastInsertId(); err != nil { return Team{}, err