Ver Fonte

feat(invite): existing grafana users now result in new org user directly, no temp user is created, #2353

Torkel Ödegaard há 10 anos atrás
pai
commit
e92f2ecea1
1 ficheiros alterados com 16 adições e 0 exclusões
  1. 16 0
      pkg/api/org_invite.go

+ 16 - 0
pkg/api/org_invite.go

@@ -23,6 +23,22 @@ func AddOrgInvite(c *middleware.Context, inviteDto dtos.AddInviteForm) Response
 		return ApiError(400, "Invalid role specified", nil)
 	}
 
+	// first try get existing user
+	userQuery := m.GetUserByLoginQuery{LoginOrEmail: inviteDto.Email}
+	if err := bus.Dispatch(&userQuery); err != nil {
+		if err != m.ErrUserNotFound {
+			return ApiError(500, "Failed to query db for existing user check", err)
+		}
+	} else {
+		// user exists, add org role
+		createOrgUserCmd := m.AddOrgUserCommand{OrgId: c.OrgId, UserId: userQuery.Result.Id, Role: inviteDto.Role}
+		if err := bus.Dispatch(&createOrgUserCmd); err != nil {
+			return ApiError(500, "Error while trying to create org user", err)
+		} else {
+			return ApiSuccess("Existing Grafana user added to org " + c.OrgName)
+		}
+	}
+
 	cmd := m.CreateTempUserCommand{}
 	cmd.OrgId = c.OrgId
 	cmd.Email = inviteDto.Email