feat: add requireProviderPermission()

This commit is contained in:
Yang Luo 2024-03-30 23:24:59 +08:00
parent eb448bd043
commit fb6f3623ee

View File

@ -141,6 +141,20 @@ func (c *ApiController) GetProvider() {
c.ResponseOk(object.GetMaskedProvider(provider, isMaskEnabled)) c.ResponseOk(object.GetMaskedProvider(provider, isMaskEnabled))
} }
func (c *ApiController) requireProviderPermission(provider *object.Provider) bool {
isGlobalAdmin, user := c.isGlobalAdmin()
if isGlobalAdmin {
return true
}
if provider.Owner == "admin" || user.Owner != provider.Owner {
c.ResponseError(c.T("auth:Unauthorized operation"))
return false
}
return true
}
// UpdateProvider // UpdateProvider
// @Title UpdateProvider // @Title UpdateProvider
// @Tag Provider API // @Tag Provider API
@ -159,13 +173,8 @@ func (c *ApiController) UpdateProvider() {
return return
} }
isGlobalAdmin, user := c.isGlobalAdmin() ok := c.requireProviderPermission(&provider)
if !ok {
if provider.Owner == "admin" && !isGlobalAdmin {
c.ResponseError("no permission")
return
} else if !isGlobalAdmin && user.Owner != provider.Owner {
c.ResponseError("no permission")
return return
} }
@ -194,18 +203,14 @@ func (c *ApiController) AddProvider() {
return return
} }
if err := checkQuotaForProvider(int(count)); err != nil { err = checkQuotaForProvider(int(count))
if err != nil {
c.ResponseError(err.Error()) c.ResponseError(err.Error())
return return
} }
isGlobalAdmin, user := c.isGlobalAdmin() ok := c.requireProviderPermission(&provider)
if !ok {
if provider.Owner == "admin" && !isGlobalAdmin {
c.ResponseError("no permission")
return
} else if !isGlobalAdmin && user.Owner != provider.Owner {
c.ResponseError("no permission")
return return
} }
@ -228,13 +233,8 @@ func (c *ApiController) DeleteProvider() {
return return
} }
isGlobalAdmin, user := c.isGlobalAdmin() ok := c.requireProviderPermission(&provider)
if !ok {
if provider.Owner == "admin" && !isGlobalAdmin {
c.ResponseError("no permission")
return
} else if !isGlobalAdmin && user.Owner != provider.Owner {
c.ResponseError("no permission")
return return
} }