d42bf7c3f9
* feat(workspaces): add workspace sso feature flag * feat(workspaceSso): wip validate sso * feat(workspaces): validate and add sso provider to the workspace with user sso sessions * feat(workspaces): validate and add sso provider to the workspace with user sso sessions * WIP * fix(sso): restructure to handle all branches at end of flow * fix(sso): add and validate emails used for sso * fix(sso): park progress * chore(workspaces): review sso login/valdate * fix(sso): adjust validate url * chore(sso): auth header puzzle * fix(sso): happy-path config * chore(gql): gqlgen * fix(sso): almost almost * fix(sso): auth endpoint * a lil more terse * fix(sso): light at the end of the tunnel * fix(sso): improve catch block error messages * fix(sso): session lifespan => validUntil * fix(sso): I think we've got it * feat(sso): limited workspace values for public sso login * fix(sso): use factory functions * fix(sso): til decrypt is single-use * fix(sso): correct usage of access codes * fix(sso): use finalize middleware in all routes * chore(sso): cheeky tweak * fix(sso): move some types around * fix(sso): stencil final shape I'm sleepy * fix(sso): more factories more factories * fix(sso): on to final boss of factories * fix(sso): needs a haircut but she works * fix(sso): init rest w function, not side-effects * fix(sso): /authn => /sso * chore(sso): errors * chore(sso): test test test * chore(sso): test all the corners * feat(sso): list workspace sso memberships * chore(sso): tests, expose in rest * fix(sso): sketch active user auth * fix(sso): expose search via gql * fix(sso): active user session information * chore(sso): sso session test utils * chore(sso): test sso session repo/services * chore(sso): gqlgen * feat(sso): throw error on missing or expired sso session * chore(sso): tests for SSO access protection --------- Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com> Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
84 lines
1.5 KiB
TypeScript
84 lines
1.5 KiB
TypeScript
import gql from 'graphql-tag'
|
|
|
|
export const basicProjectFieldsFragment = gql`
|
|
fragment BasicProjectFields on Project {
|
|
id
|
|
name
|
|
description
|
|
visibility
|
|
allowPublicComments
|
|
role
|
|
createdAt
|
|
updatedAt
|
|
}
|
|
`
|
|
|
|
export const adminProjectListQuery = gql`
|
|
query AdminProjectList(
|
|
$query: String
|
|
$orderBy: String
|
|
$visibility: String
|
|
$limit: Int! = 25
|
|
$cursor: String = null
|
|
) {
|
|
admin {
|
|
projectList(
|
|
query: $query
|
|
orderBy: $orderBy
|
|
visibility: $visibility
|
|
limit: $limit
|
|
cursor: $cursor
|
|
) {
|
|
cursor
|
|
totalCount
|
|
items {
|
|
...BasicProjectFields
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
${basicProjectFieldsFragment}
|
|
`
|
|
|
|
export const getProjectObjectQuery = gql`
|
|
query GetProjectObject($projectId: String!, $objectId: String!) {
|
|
project(id: $projectId) {
|
|
object(id: $objectId) {
|
|
id
|
|
createdAt
|
|
}
|
|
}
|
|
}
|
|
`
|
|
|
|
export const getProjectQuery = gql`
|
|
query GetProject($id: String!) {
|
|
project(id: $id) {
|
|
id
|
|
name
|
|
workspaceId
|
|
}
|
|
}
|
|
`
|
|
|
|
export const createProjectMutation = gql`
|
|
mutation CreateProject($input: ProjectCreateInput!) {
|
|
projectMutations {
|
|
create(input: $input) {
|
|
...BasicProjectFields
|
|
}
|
|
}
|
|
}
|
|
|
|
${basicProjectFieldsFragment}
|
|
`
|
|
|
|
export const batchDeleteProjectsMutation = gql`
|
|
mutation BatchDeleteProjects($ids: [String!]!) {
|
|
projectMutations {
|
|
batchDelete(ids: $ids)
|
|
}
|
|
}
|
|
`
|