msc3861: cr

This commit is contained in:
Roman Isaev 2025-02-12 17:45:31 +00:00
parent f91cc64401
commit fd52c7eb1f
No known key found for this signature in database
GPG key ID: 7BE2B6A6C89AEC7F
4 changed files with 15 additions and 41 deletions

View file

@ -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 {

View file

@ -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
}

View file

@ -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

View file

@ -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