diff --git a/core/service.go b/core/service.go index 88512af..4a06be6 100644 --- a/core/service.go +++ b/core/service.go @@ -553,6 +553,25 @@ func (sh *serviceDescription) authorize(w http.ResponseWriter, r *http.Request) queryvals := r.URL.Query() authtype := queryvals.Get("type") uid := queryvals.Get("id") + if sk := queryvals.Get("sk"); len(sk) > 0 { + success, err := sh.sessionProvider.Touch(sk) + if err != nil { + logger.Error("authorize failed. sessionProvider.Touch err:", err) + w.WriteHeader(http.StatusInternalServerError) + return + } + + // !success일 때 빈 body를 보내면 클라이언트는 로그아웃 된다. + if success { + output := map[string]any{ + "sk": sk, + "expirein": sh.sessionTTL.Seconds(), + } + bt, _ := json.Marshal(output) + w.Write(bt) + } + return + } var email string diff --git a/go.mod b/go.mod index 8e6eab7..e2d0e89 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/golang-jwt/jwt v3.2.2+incompatible go.mongodb.org/mongo-driver v1.11.7 google.golang.org/api v0.128.0 - repositories.action2quare.com/ayo/gocommon v0.0.0-20230904005440-d396a35713ad + repositories.action2quare.com/ayo/gocommon v0.0.0-20230904025656-0eefb438a6d3 ) require ( diff --git a/go.sum b/go.sum index 1b0b6f3..4bb7c23 100644 --- a/go.sum +++ b/go.sum @@ -357,3 +357,5 @@ repositories.action2quare.com/ayo/gocommon v0.0.0-20230901014215-68e40d580f7c h1 repositories.action2quare.com/ayo/gocommon v0.0.0-20230901014215-68e40d580f7c/go.mod h1:PdpZ16O1czKKxCxn+0AFNaEX/0kssYwC3G8jR0V7ybw= repositories.action2quare.com/ayo/gocommon v0.0.0-20230904005440-d396a35713ad h1:/hwmPT3hKm/eSqvZ9LjamlvptygWZ87fg09OujRu5xo= repositories.action2quare.com/ayo/gocommon v0.0.0-20230904005440-d396a35713ad/go.mod h1:PdpZ16O1czKKxCxn+0AFNaEX/0kssYwC3G8jR0V7ybw= +repositories.action2quare.com/ayo/gocommon v0.0.0-20230904025656-0eefb438a6d3 h1:6IBLAxab5ntTG+TGjvd7+Pm+QHipQMS7GKg+XrXjn88= +repositories.action2quare.com/ayo/gocommon v0.0.0-20230904025656-0eefb438a6d3/go.mod h1:PdpZ16O1czKKxCxn+0AFNaEX/0kssYwC3G8jR0V7ybw=