Basic Auth Context

This commit is contained in:
2021-02-02 22:55:35 -05:00
parent 7e6454c593
commit c39fe6ec24
13 changed files with 828 additions and 202 deletions

View File

@@ -4,7 +4,7 @@ scalar Time
scalar Upload
# https://gqlgen.com/reference/directives/
directive @hasRole(role: Role!) on FIELD_DEFINITION
directive @hasMinRole(role: Role!) on FIELD_DEFINITION
directive @meta(
gorm: String,
@@ -31,6 +31,20 @@ enum AuthType {
LDAP
}
# ------------------------------------------------------------
# ---------------------- Authentication ----------------------
# ------------------------------------------------------------
enum AuthResult {
Success
Failure
}
type AuthResponse {
Result: AuthResult!
Error: String
}
# ------------------------------------------------------------
# ----------------------- Type Filters -----------------------
# ------------------------------------------------------------
@@ -312,45 +326,54 @@ type AlbumResponse {
# ------------------------------------------------------------
type Query {
# Authentication
login(
user: String!
password: String!
): AuthResult!
logout: AuthResult! @hasMinRole(role: User)
# Single Item
mediaItem(id: ID!): MediaItem! @hasRole(role: User)
device(id: ID!): Device! @hasRole(role: User)
album(id: ID!): Album! @hasRole(role: User)
tag(id: ID!): Tag! @hasRole(role: User)
user(id: ID!): User! @hasRole(role: Admin)
mediaItem(id: ID!): MediaItem! @hasMinRole(role: User)
device(id: ID!): Device! @hasMinRole(role: User)
album(id: ID!): Album! @hasMinRole(role: User)
user(id: ID!): User! @hasMinRole(role: Admin)
tag(id: ID!): Tag! @hasMinRole(role: User)
me: User! @hasMinRole(role: User)
# All
mediaItems(
filter: MediaItemFilter
count: Int
page: Int
): MediaItemResponse! @hasRole(role: User)
): MediaItemResponse! @hasMinRole(role: User)
devices(
filter: DeviceFilter
count: Int
page: Int
): DeviceResponse! @hasRole(role: User)
): DeviceResponse! @hasMinRole(role: User)
albums(
filter: AlbumFilter
count: Int
page: Int
): AlbumResponse! @hasRole(role: User)
): AlbumResponse! @hasMinRole(role: User)
tags(
filter: TagFilter
count: Int
page: Int
): TagResponse! @hasRole(role: User)
): TagResponse! @hasMinRole(role: User)
users(
filter: UserFilter
count: Int
page: Int
): UserResponse! @hasRole(role: Admin)
): UserResponse! @hasMinRole(role: Admin)
}
type Mutation {
createMediaItem(input: NewMediaItem!): MediaItem! @hasRole(role: User)
createDevice(input: NewDevice!): Device! @hasRole(role: User)
createAlbum(input: NewAlbum!): Album! @hasRole(role: User)
createTag(input: NewTag!): Tag! @hasRole(role: User)
createUser(input: NewUser!): User! @hasRole(role: Admin)
createMediaItem(input: NewMediaItem!): MediaItem! @hasMinRole(role: User)
createDevice(input: NewDevice!): Device! @hasMinRole(role: User)
createAlbum(input: NewAlbum!): Album! @hasMinRole(role: User)
createTag(input: NewTag!): Tag! @hasMinRole(role: User)
createUser(input: NewUser!): User! @hasMinRole(role: Admin)
}