// UserLogin Check Login func UserLogin(w http.ResponseWriter, r *http.Request, proute routes.Proute) { time.Sleep(1 * time.Second) // limit rate l := proute.Json.(*Userlogin) tx, err := db.DB.Beginx() if err != nil { log.Panicln("Can't start transaction for creating a new user") return } user := model.User{ Username: l.Username, } err = user.Get(tx) if err != nil { log.Println("Login failed for user :"******"(can't find this username)") tx.Rollback() ArkeoError(w, 401, "Bad Username/Password") return } // test login ok := user.Login(l.Password) if !ok { log.Println("Login failed for user :"******"(password mismatch)") tx.Rollback() ArkeoError(w, 401, "Bad Username/Password") return } user.Password = "" // immediatly erase password field log.Println("Login ", user.Username, " => ", ok) token, s := session.NewSession() s.Values["user_id"] = user.Id s.Values["user"] = user a, err := loginAnswer(w, tx, user, token) if err != nil { log.Println("Login answer build failed : ", err) tx.Rollback() return } err = tx.Commit() if err != nil { userSqlError(w, err) return } j, err := json.Marshal(a) w.Write(j) }
func main() { fmt.Println("test") tx, err := db.DB.Beginx() if err != nil { log.Panicln("Can't start transaction") return } var u1 model.User u1.Id = 1 err = u1.Get(tx) if err != nil { log.Println("paf, u.Get: ", err) } //u1.Password = "******" ok, err := u1.Login(tx) if err != nil { log.Println("paf, u.Login: "******"Login OK") } else { log.Println("Login BAD") } fmt.Println("User: "******"paf, u.GetGroups: ", err) } permissions, err := u1.GetPermissions(tx) if err != nil { log.Println("paf, u.GetPermissions: ", err) } fmt.Println("permissions : ", permissions) ok, err = u1.HavePermissions(tx, "PermToLearn", "PermToSpeack") if err != nil { log.Println("paf, u.HavePermissions: ", err) } fmt.Println("Have ? : ", ok) newgroups := []model.Group{ { Id: 2, }, { Id: 3, }, } err = newgroups[0].Get(tx) if err != nil { log.Println("paf1, u.GetGroups: ", err) } err = newgroups[1].Get(tx) if err != nil { log.Println("paf2, u.GetGroups: ", err) } fmt.Println("Groups: ", groups) fmt.Println("New Groups: ", newgroups) err = u1.SetGroups(tx, newgroups) if err != nil { log.Println("paf, u.SetGroups: ", err) } groups, err = u1.GetGroups(tx) if err != nil { log.Println("paf, u.GetGroups: ", err) } fmt.Println("Groups: ", groups) err = tx.Commit() if err != nil { if err, ok := err.(*pq.Error); ok { log.Println("commit user failed, pq error:", err.Code.Name()) } else { log.Println("commit user failed !", err) } return } }