Commit af4994ba by Leonard Gram

teams: editor added as admin for created teams.

parent 22e098b8
...@@ -154,7 +154,7 @@ func (hs *HTTPServer) registerRoutes() { ...@@ -154,7 +154,7 @@ func (hs *HTTPServer) registerRoutes() {
// team (admin permission required) // team (admin permission required)
apiRoute.Group("/teams", func(teamsRoute routing.RouteRegister) { apiRoute.Group("/teams", func(teamsRoute routing.RouteRegister) {
teamsRoute.Post("/", bind(m.CreateTeamCommand{}), Wrap(CreateTeam)) teamsRoute.Post("/", bind(m.CreateTeamCommand{}), Wrap(hs.CreateTeam))
teamsRoute.Put("/:teamId", bind(m.UpdateTeamCommand{}), Wrap(UpdateTeam)) teamsRoute.Put("/:teamId", bind(m.UpdateTeamCommand{}), Wrap(UpdateTeam))
teamsRoute.Delete("/:teamId", Wrap(DeleteTeamByID)) teamsRoute.Delete("/:teamId", Wrap(DeleteTeamByID))
teamsRoute.Get("/:teamId/members", Wrap(GetTeamMembers)) teamsRoute.Get("/:teamId/members", Wrap(GetTeamMembers))
......
...@@ -8,7 +8,7 @@ import ( ...@@ -8,7 +8,7 @@ import (
) )
// POST /api/teams // POST /api/teams
func CreateTeam(c *m.ReqContext, cmd m.CreateTeamCommand) Response { func (hs *HTTPServer) CreateTeam(c *m.ReqContext, cmd m.CreateTeamCommand) Response {
cmd.OrgId = c.OrgId cmd.OrgId = c.OrgId
if err := bus.Dispatch(&cmd); err != nil { if err := bus.Dispatch(&cmd); err != nil {
if err == m.ErrTeamNameTaken { if err == m.ErrTeamNameTaken {
...@@ -17,6 +17,17 @@ func CreateTeam(c *m.ReqContext, cmd m.CreateTeamCommand) Response { ...@@ -17,6 +17,17 @@ func CreateTeam(c *m.ReqContext, cmd m.CreateTeamCommand) Response {
return Error(500, "Failed to create Team", err) return Error(500, "Failed to create Team", err)
} }
if c.OrgRole == m.ROLE_EDITOR && hs.Cfg.EditorsCanOwn {
addMemberCmd := m.AddTeamMemberCommand{
UserId: c.SignedInUser.UserId,
OrgId: cmd.OrgId,
TeamId: cmd.Result.Id,
Permission: int64(m.PERMISSION_ADMIN),
}
err := bus.Dispatch(&addMemberCmd)
c.Logger.Error("Could not add creator to team.", "error", err)
}
return JSON(200, &util.DynMap{ return JSON(200, &util.DynMap{
"teamId": cmd.Result.Id, "teamId": cmd.Result.Id,
"message": "Team created", "message": "Team created",
......
...@@ -12,11 +12,12 @@ var ( ...@@ -12,11 +12,12 @@ 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 External bool
Permission int64
Created time.Time Created time.Time
Updated time.Time Updated time.Time
...@@ -26,10 +27,11 @@ type TeamMember struct { ...@@ -26,10 +27,11 @@ 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:"-"` External bool `json:"-"`
Permission int64 `json:"-"`
} }
type RemoveTeamMemberCommand struct { type RemoveTeamMemberCommand struct {
......
...@@ -54,4 +54,10 @@ func addTeamMigrations(mg *Migrator) { ...@@ -54,4 +54,10 @@ func addTeamMigrations(mg *Migrator) {
mg.AddMigration("Add column external to team_member table", NewAddColumnMigration(teamMemberV1, &Column{ mg.AddMigration("Add column external to team_member table", NewAddColumnMigration(teamMemberV1, &Column{
Name: "external", Type: DB_Bool, Nullable: true, Name: "external", Type: DB_Bool, Nullable: true,
})) }))
mg.AddMigration("Add column permission to team_member table", NewAddColumnMigration(teamMemberV1, &Column{
Name: "permission",
Type: DB_BigInt,
Nullable: true,
}))
} }
...@@ -240,12 +240,13 @@ func AddTeamMember(cmd *m.AddTeamMemberCommand) error { ...@@ -240,12 +240,13 @@ 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,
External: cmd.External, External: cmd.External,
Created: time.Now(), Created: time.Now(),
Updated: time.Now(), Updated: time.Now(),
Permission: cmd.Permission,
} }
_, err := sess.Insert(&entity) _, err := sess.Insert(&entity)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment