diff --git a/core/service.go b/core/service.go index c5f8210..6ec9943 100644 --- a/core/service.go +++ b/core/service.go @@ -360,6 +360,18 @@ func (sh *serviceDescription) link(w http.ResponseWriter, r *http.Request) { return } + found, err := sh.mongoClient.FindOne(CollectionLink, bson.M{"platform": newType, "uid": newId}, options.FindOne()) + if err != nil { + logger.Error("link failed. FindOne err:", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + if found != nil { + logger.Println("link failed. already have service account: ", r.URL.Query()) + w.Write([]byte(`{"alreadylink":true}`)) + return + } + createtime := primitive.NewDateTimeFromTime(time.Now().UTC()) link, err := sh.mongoClient.FindOneAndUpdate(CollectionLink, bson.M{ "platform": newType,