How can i call this function
all of the codes are ok. just not understanding how to call this function over there
because for not proper calling this Find_User to Login .email authentication is not happening.
please tell me
func Find_User(user *model.User) (model.User, error) {
filter := bson.M{"email": user.Email}
result := model.User{}
err := clientInstance.Database(AUTH_DB).Collection(USER_COLLECTION).FindOne(context.Background(), filter).Decode(&result)
if err != nil {
if errors.Is(err, mongo.ErrNoDocuments) {
return model.User{}, nil
}
return model.User{}, fmt.Errorf("finding user:%w", err)
}
return result, nil
}
login function
func Login_User(user *model.User) (interface{}, error) {
if result, err := util.Find_User(user); err == nil {
return result, err
} else {
return nil, err
}
}
over here
func Login(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var user model.User
var dbuser model.User
if err := json.NewDecoder(r.Body).Decode(&user); err == nil {
//below i am calling the function
if _, err := service.Login_User(&user); err == nil {
w.Write([]byte(`{"response":"Login success"}`))
} else {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(`{"response":Login Failed}`))
return
}
} else {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
userPass := []byte(user.Password)
dbPass := []byte(dbuser.Password)
passErr := bcrypt.CompareHashAndPassword(dbPass, userPass)
if passErr != nil {
w.Write([]byte(`{"response":"Wrong Password!"}`))
return
}
}