mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-07 06:03:09 -06:00
Fall back to numeric localpart if there is no suggested username.
Fixes https://github.com/matrix-org/dendrite/issues/2498.
This commit is contained in:
parent
09f0dca6aa
commit
f814f9bdf1
|
|
@ -21,6 +21,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"path"
|
"path"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
|
@ -219,7 +220,12 @@ func SSOCallback(
|
||||||
localpart = result.SuggestedUserID
|
localpart = result.SuggestedUserID
|
||||||
if localpart == "" {
|
if localpart == "" {
|
||||||
util.GetLogger(ctx).WithError(err).WithField("ssoIdentifier", result.Identifier).Info("no suggested user ID from SSO provider")
|
util.GetLogger(ctx).WithError(err).WithField("ssoIdentifier", result.Identifier).Info("no suggested user ID from SSO provider")
|
||||||
localpart = result.Identifier.Subject
|
var res uapi.QueryNumericLocalpartResponse
|
||||||
|
if err := userAPI.QueryNumericLocalpart(ctx, &res); err != nil {
|
||||||
|
util.GetLogger(ctx).WithError(err).WithField("ssoIdentifier", result.Identifier).Error("failed to generate numeric localpart")
|
||||||
|
return jsonerror.InternalServerError()
|
||||||
|
}
|
||||||
|
localpart = strconv.FormatInt(res.ID, 10)
|
||||||
}
|
}
|
||||||
|
|
||||||
ok, resp := registerSSOAccount(ctx, userAPI, result.Identifier, localpart)
|
ok, resp := registerSSOAccount(ctx, userAPI, result.Identifier, localpart)
|
||||||
|
|
@ -254,6 +260,7 @@ type userAPIForSSO interface {
|
||||||
PerformAccountCreation(ctx context.Context, req *uapi.PerformAccountCreationRequest, res *uapi.PerformAccountCreationResponse) error
|
PerformAccountCreation(ctx context.Context, req *uapi.PerformAccountCreationRequest, res *uapi.PerformAccountCreationResponse) error
|
||||||
PerformSaveSSOAssociation(ctx context.Context, req *uapi.PerformSaveSSOAssociationRequest, res *struct{}) error
|
PerformSaveSSOAssociation(ctx context.Context, req *uapi.PerformSaveSSOAssociationRequest, res *struct{}) error
|
||||||
QueryLocalpartForSSO(ctx context.Context, req *uapi.QueryLocalpartForSSORequest, res *uapi.QueryLocalpartForSSOResponse) error
|
QueryLocalpartForSSO(ctx context.Context, req *uapi.QueryLocalpartForSSORequest, res *uapi.QueryLocalpartForSSOResponse) error
|
||||||
|
QueryNumericLocalpart(ctx context.Context, res *uapi.QueryNumericLocalpartResponse) error
|
||||||
}
|
}
|
||||||
|
|
||||||
// formatNonce creates a random nonce that also contains the URL.
|
// formatNonce creates a random nonce that also contains the URL.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue