mirror of
https://github.com/element-hq/dendrite.git
synced 2025-03-14 14:15:35 +00:00
msc3861: cr
This commit is contained in:
parent
f91cc64401
commit
fd52c7eb1f
4 changed files with 15 additions and 41 deletions
|
@ -89,11 +89,11 @@ func (m *Monolith) AddAllPublicRoutes(
|
|||
}
|
||||
|
||||
type UserVerifierProvider struct {
|
||||
UserVerifier httputil.UserVerifier
|
||||
httputil.UserVerifier
|
||||
}
|
||||
|
||||
func (u *UserVerifierProvider) VerifyUserFromRequest(req *http.Request) (*userapi.Device, *util.JSONResponse) {
|
||||
return u.UserVerifier.VerifyUserFromRequest(req)
|
||||
return u.VerifyUserFromRequest(req)
|
||||
}
|
||||
|
||||
func NewUserVerifierProvider(userVerifier httputil.UserVerifier) *UserVerifierProvider {
|
||||
|
|
|
@ -202,17 +202,12 @@ func (m *MSC3861UserVerifier) getUserByAccessToken(ctx context.Context, token st
|
|||
}
|
||||
|
||||
localpart := ""
|
||||
{
|
||||
var rs api.QueryLocalpartExternalIDResponse
|
||||
if err = m.userAPI.QueryExternalUserIDByLocalpartAndProvider(ctx, &api.QueryLocalpartExternalIDRequest{
|
||||
ExternalID: sub,
|
||||
AuthProvider: externalAuthProvider,
|
||||
}, &rs); err != nil && err != sql.ErrNoRows {
|
||||
return nil, err
|
||||
}
|
||||
if l := rs.LocalpartExternalID; l != nil {
|
||||
localpart = l.Localpart
|
||||
}
|
||||
localpartExternalID, err := m.userAPI.QueryExternalUserIDByLocalpartAndProvider(ctx, sub, externalAuthProvider)
|
||||
if err != nil && err != sql.ErrNoRows {
|
||||
return nil, err
|
||||
}
|
||||
if localpartExternalID != nil {
|
||||
localpart = localpartExternalID.Localpart
|
||||
}
|
||||
|
||||
if localpart == "" {
|
||||
|
@ -253,11 +248,7 @@ func (m *MSC3861UserVerifier) getUserByAccessToken(ctx context.Context, token st
|
|||
}
|
||||
}
|
||||
|
||||
if err = m.userAPI.PerformLocalpartExternalUserIDCreation(ctx, &api.PerformLocalpartExternalUserIDCreationRequest{
|
||||
Localpart: userID.Local(),
|
||||
ExternalID: sub,
|
||||
AuthProvider: externalAuthProvider,
|
||||
}); err != nil {
|
||||
if err = m.userAPI.PerformLocalpartExternalUserIDCreation(ctx, userID.Local(), sub, externalAuthProvider); err != nil {
|
||||
logger.WithError(err).Error("PerformLocalpartExternalUserIDCreation")
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -31,8 +31,8 @@ type UserInternalAPI interface {
|
|||
FederationUserAPI
|
||||
|
||||
QuerySearchProfilesAPI // used by p2p demos
|
||||
QueryExternalUserIDByLocalpartAndProvider(ctx context.Context, req *QueryLocalpartExternalIDRequest, res *QueryLocalpartExternalIDResponse) (err error)
|
||||
PerformLocalpartExternalUserIDCreation(ctx context.Context, req *PerformLocalpartExternalUserIDCreationRequest) (err error)
|
||||
QueryExternalUserIDByLocalpartAndProvider(ctx context.Context, externalID, authProvider string) (*LocalpartExternalID, error)
|
||||
PerformLocalpartExternalUserIDCreation(ctx context.Context, localpart, externalID, authProvider string) (error)
|
||||
}
|
||||
|
||||
// api functions required by the appservice api
|
||||
|
@ -667,22 +667,6 @@ type QueryAccountByLocalpartRequest struct {
|
|||
type QueryAccountByLocalpartResponse struct {
|
||||
Account *Account
|
||||
}
|
||||
|
||||
type QueryLocalpartExternalIDRequest struct {
|
||||
ExternalID string
|
||||
AuthProvider string
|
||||
}
|
||||
|
||||
type QueryLocalpartExternalIDResponse struct {
|
||||
LocalpartExternalID *LocalpartExternalID
|
||||
}
|
||||
|
||||
type PerformLocalpartExternalUserIDCreationRequest struct {
|
||||
Localpart string
|
||||
ExternalID string
|
||||
AuthProvider string
|
||||
}
|
||||
|
||||
// API functions required by the clientapi
|
||||
type ClientKeyAPI interface {
|
||||
UploadDeviceKeysAPI
|
||||
|
|
|
@ -604,13 +604,12 @@ func (a *UserInternalAPI) QueryAccountByLocalpart(ctx context.Context, req *api.
|
|||
return
|
||||
}
|
||||
|
||||
func (a *UserInternalAPI) PerformLocalpartExternalUserIDCreation(ctx context.Context, req *api.PerformLocalpartExternalUserIDCreationRequest) (err error) {
|
||||
return a.DB.CreateLocalpartExternalID(ctx, req.Localpart, req.ExternalID, req.AuthProvider)
|
||||
func (a *UserInternalAPI) PerformLocalpartExternalUserIDCreation(ctx context.Context, localpart, externalID, authProvider string) (err error) {
|
||||
return a.DB.CreateLocalpartExternalID(ctx, localpart, externalID, authProvider)
|
||||
}
|
||||
|
||||
func (a *UserInternalAPI) QueryExternalUserIDByLocalpartAndProvider(ctx context.Context, req *api.QueryLocalpartExternalIDRequest, res *api.QueryLocalpartExternalIDResponse) (err error) {
|
||||
res.LocalpartExternalID, err = a.DB.GetLocalpartForExternalID(ctx, req.ExternalID, req.AuthProvider)
|
||||
return
|
||||
func (a *UserInternalAPI) QueryExternalUserIDByLocalpartAndProvider(ctx context.Context, externalID, authProvider string) (*api.LocalpartExternalID, error) {
|
||||
return a.DB.GetLocalpartForExternalID(ctx, externalID, authProvider)
|
||||
}
|
||||
|
||||
// Return the appservice 'device' or nil if the token is not an appservice. Returns an error if there was a problem
|
||||
|
|
Loading…
Add table
Reference in a new issue