package auth import ( "encoding/json" "io" "net/http" "gitea.konchin.com/go2025/backend/middlewares" "github.com/spf13/viper" "github.com/uptrace/bunrouter" ) type PostGenLoginUrlInput struct { UserId string `json:"userId"` } type PostGenLoginUrlOutput struct { LoginUrl string `json:"loginUrl"` } // PostGenLoginUrl // // @param payload body PostGenLoginUrlInput true "Payload" // @success 200 {object} PostGenLoginUrlOutput "Payload" // @failure 400 // @router /auth/gen-login-url [post] func (self *Handlers) PostGenLoginUrl( w http.ResponseWriter, req bunrouter.Request, ) error { ctx := req.Context() b, err := io.ReadAll(req.Body) if err != nil { return middlewares.HTTPError{ StatusCode: http.StatusBadRequest, Message: "failed to read payload", OriginError: err, } } var input PostGenLoginUrlInput if err := json.Unmarshal(b, &input); err != nil { return middlewares.HTTPError{ StatusCode: http.StatusBadRequest, Message: "failed to unmarshal json", OriginError: err, } } token, err := self.db.UpsertLoginToken(ctx, input.UserId) if err != nil { return middlewares.HTTPError{ StatusCode: http.StatusInternalServerError, Message: "failed to update token", OriginError: err, } } return bunrouter.JSON(w, PostGenLoginUrlOutput{ LoginUrl: viper.GetString("external-url") + "/login?" + "token=" + token, }) }