From e94443086f435b4cdc6dc14566f886d9a0c599bd Mon Sep 17 00:00:00 2001 From: Alexander Mechler Date: Tue, 11 Oct 2022 16:16:45 -0700 Subject: [PATCH 1/4] Make the admin badge based on roles --- src/pages/workspace/WorkspaceMembersPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/WorkspaceMembersPage.js b/src/pages/workspace/WorkspaceMembersPage.js index 0b3f12570340..1622bd0145ba 100644 --- a/src/pages/workspace/WorkspaceMembersPage.js +++ b/src/pages/workspace/WorkspaceMembersPage.js @@ -267,7 +267,7 @@ class WorkspaceMembersPage extends React.Component { }} /> - {this.props.session.email === item.login && ( + {item.role === 'admin' && ( From 296cf4d1475f3843e2d1c31060eecbc78324d15d Mon Sep 17 00:00:00 2001 From: Alexander Mechler Date: Tue, 11 Oct 2022 16:20:08 -0700 Subject: [PATCH 2/4] Also add back self check --- src/pages/workspace/WorkspaceMembersPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/WorkspaceMembersPage.js b/src/pages/workspace/WorkspaceMembersPage.js index 1622bd0145ba..5e00fdce8cea 100644 --- a/src/pages/workspace/WorkspaceMembersPage.js +++ b/src/pages/workspace/WorkspaceMembersPage.js @@ -267,7 +267,7 @@ class WorkspaceMembersPage extends React.Component { }} /> - {item.role === 'admin' && ( + {(this.props.session.email === item.login || item.role === 'admin') && ( From 9170edf69344251962746019cac106122f7118ea Mon Sep 17 00:00:00 2001 From: Alexander Mechler Date: Tue, 11 Oct 2022 16:30:31 -0700 Subject: [PATCH 3/4] Add makeMeAdmin and ownerEmail parameters to createWorkspace --- src/libs/actions/App.js | 4 +++- src/libs/actions/Policy.js | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/App.js b/src/libs/actions/App.js index 265de152b3d5..653bfa751268 100644 --- a/src/libs/actions/App.js +++ b/src/libs/actions/App.js @@ -187,12 +187,14 @@ function setUpPoliciesAndNavigate(session) { const isLoggingInAsNewUser = SessionUtils.isLoggingInAsNewUser(currentUrl, session.email); const url = new URL(currentUrl); const exitTo = url.searchParams.get('exitTo'); + const ownerEmail = url.searchParams.get('ownerEmail'); + const makeMeAdmin = url.searchParams.get('makeMeAdmin'); const shouldCreateFreePolicy = !isLoggingInAsNewUser && Str.startsWith(url.pathname, Str.normalizeUrl(ROUTES.TRANSITION_FROM_OLD_DOT)) && exitTo === ROUTES.WORKSPACE_NEW; if (shouldCreateFreePolicy) { - Policy.createWorkspace(); + Policy.createWorkspace(ownerEmail, makeMeAdmin); return; } if (!isLoggingInAsNewUser && exitTo) { diff --git a/src/libs/actions/Policy.js b/src/libs/actions/Policy.js index 457f3e2cd4e1..f3ef5276bb4b 100644 --- a/src/libs/actions/Policy.js +++ b/src/libs/actions/Policy.js @@ -764,7 +764,7 @@ function generatePolicyID() { /** * Optimistically creates a new workspace and default workspace chats */ -function createWorkspace() { +function createWorkspace(ownerEmail = '', makeMeAdmin = false) { const policyID = generatePolicyID(); const workspaceName = generateDefaultWorkspaceName(); @@ -785,6 +785,8 @@ function createWorkspace() { announceChatReportID, adminsChatReportID, expenseChatReportID, + ownerEmail, + makeMeAdmin, policyName: workspaceName, type: CONST.POLICY.TYPE.FREE, }, From f9b0e4a0f0f28844839eb0355696111beed23736 Mon Sep 17 00:00:00 2001 From: Alexander Mechler Date: Tue, 11 Oct 2022 16:43:32 -0700 Subject: [PATCH 4/4] Add comments --- src/libs/actions/App.js | 3 +++ src/libs/actions/Policy.js | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/libs/actions/App.js b/src/libs/actions/App.js index 653bfa751268..faa7fe87f5d3 100644 --- a/src/libs/actions/App.js +++ b/src/libs/actions/App.js @@ -187,6 +187,9 @@ function setUpPoliciesAndNavigate(session) { const isLoggingInAsNewUser = SessionUtils.isLoggingInAsNewUser(currentUrl, session.email); const url = new URL(currentUrl); const exitTo = url.searchParams.get('exitTo'); + + // Approved Accountants and Guides can enter a flow where they make a workspace for other users, + // and those are passed as a search parameter when using transition links const ownerEmail = url.searchParams.get('ownerEmail'); const makeMeAdmin = url.searchParams.get('makeMeAdmin'); diff --git a/src/libs/actions/Policy.js b/src/libs/actions/Policy.js index f3ef5276bb4b..dda3b4519fce 100644 --- a/src/libs/actions/Policy.js +++ b/src/libs/actions/Policy.js @@ -763,6 +763,9 @@ function generatePolicyID() { /** * Optimistically creates a new workspace and default workspace chats + * + * @param {String} [ownerEmail] Optional, the email of the account to make the owner of the policy + * @param {Boolean} [makeMeAdmin] Optional, leave the calling account as an admin on the policy */ function createWorkspace(ownerEmail = '', makeMeAdmin = false) { const policyID = generatePolicyID();