mirror of
https://github.com/element-hq/dendrite.git
synced 2025-09-15 21:52:25 +03:00
cr fixes
This commit is contained in:
parent
bf31c44298
commit
a185027fda
4 changed files with 18 additions and 23 deletions
|
@ -551,12 +551,6 @@ func AdminUserDeviceRetrieveCreate(
|
||||||
|
|
||||||
switch req.Method {
|
switch req.Method {
|
||||||
case http.MethodPost:
|
case http.MethodPost:
|
||||||
if err != nil {
|
|
||||||
return util.JSONResponse{
|
|
||||||
Code: http.StatusBadRequest,
|
|
||||||
JSON: spec.InvalidParam(userID),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var payload struct {
|
var payload struct {
|
||||||
DeviceID string `json:"device_id"`
|
DeviceID string `json:"device_id"`
|
||||||
}
|
}
|
||||||
|
@ -980,11 +974,10 @@ func AdminRetrieveAccount(req *http.Request, cfg *config.ClientAPI, userAPI user
|
||||||
Code: http.StatusNotFound,
|
Code: http.StatusNotFound,
|
||||||
JSON: spec.NotFound(err.Error()),
|
JSON: spec.NotFound(err.Error()),
|
||||||
}
|
}
|
||||||
} else if err != nil {
|
}
|
||||||
return util.JSONResponse{
|
return util.JSONResponse{
|
||||||
Code: http.StatusInternalServerError,
|
Code: http.StatusInternalServerError,
|
||||||
JSON: spec.Unknown(err.Error()),
|
JSON: spec.Unknown(err.Error()),
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
body.AvatarURL = profile.AvatarURL
|
body.AvatarURL = profile.AvatarURL
|
||||||
|
|
|
@ -58,6 +58,9 @@ func WithAuth() AuthAPIOption {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UserVerifier verifies users by their access tokens. Currently, there are two interface implementations:
|
||||||
|
// DefaultUserVerifier and MSC3861UserVerifier. The first one checks if the token exists in the server's database,
|
||||||
|
// whereas the latter passes the token for verification to MAS and acts in accordance with MAS's response.
|
||||||
type UserVerifier interface {
|
type UserVerifier interface {
|
||||||
// VerifyUserFromRequest authenticates the HTTP request,
|
// VerifyUserFromRequest authenticates the HTTP request,
|
||||||
// on success returns Device of the requester.
|
// on success returns Device of the requester.
|
||||||
|
|
|
@ -354,14 +354,13 @@ func (m *MSC3861UserVerifier) introspectToken(ctx context.Context, token string)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
body := resp.Body
|
|
||||||
defer resp.Body.Close() // nolint: errcheck
|
defer resp.Body.Close() // nolint: errcheck
|
||||||
|
|
||||||
if c := resp.StatusCode; c/100 != 2 {
|
if c := resp.StatusCode; c/100 != 2 {
|
||||||
return nil, errors.New(strings.Join([]string{"The introspection endpoint returned a '", resp.Status, "' response"}, ""))
|
return nil, errors.New(strings.Join([]string{"The introspection endpoint returned a '", resp.Status, "' response"}, ""))
|
||||||
}
|
}
|
||||||
var ir introspectionResponse
|
var ir introspectionResponse
|
||||||
if err := json.NewDecoder(body).Decode(&ir); err != nil {
|
if err := json.NewDecoder(resp.Body).Decode(&ir); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &ir, nil
|
return &ir, nil
|
||||||
|
|
|
@ -120,14 +120,14 @@ func (s *syncUserAPI) PerformLastSeenUpdate(ctx context.Context, req *userapi.Pe
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type userVerifier struct {
|
type mockUserVerifier struct {
|
||||||
accessTokenToDeviceAndResponse map[string]struct {
|
accessTokenToDeviceAndResponse map[string]struct {
|
||||||
Device *userapi.Device
|
Device *userapi.Device
|
||||||
Response *util.JSONResponse
|
Response *util.JSONResponse
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *userVerifier) VerifyUserFromRequest(req *http.Request) (*userapi.Device, *util.JSONResponse) {
|
func (u *mockUserVerifier) VerifyUserFromRequest(req *http.Request) (*userapi.Device, *util.JSONResponse) {
|
||||||
if pair, ok := u.accessTokenToDeviceAndResponse[req.URL.Query().Get("access_token")]; ok {
|
if pair, ok := u.accessTokenToDeviceAndResponse[req.URL.Query().Get("access_token")]; ok {
|
||||||
return pair.Device, pair.Response
|
return pair.Device, pair.Response
|
||||||
}
|
}
|
||||||
|
@ -161,7 +161,7 @@ func testSyncAccessTokens(t *testing.T, dbType test.DBType) {
|
||||||
jsctx, _ := natsInstance.Prepare(processCtx, &cfg.Global.JetStream)
|
jsctx, _ := natsInstance.Prepare(processCtx, &cfg.Global.JetStream)
|
||||||
defer jetstream.DeleteAllStreams(jsctx, &cfg.Global.JetStream)
|
defer jetstream.DeleteAllStreams(jsctx, &cfg.Global.JetStream)
|
||||||
msgs := toNATSMsgs(t, cfg, room.Events()...)
|
msgs := toNATSMsgs(t, cfg, room.Events()...)
|
||||||
uv := &userVerifier{}
|
uv := &mockUserVerifier{}
|
||||||
|
|
||||||
AddPublicRoutes(processCtx, routers, cfg, cm, &natsInstance, &syncUserAPI{accounts: []userapi.Device{alice}}, &syncRoomserverAPI{rooms: []*test.Room{room}}, caches, uv, caching.DisableMetrics)
|
AddPublicRoutes(processCtx, routers, cfg, cm, &natsInstance, &syncUserAPI{accounts: []userapi.Device{alice}}, &syncRoomserverAPI{rooms: []*test.Room{room}}, caches, uv, caching.DisableMetrics)
|
||||||
testrig.MustPublishMsgs(t, jsctx, msgs...)
|
testrig.MustPublishMsgs(t, jsctx, msgs...)
|
||||||
|
@ -284,7 +284,7 @@ func testSyncEventFormatPowerLevels(t *testing.T, dbType test.DBType) {
|
||||||
cm := sqlutil.NewConnectionManager(processCtx, cfg.Global.DatabaseOptions)
|
cm := sqlutil.NewConnectionManager(processCtx, cfg.Global.DatabaseOptions)
|
||||||
caches := caching.NewRistrettoCache(128*1024*1024, time.Hour, caching.DisableMetrics)
|
caches := caching.NewRistrettoCache(128*1024*1024, time.Hour, caching.DisableMetrics)
|
||||||
natsInstance := jetstream.NATSInstance{}
|
natsInstance := jetstream.NATSInstance{}
|
||||||
uv := userVerifier{
|
uv := mockUserVerifier{
|
||||||
accessTokenToDeviceAndResponse: map[string]struct {
|
accessTokenToDeviceAndResponse: map[string]struct {
|
||||||
Device *userapi.Device
|
Device *userapi.Device
|
||||||
Response *util.JSONResponse
|
Response *util.JSONResponse
|
||||||
|
@ -538,7 +538,7 @@ func testSyncAPIUpdatePresenceImmediately(t *testing.T, dbType test.DBType) {
|
||||||
|
|
||||||
jsctx, _ := natsInstance.Prepare(processCtx, &cfg.Global.JetStream)
|
jsctx, _ := natsInstance.Prepare(processCtx, &cfg.Global.JetStream)
|
||||||
defer jetstream.DeleteAllStreams(jsctx, &cfg.Global.JetStream)
|
defer jetstream.DeleteAllStreams(jsctx, &cfg.Global.JetStream)
|
||||||
uv := userVerifier{
|
uv := mockUserVerifier{
|
||||||
accessTokenToDeviceAndResponse: map[string]struct {
|
accessTokenToDeviceAndResponse: map[string]struct {
|
||||||
Device *userapi.Device
|
Device *userapi.Device
|
||||||
Response *util.JSONResponse
|
Response *util.JSONResponse
|
||||||
|
@ -668,7 +668,7 @@ func testHistoryVisibility(t *testing.T, dbType test.DBType) {
|
||||||
// Use the actual internal roomserver API
|
// Use the actual internal roomserver API
|
||||||
rsAPI := roomserver.NewInternalAPI(processCtx, cfg, cm, &natsInstance, caches, caching.DisableMetrics)
|
rsAPI := roomserver.NewInternalAPI(processCtx, cfg, cm, &natsInstance, caches, caching.DisableMetrics)
|
||||||
rsAPI.SetFederationAPI(nil, nil)
|
rsAPI.SetFederationAPI(nil, nil)
|
||||||
uv := userVerifier{
|
uv := mockUserVerifier{
|
||||||
accessTokenToDeviceAndResponse: map[string]struct {
|
accessTokenToDeviceAndResponse: map[string]struct {
|
||||||
Device *userapi.Device
|
Device *userapi.Device
|
||||||
Response *util.JSONResponse
|
Response *util.JSONResponse
|
||||||
|
@ -946,7 +946,7 @@ func TestGetMembership(t *testing.T) {
|
||||||
// Use an actual roomserver for this
|
// Use an actual roomserver for this
|
||||||
rsAPI := roomserver.NewInternalAPI(processCtx, cfg, cm, &natsInstance, caches, caching.DisableMetrics)
|
rsAPI := roomserver.NewInternalAPI(processCtx, cfg, cm, &natsInstance, caches, caching.DisableMetrics)
|
||||||
rsAPI.SetFederationAPI(nil, nil)
|
rsAPI.SetFederationAPI(nil, nil)
|
||||||
uv := userVerifier{
|
uv := mockUserVerifier{
|
||||||
accessTokenToDeviceAndResponse: map[string]struct {
|
accessTokenToDeviceAndResponse: map[string]struct {
|
||||||
Device *userapi.Device
|
Device *userapi.Device
|
||||||
Response *util.JSONResponse
|
Response *util.JSONResponse
|
||||||
|
@ -1023,7 +1023,7 @@ func testSendToDevice(t *testing.T, dbType test.DBType) {
|
||||||
caches := caching.NewRistrettoCache(128*1024*1024, time.Hour, caching.DisableMetrics)
|
caches := caching.NewRistrettoCache(128*1024*1024, time.Hour, caching.DisableMetrics)
|
||||||
defer close()
|
defer close()
|
||||||
natsInstance := jetstream.NATSInstance{}
|
natsInstance := jetstream.NATSInstance{}
|
||||||
uv := userVerifier{
|
uv := mockUserVerifier{
|
||||||
accessTokenToDeviceAndResponse: map[string]struct {
|
accessTokenToDeviceAndResponse: map[string]struct {
|
||||||
Device *userapi.Device
|
Device *userapi.Device
|
||||||
Response *util.JSONResponse
|
Response *util.JSONResponse
|
||||||
|
@ -1257,7 +1257,7 @@ func testContext(t *testing.T, dbType test.DBType) {
|
||||||
rsAPI := roomserver.NewInternalAPI(processCtx, cfg, cm, &natsInstance, caches, caching.DisableMetrics)
|
rsAPI := roomserver.NewInternalAPI(processCtx, cfg, cm, &natsInstance, caches, caching.DisableMetrics)
|
||||||
rsAPI.SetFederationAPI(nil, nil)
|
rsAPI.SetFederationAPI(nil, nil)
|
||||||
|
|
||||||
uv := userVerifier{
|
uv := mockUserVerifier{
|
||||||
accessTokenToDeviceAndResponse: map[string]struct {
|
accessTokenToDeviceAndResponse: map[string]struct {
|
||||||
Device *userapi.Device
|
Device *userapi.Device
|
||||||
Response *util.JSONResponse
|
Response *util.JSONResponse
|
||||||
|
@ -1445,7 +1445,7 @@ func TestRemoveEditedEventFromSearchIndex(t *testing.T) {
|
||||||
|
|
||||||
rsAPI := roomserver.NewInternalAPI(processCtx, cfg, cm, &natsInstance, caches, caching.DisableMetrics)
|
rsAPI := roomserver.NewInternalAPI(processCtx, cfg, cm, &natsInstance, caches, caching.DisableMetrics)
|
||||||
rsAPI.SetFederationAPI(nil, nil)
|
rsAPI.SetFederationAPI(nil, nil)
|
||||||
uv := userVerifier{
|
uv := mockUserVerifier{
|
||||||
accessTokenToDeviceAndResponse: map[string]struct {
|
accessTokenToDeviceAndResponse: map[string]struct {
|
||||||
Device *userapi.Device
|
Device *userapi.Device
|
||||||
Response *util.JSONResponse
|
Response *util.JSONResponse
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue