func loginAnswer(w http.ResponseWriter, tx *sqlx.Tx, user model.User, token string) (LoginAnswer, error) { // get langs lang1 := model.Lang{ Isocode: user.First_lang_isocode, } lang2 := model.Lang{ Isocode: user.Second_lang_isocode, } err := lang1.Get(tx) if err != nil { lang1.Isocode = "en" err = lang1.Get(tx) if err != nil { userSqlError(w, err) return LoginAnswer{}, err } } err = lang2.Get(tx) if err != nil { lang2.Isocode = "fr" err = lang2.Get(tx) if err != nil { tx.Rollback() log.Fatal("can't load lang2 !") return LoginAnswer{}, err } } log.Println("langs: ", lang1, lang2) permissions, err := user.GetPermissions(tx) if err != nil { log.Fatal("can't get permissions!") return LoginAnswer{}, err } log.Println("permissions : ", permissions) projectID, err := user.GetProjectId(tx) if err != nil { log.Fatal("can't get project!") return LoginAnswer{}, err } project := model.ProjectFullInfos{} if projectID > 0 { project.Id = projectID err = project.Get(tx) if err != nil { log.Fatal("can't get project informations!") return LoginAnswer{}, err } } else { project.Id = 0 } log.Println("project: ", project) a := LoginAnswer{ User: user, Token: token, Lang1: lang1, Lang2: lang2, Project: project, Permissions: permissions, } return a, nil }