feat: add admin login

This commit is contained in:
yanghao05
2025-04-16 20:16:41 +08:00
parent e95fc65f5f
commit 4a9836db68
7 changed files with 88 additions and 14 deletions

View File

@@ -0,0 +1,35 @@
package admin
import (
"quyun/providers/jwt"
"github.com/gofiber/fiber/v3"
)
// @provider
type auth struct {
jwt *jwt.JWT
}
type AuthBody struct {
Username string `json:"username" validate:"required"`
Password string `json:"password" validate:"required"`
}
// Login
// @Router /v1/admin/auth [post]
// @Bind body body
func (ctl *auth) Login(ctx fiber.Ctx, body *AuthBody) (string, error) {
if body.Username == "admin" && body.Password == "xixi@0202" {
claim := ctl.jwt.CreateClaims(jwt.BaseClaims{
UserID: 1,
})
token, err := ctl.jwt.CreateToken(claim)
if err != nil {
return "", err
}
return token, nil
}
return "", fiber.ErrUnauthorized
}

View File

@@ -3,6 +3,7 @@ package admin
import (
"quyun/providers/ali"
"quyun/providers/app"
"quyun/providers/jwt"
"go.ipao.vip/atom"
"go.ipao.vip/atom/container"
@@ -11,6 +12,17 @@ import (
)
func Provide(opts ...opt.Option) error {
if err := container.Container.Provide(func(
jwt *jwt.JWT,
) (*auth, error) {
obj := &auth{
jwt: jwt,
}
return obj, nil
}); err != nil {
return err
}
if err := container.Container.Provide(func() (*medias, error) {
obj := &medias{}
@@ -33,6 +45,7 @@ func Provide(opts ...opt.Option) error {
return err
}
if err := container.Container.Provide(func(
auth *auth,
medias *medias,
orders *orders,
posts *posts,
@@ -40,6 +53,7 @@ func Provide(opts ...opt.Option) error {
users *users,
) (contracts.HttpRoute, error) {
obj := &Routes{
auth: auth,
medias: medias,
orders: orders,
posts: posts,

View File

@@ -15,6 +15,7 @@ import (
// @provider contracts.HttpRoute atom.GroupRoutes
type Routes struct {
log *log.Entry `inject:"false"`
auth *auth
medias *medias
orders *orders
posts *posts
@@ -32,6 +33,12 @@ func (r *Routes) Name() string {
}
func (r *Routes) Register(router fiber.Router) {
// 注册路由组: auth
router.Post("/v1/admin/auth", DataFunc1(
r.auth.Login,
Body[AuthBody]("body"),
))
// 注册路由组: medias
router.Get("/v1/admin/medias", DataFunc2(
r.medias.List,

View File

@@ -11,7 +11,11 @@ import (
)
func (f *Middlewares) Auth(ctx fiber.Ctx) error {
if strings.HasPrefix(ctx.Path(), "/admin/") {
if ctx.Path() == "/v1/admin/auth" {
return ctx.Next()
}
if strings.HasPrefix(ctx.Path(), "/v1/admin/") {
return ctx.Next()
}