mirror of
https://github.com/grafana/grafana.git
synced 2025-07-30 08:52:15 +08:00
add context to getsignedinUser calls (#35963)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
This commit is contained in:
@ -65,7 +65,7 @@ func AdminUpdateUserPassword(c *models.ReqContext, form dtos.AdminUpdateUserPass
|
|||||||
|
|
||||||
userQuery := models.GetUserByIdQuery{Id: userID}
|
userQuery := models.GetUserByIdQuery{Id: userID}
|
||||||
|
|
||||||
if err := bus.Dispatch(&userQuery); err != nil {
|
if err := bus.DispatchCtx(c.Req.Context(), &userQuery); err != nil {
|
||||||
return response.Error(500, "Could not read user from database", err)
|
return response.Error(500, "Could not read user from database", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
@ -54,7 +55,7 @@ func TestAdminAPIEndpoint(t *testing.T) {
|
|||||||
t.Run("When a server admin attempts to logout himself from all devices", func(t *testing.T) {
|
t.Run("When a server admin attempts to logout himself from all devices", func(t *testing.T) {
|
||||||
adminLogoutUserScenario(t, "Should not be allowed when calling POST on",
|
adminLogoutUserScenario(t, "Should not be allowed when calling POST on",
|
||||||
"/api/admin/users/1/logout", "/api/admin/users/:id/logout", func(sc *scenarioContext) {
|
"/api/admin/users/1/logout", "/api/admin/users/:id/logout", func(sc *scenarioContext) {
|
||||||
bus.AddHandler("test", func(cmd *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, cmd *models.GetUserByIdQuery) error {
|
||||||
cmd.Result = &models.User{Id: testUserID}
|
cmd.Result = &models.User{Id: testUserID}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
@ -69,7 +70,7 @@ func TestAdminAPIEndpoint(t *testing.T) {
|
|||||||
"/api/admin/users/:id/logout", func(sc *scenarioContext) {
|
"/api/admin/users/:id/logout", func(sc *scenarioContext) {
|
||||||
userID := int64(0)
|
userID := int64(0)
|
||||||
|
|
||||||
bus.AddHandler("test", func(cmd *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, cmd *models.GetUserByIdQuery) error {
|
||||||
userID = cmd.Id
|
userID = cmd.Id
|
||||||
return models.ErrUserNotFound
|
return models.ErrUserNotFound
|
||||||
})
|
})
|
||||||
@ -85,7 +86,7 @@ func TestAdminAPIEndpoint(t *testing.T) {
|
|||||||
adminRevokeUserAuthTokenScenario(t, "Should return not found when calling POST on",
|
adminRevokeUserAuthTokenScenario(t, "Should return not found when calling POST on",
|
||||||
"/api/admin/users/200/revoke-auth-token", "/api/admin/users/:id/revoke-auth-token", cmd, func(sc *scenarioContext) {
|
"/api/admin/users/200/revoke-auth-token", "/api/admin/users/:id/revoke-auth-token", cmd, func(sc *scenarioContext) {
|
||||||
var userID int64
|
var userID int64
|
||||||
bus.AddHandler("test", func(cmd *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, cmd *models.GetUserByIdQuery) error {
|
||||||
userID = cmd.Id
|
userID = cmd.Id
|
||||||
return models.ErrUserNotFound
|
return models.ErrUserNotFound
|
||||||
})
|
})
|
||||||
@ -100,7 +101,7 @@ func TestAdminAPIEndpoint(t *testing.T) {
|
|||||||
adminGetUserAuthTokensScenario(t, "Should return not found when calling GET on",
|
adminGetUserAuthTokensScenario(t, "Should return not found when calling GET on",
|
||||||
"/api/admin/users/200/auth-tokens", "/api/admin/users/:id/auth-tokens", func(sc *scenarioContext) {
|
"/api/admin/users/200/auth-tokens", "/api/admin/users/:id/auth-tokens", func(sc *scenarioContext) {
|
||||||
var userID int64
|
var userID int64
|
||||||
bus.AddHandler("test", func(cmd *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, cmd *models.GetUserByIdQuery) error {
|
||||||
userID = cmd.Id
|
userID = cmd.Id
|
||||||
return models.ErrUserNotFound
|
return models.ErrUserNotFound
|
||||||
})
|
})
|
||||||
|
@ -107,10 +107,10 @@ func (hs *HTTPServer) GetDashboard(c *models.ReqContext) response.Response {
|
|||||||
// Finding creator and last updater of the dashboard
|
// Finding creator and last updater of the dashboard
|
||||||
updater, creator := anonString, anonString
|
updater, creator := anonString, anonString
|
||||||
if dash.UpdatedBy > 0 {
|
if dash.UpdatedBy > 0 {
|
||||||
updater = getUserLogin(dash.UpdatedBy)
|
updater = getUserLogin(c.Req.Context(), dash.UpdatedBy)
|
||||||
}
|
}
|
||||||
if dash.CreatedBy > 0 {
|
if dash.CreatedBy > 0 {
|
||||||
creator = getUserLogin(dash.CreatedBy)
|
creator = getUserLogin(c.Req.Context(), dash.CreatedBy)
|
||||||
}
|
}
|
||||||
|
|
||||||
meta := dtos.DashboardMeta{
|
meta := dtos.DashboardMeta{
|
||||||
@ -188,9 +188,9 @@ func (hs *HTTPServer) GetDashboard(c *models.ReqContext) response.Response {
|
|||||||
return response.JSON(200, dto)
|
return response.JSON(200, dto)
|
||||||
}
|
}
|
||||||
|
|
||||||
func getUserLogin(userID int64) string {
|
func getUserLogin(ctx context.Context, userID int64) string {
|
||||||
query := models.GetUserByIdQuery{Id: userID}
|
query := models.GetUserByIdQuery{Id: userID}
|
||||||
err := bus.Dispatch(&query)
|
err := bus.DispatchCtx(ctx, &query)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return anonString
|
return anonString
|
||||||
}
|
}
|
||||||
@ -562,7 +562,7 @@ func GetDashboardVersion(c *models.ReqContext) response.Response {
|
|||||||
|
|
||||||
creator := anonString
|
creator := anonString
|
||||||
if query.Result.CreatedBy > 0 {
|
if query.Result.CreatedBy > 0 {
|
||||||
creator = getUserLogin(query.Result.CreatedBy)
|
creator = getUserLogin(c.Req.Context(), query.Result.CreatedBy)
|
||||||
}
|
}
|
||||||
|
|
||||||
dashVersionMeta := &models.DashboardVersionMeta{
|
dashVersionMeta := &models.DashboardVersionMeta{
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
@ -42,7 +43,7 @@ func (hs *HTTPServer) GetFolderByUID(c *models.ReqContext) response.Response {
|
|||||||
}
|
}
|
||||||
|
|
||||||
g := guardian.New(folder.Id, c.OrgId, c.SignedInUser)
|
g := guardian.New(folder.Id, c.OrgId, c.SignedInUser)
|
||||||
return response.JSON(200, toFolderDto(g, folder))
|
return response.JSON(200, toFolderDto(c.Req.Context(), g, folder))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (hs *HTTPServer) GetFolderByID(c *models.ReqContext) response.Response {
|
func (hs *HTTPServer) GetFolderByID(c *models.ReqContext) response.Response {
|
||||||
@ -53,7 +54,7 @@ func (hs *HTTPServer) GetFolderByID(c *models.ReqContext) response.Response {
|
|||||||
}
|
}
|
||||||
|
|
||||||
g := guardian.New(folder.Id, c.OrgId, c.SignedInUser)
|
g := guardian.New(folder.Id, c.OrgId, c.SignedInUser)
|
||||||
return response.JSON(200, toFolderDto(g, folder))
|
return response.JSON(200, toFolderDto(c.Req.Context(), g, folder))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (hs *HTTPServer) CreateFolder(c *models.ReqContext, cmd models.CreateFolderCommand) response.Response {
|
func (hs *HTTPServer) CreateFolder(c *models.ReqContext, cmd models.CreateFolderCommand) response.Response {
|
||||||
@ -71,7 +72,7 @@ func (hs *HTTPServer) CreateFolder(c *models.ReqContext, cmd models.CreateFolder
|
|||||||
}
|
}
|
||||||
|
|
||||||
g := guardian.New(folder.Id, c.OrgId, c.SignedInUser)
|
g := guardian.New(folder.Id, c.OrgId, c.SignedInUser)
|
||||||
return response.JSON(200, toFolderDto(g, folder))
|
return response.JSON(200, toFolderDto(c.Req.Context(), g, folder))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (hs *HTTPServer) UpdateFolder(c *models.ReqContext, cmd models.UpdateFolderCommand) response.Response {
|
func (hs *HTTPServer) UpdateFolder(c *models.ReqContext, cmd models.UpdateFolderCommand) response.Response {
|
||||||
@ -82,7 +83,7 @@ func (hs *HTTPServer) UpdateFolder(c *models.ReqContext, cmd models.UpdateFolder
|
|||||||
}
|
}
|
||||||
|
|
||||||
g := guardian.New(cmd.Result.Id, c.OrgId, c.SignedInUser)
|
g := guardian.New(cmd.Result.Id, c.OrgId, c.SignedInUser)
|
||||||
return response.JSON(200, toFolderDto(g, cmd.Result))
|
return response.JSON(200, toFolderDto(c.Req.Context(), g, cmd.Result))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (hs *HTTPServer) DeleteFolder(c *models.ReqContext) response.Response { // temporarily adding this function to HTTPServer, will be removed from HTTPServer when librarypanels featuretoggle is removed
|
func (hs *HTTPServer) DeleteFolder(c *models.ReqContext) response.Response { // temporarily adding this function to HTTPServer, will be removed from HTTPServer when librarypanels featuretoggle is removed
|
||||||
@ -107,7 +108,7 @@ func (hs *HTTPServer) DeleteFolder(c *models.ReqContext) response.Response { //
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func toFolderDto(g guardian.DashboardGuardian, folder *models.Folder) dtos.Folder {
|
func toFolderDto(ctx context.Context, g guardian.DashboardGuardian, folder *models.Folder) dtos.Folder {
|
||||||
canEdit, _ := g.CanEdit()
|
canEdit, _ := g.CanEdit()
|
||||||
canSave, _ := g.CanSave()
|
canSave, _ := g.CanSave()
|
||||||
canAdmin, _ := g.CanAdmin()
|
canAdmin, _ := g.CanAdmin()
|
||||||
@ -115,10 +116,10 @@ func toFolderDto(g guardian.DashboardGuardian, folder *models.Folder) dtos.Folde
|
|||||||
// Finding creator and last updater of the folder
|
// Finding creator and last updater of the folder
|
||||||
updater, creator := anonString, anonString
|
updater, creator := anonString, anonString
|
||||||
if folder.CreatedBy > 0 {
|
if folder.CreatedBy > 0 {
|
||||||
creator = getUserLogin(folder.CreatedBy)
|
creator = getUserLogin(ctx, folder.CreatedBy)
|
||||||
}
|
}
|
||||||
if folder.UpdatedBy > 0 {
|
if folder.UpdatedBy > 0 {
|
||||||
updater = getUserLogin(folder.UpdatedBy)
|
updater = getUserLogin(ctx, folder.UpdatedBy)
|
||||||
}
|
}
|
||||||
|
|
||||||
return dtos.Folder{
|
return dtos.Folder{
|
||||||
|
@ -165,7 +165,7 @@ func (hs *HTTPServer) PostSyncUserWithLDAP(c *models.ReqContext) response.Respon
|
|||||||
|
|
||||||
query := models.GetUserByIdQuery{Id: userId}
|
query := models.GetUserByIdQuery{Id: userId}
|
||||||
|
|
||||||
if err := bus.Dispatch(&query); err != nil { // validate the userId exists
|
if err := bus.DispatchCtx(c.Req.Context(), &query); err != nil { // validate the userId exists
|
||||||
if errors.Is(err, models.ErrUserNotFound) {
|
if errors.Is(err, models.ErrUserNotFound) {
|
||||||
return response.Error(404, models.ErrUserNotFound.Error(), nil)
|
return response.Error(404, models.ErrUserNotFound.Error(), nil)
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
@ -434,7 +435,7 @@ func TestPostSyncUserWithLDAPAPIEndpoint_Success(t *testing.T) {
|
|||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
bus.AddHandler("test", func(q *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, q *models.GetUserByIdQuery) error {
|
||||||
require.Equal(t, q.Id, int64(34))
|
require.Equal(t, q.Id, int64(34))
|
||||||
|
|
||||||
q.Result = &models.User{Login: "ldap-daniel", Id: 34}
|
q.Result = &models.User{Login: "ldap-daniel", Id: 34}
|
||||||
@ -470,7 +471,7 @@ func TestPostSyncUserWithLDAPAPIEndpoint_WhenUserNotFound(t *testing.T) {
|
|||||||
return &LDAPMock{}
|
return &LDAPMock{}
|
||||||
}
|
}
|
||||||
|
|
||||||
bus.AddHandler("test", func(q *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, q *models.GetUserByIdQuery) error {
|
||||||
require.Equal(t, q.Id, int64(34))
|
require.Equal(t, q.Id, int64(34))
|
||||||
|
|
||||||
return models.ErrUserNotFound
|
return models.ErrUserNotFound
|
||||||
@ -502,7 +503,7 @@ func TestPostSyncUserWithLDAPAPIEndpoint_WhenGrafanaAdmin(t *testing.T) {
|
|||||||
|
|
||||||
sc.cfg.AdminUser = "ldap-daniel"
|
sc.cfg.AdminUser = "ldap-daniel"
|
||||||
|
|
||||||
bus.AddHandler("test", func(q *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, q *models.GetUserByIdQuery) error {
|
||||||
require.Equal(t, q.Id, int64(34))
|
require.Equal(t, q.Id, int64(34))
|
||||||
|
|
||||||
q.Result = &models.User{Login: "ldap-daniel", Id: 34}
|
q.Result = &models.User{Login: "ldap-daniel", Id: 34}
|
||||||
@ -546,7 +547,7 @@ func TestPostSyncUserWithLDAPAPIEndpoint_WhenUserNotInLDAP(t *testing.T) {
|
|||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
bus.AddHandler("test", func(q *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, q *models.GetUserByIdQuery) error {
|
||||||
require.Equal(t, q.Id, int64(34))
|
require.Equal(t, q.Id, int64(34))
|
||||||
|
|
||||||
q.Result = &models.User{Login: "ldap-daniel", Id: 34}
|
q.Result = &models.User{Login: "ldap-daniel", Id: 34}
|
||||||
@ -687,7 +688,7 @@ func TestLDAP_AccessControl(t *testing.T) {
|
|||||||
return &LDAPMock{}
|
return &LDAPMock{}
|
||||||
}
|
}
|
||||||
|
|
||||||
bus.AddHandler("test", func(q *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, q *models.GetUserByIdQuery) error {
|
||||||
q.Result = &models.User{}
|
q.Result = &models.User{}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
@ -223,7 +223,7 @@ func ChangeUserPassword(c *models.ReqContext, cmd models.ChangeUserPasswordComma
|
|||||||
|
|
||||||
userQuery := models.GetUserByIdQuery{Id: c.UserId}
|
userQuery := models.GetUserByIdQuery{Id: c.UserId}
|
||||||
|
|
||||||
if err := bus.Dispatch(&userQuery); err != nil {
|
if err := bus.DispatchCtx(c.Req.Context(), &userQuery); err != nil {
|
||||||
return response.Error(500, "Could not read user from database", err)
|
return response.Error(500, "Could not read user from database", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ func (hs *HTTPServer) RevokeUserAuthToken(c *models.ReqContext, cmd models.Revok
|
|||||||
func (hs *HTTPServer) logoutUserFromAllDevicesInternal(ctx context.Context, userID int64) response.Response {
|
func (hs *HTTPServer) logoutUserFromAllDevicesInternal(ctx context.Context, userID int64) response.Response {
|
||||||
userQuery := models.GetUserByIdQuery{Id: userID}
|
userQuery := models.GetUserByIdQuery{Id: userID}
|
||||||
|
|
||||||
if err := bus.Dispatch(&userQuery); err != nil {
|
if err := bus.DispatchCtx(ctx, &userQuery); err != nil {
|
||||||
if errors.Is(err, models.ErrUserNotFound) {
|
if errors.Is(err, models.ErrUserNotFound) {
|
||||||
return response.Error(404, "User not found", err)
|
return response.Error(404, "User not found", err)
|
||||||
}
|
}
|
||||||
@ -46,7 +46,7 @@ func (hs *HTTPServer) logoutUserFromAllDevicesInternal(ctx context.Context, user
|
|||||||
func (hs *HTTPServer) getUserAuthTokensInternal(c *models.ReqContext, userID int64) response.Response {
|
func (hs *HTTPServer) getUserAuthTokensInternal(c *models.ReqContext, userID int64) response.Response {
|
||||||
userQuery := models.GetUserByIdQuery{Id: userID}
|
userQuery := models.GetUserByIdQuery{Id: userID}
|
||||||
|
|
||||||
if err := bus.Dispatch(&userQuery); err != nil {
|
if err := bus.DispatchCtx(c.Req.Context(), &userQuery); err != nil {
|
||||||
if errors.Is(err, models.ErrUserNotFound) {
|
if errors.Is(err, models.ErrUserNotFound) {
|
||||||
return response.Error(404, "User not found", err)
|
return response.Error(404, "User not found", err)
|
||||||
}
|
}
|
||||||
@ -113,7 +113,7 @@ func (hs *HTTPServer) getUserAuthTokensInternal(c *models.ReqContext, userID int
|
|||||||
func (hs *HTTPServer) revokeUserAuthTokenInternal(c *models.ReqContext, userID int64, cmd models.RevokeAuthTokenCmd) response.Response {
|
func (hs *HTTPServer) revokeUserAuthTokenInternal(c *models.ReqContext, userID int64, cmd models.RevokeAuthTokenCmd) response.Response {
|
||||||
userQuery := models.GetUserByIdQuery{Id: userID}
|
userQuery := models.GetUserByIdQuery{Id: userID}
|
||||||
|
|
||||||
if err := bus.Dispatch(&userQuery); err != nil {
|
if err := bus.DispatchCtx(c.Req.Context(), &userQuery); err != nil {
|
||||||
if errors.Is(err, models.ErrUserNotFound) {
|
if errors.Is(err, models.ErrUserNotFound) {
|
||||||
return response.Error(404, "User not found", err)
|
return response.Error(404, "User not found", err)
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ func TestUserTokenAPIEndpoint(t *testing.T) {
|
|||||||
revokeUserAuthTokenScenario(t, "Should return not found when calling POST on", "/api/user/revoke-auth-token",
|
revokeUserAuthTokenScenario(t, "Should return not found when calling POST on", "/api/user/revoke-auth-token",
|
||||||
"/api/user/revoke-auth-token", cmd, 200, func(sc *scenarioContext) {
|
"/api/user/revoke-auth-token", cmd, 200, func(sc *scenarioContext) {
|
||||||
var userID int64
|
var userID int64
|
||||||
bus.AddHandler("test", func(cmd *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, cmd *models.GetUserByIdQuery) error {
|
||||||
userID = cmd.Id
|
userID = cmd.Id
|
||||||
return models.ErrUserNotFound
|
return models.ErrUserNotFound
|
||||||
})
|
})
|
||||||
@ -35,7 +35,7 @@ func TestUserTokenAPIEndpoint(t *testing.T) {
|
|||||||
t.Run("When current user gets auth tokens for a non-existing user", func(t *testing.T) {
|
t.Run("When current user gets auth tokens for a non-existing user", func(t *testing.T) {
|
||||||
getUserAuthTokensScenario(t, "Should return not found when calling GET on", "/api/user/auth-tokens", "/api/user/auth-tokens", 200, func(sc *scenarioContext) {
|
getUserAuthTokensScenario(t, "Should return not found when calling GET on", "/api/user/auth-tokens", "/api/user/auth-tokens", 200, func(sc *scenarioContext) {
|
||||||
var userID int64
|
var userID int64
|
||||||
bus.AddHandler("test", func(cmd *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, cmd *models.GetUserByIdQuery) error {
|
||||||
userID = cmd.Id
|
userID = cmd.Id
|
||||||
return models.ErrUserNotFound
|
return models.ErrUserNotFound
|
||||||
})
|
})
|
||||||
@ -49,7 +49,7 @@ func TestUserTokenAPIEndpoint(t *testing.T) {
|
|||||||
t.Run("When logging out an existing user from all devices", func(t *testing.T) {
|
t.Run("When logging out an existing user from all devices", func(t *testing.T) {
|
||||||
logoutUserFromAllDevicesInternalScenario(t, "Should be successful", 1, func(sc *scenarioContext) {
|
logoutUserFromAllDevicesInternalScenario(t, "Should be successful", 1, func(sc *scenarioContext) {
|
||||||
const userID int64 = 200
|
const userID int64 = 200
|
||||||
bus.AddHandler("test", func(cmd *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, cmd *models.GetUserByIdQuery) error {
|
||||||
cmd.Result = &models.User{Id: userID}
|
cmd.Result = &models.User{Id: userID}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
@ -61,7 +61,7 @@ func TestUserTokenAPIEndpoint(t *testing.T) {
|
|||||||
|
|
||||||
t.Run("When logout a non-existing user from all devices", func(t *testing.T) {
|
t.Run("When logout a non-existing user from all devices", func(t *testing.T) {
|
||||||
logoutUserFromAllDevicesInternalScenario(t, "Should return not found", testUserID, func(sc *scenarioContext) {
|
logoutUserFromAllDevicesInternalScenario(t, "Should return not found", testUserID, func(sc *scenarioContext) {
|
||||||
bus.AddHandler("test", func(cmd *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, cmd *models.GetUserByIdQuery) error {
|
||||||
return models.ErrUserNotFound
|
return models.ErrUserNotFound
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ func TestUserTokenAPIEndpoint(t *testing.T) {
|
|||||||
token := &models.UserToken{Id: 1}
|
token := &models.UserToken{Id: 1}
|
||||||
|
|
||||||
revokeUserAuthTokenInternalScenario(t, "Should be successful", cmd, 200, token, func(sc *scenarioContext) {
|
revokeUserAuthTokenInternalScenario(t, "Should be successful", cmd, 200, token, func(sc *scenarioContext) {
|
||||||
bus.AddHandler("test", func(cmd *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, cmd *models.GetUserByIdQuery) error {
|
||||||
cmd.Result = &models.User{Id: 200}
|
cmd.Result = &models.User{Id: 200}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
@ -93,7 +93,7 @@ func TestUserTokenAPIEndpoint(t *testing.T) {
|
|||||||
token := &models.UserToken{Id: 2}
|
token := &models.UserToken{Id: 2}
|
||||||
|
|
||||||
revokeUserAuthTokenInternalScenario(t, "Should not be successful", cmd, testUserID, token, func(sc *scenarioContext) {
|
revokeUserAuthTokenInternalScenario(t, "Should not be successful", cmd, testUserID, token, func(sc *scenarioContext) {
|
||||||
bus.AddHandler("test", func(cmd *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, cmd *models.GetUserByIdQuery) error {
|
||||||
cmd.Result = &models.User{Id: testUserID}
|
cmd.Result = &models.User{Id: testUserID}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
@ -110,7 +110,7 @@ func TestUserTokenAPIEndpoint(t *testing.T) {
|
|||||||
currentToken := &models.UserToken{Id: 1}
|
currentToken := &models.UserToken{Id: 1}
|
||||||
|
|
||||||
getUserAuthTokensInternalScenario(t, "Should be successful", currentToken, func(sc *scenarioContext) {
|
getUserAuthTokensInternalScenario(t, "Should be successful", currentToken, func(sc *scenarioContext) {
|
||||||
bus.AddHandler("test", func(cmd *models.GetUserByIdQuery) error {
|
bus.AddHandlerCtx("test", func(ctx context.Context, cmd *models.GetUserByIdQuery) error {
|
||||||
cmd.Result = &models.User{Id: testUserID}
|
cmd.Result = &models.User{Id: testUserID}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
@ -2,6 +2,7 @@ package commands
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
@ -42,7 +43,7 @@ func resetPasswordCommand(c utils.CommandLine, sqlStore *sqlstore.SQLStore) erro
|
|||||||
|
|
||||||
userQuery := models.GetUserByIdQuery{Id: AdminUserId}
|
userQuery := models.GetUserByIdQuery{Id: AdminUserId}
|
||||||
|
|
||||||
if err := bus.Dispatch(&userQuery); err != nil {
|
if err := bus.DispatchCtx(context.Background(), &userQuery); err != nil {
|
||||||
return fmt.Errorf("could not read user from database. Error: %v", err)
|
return fmt.Errorf("could not read user from database. Error: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ import (
|
|||||||
func (ss *SQLStore) addUserQueryAndCommandHandlers() {
|
func (ss *SQLStore) addUserQueryAndCommandHandlers() {
|
||||||
ss.Bus.AddHandlerCtx(ss.GetSignedInUserWithCacheCtx)
|
ss.Bus.AddHandlerCtx(ss.GetSignedInUserWithCacheCtx)
|
||||||
|
|
||||||
bus.AddHandler("sql", GetUserById)
|
bus.AddHandlerCtx("sql", GetUserById)
|
||||||
bus.AddHandler("sql", UpdateUser)
|
bus.AddHandler("sql", UpdateUser)
|
||||||
bus.AddHandler("sql", ChangeUserPassword)
|
bus.AddHandler("sql", ChangeUserPassword)
|
||||||
bus.AddHandler("sql", GetUserByLogin)
|
bus.AddHandler("sql", GetUserByLogin)
|
||||||
@ -280,9 +280,10 @@ func (ss *SQLStore) CreateUser(ctx context.Context, cmd models.CreateUserCommand
|
|||||||
return user, err
|
return user, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetUserById(query *models.GetUserByIdQuery) error {
|
func GetUserById(ctx context.Context, query *models.GetUserByIdQuery) error {
|
||||||
|
return withDbSession(ctx, x, func(sess *DBSession) error {
|
||||||
user := new(models.User)
|
user := new(models.User)
|
||||||
has, err := x.Id(query.Id).Get(user)
|
has, err := sess.ID(query.Id).Get(user)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -293,6 +294,7 @@ func GetUserById(query *models.GetUserByIdQuery) error {
|
|||||||
query.Result = user
|
query.Result = user
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetUserByLogin(query *models.GetUserByLoginQuery) error {
|
func GetUserByLogin(query *models.GetUserByLoginQuery) error {
|
||||||
|
@ -27,7 +27,7 @@ func TestUserDataAccess(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
query := models.GetUserByIdQuery{Id: user.Id}
|
query := models.GetUserByIdQuery{Id: user.Id}
|
||||||
err = GetUserById(&query)
|
err = GetUserById(context.Background(), &query)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
require.Equal(t, query.Result.Email, "usertest@test.com")
|
require.Equal(t, query.Result.Email, "usertest@test.com")
|
||||||
@ -37,7 +37,7 @@ func TestUserDataAccess(t *testing.T) {
|
|||||||
require.False(t, query.Result.IsDisabled)
|
require.False(t, query.Result.IsDisabled)
|
||||||
|
|
||||||
query = models.GetUserByIdQuery{Id: user.Id}
|
query = models.GetUserByIdQuery{Id: user.Id}
|
||||||
err = GetUserById(&query)
|
err = GetUserById(context.Background(), &query)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
require.Equal(t, query.Result.Email, "usertest@test.com")
|
require.Equal(t, query.Result.Email, "usertest@test.com")
|
||||||
@ -60,7 +60,7 @@ func TestUserDataAccess(t *testing.T) {
|
|||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
query := models.GetUserByIdQuery{Id: user.Id}
|
query := models.GetUserByIdQuery{Id: user.Id}
|
||||||
err = GetUserById(&query)
|
err = GetUserById(context.Background(), &query)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
require.Equal(t, query.Result.Email, "usertest@test.com")
|
require.Equal(t, query.Result.Email, "usertest@test.com")
|
||||||
@ -94,7 +94,7 @@ func TestUserDataAccess(t *testing.T) {
|
|||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
query := models.GetUserByIdQuery{Id: user.Id}
|
query := models.GetUserByIdQuery{Id: user.Id}
|
||||||
err = GetUserById(&query)
|
err = GetUserById(context.Background(), &query)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
require.Equal(t, query.Result.Email, "usertest@test.com")
|
require.Equal(t, query.Result.Email, "usertest@test.com")
|
||||||
@ -612,7 +612,7 @@ func TestUserDataAccess(t *testing.T) {
|
|||||||
require.Equal(t, updatePermsError, models.ErrLastGrafanaAdmin)
|
require.Equal(t, updatePermsError, models.ErrLastGrafanaAdmin)
|
||||||
|
|
||||||
query := models.GetUserByIdQuery{Id: user.Id}
|
query := models.GetUserByIdQuery{Id: user.Id}
|
||||||
getUserError := GetUserById(&query)
|
getUserError := GetUserById(context.Background(), &query)
|
||||||
require.Nil(t, getUserError)
|
require.Nil(t, getUserError)
|
||||||
|
|
||||||
require.True(t, query.Result.IsAdmin)
|
require.True(t, query.Result.IsAdmin)
|
||||||
|
Reference in New Issue
Block a user