feat: provide logout url for openid providers (#1340)

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: vikunja/api#1340
Co-authored-by: viehlieb <pf@pragma-shift.net>
Co-committed-by: viehlieb <pf@pragma-shift.net>
This commit is contained in:
viehlieb 2022-12-18 18:26:28 +00:00 committed by konrad
parent e9ce930230
commit a79b1de2d0
6 changed files with 19 additions and 1 deletions

View File

@ -311,6 +311,9 @@ auth:
- name:
# The auth url to send users to if they want to authenticate using OpenID Connect.
authurl:
# The oidc logouturl that users will be redirected to on logout.
# Leave empty or delete key, if you do not want to be redirected.
logouturl:
# The client ID used to authenticate Vikunja at the OpenID Connect provider.
clientid:
# The client secret used to authenticate Vikunja at the OpenID Connect provider.

View File

@ -51,6 +51,7 @@ type Provider struct {
Key string `json:"key"`
OriginalAuthURL string `json:"-"`
AuthURL string `json:"auth_url"`
LogoutURL string `json:"logout_url"`
ClientID string `json:"client_id"`
ClientSecret string `json:"-"`
openIDProvider *oidc.Provider

View File

@ -60,6 +60,7 @@ func GetAllProviders() (providers []*Provider, err error) {
}
provider, err := getProviderFromMap(pi)
if err != nil {
if provider != nil {
log.Errorf("Error while getting openid provider %s: %s", provider.Name, err)
@ -119,12 +120,18 @@ func getProviderFromMap(pi map[string]interface{}) (provider *Provider, err erro
k := getKeyFromName(name)
logoutURL, ok := pi["logouturl"].(string)
if !ok {
logoutURL = ""
}
provider = &Provider{
Name: pi["name"].(string),
Key: k,
AuthURL: pi["authurl"].(string),
OriginalAuthURL: pi["authurl"].(string),
ClientSecret: pi["clientsecret"].(string),
LogoutURL: logoutURL,
}
cl, is := pi["clientid"].(int)
@ -143,7 +150,6 @@ func getProviderFromMap(pi map[string]interface{}) (provider *Provider, err erro
ClientID: provider.ClientID,
ClientSecret: provider.ClientSecret,
RedirectURL: config.AuthOpenIDRedirectURL.GetString() + k,
// Discovery returns the OAuth2 endpoints.
Endpoint: provider.openIDProvider.Endpoint(),

View File

@ -9099,6 +9099,9 @@ const docTemplate = `{
"key": {
"type": "string"
},
"logout_url": {
"type": "string"
},
"name": {
"type": "string"
}

View File

@ -9090,6 +9090,9 @@
"key": {
"type": "string"
},
"logout_url": {
"type": "string"
},
"name": {
"type": "string"
}

View File

@ -1120,6 +1120,8 @@ definitions:
type: string
key:
type: string
logout_url:
type: string
name:
type: string
type: object