diff --git a/core/service.go b/core/service.go index dc123dc..c5f8210 100644 --- a/core/service.go +++ b/core/service.go @@ -296,6 +296,32 @@ func (sh *serviceDescription) link(w http.ResponseWriter, r *http.Request) { return } + bfinfo, err := sh.getUserBrowserInfo(r) + if err != nil { + logger.Error("getUserBrowserInfo failed :", err) + w.WriteHeader(http.StatusBadRequest) + return + } + + guestlink := (oldAuth.Platform == "guest") + if !guestlink { + _, err = sh.readProfile(oldType, oldId, bfinfo) + if err != nil { + logger.Error("readProfile(old) failed :", err) + w.WriteHeader(http.StatusBadRequest) + return + } + } else { + logger.Println("from guest acc to real acc link : ", oldId, bfinfo, newType, newId, bfinfo) + } + + oldType, oldId, err = sh.getProviderInfo(oldType, oldId) + if err != nil { + logger.Error("getProviderInfo failed :", err) + w.WriteHeader(http.StatusBadRequest) + return + } + // fmt.Println("=================") // fmt.Println(oldType) // fmt.Println(oldId) @@ -314,20 +340,6 @@ func (sh *serviceDescription) link(w http.ResponseWriter, r *http.Request) { return } - bfinfo, err := sh.getUserBrowserInfo(r) - if err != nil { - logger.Error("getUserBrowserInfo failed :", err) - w.WriteHeader(http.StatusBadRequest) - return - } - - _, err = sh.readProfile(oldType, oldId, bfinfo) - if err != nil { - logger.Error("readProfile(old) failed :", err) - w.WriteHeader(http.StatusBadRequest) - return - } - email, err := sh.readProfile(newType, newId, bfinfo) if err != nil { logger.Error("readProfile(new) failed :", err) @@ -345,6 +357,7 @@ func (sh *serviceDescription) link(w http.ResponseWriter, r *http.Request) { if err != nil { logger.Error("getProviderInfo failed :", err) w.WriteHeader(http.StatusBadRequest) + return } createtime := primitive.NewDateTimeFromTime(time.Now().UTC()) @@ -385,6 +398,20 @@ func (sh *serviceDescription) link(w http.ResponseWriter, r *http.Request) { return } + if guestlink { + //기존 게스트 링크 삭제 + link, err = sh.mongoClient.FindOneAndDelete(CollectionLink, bson.M{ + "platform": oldType, + "uid": oldId, + }, options.FindOneAndDelete().SetProjection(bson.M{"_id": 1})) + + if err == nil { + sh.mongoClient.Delete(CollectionAccount, bson.M{ + "_id": link["_id"].(primitive.ObjectID), + }) + } + } + logger.Println("link success :", r.URL.Query()) }