mirror of
https://github.com/grafana/grafana.git
synced 2025-02-14 17:43:35 -06:00
teams: can update team members permission.
This commit is contained in:
parent
7888457aae
commit
2a88052c14
@ -159,6 +159,7 @@ func (hs *HTTPServer) registerRoutes() {
|
|||||||
teamsRoute.Delete("/:teamId", Wrap(DeleteTeamByID))
|
teamsRoute.Delete("/:teamId", Wrap(DeleteTeamByID))
|
||||||
teamsRoute.Get("/:teamId/members", Wrap(GetTeamMembers))
|
teamsRoute.Get("/:teamId/members", Wrap(GetTeamMembers))
|
||||||
teamsRoute.Post("/:teamId/members", bind(m.AddTeamMemberCommand{}), Wrap(AddTeamMember))
|
teamsRoute.Post("/:teamId/members", bind(m.AddTeamMemberCommand{}), Wrap(AddTeamMember))
|
||||||
|
teamsRoute.Put("/:teamId/members/:userId", bind(m.UpdateTeamMemberCommand{}), Wrap(UpdateTeamMember))
|
||||||
teamsRoute.Delete("/:teamId/members/:userId", Wrap(RemoveTeamMember))
|
teamsRoute.Delete("/:teamId/members/:userId", Wrap(RemoveTeamMember))
|
||||||
teamsRoute.Get("/:teamId/preferences", Wrap(GetTeamPreferences))
|
teamsRoute.Get("/:teamId/preferences", Wrap(GetTeamPreferences))
|
||||||
teamsRoute.Put("/:teamId/preferences", bind(dtos.UpdatePrefsCmd{}), Wrap(UpdateTeamPreferences))
|
teamsRoute.Put("/:teamId/preferences", bind(dtos.UpdatePrefsCmd{}), Wrap(UpdateTeamPreferences))
|
||||||
|
@ -50,6 +50,21 @@ func AddTeamMember(c *m.ReqContext, cmd m.AddTeamMemberCommand) Response {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PUT /:teamId/members/:userId
|
||||||
|
func UpdateTeamMember(c *m.ReqContext, cmd m.UpdateTeamMemberCommand) Response {
|
||||||
|
cmd.TeamId = c.ParamsInt64(":teamId")
|
||||||
|
cmd.UserId = c.ParamsInt64(":userId")
|
||||||
|
cmd.OrgId = c.OrgId
|
||||||
|
|
||||||
|
if err := bus.Dispatch(&cmd); err != nil {
|
||||||
|
if err == m.ErrTeamMemberNotFound {
|
||||||
|
return Error(404, "Team member not found.", nil)
|
||||||
|
}
|
||||||
|
return Error(500, "Failed to update team member.", err)
|
||||||
|
}
|
||||||
|
return Success("Team member updated")
|
||||||
|
}
|
||||||
|
|
||||||
// DELETE /api/teams/:teamId/members/:userId
|
// DELETE /api/teams/:teamId/members/:userId
|
||||||
func RemoveTeamMember(c *m.ReqContext) Response {
|
func RemoveTeamMember(c *m.ReqContext) Response {
|
||||||
if err := bus.Dispatch(&m.RemoveTeamMemberCommand{OrgId: c.OrgId, TeamId: c.ParamsInt64(":teamId"), UserId: c.ParamsInt64(":userId")}); err != nil {
|
if err := bus.Dispatch(&m.RemoveTeamMemberCommand{OrgId: c.OrgId, TeamId: c.ParamsInt64(":teamId"), UserId: c.ParamsInt64(":userId")}); err != nil {
|
||||||
|
@ -34,6 +34,13 @@ type AddTeamMemberCommand struct {
|
|||||||
Permission int64 `json:"-"`
|
Permission int64 `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type UpdateTeamMemberCommand struct {
|
||||||
|
UserId int64 `json:"-"`
|
||||||
|
OrgId int64 `json:"-"`
|
||||||
|
TeamId int64 `json:"-"`
|
||||||
|
Permission int64 `json:"permission"`
|
||||||
|
}
|
||||||
|
|
||||||
type RemoveTeamMemberCommand struct {
|
type RemoveTeamMemberCommand struct {
|
||||||
OrgId int64 `json:"-"`
|
OrgId int64 `json:"-"`
|
||||||
UserId int64
|
UserId int64
|
||||||
|
@ -18,6 +18,7 @@ func init() {
|
|||||||
bus.AddHandler("sql", GetTeamsByUser)
|
bus.AddHandler("sql", GetTeamsByUser)
|
||||||
|
|
||||||
bus.AddHandler("sql", AddTeamMember)
|
bus.AddHandler("sql", AddTeamMember)
|
||||||
|
bus.AddHandler("sql", UpdateTeamMember)
|
||||||
bus.AddHandler("sql", RemoveTeamMember)
|
bus.AddHandler("sql", RemoveTeamMember)
|
||||||
bus.AddHandler("sql", GetTeamMembers)
|
bus.AddHandler("sql", GetTeamMembers)
|
||||||
}
|
}
|
||||||
@ -254,6 +255,29 @@ func AddTeamMember(cmd *m.AddTeamMemberCommand) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UpdateTeamMember updates a team member
|
||||||
|
func UpdateTeamMember(cmd *m.UpdateTeamMemberCommand) error {
|
||||||
|
return inTransaction(func(sess *DBSession) error {
|
||||||
|
rawSql := `SELECT * FROM team_member WHERE org_id=? and team_id=? and user_id=?`
|
||||||
|
|
||||||
|
var member m.TeamMember
|
||||||
|
exists, err := sess.SQL(rawSql, cmd.OrgId, cmd.TeamId, cmd.UserId).Get(&member)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !exists {
|
||||||
|
return m.ErrTeamMemberNotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
member.Permission = cmd.Permission
|
||||||
|
_, err = sess.Update(member)
|
||||||
|
|
||||||
|
return err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// RemoveTeamMember removes a member from a team
|
// RemoveTeamMember removes a member from a team
|
||||||
func RemoveTeamMember(cmd *m.RemoveTeamMemberCommand) error {
|
func RemoveTeamMember(cmd *m.RemoveTeamMemberCommand) error {
|
||||||
return inTransaction(func(sess *DBSession) error {
|
return inTransaction(func(sess *DBSession) error {
|
||||||
|
@ -75,6 +75,33 @@ func TestTeamCommandsAndQueries(t *testing.T) {
|
|||||||
So(q2.Result[0].External, ShouldEqual, true)
|
So(q2.Result[0].External, ShouldEqual, true)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Convey("Should be able to update users in a team", func() {
|
||||||
|
userId := userIds[0]
|
||||||
|
team := group1.Result
|
||||||
|
addMemberCmd := m.AddTeamMemberCommand{OrgId: testOrgId, TeamId: team.Id, UserId: userId}
|
||||||
|
err = AddTeamMember(&addMemberCmd)
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
|
||||||
|
qBeforeUpdate := &m.GetTeamMembersQuery{OrgId: testOrgId, TeamId: team.Id}
|
||||||
|
err = GetTeamMembers(qBeforeUpdate)
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
So(qBeforeUpdate.Result[0].Permission, ShouldEqual, 0)
|
||||||
|
|
||||||
|
err = UpdateTeamMember(&m.UpdateTeamMemberCommand{
|
||||||
|
UserId: userId,
|
||||||
|
OrgId: testOrgId,
|
||||||
|
TeamId: team.Id,
|
||||||
|
Permission: int64(m.PERMISSION_ADMIN),
|
||||||
|
})
|
||||||
|
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
|
||||||
|
qAfterUpdate := &m.GetTeamMembersQuery{OrgId: testOrgId, TeamId: team.Id}
|
||||||
|
err = GetTeamMembers(qAfterUpdate)
|
||||||
|
So(err, ShouldBeNil)
|
||||||
|
So(qAfterUpdate.Result[0].Permission, ShouldEqual, m.PERMISSION_ADMIN)
|
||||||
|
})
|
||||||
|
|
||||||
Convey("Should be able to search for teams", func() {
|
Convey("Should be able to search for teams", func() {
|
||||||
query := &m.SearchTeamsQuery{OrgId: testOrgId, Query: "group", Page: 1}
|
query := &m.SearchTeamsQuery{OrgId: testOrgId, Query: "group", Page: 1}
|
||||||
err = SearchTeams(query)
|
err = SearchTeams(query)
|
||||||
|
Loading…
Reference in New Issue
Block a user