Auth: Remove types from SSOSettings struct in SSO service (#79459)

* replace SSOSettings with SSOSettingsDTO

* fix database tests

* fix oauth strategy

* fix sso settings service tests

* add secrets encryption on update

* rename SSOSettingsDTO to SSOSettings

* remove extraKeys from strategy

* change back settings type from createOAuthConnector to OAuthInfo

* do not parse multi-value fields in oauth strategy
This commit is contained in:
Mihai Doarna
2023-12-15 16:00:52 +02:00
committed by GitHub
parent 09445e0ecc
commit 15d8a1f94d
14 changed files with 330 additions and 448 deletions
+6 -27
View File
@@ -60,21 +60,10 @@ func (api *Api) RegisterAPIEndpoints() {
func (api *Api) listAllProvidersSettings(c *contextmodel.ReqContext) response.Response {
providers, err := api.getAuthorizedList(c.Req.Context(), c.SignedInUser)
if err != nil {
return response.Error(500, "Failed to get providers", err)
return response.Error(http.StatusInternalServerError, "Failed to get providers", err)
}
dtos := make([]*models.SSOSettingsDTO, 0)
for _, provider := range providers {
dto, err := provider.ToSSOSettingsDTO()
if err != nil {
api.Log.Warn("Failed to convert SSO Settings for provider " + provider.Provider)
continue
}
dtos = append(dtos, dto)
}
return response.JSON(http.StatusOK, dtos)
return response.JSON(http.StatusOK, providers)
}
func (api *Api) getAuthorizedList(ctx context.Context, identity identity.Requester) ([]*models.SSOSettings, error) {
@@ -113,12 +102,7 @@ func (api *Api) getProviderSettings(c *contextmodel.ReqContext) response.Respons
return response.Error(http.StatusNotFound, "The provider was not found", err)
}
dto, err := settings.ToSSOSettingsDTO()
if err != nil {
return response.Error(http.StatusInternalServerError, "The provider is invalid", err)
}
return response.JSON(http.StatusOK, dto)
return response.JSON(http.StatusOK, settings)
}
func (api *Api) updateProviderSettings(c *contextmodel.ReqContext) response.Response {
@@ -127,19 +111,14 @@ func (api *Api) updateProviderSettings(c *contextmodel.ReqContext) response.Resp
return response.Error(http.StatusBadRequest, "Missing key", nil)
}
var settingsDTO models.SSOSettingsDTO
if err := web.Bind(c.Req, &settingsDTO); err != nil {
var settings models.SSOSettings
if err := web.Bind(c.Req, &settings); err != nil {
return response.Error(http.StatusBadRequest, "Failed to parse request body", err)
}
settings, err := settingsDTO.ToSSOSettings()
if err != nil {
return response.Error(http.StatusBadRequest, "Invalid request body", err)
}
settings.Provider = key
err = api.SSOSettingsService.Upsert(c.Req.Context(), *settings)
err := api.SSOSettingsService.Upsert(c.Req.Context(), settings)
// TODO: first check whether the error is referring to validation errors
// other error