Add IsMaskedEnabled to provider API

This commit is contained in:
Yang Luo 2023-05-19 13:09:53 +08:00
parent a9d662f1bd
commit de73ff0e60
4 changed files with 56 additions and 9 deletions

View File

@ -37,13 +37,19 @@ func (c *ApiController) GetProviders() {
value := c.Input().Get("value") value := c.Input().Get("value")
sortField := c.Input().Get("sortField") sortField := c.Input().Get("sortField")
sortOrder := c.Input().Get("sortOrder") sortOrder := c.Input().Get("sortOrder")
ok, isMaskEnabled := c.IsMaskedEnabled()
if !ok {
return
}
if limit == "" || page == "" { if limit == "" || page == "" {
c.Data["json"] = object.GetMaskedProviders(object.GetProviders(owner)) c.Data["json"] = object.GetMaskedProviders(object.GetProviders(owner), isMaskEnabled)
c.ServeJSON() c.ServeJSON()
} else { } else {
limit := util.ParseInt(limit) limit := util.ParseInt(limit)
paginator := pagination.SetPaginator(c.Ctx, limit, int64(object.GetProviderCount(owner, field, value))) paginator := pagination.SetPaginator(c.Ctx, limit, int64(object.GetProviderCount(owner, field, value)))
providers := object.GetMaskedProviders(object.GetPaginationProviders(owner, paginator.Offset(), limit, field, value, sortField, sortOrder)) providers := object.GetMaskedProviders(object.GetPaginationProviders(owner, paginator.Offset(), limit, field, value, sortField, sortOrder), isMaskEnabled)
c.ResponseOk(providers, paginator.Nums()) c.ResponseOk(providers, paginator.Nums())
} }
} }
@ -61,13 +67,19 @@ func (c *ApiController) GetGlobalProviders() {
value := c.Input().Get("value") value := c.Input().Get("value")
sortField := c.Input().Get("sortField") sortField := c.Input().Get("sortField")
sortOrder := c.Input().Get("sortOrder") sortOrder := c.Input().Get("sortOrder")
ok, isMaskEnabled := c.IsMaskedEnabled()
if !ok {
return
}
if limit == "" || page == "" { if limit == "" || page == "" {
c.Data["json"] = object.GetMaskedProviders(object.GetGlobalProviders()) c.Data["json"] = object.GetMaskedProviders(object.GetGlobalProviders(), isMaskEnabled)
c.ServeJSON() c.ServeJSON()
} else { } else {
limit := util.ParseInt(limit) limit := util.ParseInt(limit)
paginator := pagination.SetPaginator(c.Ctx, limit, int64(object.GetGlobalProviderCount(field, value))) paginator := pagination.SetPaginator(c.Ctx, limit, int64(object.GetGlobalProviderCount(field, value)))
providers := object.GetMaskedProviders(object.GetPaginationGlobalProviders(paginator.Offset(), limit, field, value, sortField, sortOrder)) providers := object.GetMaskedProviders(object.GetPaginationGlobalProviders(paginator.Offset(), limit, field, value, sortField, sortOrder), isMaskEnabled)
c.ResponseOk(providers, paginator.Nums()) c.ResponseOk(providers, paginator.Nums())
} }
} }
@ -81,7 +93,13 @@ func (c *ApiController) GetGlobalProviders() {
// @router /get-provider [get] // @router /get-provider [get]
func (c *ApiController) GetProvider() { func (c *ApiController) GetProvider() {
id := c.Input().Get("id") id := c.Input().Get("id")
c.Data["json"] = object.GetMaskedProvider(object.GetProvider(id))
ok, isMaskEnabled := c.IsMaskedEnabled()
if !ok {
return
}
c.Data["json"] = object.GetMaskedProvider(object.GetProvider(id), isMaskEnabled)
c.ServeJSON() c.ServeJSON()
} }

View File

@ -114,6 +114,27 @@ func (c *ApiController) RequireAdmin() (string, bool) {
return user.Owner, true return user.Owner, true
} }
// IsMaskedEnabled ...
func (c *ApiController) IsMaskedEnabled() (bool, bool) {
isMaskEnabled := true
withSecret := c.Input().Get("withSecret")
if withSecret == "1" {
isMaskEnabled = false
if conf.IsDemoMode() {
c.ResponseError(c.T("general:this operation is not allowed in demo mode"))
return false, isMaskEnabled
}
_, ok := c.RequireAdmin()
if !ok {
return false, isMaskEnabled
}
}
return true, isMaskEnabled
}
func (c *ApiController) GetProviderFromContext(category string) (*object.Provider, *object.User, bool) { func (c *ApiController) GetProviderFromContext(category string) (*object.Provider, *object.User, bool) {
providerName := c.Input().Get("provider") providerName := c.Input().Get("provider")
if providerName != "" { if providerName != "" {

View File

@ -150,7 +150,7 @@ func getProviderMap(owner string) map[string]*Provider {
UpdateProvider(provider.Owner+"/"+provider.Name, provider) UpdateProvider(provider.Owner+"/"+provider.Name, provider)
} }
m[provider.Name] = GetMaskedProvider(provider) m[provider.Name] = GetMaskedProvider(provider, true)
} }
return m return m
} }

View File

@ -70,7 +70,11 @@ type Provider struct {
ProviderUrl string `xorm:"varchar(200)" json:"providerUrl"` ProviderUrl string `xorm:"varchar(200)" json:"providerUrl"`
} }
func GetMaskedProvider(provider *Provider) *Provider { func GetMaskedProvider(provider *Provider, isMaskEnabled bool) *Provider {
if !isMaskEnabled {
return provider
}
if provider == nil { if provider == nil {
return nil return nil
} }
@ -88,9 +92,13 @@ func GetMaskedProvider(provider *Provider) *Provider {
return provider return provider
} }
func GetMaskedProviders(providers []*Provider) []*Provider { func GetMaskedProviders(providers []*Provider, isMaskEnabled bool) []*Provider {
if !isMaskEnabled {
return providers
}
for _, provider := range providers { for _, provider := range providers {
provider = GetMaskedProvider(provider) provider = GetMaskedProvider(provider, isMaskEnabled)
} }
return providers return providers
} }