Fix: login flow
This commit is contained in:
@@ -88,7 +88,7 @@ var serveCmd = &cobra.Command{
|
|||||||
|
|
||||||
// Initialize handlers
|
// Initialize handlers
|
||||||
midHandlers := middlewares.NewHandlers(db)
|
midHandlers := middlewares.NewHandlers(db)
|
||||||
apis := api.NewHandlers()
|
apis := api.NewHandlers(db)
|
||||||
auths := auth.NewHandlers(db)
|
auths := auth.NewHandlers(db)
|
||||||
|
|
||||||
// Initialize backend router
|
// Initialize backend router
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"gitea.konchin.com/go2025/backend/middlewares"
|
||||||
"github.com/uptrace/bunrouter"
|
"github.com/uptrace/bunrouter"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -24,7 +24,25 @@ func (self *Handlers) GetAliases(
|
|||||||
w http.ResponseWriter, req bunrouter.Request,
|
w http.ResponseWriter, req bunrouter.Request,
|
||||||
) error {
|
) error {
|
||||||
// mock output
|
// mock output
|
||||||
fmt.Fprintf(w, "%s", `[{"id": 1, "name": "yajiu"}]`)
|
ctx := req.Context()
|
||||||
return nil
|
|
||||||
// return utils.Success(w)
|
aliases, err := self.db.GetAliases(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return middlewares.HTTPError{
|
||||||
|
StatusCode: http.StatusInternalServerError,
|
||||||
|
Message: "failed to get aliases",
|
||||||
|
OriginError: err,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var output []getAliasesOutputAlias
|
||||||
|
|
||||||
|
for _, alias := range aliases {
|
||||||
|
output = append(output, getAliasesOutputAlias{
|
||||||
|
Id: alias.Id,
|
||||||
|
Name: alias.Name,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return bunrouter.JSON(w, output)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ package api
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"gitea.konchin.com/go2025/backend/middlewares"
|
||||||
"gitea.konchin.com/go2025/backend/utils"
|
"gitea.konchin.com/go2025/backend/utils"
|
||||||
"github.com/uptrace/bunrouter"
|
"github.com/uptrace/bunrouter"
|
||||||
)
|
)
|
||||||
@@ -25,5 +27,18 @@ type getImagesOutputImage struct {
|
|||||||
func (self *Handlers) GetImages(
|
func (self *Handlers) GetImages(
|
||||||
w http.ResponseWriter, req bunrouter.Request,
|
w http.ResponseWriter, req bunrouter.Request,
|
||||||
) error {
|
) error {
|
||||||
|
// ctx := req.Context()
|
||||||
|
|
||||||
|
images := strings.Split(req.Param("images"), ",")
|
||||||
|
aliases := strings.Split(req.Param("aliases"), ",")
|
||||||
|
|
||||||
|
if (len(images) == 0 && len(aliases) == 0) ||
|
||||||
|
(len(images) > 0 && len(aliases) > 0) {
|
||||||
|
return middlewares.HTTPError{
|
||||||
|
StatusCode: http.StatusBadRequest,
|
||||||
|
Message: "images and aliases should exist exactly one",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return utils.Success(w)
|
return utils.Success(w)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
|
import "gitea.konchin.com/go2025/backend/interfaces"
|
||||||
|
|
||||||
type Handlers struct {
|
type Handlers struct {
|
||||||
|
db interfaces.Database
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewHandlers() *Handlers {
|
func NewHandlers(db interfaces.Database) *Handlers {
|
||||||
return &Handlers{}
|
return &Handlers{db: db}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ func (self *Handlers) PostGenLoginUrl(
|
|||||||
|
|
||||||
return bunrouter.JSON(w, postGenLoginUrlOutput{
|
return bunrouter.JSON(w, postGenLoginUrlOutput{
|
||||||
LoginUrl: viper.GetString("external-url") +
|
LoginUrl: viper.GetString("external-url") +
|
||||||
"/auth/login?" +
|
"/login?" +
|
||||||
"token=" + token,
|
"token=" + token,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,3 +91,16 @@ func (self *BunDatabase) UpsertLoginToken(
|
|||||||
}
|
}
|
||||||
return token, nil
|
return token, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *BunDatabase) GetAliases(
|
||||||
|
ctx context.Context,
|
||||||
|
) ([]models.Alias, error) {
|
||||||
|
var ret []models.Alias
|
||||||
|
err := self.db.NewSelect().
|
||||||
|
Model(&ret).
|
||||||
|
Scan(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return []models.Alias{}, err
|
||||||
|
}
|
||||||
|
return ret, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -21,4 +21,8 @@ type Database interface {
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
userId string,
|
userId string,
|
||||||
) (string, error)
|
) (string, error)
|
||||||
|
|
||||||
|
GetAliases(
|
||||||
|
ctx context.Context,
|
||||||
|
) ([]models.Alias, error)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import (
|
|||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var client *resty.Client
|
||||||
|
|
||||||
type genLoginUrlPayload struct {
|
type genLoginUrlPayload struct {
|
||||||
LoginUrl string `json:"loginUrl"`
|
LoginUrl string `json:"loginUrl"`
|
||||||
}
|
}
|
||||||
@@ -16,8 +18,8 @@ type loginPayload struct {
|
|||||||
Token string `json:"token"`
|
Token string `json:"token"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLogin(t *testing.T) {
|
func Test_01_Login(t *testing.T) {
|
||||||
client := resty.New()
|
client = resty.New()
|
||||||
|
|
||||||
var payload genLoginUrlPayload
|
var payload genLoginUrlPayload
|
||||||
resp, err := client.R().
|
resp, err := client.R().
|
||||||
@@ -37,7 +39,7 @@ func TestLogin(t *testing.T) {
|
|||||||
|
|
||||||
resp, err = client.R().
|
resp, err = client.R().
|
||||||
SetBody(loginPayload{Token: loginUrl.Query().Get("token")}).
|
SetBody(loginPayload{Token: loginUrl.Query().Get("token")}).
|
||||||
Post(loginUrl.Scheme + "://" + loginUrl.Host + loginUrl.Path)
|
Post(loginUrl.Scheme + "://" + loginUrl.Host + "/auth/login")
|
||||||
if err != nil || resp.StatusCode() != http.StatusOK {
|
if err != nil || resp.StatusCode() != http.StatusOK {
|
||||||
t.Fatal("failed to login")
|
t.Fatal("failed to login")
|
||||||
}
|
}
|
||||||
6
tests/02_getImages_test.go
Normal file
6
tests/02_getImages_test.go
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func Test_02_GetImages(t *testing.T) {
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user