Browse Source

teams: team listing shows only your teams (editors).

Leonard Gram 6 years ago
parent
commit
89d4db8eb6

+ 11 - 5
pkg/api/team.go

@@ -86,12 +86,18 @@ func SearchTeams(c *m.ReqContext) Response {
 		page = 1
 		page = 1
 	}
 	}
 
 
+	var userIdFilter int64
+	if c.QueryBool("showMine") {
+		userIdFilter = c.SignedInUser.UserId
+	}
+
 	query := m.SearchTeamsQuery{
 	query := m.SearchTeamsQuery{
-		OrgId: c.OrgId,
-		Query: c.Query("query"),
-		Name:  c.Query("name"),
-		Page:  page,
-		Limit: perPage,
+		OrgId:        c.OrgId,
+		Query:        c.Query("query"),
+		Name:         c.Query("name"),
+		UserIdFilter: userIdFilter,
+		Page:         page,
+		Limit:        perPage,
 	}
 	}
 
 
 	if err := bus.Dispatch(&query); err != nil {
 	if err := bus.Dispatch(&query); err != nil {

+ 6 - 5
pkg/models/team.go

@@ -61,11 +61,12 @@ type GetTeamsByUserQuery struct {
 }
 }
 
 
 type SearchTeamsQuery struct {
 type SearchTeamsQuery struct {
-	Query string
-	Name  string
-	Limit int
-	Page  int
-	OrgId int64
+	Query        string
+	Name         string
+	Limit        int
+	Page         int
+	OrgId        int64
+	UserIdFilter int64
 
 
 	Result SearchTeamQueryResult
 	Result SearchTeamQueryResult
 }
 }

+ 4 - 0
pkg/services/sqlstore/team.go

@@ -149,6 +149,10 @@ func SearchTeams(query *m.SearchTeamsQuery) error {
 	params := make([]interface{}, 0)
 	params := make([]interface{}, 0)
 
 
 	sql.WriteString(getTeamSelectSqlBase())
 	sql.WriteString(getTeamSelectSqlBase())
+	if query.UserIdFilter > 0 {
+		sql.WriteString(`INNER JOIN team_member on team.id = team_member.team_id AND team_member.user_id = ?`)
+		params = append(params, query.UserIdFilter)
+	}
 	sql.WriteString(` WHERE team.org_id = ?`)
 	sql.WriteString(` WHERE team.org_id = ?`)
 
 
 	params = append(params, query.OrgId)
 	params = append(params, query.OrgId)

+ 4 - 2
public/app/features/teams/state/actions.ts

@@ -1,8 +1,9 @@
 import { ThunkAction } from 'redux-thunk';
 import { ThunkAction } from 'redux-thunk';
 import { getBackendSrv } from 'app/core/services/backend_srv';
 import { getBackendSrv } from 'app/core/services/backend_srv';
-import { StoreState, Team, TeamGroup, TeamMember } from 'app/types';
+import { OrgRole, StoreState, Team, TeamGroup, TeamMember } from 'app/types';
 import { updateNavIndex, UpdateNavIndexAction } from 'app/core/actions';
 import { updateNavIndex, UpdateNavIndexAction } from 'app/core/actions';
 import { buildNavModel } from './navModel';
 import { buildNavModel } from './navModel';
+import { contextSrv } from '../../../core/services/context_srv';
 
 
 export enum ActionTypes {
 export enum ActionTypes {
   LoadTeams = 'LOAD_TEAMS',
   LoadTeams = 'LOAD_TEAMS',
@@ -85,7 +86,8 @@ export const setSearchQuery = (searchQuery: string): SetSearchQueryAction => ({
 
 
 export function loadTeams(): ThunkResult<void> {
 export function loadTeams(): ThunkResult<void> {
   return async dispatch => {
   return async dispatch => {
-    const response = await getBackendSrv().get('/api/teams/search', { perpage: 1000, page: 1 });
+    const showMine = contextSrv.user.orgRole === OrgRole.Editor;
+    const response = await getBackendSrv().get('/api/teams/search', { perpage: 1000, page: 1, showMine });
     dispatch(teamsLoaded(response.teams));
     dispatch(teamsLoaded(response.teams));
   };
   };
 }
 }