Feat: show user bind providers

pull/39/head
zijiren233 2 years ago
parent 3dc5dbcc26
commit 9bbd43357e

@ -165,6 +165,8 @@ func Init(e *gin.Engine) {
needAuthUser.POST("/username", SetUsername) needAuthUser.POST("/username", SetUsername)
needAuthUser.POST("/password", SetUserPassword) needAuthUser.POST("/password", SetUserPassword)
needAuthUser.GET("/providers", UserBindProviders)
} }
{ {

@ -7,6 +7,7 @@ import (
"github.com/synctv-org/synctv/internal/db" "github.com/synctv-org/synctv/internal/db"
dbModel "github.com/synctv-org/synctv/internal/model" dbModel "github.com/synctv-org/synctv/internal/model"
"github.com/synctv-org/synctv/internal/op" "github.com/synctv-org/synctv/internal/op"
"github.com/synctv-org/synctv/internal/provider/providers"
"github.com/synctv-org/synctv/server/middlewares" "github.com/synctv-org/synctv/server/middlewares"
"github.com/synctv-org/synctv/server/model" "github.com/synctv-org/synctv/server/model"
"gorm.io/gorm" "gorm.io/gorm"
@ -173,12 +174,30 @@ func UserBindProviders(ctx *gin.Context) {
return return
} }
resp := make([]model.UserBindProviderResp, len(up)) m := providers.EnabledProvider()
for i, v := range up {
resp[i] = model.UserBindProviderResp{ resp := make(model.UserBindProviderResp, len(up))
Provider: v.Provider, for _, v := range up {
ProviderUserID: v.ProviderUserID, if _, ok := m[v.Provider]; ok {
CreatedAt: v.CreatedAt.UnixMilli(), resp[v.Provider] = struct {
ProviderUserID string "json:\"providerUserID\""
CreatedAt int64 "json:\"createdAt\""
}{
ProviderUserID: v.ProviderUserID,
CreatedAt: v.CreatedAt.UnixMilli(),
}
}
}
for p := range m {
if _, ok := resp[p]; !ok {
resp[p] = struct {
ProviderUserID string "json:\"providerUserID\""
CreatedAt int64 "json:\"createdAt\""
}{
ProviderUserID: "",
CreatedAt: 0,
}
} }
} }

@ -97,8 +97,7 @@ func (u *UserIDReq) Validate() error {
return nil return nil
} }
type UserBindProviderResp struct { type UserBindProviderResp map[provider.OAuth2Provider]struct {
Provider provider.OAuth2Provider `json:"provider"` ProviderUserID string `json:"providerUserID"`
ProviderUserID string `json:"providerUserID"` CreatedAt int64 `json:"createdAt"`
CreatedAt int64 `json:"createdAt"`
} }

Loading…
Cancel
Save