Merge pull request #405 from dariusk/dariusk/inspectuser
Generic OAuth userinfo properies now configurable
This commit is contained in:
commit
3984042905
3 changed files with 23 additions and 5 deletions
|
@ -110,6 +110,10 @@ type (
|
||||||
AuthEndpoint string `ini:"auth_endpoint"`
|
AuthEndpoint string `ini:"auth_endpoint"`
|
||||||
Scope string `ini:"scope"`
|
Scope string `ini:"scope"`
|
||||||
AllowDisconnect bool `ini:"allow_disconnect"`
|
AllowDisconnect bool `ini:"allow_disconnect"`
|
||||||
|
MapUserID string `ini:"map_user_id"`
|
||||||
|
MapUsername string `ini:"map_username"`
|
||||||
|
MapDisplayName string `ini:"map_display_name"`
|
||||||
|
MapEmail string `ini:"map_email"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// AppCfg holds values that affect how the application functions
|
// AppCfg holds values that affect how the application functions
|
||||||
|
|
4
oauth.go
4
oauth.go
|
@ -266,6 +266,10 @@ func configureGenericOauth(parentHandler *Handler, r *mux.Router, app *App) {
|
||||||
HttpClient: config.DefaultHTTPClient(),
|
HttpClient: config.DefaultHTTPClient(),
|
||||||
CallbackLocation: callbackLocation,
|
CallbackLocation: callbackLocation,
|
||||||
Scope: config.OrDefaultString(app.Config().GenericOauth.Scope, "read_user"),
|
Scope: config.OrDefaultString(app.Config().GenericOauth.Scope, "read_user"),
|
||||||
|
MapUserID: config.OrDefaultString(app.Config().GenericOauth.MapUserID, "user_id"),
|
||||||
|
MapUsername: config.OrDefaultString(app.Config().GenericOauth.MapUsername, "username"),
|
||||||
|
MapDisplayName: config.OrDefaultString(app.Config().GenericOauth.MapDisplayName, "-"),
|
||||||
|
MapEmail: config.OrDefaultString(app.Config().GenericOauth.MapEmail, "email"),
|
||||||
}
|
}
|
||||||
configureOauthRoutes(parentHandler, r, app, oauthClient, callbackProxy)
|
configureOauthRoutes(parentHandler, r, app, oauthClient, callbackProxy)
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,10 @@ type genericOauthClient struct {
|
||||||
InspectLocation string
|
InspectLocation string
|
||||||
CallbackLocation string
|
CallbackLocation string
|
||||||
Scope string
|
Scope string
|
||||||
|
MapUserID string
|
||||||
|
MapUsername string
|
||||||
|
MapDisplayName string
|
||||||
|
MapEmail string
|
||||||
HttpClient HttpClient
|
HttpClient HttpClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,13 +108,19 @@ func (c genericOauthClient) inspectOauthAccessToken(ctx context.Context, accessT
|
||||||
return nil, errors.New("unable to inspect access token")
|
return nil, errors.New("unable to inspect access token")
|
||||||
}
|
}
|
||||||
|
|
||||||
var inspectResponse InspectResponse
|
// since we don't know what the JSON from the server will look like, we create a
|
||||||
if err := limitedJsonUnmarshal(resp.Body, infoRequestMaxLen, &inspectResponse); err != nil {
|
// generic interface and then map manually to values set in the config
|
||||||
|
var genericInterface map[string]interface{}
|
||||||
|
if err := limitedJsonUnmarshal(resp.Body, infoRequestMaxLen, &genericInterface); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if inspectResponse.Error != "" {
|
|
||||||
return nil, errors.New(inspectResponse.Error)
|
// map each relevant field in inspectResponse to the mapped field from the config
|
||||||
}
|
var inspectResponse InspectResponse
|
||||||
|
inspectResponse.UserID, _ = genericInterface[c.MapUserID].(string)
|
||||||
|
inspectResponse.Username, _ = genericInterface[c.MapUsername].(string)
|
||||||
|
inspectResponse.DisplayName, _ = genericInterface[c.MapDisplayName].(string)
|
||||||
|
inspectResponse.Email, _ = genericInterface[c.MapEmail].(string)
|
||||||
|
|
||||||
return &inspectResponse, nil
|
return &inspectResponse, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue