Fix: login flow
This commit is contained in:
@@ -88,7 +88,7 @@ var serveCmd = &cobra.Command{
|
||||
|
||||
// Initialize handlers
|
||||
midHandlers := middlewares.NewHandlers(db)
|
||||
apis := api.NewHandlers()
|
||||
apis := api.NewHandlers(db)
|
||||
auths := auth.NewHandlers(db)
|
||||
|
||||
// Initialize backend router
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"gitea.konchin.com/go2025/backend/middlewares"
|
||||
"github.com/uptrace/bunrouter"
|
||||
)
|
||||
|
||||
@@ -24,7 +24,25 @@ func (self *Handlers) GetAliases(
|
||||
w http.ResponseWriter, req bunrouter.Request,
|
||||
) error {
|
||||
// mock output
|
||||
fmt.Fprintf(w, "%s", `[{"id": 1, "name": "yajiu"}]`)
|
||||
return nil
|
||||
// return utils.Success(w)
|
||||
ctx := req.Context()
|
||||
|
||||
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 (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"gitea.konchin.com/go2025/backend/middlewares"
|
||||
"gitea.konchin.com/go2025/backend/utils"
|
||||
"github.com/uptrace/bunrouter"
|
||||
)
|
||||
@@ -25,5 +27,18 @@ type getImagesOutputImage struct {
|
||||
func (self *Handlers) GetImages(
|
||||
w http.ResponseWriter, req bunrouter.Request,
|
||||
) 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)
|
||||
}
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package api
|
||||
|
||||
import "gitea.konchin.com/go2025/backend/interfaces"
|
||||
|
||||
type Handlers struct {
|
||||
db interfaces.Database
|
||||
}
|
||||
|
||||
func NewHandlers() *Handlers {
|
||||
return &Handlers{}
|
||||
func NewHandlers(db interfaces.Database) *Handlers {
|
||||
return &Handlers{db: db}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ func (self *Handlers) PostGenLoginUrl(
|
||||
|
||||
return bunrouter.JSON(w, postGenLoginUrlOutput{
|
||||
LoginUrl: viper.GetString("external-url") +
|
||||
"/auth/login?" +
|
||||
"/login?" +
|
||||
"token=" + token,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -91,3 +91,16 @@ func (self *BunDatabase) UpsertLoginToken(
|
||||
}
|
||||
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,
|
||||
userId string,
|
||||
) (string, error)
|
||||
|
||||
GetAliases(
|
||||
ctx context.Context,
|
||||
) ([]models.Alias, error)
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@ import (
|
||||
"github.com/go-resty/resty/v2"
|
||||
)
|
||||
|
||||
var client *resty.Client
|
||||
|
||||
type genLoginUrlPayload struct {
|
||||
LoginUrl string `json:"loginUrl"`
|
||||
}
|
||||
@@ -16,8 +18,8 @@ type loginPayload struct {
|
||||
Token string `json:"token"`
|
||||
}
|
||||
|
||||
func TestLogin(t *testing.T) {
|
||||
client := resty.New()
|
||||
func Test_01_Login(t *testing.T) {
|
||||
client = resty.New()
|
||||
|
||||
var payload genLoginUrlPayload
|
||||
resp, err := client.R().
|
||||
@@ -37,7 +39,7 @@ func TestLogin(t *testing.T) {
|
||||
|
||||
resp, err = client.R().
|
||||
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 {
|
||||
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