User: Add uid colum to user table (#81615)

This commit is contained in:
Ryan McKinley
2024-02-01 18:14:10 -08:00
committed by GitHub
parent 9d17f6e6aa
commit 9c9e5e68c8
16 changed files with 87 additions and 3 deletions
+4 -2
View File
@@ -13,8 +13,9 @@ const (
)
type SignedInUser struct {
UserID int64 `xorm:"user_id"`
OrgID int64 `xorm:"org_id"`
UserID int64 `xorm:"user_id"`
UserUID string `xorm:"user_uid"`
OrgID int64 `xorm:"org_id"`
OrgName string
OrgRole roletype.RoleType
Login string
@@ -58,6 +59,7 @@ func (u *SignedInUser) NameOrFallback() string {
func (u *SignedInUser) ToUserDisplayDTO() *UserDisplayDTO {
return &UserDisplayDTO{
ID: u.UserID,
UID: u.UserUID,
Login: u.Login,
Name: u.Name,
// AvatarURL: dtos.GetGravatarUrl(u.GetEmail()),
+6 -1
View File
@@ -20,7 +20,8 @@ const (
)
type User struct {
ID int64 `xorm:"pk autoincr 'id'"`
ID int64 `xorm:"pk autoincr 'id'"`
UID string `json:"uid" xorm:"uid"`
Version int
Email string
Name string
@@ -44,6 +45,7 @@ type User struct {
}
type CreateUserCommand struct {
UID string
Email string
Login string
Name string
@@ -115,6 +117,7 @@ type SearchUserQueryResult struct {
type UserSearchHitDTO struct {
ID int64 `json:"id" xorm:"id"`
UID string `json:"uid" xorm:"id"`
Name string `json:"name"`
Login string `json:"login"`
Email string `json:"email"`
@@ -133,6 +136,7 @@ type GetUserProfileQuery struct {
type UserProfileDTO struct {
ID int64 `json:"id"`
UID string `json:"uid"`
Email string `json:"email"`
Name string `json:"name"`
Login string `json:"login"`
@@ -215,6 +219,7 @@ type ErrCaseInsensitiveLoginConflict struct {
type UserDisplayDTO struct {
ID int64 `json:"id,omitempty"`
UID string `json:"uid,omitempty"`
Name string `json:"name,omitempty"`
Login string `json:"login,omitempty"`
AvatarURL string `json:"avatarUrl"`
+5
View File
@@ -63,6 +63,9 @@ func (ss *sqlStore) Insert(ctx context.Context, cmd *user.User) (int64, error) {
var err error
err = ss.db.WithTransactionalDbSession(ctx, func(sess *db.Session) error {
sess.UseBool("is_admin")
if cmd.UID == "" {
cmd.UID = util.GenerateShortUID()
}
if _, err = sess.Insert(cmd); err != nil {
return err
@@ -393,6 +396,7 @@ func (ss *sqlStore) GetSignedInUser(ctx context.Context, query *user.GetSignedIn
var rawSQL = `SELECT
u.id as user_id,
u.uid as user_uid,
u.is_admin as is_grafana_admin,
u.email as email,
u.login as login,
@@ -466,6 +470,7 @@ func (ss *sqlStore) GetProfile(ctx context.Context, query *user.GetUserProfileQu
userProfile = user.UserProfileDTO{
ID: usr.ID,
UID: usr.UID,
Name: usr.Name,
Email: usr.Email,
Login: usr.Login,
+27
View File
@@ -104,6 +104,7 @@ func TestIntegrationUserGet(t *testing.T) {
} else {
require.NoError(t, err)
require.NotNil(t, usr)
require.NotEmpty(t, usr.UID)
}
})
}
@@ -150,6 +151,32 @@ func TestIntegrationUserDataAccess(t *testing.T) {
require.NoError(t, err)
})
t.Run("insert user (with known UID)", func(t *testing.T) {
ctx := context.Background()
id, err := userStore.Insert(ctx,
&user.User{
UID: "abcd",
Email: "next-test@email.com",
Name: "next-test1",
Login: "next-test1",
Created: time.Now(),
Updated: time.Now(),
},
)
require.NoError(t, err)
found, err := userStore.GetByID(ctx, id)
require.NoError(t, err)
require.Equal(t, "abcd", found.UID)
siu, err := userStore.GetSignedInUser(ctx, &user.GetSignedInUserQuery{
UserID: id,
OrgID: found.OrgID,
})
require.NoError(t, err)
require.Equal(t, "abcd", siu.UserUID)
})
t.Run("get user", func(t *testing.T) {
_, err := userStore.Get(context.Background(),
&user.User{
+1
View File
@@ -129,6 +129,7 @@ func (s *Service) Create(ctx context.Context, cmd *user.CreateUserCommand) (*use
// create user
usr := &user.User{
UID: cmd.UID,
Email: cmd.Email,
Name: cmd.Name,
Login: cmd.Login,