feat: mid
This commit is contained in:
@@ -10,7 +10,7 @@ import (
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func (f *Middlewares) AuthUserInfo(c fiber.Ctx) error {
|
||||
func (f *Middlewares) WeChatAuthUserInfo(c fiber.Ctx) error {
|
||||
state := c.Query("state")
|
||||
code := c.Query("code")
|
||||
|
||||
@@ -29,9 +29,19 @@ func (f *Middlewares) AuthUserInfo(c fiber.Ctx) error {
|
||||
return errors.Wrap(err, "failed to get openid")
|
||||
}
|
||||
|
||||
tenantSlug := c.Path("tenant")
|
||||
if tenantSlug == "" {
|
||||
return errors.New("tenant is empty")
|
||||
}
|
||||
|
||||
tenantId, err := f.userSvc.GetTenantIDBySlug(c.Context(), tenantSlug)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to get tenant id")
|
||||
}
|
||||
|
||||
var oauthInfo pg.UserOAuth
|
||||
copier.Copy(&oauthInfo, token)
|
||||
user, err := f.userSvc.GetOrNew(c.Context(), 1, token.Openid, oauthInfo)
|
||||
user, err := f.userSvc.GetOrNew(c.Context(), tenantId, token.Openid, oauthInfo)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to get user")
|
||||
}
|
||||
@@ -42,13 +52,7 @@ func (f *Middlewares) AuthUserInfo(c fiber.Ctx) error {
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to create token")
|
||||
}
|
||||
|
||||
// set the openid to the cookie
|
||||
c.Cookie(&fiber.Cookie{
|
||||
Name: "token",
|
||||
Value: jwtToken,
|
||||
HTTPOnly: true,
|
||||
})
|
||||
_ = jwtToken
|
||||
|
||||
return c.Redirect().To("/")
|
||||
}
|
||||
@@ -194,3 +194,17 @@ func (svc *Service) CreateTenantUser(ctx context.Context, userID, tenantID int64
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetTenantIDBySlug
|
||||
func (svc *Service) GetTenantIDBySlug(ctx context.Context, slug string) (int64, error) {
|
||||
log := svc.log.WithField("method", "GetTenantIDBySlug")
|
||||
|
||||
stmt := table.Tenants.SELECT(table.Tenants.ID).WHERE(table.Tenants.Slug.EQ(String(slug)))
|
||||
log.Debug(stmt.DebugSql())
|
||||
|
||||
var id int64
|
||||
if err := stmt.QueryContext(ctx, db.FromContext(ctx, svc.db), &id); err != nil {
|
||||
return 0, errors.Wrap(err, "failed to query tenant id by slug")
|
||||
}
|
||||
return id, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user