From ddf88501a1d3965e3dca206a6ecc2b800930b55a Mon Sep 17 00:00:00 2001 From: l2vator Date: Thu, 27 Jun 2024 15:18:09 +0900 Subject: [PATCH] =?UTF-8?q?[=EC=98=A4=EC=8A=B9=EC=84=9D]=20Account=20Link?= =?UTF-8?q?=20-=20Firebase::Anonymously(guest)=20=EC=97=90=EC=84=9C=20Fire?= =?UTF-8?q?base=20=EB=A5=BC=20=ED=86=B5=ED=95=9C=20=EB=8B=A4=EB=A5=B8=20Pl?= =?UTF-8?q?atform=20=EC=9C=BC=EB=A1=9C=20Link=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/service.go | 55 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 14 deletions(-) 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()) }