new column for team_member table

This commit is contained in:
Marcus Efraimsson 2018-09-14 17:27:36 +02:00
parent 270b736302
commit 9a6446c2b5
No known key found for this signature in database
GPG Key ID: EBFE0FB04612DD4A
5 changed files with 57 additions and 23 deletions

View File

@ -4,6 +4,7 @@ import (
"github.com/grafana/grafana/pkg/api/dtos" "github.com/grafana/grafana/pkg/api/dtos"
"github.com/grafana/grafana/pkg/bus" "github.com/grafana/grafana/pkg/bus"
m "github.com/grafana/grafana/pkg/models" m "github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/util" "github.com/grafana/grafana/pkg/util"
) )
@ -17,6 +18,11 @@ func GetTeamMembers(c *m.ReqContext) Response {
for _, member := range query.Result { for _, member := range query.Result {
member.AvatarUrl = dtos.GetGravatarUrl(member.Email) member.AvatarUrl = dtos.GetGravatarUrl(member.Email)
member.Labels = []string{}
if setting.IsEnterprise && setting.LdapEnabled && member.External {
member.Labels = append(member.Labels, "LDAP")
}
} }
return JSON(200, query.Result) return JSON(200, query.Result)

View File

@ -12,10 +12,11 @@ var (
// TeamMember model // TeamMember model
type TeamMember struct { type TeamMember struct {
Id int64 Id int64
OrgId int64 OrgId int64
TeamId int64 TeamId int64
UserId int64 UserId int64
External bool
Created time.Time Created time.Time
Updated time.Time Updated time.Time
@ -25,9 +26,10 @@ type TeamMember struct {
// COMMANDS // COMMANDS
type AddTeamMemberCommand struct { type AddTeamMemberCommand struct {
UserId int64 `json:"userId" binding:"Required"` UserId int64 `json:"userId" binding:"Required"`
OrgId int64 `json:"-"` OrgId int64 `json:"-"`
TeamId int64 `json:"-"` TeamId int64 `json:"-"`
External bool `json:"-"`
} }
type RemoveTeamMemberCommand struct { type RemoveTeamMemberCommand struct {
@ -40,20 +42,23 @@ type RemoveTeamMemberCommand struct {
// QUERIES // QUERIES
type GetTeamMembersQuery struct { type GetTeamMembersQuery struct {
OrgId int64 OrgId int64
TeamId int64 TeamId int64
UserId int64 UserId int64
Result []*TeamMemberDTO External bool
Result []*TeamMemberDTO
} }
// ---------------------- // ----------------------
// Projections and DTOs // Projections and DTOs
type TeamMemberDTO struct { type TeamMemberDTO struct {
OrgId int64 `json:"orgId"` OrgId int64 `json:"orgId"`
TeamId int64 `json:"teamId"` TeamId int64 `json:"teamId"`
UserId int64 `json:"userId"` UserId int64 `json:"userId"`
Email string `json:"email"` External bool `json:"-"`
Login string `json:"login"` Email string `json:"email"`
AvatarUrl string `json:"avatarUrl"` Login string `json:"login"`
AvatarUrl string `json:"avatarUrl"`
Labels []string `json:"labels"`
} }

View File

@ -51,4 +51,7 @@ func addTeamMigrations(mg *Migrator) {
Name: "email", Type: DB_NVarchar, Nullable: true, Length: 190, Name: "email", Type: DB_NVarchar, Nullable: true, Length: 190,
})) }))
mg.AddMigration("Add column external to team_member table", NewAddColumnMigration(teamMemberV1, &Column{
Name: "external", Type: DB_Bool, Nullable: true,
}))
} }

View File

@ -240,11 +240,12 @@ func AddTeamMember(cmd *m.AddTeamMemberCommand) error {
} }
entity := m.TeamMember{ entity := m.TeamMember{
OrgId: cmd.OrgId, OrgId: cmd.OrgId,
TeamId: cmd.TeamId, TeamId: cmd.TeamId,
UserId: cmd.UserId, UserId: cmd.UserId,
Created: time.Now(), External: cmd.External,
Updated: time.Now(), Created: time.Now(),
Updated: time.Now(),
} }
_, err := sess.Insert(&entity) _, err := sess.Insert(&entity)
@ -289,7 +290,10 @@ func GetTeamMembers(query *m.GetTeamMembersQuery) error {
if query.UserId != 0 { if query.UserId != 0 {
sess.Where("team_member.user_id=?", query.UserId) sess.Where("team_member.user_id=?", query.UserId)
} }
sess.Cols("user.org_id", "team_member.team_id", "team_member.user_id", "user.email", "user.login") if query.External {
sess.Where("team_member.external=?", dialect.BooleanStr(true))
}
sess.Cols("team_member.org_id", "team_member.team_id", "team_member.user_id", "user.email", "user.login", "team_member.external")
sess.Asc("user.login", "user.email") sess.Asc("user.login", "user.email")
err := sess.Find(&query.Result) err := sess.Find(&query.Result)

View File

@ -50,13 +50,29 @@ func TestTeamCommandsAndQueries(t *testing.T) {
err = AddTeamMember(&m.AddTeamMemberCommand{OrgId: testOrgId, TeamId: team1.Id, UserId: userIds[0]}) err = AddTeamMember(&m.AddTeamMemberCommand{OrgId: testOrgId, TeamId: team1.Id, UserId: userIds[0]})
So(err, ShouldBeNil) So(err, ShouldBeNil)
err = AddTeamMember(&m.AddTeamMemberCommand{OrgId: testOrgId, TeamId: team1.Id, UserId: userIds[1], External: true})
So(err, ShouldBeNil)
q1 := &m.GetTeamMembersQuery{OrgId: testOrgId, TeamId: team1.Id} q1 := &m.GetTeamMembersQuery{OrgId: testOrgId, TeamId: team1.Id}
err = GetTeamMembers(q1) err = GetTeamMembers(q1)
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(q1.Result, ShouldHaveLength, 2)
So(q1.Result[0].TeamId, ShouldEqual, team1.Id) So(q1.Result[0].TeamId, ShouldEqual, team1.Id)
So(q1.Result[0].Login, ShouldEqual, "loginuser0") So(q1.Result[0].Login, ShouldEqual, "loginuser0")
So(q1.Result[0].OrgId, ShouldEqual, testOrgId) So(q1.Result[0].OrgId, ShouldEqual, testOrgId)
So(q1.Result[1].TeamId, ShouldEqual, team1.Id)
So(q1.Result[1].Login, ShouldEqual, "loginuser1")
So(q1.Result[1].OrgId, ShouldEqual, testOrgId)
So(q1.Result[1].External, ShouldEqual, true)
q2 := &m.GetTeamMembersQuery{OrgId: testOrgId, TeamId: team1.Id, External: true}
err = GetTeamMembers(q2)
So(err, ShouldBeNil)
So(q2.Result, ShouldHaveLength, 1)
So(q2.Result[0].TeamId, ShouldEqual, team1.Id)
So(q2.Result[0].Login, ShouldEqual, "loginuser1")
So(q2.Result[0].OrgId, ShouldEqual, testOrgId)
So(q2.Result[0].External, ShouldEqual, true)
}) })
Convey("Should be able to search for teams", func() { Convey("Should be able to search for teams", func() {