From 28401da2decd9488107757259a31acf1e71d32d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Sanz=20Garc=C3=ADa?= Date: Mon, 12 Feb 2024 18:48:01 +0100 Subject: [PATCH 1/2] Use group/project ID for invite user modal We are replacing the query to invite users when the SAML is enabled. We have decided to use a group query or project query depending of the context. See https://gitlab.com/gitlab-org/gitlab/-/issues/434464#note_1764747685. These API queries are not yet in use because the feature flag, `group_users_saml` is currently off in all environments. So it is safe to deploy. --- app/assets/javascripts/api/user_api.js | 11 +++-- .../components/invite_members_modal.vue | 3 +- .../components/members_token_select.vue | 8 +++- spec/frontend/api/user_api_spec.js | 15 +++++- .../components/members_token_select_spec.js | 48 +++++++++++++++---- 5 files changed, 67 insertions(+), 18 deletions(-) diff --git a/app/assets/javascripts/api/user_api.js b/app/assets/javascripts/api/user_api.js index 302de9760800c1..0a333ed198f18e 100644 --- a/app/assets/javascripts/api/user_api.js +++ b/app/assets/javascripts/api/user_api.js @@ -4,7 +4,8 @@ import { buildApiUrl } from './api_utils'; const USER_COUNTS_PATH = '/api/:version/user_counts'; const USERS_PATH = '/api/:version/users.json'; -const USERS_SAML_PATH = '/api/:version/groups/:id/users.json'; +const USERS_SAML_GROUP_PATH = '/api/:version/groups/:id/users.json'; +const USERS_SAML_PROJECT_PATH = '/api/:version/projects/:id/users.json'; const USER_PATH = '/api/:version/users/:id'; const USER_STATUS_PATH = '/api/:version/users/:id/status'; const USER_PROJECTS_PATH = '/api/:version/users/:id/projects'; @@ -31,11 +32,13 @@ export function getUsers(query, options) { * If the query string is less than 3 characters it returns an empty list. * * @param {string} query - query string to search - * @param {string} groupId -- top-level group id + * @param {boolean} isProject + * @param {string} id -- group or project id * @param {object} options */ -export function getGroupUsers(query, groupId, options) { - const url = buildApiUrl(USERS_SAML_PATH).replace(':id', groupId); +export function getGroupUsers(query, isProject, id, options) { + const path = isProject ? USERS_SAML_PROJECT_PATH : USERS_SAML_GROUP_PATH; + const url = buildApiUrl(path).replace(':id', id); return axios.get(url, { params: { search: query, diff --git a/app/assets/javascripts/invite_members/components/invite_members_modal.vue b/app/assets/javascripts/invite_members/components/invite_members_modal.vue index 5125f6f70ac46c..3a92c16b777f53 100644 --- a/app/assets/javascripts/invite_members/components/invite_members_modal.vue +++ b/app/assets/javascripts/invite_members/components/invite_members_modal.vue @@ -449,6 +449,7 @@ export default {