* Added Page Rules For Matching Tags * fix: use T as Tag Match icon * fix: reorder page rules in checkAccess * fix: common controller tags code refactor Co-authored-by: Nicolas Giard <github@ngpixel.com>
		
			
				
	
	
		
			113 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			GraphQL
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			GraphQL
		
	
	
	
	
	
# ===============================================
 | 
						|
# 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!
 | 
						|
    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!
 | 
						|
  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
 | 
						|
}
 |