From 7888457aaee0aa233bd2696b75436d6fc686ff06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=A4ggmark?= Date: Wed, 6 Mar 2019 12:27:18 +0100 Subject: [PATCH] teams: basic ui for permission in team members view --- pkg/models/team_member.go | 17 +- pkg/services/sqlstore/team.go | 2 +- public/app/features/teams/TeamMembers.tsx | 18 +- .../app/features/teams/__mocks__/teamMocks.ts | 2 + .../__snapshots__/TeamMembers.test.tsx.snap | 429 ++++++++++++++++++ public/app/types/acl.ts | 20 + public/app/types/teams.ts | 1 + 7 files changed, 478 insertions(+), 11 deletions(-) diff --git a/pkg/models/team_member.go b/pkg/models/team_member.go index 01659cb0347..813455d3d2b 100644 --- a/pkg/models/team_member.go +++ b/pkg/models/team_member.go @@ -55,12 +55,13 @@ type GetTeamMembersQuery struct { // Projections and DTOs type TeamMemberDTO struct { - OrgId int64 `json:"orgId"` - TeamId int64 `json:"teamId"` - UserId int64 `json:"userId"` - External bool `json:"-"` - Email string `json:"email"` - Login string `json:"login"` - AvatarUrl string `json:"avatarUrl"` - Labels []string `json:"labels"` + OrgId int64 `json:"orgId"` + TeamId int64 `json:"teamId"` + UserId int64 `json:"userId"` + External bool `json:"-"` + Email string `json:"email"` + Login string `json:"login"` + AvatarUrl string `json:"avatarUrl"` + Labels []string `json:"labels"` + Permission int64 `json:"permission"` } diff --git a/pkg/services/sqlstore/team.go b/pkg/services/sqlstore/team.go index c11a2d077ed..546e0231706 100644 --- a/pkg/services/sqlstore/team.go +++ b/pkg/services/sqlstore/team.go @@ -294,7 +294,7 @@ func GetTeamMembers(query *m.GetTeamMembersQuery) error { 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.Cols("team_member.org_id", "team_member.team_id", "team_member.user_id", "user.email", "user.login", "team_member.external", "team_member.permission") sess.Asc("user.login", "user.email") err := sess.Find(&query.Result) diff --git a/public/app/features/teams/TeamMembers.tsx b/public/app/features/teams/TeamMembers.tsx index e5c3aaafef0..341d9311b53 100644 --- a/public/app/features/teams/TeamMembers.tsx +++ b/public/app/features/teams/TeamMembers.tsx @@ -2,9 +2,9 @@ import React, { PureComponent } from 'react'; import { connect } from 'react-redux'; import SlideDown from 'app/core/components/Animations/SlideDown'; import { UserPicker } from 'app/core/components/Select/UserPicker'; -import { DeleteButton } from '@grafana/ui'; +import { DeleteButton, Select } from '@grafana/ui'; import { TagBadge } from 'app/core/components/TagFilter/TagBadge'; -import { TeamMember, User } from 'app/types'; +import { TeamMember, User, teamsPermissionLevels } from 'app/types'; import { loadTeamMembers, addTeamMember, removeTeamMember, setSearchMemberQuery } from './state/actions'; import { getSearchMemberQuery, getTeamMembers } from './state/selectors'; import { FilterInput } from 'app/core/components/FilterInput/FilterInput'; @@ -70,6 +70,7 @@ export class TeamMembers extends PureComponent { } renderMember(member: TeamMember, syncEnabled: boolean) { + const currentPermissionLevel = teamsPermissionLevels.find(dp => dp.value === member.permission); return ( @@ -77,6 +78,18 @@ export class TeamMembers extends PureComponent { {member.login} {member.email} + +
+ +
+ + @@ -205,6 +253,48 @@ exports[`Render should render team members 1`] = ` test@test.com + +
+ +
+ + @@ -255,6 +387,48 @@ exports[`Render should render team members 1`] = ` test@test.com + +
+ +
+ + @@ -363,6 +579,9 @@ exports[`Render should render team members when sync enabled 1`] = ` Email + + Permission + test@test.com + +
+ +
+ + test@test.com + +
+ +
+ + test@test.com + +
+