Skip to content

Commit fd52c7e

Browse files
committed
msc3861: cr
1 parent f91cc64 commit fd52c7e

File tree

4 files changed

+15
-41
lines changed

4 files changed

+15
-41
lines changed

setup/monolith.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,11 @@ func (m *Monolith) AddAllPublicRoutes(
8989
}
9090

9191
type UserVerifierProvider struct {
92-
UserVerifier httputil.UserVerifier
92+
httputil.UserVerifier
9393
}
9494

9595
func (u *UserVerifierProvider) VerifyUserFromRequest(req *http.Request) (*userapi.Device, *util.JSONResponse) {
96-
return u.UserVerifier.VerifyUserFromRequest(req)
96+
return u.VerifyUserFromRequest(req)
9797
}
9898

9999
func NewUserVerifierProvider(userVerifier httputil.UserVerifier) *UserVerifierProvider {

setup/mscs/msc3861/msc3861_user_verifier.go

+7-16
Original file line numberDiff line numberDiff line change
@@ -202,17 +202,12 @@ func (m *MSC3861UserVerifier) getUserByAccessToken(ctx context.Context, token st
202202
}
203203

204204
localpart := ""
205-
{
206-
var rs api.QueryLocalpartExternalIDResponse
207-
if err = m.userAPI.QueryExternalUserIDByLocalpartAndProvider(ctx, &api.QueryLocalpartExternalIDRequest{
208-
ExternalID: sub,
209-
AuthProvider: externalAuthProvider,
210-
}, &rs); err != nil && err != sql.ErrNoRows {
211-
return nil, err
212-
}
213-
if l := rs.LocalpartExternalID; l != nil {
214-
localpart = l.Localpart
215-
}
205+
localpartExternalID, err := m.userAPI.QueryExternalUserIDByLocalpartAndProvider(ctx, sub, externalAuthProvider)
206+
if err != nil && err != sql.ErrNoRows {
207+
return nil, err
208+
}
209+
if localpartExternalID != nil {
210+
localpart = localpartExternalID.Localpart
216211
}
217212

218213
if localpart == "" {
@@ -253,11 +248,7 @@ func (m *MSC3861UserVerifier) getUserByAccessToken(ctx context.Context, token st
253248
}
254249
}
255250

256-
if err = m.userAPI.PerformLocalpartExternalUserIDCreation(ctx, &api.PerformLocalpartExternalUserIDCreationRequest{
257-
Localpart: userID.Local(),
258-
ExternalID: sub,
259-
AuthProvider: externalAuthProvider,
260-
}); err != nil {
251+
if err = m.userAPI.PerformLocalpartExternalUserIDCreation(ctx, userID.Local(), sub, externalAuthProvider); err != nil {
261252
logger.WithError(err).Error("PerformLocalpartExternalUserIDCreation")
262253
return nil, err
263254
}

userapi/api/api.go

+2-18
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ type UserInternalAPI interface {
3131
FederationUserAPI
3232

3333
QuerySearchProfilesAPI // used by p2p demos
34-
QueryExternalUserIDByLocalpartAndProvider(ctx context.Context, req *QueryLocalpartExternalIDRequest, res *QueryLocalpartExternalIDResponse) (err error)
35-
PerformLocalpartExternalUserIDCreation(ctx context.Context, req *PerformLocalpartExternalUserIDCreationRequest) (err error)
34+
QueryExternalUserIDByLocalpartAndProvider(ctx context.Context, externalID, authProvider string) (*LocalpartExternalID, error)
35+
PerformLocalpartExternalUserIDCreation(ctx context.Context, localpart, externalID, authProvider string) (error)
3636
}
3737

3838
// api functions required by the appservice api
@@ -667,22 +667,6 @@ type QueryAccountByLocalpartRequest struct {
667667
type QueryAccountByLocalpartResponse struct {
668668
Account *Account
669669
}
670-
671-
type QueryLocalpartExternalIDRequest struct {
672-
ExternalID string
673-
AuthProvider string
674-
}
675-
676-
type QueryLocalpartExternalIDResponse struct {
677-
LocalpartExternalID *LocalpartExternalID
678-
}
679-
680-
type PerformLocalpartExternalUserIDCreationRequest struct {
681-
Localpart string
682-
ExternalID string
683-
AuthProvider string
684-
}
685-
686670
// API functions required by the clientapi
687671
type ClientKeyAPI interface {
688672
UploadDeviceKeysAPI

userapi/internal/user_api.go

+4-5
Original file line numberDiff line numberDiff line change
@@ -604,13 +604,12 @@ func (a *UserInternalAPI) QueryAccountByLocalpart(ctx context.Context, req *api.
604604
return
605605
}
606606

607-
func (a *UserInternalAPI) PerformLocalpartExternalUserIDCreation(ctx context.Context, req *api.PerformLocalpartExternalUserIDCreationRequest) (err error) {
608-
return a.DB.CreateLocalpartExternalID(ctx, req.Localpart, req.ExternalID, req.AuthProvider)
607+
func (a *UserInternalAPI) PerformLocalpartExternalUserIDCreation(ctx context.Context, localpart, externalID, authProvider string) (err error) {
608+
return a.DB.CreateLocalpartExternalID(ctx, localpart, externalID, authProvider)
609609
}
610610

611-
func (a *UserInternalAPI) QueryExternalUserIDByLocalpartAndProvider(ctx context.Context, req *api.QueryLocalpartExternalIDRequest, res *api.QueryLocalpartExternalIDResponse) (err error) {
612-
res.LocalpartExternalID, err = a.DB.GetLocalpartForExternalID(ctx, req.ExternalID, req.AuthProvider)
613-
return
611+
func (a *UserInternalAPI) QueryExternalUserIDByLocalpartAndProvider(ctx context.Context, externalID, authProvider string) (*api.LocalpartExternalID, error) {
612+
return a.DB.GetLocalpartForExternalID(ctx, externalID, authProvider)
614613
}
615614

616615
// Return the appservice 'device' or nil if the token is not an appservice. Returns an error if there was a problem

0 commit comments

Comments
 (0)