chore(console): remove first and lastName fallback from user (#5629)

* chore(console): remove first and lastName fallback from user

* use display name and ensure it's set without required name fields

* add user type to user grant and memberships responses

* contributor, members

* fix avatar display checks

---------

Co-authored-by: Livio Spring <livio.a@gmail.com>
This commit is contained in:
Max Peintner
2023-04-11 17:56:51 +02:00
committed by GitHub
parent 8bf36301ed
commit 1c1d66cbe8
37 changed files with 218 additions and 114 deletions

View File

@@ -8,6 +8,7 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
"github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
@@ -122,10 +123,12 @@ func prepareInstanceMembersQuery(ctx context.Context, db prepareDatabase) (sq.Se
HumanDisplayNameCol.identifier(),
MachineNameCol.identifier(),
HumanAvatarURLCol.identifier(),
UserTypeCol.identifier(),
countColumn.identifier(),
).From(instanceMemberTable.identifier()).
LeftJoin(join(HumanUserIDCol, InstanceMemberUserID)).
LeftJoin(join(MachineUserIDCol, InstanceMemberUserID)).
LeftJoin(join(UserIDCol, InstanceMemberUserID)).
LeftJoin(join(LoginNameUserIDCol, InstanceMemberUserID) + db.Timetravel(call.Took(ctx))).
Where(
sq.Eq{LoginNameIsPrimaryCol.identifier(): true},
@@ -145,6 +148,7 @@ func prepareInstanceMembersQuery(ctx context.Context, db prepareDatabase) (sq.Se
displayName = sql.NullString{}
machineName = sql.NullString{}
avatarURL = sql.NullString{}
userType = sql.NullInt32{}
)
err := rows.Scan(
@@ -161,6 +165,7 @@ func prepareInstanceMembersQuery(ctx context.Context, db prepareDatabase) (sq.Se
&displayName,
&machineName,
&avatarURL,
&userType,
&count,
)
@@ -179,6 +184,7 @@ func prepareInstanceMembersQuery(ctx context.Context, db prepareDatabase) (sq.Se
} else {
member.DisplayName = machineName.String
}
member.UserType = domain.UserType(userType.Int32)
members = append(members, member)
}

View File

@@ -9,6 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
)
var (
@@ -26,12 +27,15 @@ var (
", projections.users8_humans.display_name" +
", projections.users8_machines.name" +
", projections.users8_humans.avatar_key" +
", projections.users8.type" +
", COUNT(*) OVER () " +
"FROM projections.instance_members3 AS members " +
"LEFT JOIN projections.users8_humans " +
"ON members.user_id = projections.users8_humans.user_id AND members.instance_id = projections.users8_humans.instance_id " +
"LEFT JOIN projections.users8_machines " +
"ON members.user_id = projections.users8_machines.user_id AND members.instance_id = projections.users8_machines.instance_id " +
"LEFT JOIN projections.users8 " +
"ON members.user_id = projections.users8.id AND members.instance_id = projections.users8.instance_id " +
"LEFT JOIN projections.login_names2 " +
"ON members.user_id = projections.login_names2.user_id AND members.instance_id = projections.login_names2.instance_id " +
"AS OF SYSTEM TIME '-1 ms' " +
@@ -50,6 +54,7 @@ var (
"display_name",
"name",
"avatar_key",
"type",
"count",
}
)
@@ -101,6 +106,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
"display name",
nil,
nil,
domain.UserTypeHuman,
},
},
),
@@ -123,6 +129,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
LastName: "last-name",
DisplayName: "display name",
AvatarURL: "",
UserType: domain.UserTypeHuman,
},
},
},
@@ -149,6 +156,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
nil,
"machine-name",
nil,
domain.UserTypeMachine,
},
},
),
@@ -171,6 +179,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
LastName: "",
DisplayName: "machine-name",
AvatarURL: "",
UserType: domain.UserTypeMachine,
},
},
},
@@ -197,6 +206,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
"display name",
nil,
nil,
domain.UserTypeHuman,
},
{
testNow,
@@ -212,6 +222,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
nil,
"machine-name",
nil,
domain.UserTypeMachine,
},
},
),
@@ -234,6 +245,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
LastName: "last-name",
DisplayName: "display name",
AvatarURL: "",
UserType: domain.UserTypeHuman,
},
{
CreationDate: testNow,
@@ -248,6 +260,7 @@ func Test_IAMMemberPrepares(t *testing.T) {
LastName: "",
DisplayName: "machine-name",
AvatarURL: "",
UserType: domain.UserTypeMachine,
},
},
},

View File

@@ -4,6 +4,7 @@ import (
"time"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
"github.com/zitadel/zitadel/internal/query/projection"
sq "github.com/Masterminds/squirrel"
@@ -60,6 +61,7 @@ type Member struct {
LastName string
DisplayName string
AvatarURL string
UserType domain.UserType
}
var (

View File

@@ -8,6 +8,7 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
"github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
@@ -124,10 +125,12 @@ func prepareOrgMembersQuery(ctx context.Context, db prepareDatabase) (sq.SelectB
HumanDisplayNameCol.identifier(),
MachineNameCol.identifier(),
HumanAvatarURLCol.identifier(),
UserTypeCol.identifier(),
countColumn.identifier(),
).From(orgMemberTable.identifier()).
LeftJoin(join(HumanUserIDCol, OrgMemberUserID)).
LeftJoin(join(MachineUserIDCol, OrgMemberUserID)).
LeftJoin(join(UserIDCol, OrgMemberUserID)).
LeftJoin(join(LoginNameUserIDCol, OrgMemberUserID) + db.Timetravel(call.Took(ctx))).
Where(
sq.Eq{LoginNameIsPrimaryCol.identifier(): true},
@@ -147,6 +150,7 @@ func prepareOrgMembersQuery(ctx context.Context, db prepareDatabase) (sq.SelectB
displayName = sql.NullString{}
machineName = sql.NullString{}
avatarURL = sql.NullString{}
userType = sql.NullInt32{}
)
err := rows.Scan(
@@ -163,6 +167,7 @@ func prepareOrgMembersQuery(ctx context.Context, db prepareDatabase) (sq.SelectB
&displayName,
&machineName,
&avatarURL,
&userType,
&count,
)
@@ -181,6 +186,7 @@ func prepareOrgMembersQuery(ctx context.Context, db prepareDatabase) (sq.SelectB
} else {
member.DisplayName = machineName.String
}
member.UserType = domain.UserType(userType.Int32)
members = append(members, member)
}

View File

@@ -9,6 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
)
var (
@@ -26,6 +27,7 @@ var (
", projections.users8_humans.display_name" +
", projections.users8_machines.name" +
", projections.users8_humans.avatar_key" +
", projections.users8.type" +
", COUNT(*) OVER () " +
"FROM projections.org_members3 AS members " +
"LEFT JOIN projections.users8_humans " +
@@ -34,6 +36,9 @@ var (
"LEFT JOIN projections.users8_machines " +
"ON members.user_id = projections.users8_machines.user_id " +
"AND members.instance_id = projections.users8_machines.instance_id " +
"LEFT JOIN projections.users8 " +
"ON members.user_id = projections.users8.id " +
"AND members.instance_id = projections.users8.instance_id " +
"LEFT JOIN projections.login_names2 " +
"ON members.user_id = projections.login_names2.user_id " +
"AND members.instance_id = projections.login_names2.instance_id " +
@@ -53,6 +58,7 @@ var (
"display_name",
"name",
"avatar_key",
"type",
"count",
}
)
@@ -104,6 +110,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
"display name",
nil,
nil,
domain.UserTypeHuman,
},
},
),
@@ -126,6 +133,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
LastName: "last-name",
DisplayName: "display name",
AvatarURL: "",
UserType: domain.UserTypeHuman,
},
},
},
@@ -152,6 +160,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
nil,
"machine-name",
nil,
domain.UserTypeMachine,
},
},
),
@@ -174,6 +183,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
LastName: "",
DisplayName: "machine-name",
AvatarURL: "",
UserType: domain.UserTypeMachine,
},
},
},
@@ -200,6 +210,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
"display name",
nil,
nil,
domain.UserTypeHuman,
},
{
testNow,
@@ -215,6 +226,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
nil,
"machine-name",
nil,
domain.UserTypeMachine,
},
},
),
@@ -237,6 +249,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
LastName: "last-name",
DisplayName: "display name",
AvatarURL: "",
UserType: domain.UserTypeHuman,
},
{
CreationDate: testNow,
@@ -251,6 +264,7 @@ func Test_OrgMemberPrepares(t *testing.T) {
LastName: "",
DisplayName: "machine-name",
AvatarURL: "",
UserType: domain.UserTypeMachine,
},
},
},

View File

@@ -8,6 +8,7 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
"github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
)
@@ -138,10 +139,12 @@ func prepareProjectGrantMembersQuery(ctx context.Context, db prepareDatabase) (s
HumanDisplayNameCol.identifier(),
MachineNameCol.identifier(),
HumanAvatarURLCol.identifier(),
UserTypeCol.identifier(),
countColumn.identifier(),
).From(projectGrantMemberTable.identifier()).
LeftJoin(join(HumanUserIDCol, ProjectGrantMemberUserID)).
LeftJoin(join(MachineUserIDCol, ProjectGrantMemberUserID)).
LeftJoin(join(UserIDCol, ProjectGrantMemberUserID)).
LeftJoin(join(LoginNameUserIDCol, ProjectGrantMemberUserID)).
LeftJoin(join(ProjectGrantColumnGrantID, ProjectGrantMemberGrantID) + db.Timetravel(call.Took(ctx))).
Where(
@@ -162,6 +165,7 @@ func prepareProjectGrantMembersQuery(ctx context.Context, db prepareDatabase) (s
displayName = sql.NullString{}
machineName = sql.NullString{}
avatarURL = sql.NullString{}
userType = sql.NullInt32{}
)
err := rows.Scan(
@@ -178,6 +182,7 @@ func prepareProjectGrantMembersQuery(ctx context.Context, db prepareDatabase) (s
&displayName,
&machineName,
&avatarURL,
&userType,
&count,
)
@@ -196,6 +201,7 @@ func prepareProjectGrantMembersQuery(ctx context.Context, db prepareDatabase) (s
} else {
member.DisplayName = machineName.String
}
member.UserType = domain.UserType(userType.Int32)
members = append(members, member)
}

View File

@@ -9,6 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
)
var (
@@ -26,6 +27,7 @@ var (
", projections.users8_humans.display_name" +
", projections.users8_machines.name" +
", projections.users8_humans.avatar_key" +
", projections.users8.type" +
", COUNT(*) OVER () " +
"FROM projections.project_grant_members3 AS members " +
"LEFT JOIN projections.users8_humans " +
@@ -34,6 +36,9 @@ var (
"LEFT JOIN projections.users8_machines " +
"ON members.user_id = projections.users8_machines.user_id " +
"AND members.instance_id = projections.users8_machines.instance_id " +
"LEFT JOIN projections.users8 " +
"ON members.user_id = projections.users8.id " +
"AND members.instance_id = projections.users8.instance_id " +
"LEFT JOIN projections.login_names2 " +
"ON members.user_id = projections.login_names2.user_id " +
"AND members.instance_id = projections.login_names2.instance_id " +
@@ -56,6 +61,7 @@ var (
"display_name",
"name",
"avatar_key",
"type",
"count",
}
)
@@ -107,6 +113,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
"display name",
nil,
nil,
domain.UserTypeHuman,
},
},
),
@@ -129,6 +136,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
LastName: "last-name",
DisplayName: "display name",
AvatarURL: "",
UserType: domain.UserTypeHuman,
},
},
},
@@ -155,6 +163,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
nil,
"machine-name",
nil,
domain.UserTypeMachine,
},
},
),
@@ -177,6 +186,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
LastName: "",
DisplayName: "machine-name",
AvatarURL: "",
UserType: domain.UserTypeMachine,
},
},
},
@@ -203,6 +213,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
"display name",
nil,
nil,
domain.UserTypeHuman,
},
{
testNow,
@@ -218,6 +229,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
nil,
"machine-name",
nil,
domain.UserTypeMachine,
},
},
),
@@ -240,6 +252,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
LastName: "last-name",
DisplayName: "display name",
AvatarURL: "",
UserType: domain.UserTypeHuman,
},
{
CreationDate: testNow,
@@ -254,6 +267,7 @@ func Test_ProjectGrantMemberPrepares(t *testing.T) {
LastName: "",
DisplayName: "machine-name",
AvatarURL: "",
UserType: domain.UserTypeMachine,
},
},
},

View File

@@ -8,6 +8,7 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
"github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
@@ -124,10 +125,12 @@ func prepareProjectMembersQuery(ctx context.Context, db prepareDatabase) (sq.Sel
HumanDisplayNameCol.identifier(),
MachineNameCol.identifier(),
HumanAvatarURLCol.identifier(),
UserTypeCol.identifier(),
countColumn.identifier(),
).From(projectMemberTable.identifier()).
LeftJoin(join(HumanUserIDCol, ProjectMemberUserID)).
LeftJoin(join(MachineUserIDCol, ProjectMemberUserID)).
LeftJoin(join(UserIDCol, ProjectMemberUserID)).
LeftJoin(join(LoginNameUserIDCol, ProjectMemberUserID) + db.Timetravel(call.Took(ctx))).
Where(
sq.Eq{LoginNameIsPrimaryCol.identifier(): true},
@@ -147,6 +150,7 @@ func prepareProjectMembersQuery(ctx context.Context, db prepareDatabase) (sq.Sel
displayName = sql.NullString{}
machineName = sql.NullString{}
avatarURL = sql.NullString{}
userType = sql.NullInt32{}
)
err := rows.Scan(
@@ -163,6 +167,7 @@ func prepareProjectMembersQuery(ctx context.Context, db prepareDatabase) (sq.Sel
&displayName,
&machineName,
&avatarURL,
&userType,
&count,
)
@@ -181,6 +186,7 @@ func prepareProjectMembersQuery(ctx context.Context, db prepareDatabase) (sq.Sel
} else {
member.DisplayName = machineName.String
}
member.UserType = domain.UserType(userType.Int32)
members = append(members, member)
}

View File

@@ -9,6 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
)
var (
@@ -26,6 +27,7 @@ var (
", projections.users8_humans.display_name" +
", projections.users8_machines.name" +
", projections.users8_humans.avatar_key" +
", projections.users8.type" +
", COUNT(*) OVER () " +
"FROM projections.project_members3 AS members " +
"LEFT JOIN projections.users8_humans " +
@@ -34,6 +36,9 @@ var (
"LEFT JOIN projections.users8_machines " +
"ON members.user_id = projections.users8_machines.user_id " +
"AND members.instance_id = projections.users8_machines.instance_id " +
"LEFT JOIN projections.users8 " +
"ON members.user_id = projections.users8.id " +
"AND members.instance_id = projections.users8.instance_id " +
"LEFT JOIN projections.login_names2 " +
"ON members.user_id = projections.login_names2.user_id " +
"AND members.instance_id = projections.login_names2.instance_id " +
@@ -53,6 +58,7 @@ var (
"display_name",
"name",
"avatar_key",
"type",
"count",
}
)
@@ -104,6 +110,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
"display name",
nil,
nil,
domain.UserTypeHuman,
},
},
),
@@ -126,6 +133,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
LastName: "last-name",
DisplayName: "display name",
AvatarURL: "",
UserType: domain.UserTypeHuman,
},
},
},
@@ -152,6 +160,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
nil,
"machine-name",
nil,
domain.UserTypeMachine,
},
},
),
@@ -174,6 +183,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
LastName: "",
DisplayName: "machine-name",
AvatarURL: "",
UserType: domain.UserTypeMachine,
},
},
},
@@ -200,6 +210,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
"display name",
nil,
nil,
domain.UserTypeHuman,
},
{
testNow,
@@ -215,6 +226,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
nil,
"machine-name",
nil,
domain.UserTypeMachine,
},
},
),
@@ -237,6 +249,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
LastName: "last-name",
DisplayName: "display name",
AvatarURL: "",
UserType: domain.UserTypeHuman,
},
{
CreationDate: testNow,
@@ -251,6 +264,7 @@ func Test_ProjectMemberPrepares(t *testing.T) {
LastName: "",
DisplayName: "machine-name",
AvatarURL: "",
UserType: domain.UserTypeMachine,
},
},
},