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")
sortField := c.Input().Get("sortField")
sortOrder := c.Input().Get("sortOrder")
ok, isMaskEnabled := c.IsMaskedEnabled()
if !ok {
return
}
if limit == "" || page == "" {
c.Data["json"] = object.GetMaskedProviders(object.GetProviders(owner))
c.Data["json"] = object.GetMaskedProviders(object.GetProviders(owner), isMaskEnabled)
c.ServeJSON()
} else {
limit := util.ParseInt(limit)
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())
}
}
@ -61,13 +67,19 @@ func (c *ApiController) GetGlobalProviders() {
value := c.Input().Get("value")
sortField := c.Input().Get("sortField")
sortOrder := c.Input().Get("sortOrder")
ok, isMaskEnabled := c.IsMaskedEnabled()
if !ok {
return
}
if limit == "" || page == "" {
c.Data["json"] = object.GetMaskedProviders(object.GetGlobalProviders())
c.Data["json"] = object.GetMaskedProviders(object.GetGlobalProviders(), isMaskEnabled)
c.ServeJSON()
} else {
limit := util.ParseInt(limit)
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())
}
}
@ -81,7 +93,13 @@ func (c *ApiController) GetGlobalProviders() {
// @router /get-provider [get]
func (c *ApiController) GetProvider() {
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()
}

View File

@ -114,6 +114,27 @@ func (c *ApiController) RequireAdmin() (string, bool) {
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) {
providerName := c.Input().Get("provider")
if providerName != "" {

View File

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

View File

@ -70,7 +70,11 @@ type Provider struct {
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 {
return nil
}
@ -88,9 +92,13 @@ func GetMaskedProvider(provider *Provider) *Provider {
return provider
}
func GetMaskedProviders(providers []*Provider) []*Provider {
func GetMaskedProviders(providers []*Provider, isMaskEnabled bool) []*Provider {
if !isMaskEnabled {
return providers
}
for _, provider := range providers {
provider = GetMaskedProvider(provider)
provider = GetMaskedProvider(provider, isMaskEnabled)
}
return providers
}