• Nicolas Giard's avatar
    feat: new login experience (#2139) · c009cc13
    Nicolas Giard authored
    * feat: multiple auth instances
    
    * fix: auth setup + strategy initialization
    
    * feat: admin auth - add strategy
    
    * feat: redirect on login - group setting
    
    * feat: oauth2 generic - props definitions
    
    * feat: new login UI (wip)
    
    * feat: new login UI (wip)
    
    * feat: admin security login settings
    
    * feat: tabset editor indicators + print view improvements
    
    * fix: code styling
    c009cc13
group.graphql 2.22 KB
# ===============================================
# GROUPS
# ===============================================

extend type Query {
  groups: GroupQuery
}

extend type Mutation {
  groups: GroupMutation
}

# -----------------------------------------------
# QUERIES
# -----------------------------------------------

type GroupQuery {
  list(
    filter: String
    orderBy: String
  ): [GroupMinimal] @auth(requires: ["write:groups", "manage:groups", "manage:system"])

  single(
    id: Int!
  ): Group @auth(requires: ["write:groups", "manage:groups", "manage:system"])
}

# -----------------------------------------------
# MUTATIONS
# -----------------------------------------------

type GroupMutation {
  create(
    name: String!
  ): GroupResponse @auth(requires: ["write:groups", "manage:groups", "manage:system"])

  update(
    id: Int!
    name: String!
    redirectOnLogin: String!
    permissions: [String]!
    pageRules: [PageRuleInput]!
  ): DefaultResponse @auth(requires: ["write:groups", "manage:groups", "manage:system"])

  delete(
    id: Int!
  ): DefaultResponse @auth(requires: ["write:groups", "manage:groups", "manage:system"])

  assignUser(
    groupId: Int!
    userId: Int!
  ): DefaultResponse @auth(requires: ["write:groups", "manage:groups", "manage:system"])

  unassignUser(
    groupId: Int!
    userId: Int!
  ): DefaultResponse @auth(requires: ["write:groups", "manage:groups", "manage:system"])
}

# -----------------------------------------------
# TYPES
# -----------------------------------------------

type GroupResponse {
  responseResult: ResponseStatus!
  group: Group
}

type GroupMinimal {
  id: Int!
  name: String!
  isSystem: Boolean!
  userCount: Int
  createdAt: Date!
  updatedAt: Date!
}

type Group {
  id: Int!
  name: String!
  isSystem: Boolean!
  redirectOnLogin: String
  permissions: [String]!
  pageRules: [PageRule]
  users: [UserMinimal]
  createdAt: Date!
  updatedAt: Date!
}

type PageRule {
  id: String!
  deny: Boolean!
  match: PageRuleMatch!
  roles: [String]!
  path: String!
  locales: [String]!
}

input PageRuleInput {
  id: String!
  deny: Boolean!
  match: PageRuleMatch!
  roles: [String]!
  path: String!
  locales: [String]!
}

enum PageRuleMatch {
  START
  EXACT
  END
  REGEX
  TAG
}