feat(workspaces): add workspaceRole to LimitedUser type (#3721)
* feat(workspaces): add workspaceRole to LimitedUser type * fix(users): require workspace access for query
This commit is contained in:
@@ -1058,6 +1058,7 @@ export type LimitedUser = {
|
||||
totalOwnedStreamsFavorites: Scalars['Int']['output'];
|
||||
verified?: Maybe<Scalars['Boolean']['output']>;
|
||||
workspaceDomainPolicyCompliant?: Maybe<Scalars['Boolean']['output']>;
|
||||
workspaceRole?: Maybe<Scalars['String']['output']>;
|
||||
};
|
||||
|
||||
|
||||
@@ -1114,6 +1115,15 @@ export type LimitedUserWorkspaceDomainPolicyCompliantArgs = {
|
||||
workspaceId?: InputMaybe<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Limited user type, for showing public info about a user
|
||||
* to another user
|
||||
*/
|
||||
export type LimitedUserWorkspaceRoleArgs = {
|
||||
workspaceId?: InputMaybe<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
/** Workspace metadata visible to non-workspace members. */
|
||||
export type LimitedWorkspace = {
|
||||
__typename?: 'LimitedWorkspace';
|
||||
@@ -7295,6 +7305,7 @@ export type LimitedUserFieldArgs = {
|
||||
totalOwnedStreamsFavorites: {},
|
||||
verified: {},
|
||||
workspaceDomainPolicyCompliant: LimitedUserWorkspaceDomainPolicyCompliantArgs,
|
||||
workspaceRole: LimitedUserWorkspaceRoleArgs,
|
||||
}
|
||||
export type LimitedWorkspaceFieldArgs = {
|
||||
defaultLogoIndex: {},
|
||||
|
||||
@@ -503,6 +503,7 @@ extend type Project {
|
||||
# case of using userSearch, and we alway expose this
|
||||
extend type LimitedUser {
|
||||
workspaceDomainPolicyCompliant(workspaceId: String): Boolean
|
||||
workspaceRole(workspaceId: String): String
|
||||
# if workspaceId is undefined | null, just return undefined
|
||||
# this can be implemented by the workspaceCore resolver too, to avoid frontend component duplication
|
||||
}
|
||||
|
||||
@@ -1080,6 +1080,7 @@ export type LimitedUser = {
|
||||
totalOwnedStreamsFavorites: Scalars['Int']['output'];
|
||||
verified?: Maybe<Scalars['Boolean']['output']>;
|
||||
workspaceDomainPolicyCompliant?: Maybe<Scalars['Boolean']['output']>;
|
||||
workspaceRole?: Maybe<Scalars['String']['output']>;
|
||||
};
|
||||
|
||||
|
||||
@@ -1136,6 +1137,15 @@ export type LimitedUserWorkspaceDomainPolicyCompliantArgs = {
|
||||
workspaceId?: InputMaybe<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Limited user type, for showing public info about a user
|
||||
* to another user
|
||||
*/
|
||||
export type LimitedUserWorkspaceRoleArgs = {
|
||||
workspaceId?: InputMaybe<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
/** Workspace metadata visible to non-workspace members. */
|
||||
export type LimitedWorkspace = {
|
||||
__typename?: 'LimitedWorkspace';
|
||||
@@ -5775,6 +5785,7 @@ export type LimitedUserResolvers<ContextType = GraphQLContext, ParentType extend
|
||||
totalOwnedStreamsFavorites?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
|
||||
verified?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>;
|
||||
workspaceDomainPolicyCompliant?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, Partial<LimitedUserWorkspaceDomainPolicyCompliantArgs>>;
|
||||
workspaceRole?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType, Partial<LimitedUserWorkspaceRoleArgs>>;
|
||||
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
|
||||
};
|
||||
|
||||
|
||||
@@ -1061,6 +1061,7 @@ export type LimitedUser = {
|
||||
totalOwnedStreamsFavorites: Scalars['Int']['output'];
|
||||
verified?: Maybe<Scalars['Boolean']['output']>;
|
||||
workspaceDomainPolicyCompliant?: Maybe<Scalars['Boolean']['output']>;
|
||||
workspaceRole?: Maybe<Scalars['String']['output']>;
|
||||
};
|
||||
|
||||
|
||||
@@ -1117,6 +1118,15 @@ export type LimitedUserWorkspaceDomainPolicyCompliantArgs = {
|
||||
workspaceId?: InputMaybe<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Limited user type, for showing public info about a user
|
||||
* to another user
|
||||
*/
|
||||
export type LimitedUserWorkspaceRoleArgs = {
|
||||
workspaceId?: InputMaybe<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
/** Workspace metadata visible to non-workspace members. */
|
||||
export type LimitedWorkspace = {
|
||||
__typename?: 'LimitedWorkspace';
|
||||
|
||||
@@ -1357,6 +1357,24 @@ export = FF_WORKSPACES_MODULE_ENABLED
|
||||
findEmailsByUserId: findEmailsByUserIdFactory({ db }),
|
||||
getWorkspaceWithDomains: getWorkspaceWithDomainsFactory({ db })
|
||||
})({ workspaceId, userId })
|
||||
},
|
||||
workspaceRole: async (parent, args, context) => {
|
||||
const workspaceId = args.workspaceId
|
||||
if (!workspaceId) return null
|
||||
|
||||
await authorizeResolver(
|
||||
context.userId,
|
||||
workspaceId,
|
||||
Roles.Workspace.Member,
|
||||
context.resourceAccessRules
|
||||
)
|
||||
|
||||
const userId = parent.id
|
||||
|
||||
return await getWorkspaceRoleForUserFactory({ db })({
|
||||
userId,
|
||||
workspaceId
|
||||
})
|
||||
}
|
||||
},
|
||||
ServerInfo: {
|
||||
|
||||
@@ -115,7 +115,8 @@ export = !FF_WORKSPACES_MODULE_ENABLED
|
||||
}
|
||||
},
|
||||
LimitedUser: {
|
||||
workspaceDomainPolicyCompliant: async () => null
|
||||
workspaceDomainPolicyCompliant: async () => null,
|
||||
workspaceRole: async () => null
|
||||
},
|
||||
ServerInfo: {
|
||||
workspaces: () => ({})
|
||||
|
||||
@@ -1062,6 +1062,7 @@ export type LimitedUser = {
|
||||
totalOwnedStreamsFavorites: Scalars['Int']['output'];
|
||||
verified?: Maybe<Scalars['Boolean']['output']>;
|
||||
workspaceDomainPolicyCompliant?: Maybe<Scalars['Boolean']['output']>;
|
||||
workspaceRole?: Maybe<Scalars['String']['output']>;
|
||||
};
|
||||
|
||||
|
||||
@@ -1118,6 +1119,15 @@ export type LimitedUserWorkspaceDomainPolicyCompliantArgs = {
|
||||
workspaceId?: InputMaybe<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Limited user type, for showing public info about a user
|
||||
* to another user
|
||||
*/
|
||||
export type LimitedUserWorkspaceRoleArgs = {
|
||||
workspaceId?: InputMaybe<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
/** Workspace metadata visible to non-workspace members. */
|
||||
export type LimitedWorkspace = {
|
||||
__typename?: 'LimitedWorkspace';
|
||||
|
||||
Reference in New Issue
Block a user