authentication.graphql 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. # ===============================================
  2. # AUTHENTICATION
  3. # ===============================================
  4. extend type Query {
  5. authentication: AuthenticationQuery
  6. }
  7. extend type Mutation {
  8. authentication: AuthenticationMutation
  9. }
  10. # -----------------------------------------------
  11. # QUERIES
  12. # -----------------------------------------------
  13. type AuthenticationQuery {
  14. apiKeys: [AuthenticationApiKey] @auth(requires: ["manage:system", "manage:api"])
  15. apiState: Boolean! @auth(requires: ["manage:system", "manage:api"])
  16. strategies: [AuthenticationStrategy] @auth(requires: ["manage:system"])
  17. activeStrategies: [AuthenticationActiveStrategy]
  18. }
  19. # -----------------------------------------------
  20. # MUTATIONS
  21. # -----------------------------------------------
  22. type AuthenticationMutation {
  23. createApiKey(
  24. name: String!
  25. expiration: String!
  26. fullAccess: Boolean!
  27. group: Int
  28. ): AuthenticationCreateApiKeyResponse @auth(requires: ["manage:system", "manage:api"])
  29. login(
  30. username: String!
  31. password: String!
  32. strategy: String!
  33. ): AuthenticationLoginResponse @rateLimit(limit: 5, duration: 60)
  34. loginTFA(
  35. continuationToken: String!
  36. securityCode: String!
  37. setup: Boolean
  38. ): AuthenticationLoginResponse @rateLimit(limit: 5, duration: 60)
  39. loginChangePassword(
  40. continuationToken: String!
  41. newPassword: String!
  42. ): AuthenticationLoginResponse @rateLimit(limit: 5, duration: 60)
  43. forgotPassword(
  44. email: String!
  45. ): DefaultResponse @rateLimit(limit: 3, duration: 60)
  46. register(
  47. email: String!
  48. password: String!
  49. name: String!
  50. ): AuthenticationRegisterResponse
  51. revokeApiKey(
  52. id: Int!
  53. ): DefaultResponse @auth(requires: ["manage:system", "manage:api"])
  54. setApiState(
  55. enabled: Boolean!
  56. ): DefaultResponse @auth(requires: ["manage:system", "manage:api"])
  57. updateStrategies(
  58. strategies: [AuthenticationStrategyInput]!
  59. ): DefaultResponse @auth(requires: ["manage:system"])
  60. regenerateCertificates: DefaultResponse @auth(requires: ["manage:system"])
  61. resetGuestUser: DefaultResponse @auth(requires: ["manage:system"])
  62. }
  63. # -----------------------------------------------
  64. # TYPES
  65. # -----------------------------------------------
  66. type AuthenticationStrategy {
  67. key: String!
  68. props: [KeyValuePair] @auth(requires: ["manage:system"])
  69. title: String!
  70. description: String
  71. isAvailable: Boolean
  72. useForm: Boolean!
  73. usernameType: String
  74. logo: String
  75. color: String
  76. website: String
  77. icon: String
  78. }
  79. type AuthenticationActiveStrategy {
  80. key: String!
  81. strategy: AuthenticationStrategy!
  82. displayName: String!
  83. order: Int!
  84. config: [KeyValuePair] @auth(requires: ["manage:system"])
  85. selfRegistration: Boolean!
  86. domainWhitelist: [String]! @auth(requires: ["manage:system"])
  87. autoEnrollGroups: [Int]! @auth(requires: ["manage:system"])
  88. }
  89. type AuthenticationLoginResponse {
  90. responseResult: ResponseStatus
  91. jwt: String
  92. mustChangePwd: Boolean
  93. mustProvideTFA: Boolean
  94. mustSetupTFA: Boolean
  95. continuationToken: String
  96. redirect: String
  97. tfaQRImage: String
  98. }
  99. type AuthenticationRegisterResponse {
  100. responseResult: ResponseStatus
  101. jwt: String
  102. }
  103. input AuthenticationStrategyInput {
  104. key: String!
  105. strategyKey: String!
  106. config: [KeyValuePairInput]
  107. displayName: String!
  108. order: Int!
  109. selfRegistration: Boolean!
  110. domainWhitelist: [String]!
  111. autoEnrollGroups: [Int]!
  112. }
  113. type AuthenticationApiKey {
  114. id: Int!
  115. name: String!
  116. keyShort: String!
  117. expiration: Date!
  118. createdAt: Date!
  119. updatedAt: Date!
  120. isRevoked: Boolean!
  121. }
  122. type AuthenticationCreateApiKeyResponse {
  123. responseResult: ResponseStatus
  124. key: String
  125. }