Esempio n. 1
0
func (u *User) Login(w http.ResponseWriter, r *http.Request) (LoginReturn, error) {

	type Message struct {
		Email    string `json:"email"`
		Password string `json:"password"`
	}

	var m Message
	decoder := json.NewDecoder(r.Body)
	err := decoder.Decode(&m)

	if err != nil {
		//handle err
		log.Println(err)
	}

	userModel := model.User{}
	userModel.Email = m.Email

	//find user
	user, err := userModel.GetLoginData(w, r)

	if err != nil {
		//handle err
		return LoginReturn{}, err
	}

	//match passwords
	err = bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(m.Password))

	if err != nil {
		//passwords don't match
		return LoginReturn{}, err
	}

	//everything checks out!
	var l LoginReturn

	l = LoginReturn{
		Id:   user.Id,
		Role: user.Role,
	}

	return l, nil
}