Compare commits
12 Commits
064e8a8054
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 172128b37b | |||
| 8bb522ec33 | |||
| f32d3a4877 | |||
| 0fe449538e | |||
| c797cb9f24 | |||
| e884b0e97d | |||
| 9b153dacd8 | |||
| fdf7e89afe | |||
| 7baa903f7a | |||
| 3e0ba5f209 | |||
| a5598130db | |||
| e6ceea1b1b |
@@ -1,24 +0,0 @@
|
||||
<?php namespace GermanAirlinesVa\Graphql;
|
||||
|
||||
use Closure;
|
||||
|
||||
class Authentication
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if ($request->input('gql_session') === 'SUPER_SECRET_TOKEN') {
|
||||
return 'false';
|
||||
} else {
|
||||
return 'true';
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -5,6 +5,7 @@ use System\Classes\PluginBase;
|
||||
use App;
|
||||
use Config;
|
||||
use Illuminate\Database\DatabaseManager;
|
||||
use Illuminate\Support\Facades\Broadcast;
|
||||
use Illuminate\Foundation\AliasLoader;
|
||||
use GermanAirlinesVa\Graphql\Classes\GraphqlServiceProvider;
|
||||
use Nuwave\Lighthouse\Subscriptions\SubscriptionServiceProvider;
|
||||
@@ -43,13 +44,13 @@ class Plugin extends PluginBase
|
||||
$this->app->singleton(DatabaseManager::class, function ($app) {
|
||||
return $app->make('db');
|
||||
});
|
||||
\Illuminate\Support\Facades\Broadcast::routes([
|
||||
Broadcast::routes([
|
||||
'prefix' => '',
|
||||
'middleware' => 'GermanAirlinesVA\\Graphql\\Classes\\Authentication',
|
||||
]);
|
||||
require 'channels/channels.php';
|
||||
|
||||
Config::set('database.connections.germanairlinesva_graphql', Config::get('germanairlinesva.graphql::connection'));
|
||||
Config::push('system.unencrypt_cookies', 'graphql-session-id');
|
||||
}
|
||||
|
||||
public function bootPackages()
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
## GraphQLKeys
|
||||
|
||||
- **TODO** BelongsTo Member (External DB)
|
||||
- BelongsTo Member (External DB, creation in Social Plugin)
|
||||
|
||||
@@ -32920,7 +32920,7 @@ var _validUrl = __webpack_require__(429);
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
||||
|
||||
var options = { method: 'post', headers: { 'Content-Type': 'application/json' } };
|
||||
var endpoint = 'http://localhost/graphql/'; // Initial
|
||||
var endpoint = 'http://' + window.location.host + '/graphql/'; // Initial
|
||||
|
||||
var defaultQuery = '\n# Welcome to GraphiQL\n#\n# GraphiQL is an in-browser tool for writing, validating, and\n# testing GraphQL queries.\n#\n# Type queries into this side of the screen, and you will see intelligent\n# typeaheads aware of the current GraphQL type schema and live syntax and\n# validation errors highlighted within the text.\n#\n# GraphQL queries typically start with a "{" character. Lines that starts\n# with a # are ignored.\n#\n# An example GraphQL query might look like:\n#\n# {\n# field(arg: "value") {\n# subField\n# }\n# }\n#\n# Keyboard shortcuts:\n#\n# Run Query: Ctrl-Enter (or press the play button above)\n#\n# Auto Complete: Ctrl-Space (or just start typing)\n#\n# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n# Default endpoint is an instance of https://www.graph.cool/\n# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n\nquery {\n countries {\n name\n }\n}\n';
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,18 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Broadcast;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Broadcast Channels
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may register all of the event broadcasting channels that your
|
||||
| application supports. The given channel authorization callbacks are
|
||||
| used to check if an authenticated user can listen to the channel.
|
||||
|
|
||||
*/
|
||||
|
||||
Broadcast::channel('lighthouse-*', function ($user) {
|
||||
return true;
|
||||
});
|
||||
@@ -1,7 +1,6 @@
|
||||
<?php namespace GermanAirlinesVa\Graphql\Controllers;
|
||||
|
||||
use Backend\Classes\Controller;
|
||||
use BackendMenu;
|
||||
|
||||
class GraphqlKey extends Controller
|
||||
{
|
||||
@@ -9,6 +8,8 @@ class GraphqlKey extends Controller
|
||||
|
||||
public $listConfig = 'config_list.yaml';
|
||||
|
||||
public $requiredPermissions = ['germanairlinesva.graphql.master'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<?php namespace GermanAirlinesVa\Graphql\Controllers;
|
||||
|
||||
use Backend\Classes\Controller;
|
||||
use BackendMenu;
|
||||
|
||||
class Playground extends Controller
|
||||
{
|
||||
@@ -10,6 +9,8 @@ class Playground extends Controller
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public $requiredPermissions = ['germanairlinesva.graphql.master'];
|
||||
|
||||
public function index()
|
||||
{
|
||||
$this->pageTitle = 'germanairlinesva.graphql::lang.menu.playground';
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
==
|
||||
<?php
|
||||
function resolveExamMemberRanks($root, $args) {
|
||||
$exams = \GermanAirlinesVa\Schooling\Models\ExamMemberRank::where('member_id', $args['memberID'])->get();
|
||||
foreach($exams as $exam) {
|
||||
$exam->load([
|
||||
'exam_questions' => function ($query) {
|
||||
$query->groupBy('id');
|
||||
}
|
||||
]);
|
||||
}
|
||||
return $exams;
|
||||
}
|
||||
|
||||
function resolveExamTyperatings($root, $args) {
|
||||
$exams = \GermanAirlinesVa\Schooling\Models\ExamTyperating::where('member_id', $args['memberID'])->get();
|
||||
foreach($exams as $exam) {
|
||||
$exam->load([
|
||||
'exam_questions' => function ($query) {
|
||||
$query->groupBy('id');
|
||||
}
|
||||
]);
|
||||
}
|
||||
return $exams;
|
||||
}
|
||||
|
||||
function resolveTyperatings() {
|
||||
$typeratings = GermanAirlinesVa\Schooling\Models\Typerating::all();
|
||||
foreach($typeratings as $typerating) {
|
||||
$typerating->load([
|
||||
'exam_questions' => function($query) {
|
||||
$query->groupBy('id');
|
||||
}
|
||||
]);
|
||||
}
|
||||
return $typeratings;
|
||||
}
|
||||
|
||||
function resolveMemberRanks() {
|
||||
$ranks = GermanAirlinesVa\Schooling\Models\MemberRank::all();
|
||||
foreach($ranks as $rank) {
|
||||
$rank->load([
|
||||
'exam_questions' => function($query) {
|
||||
$query->groupBy('id');
|
||||
}
|
||||
]);
|
||||
}
|
||||
return $rank;
|
||||
}
|
||||
|
||||
function createExamMemberRank($root, $args) {
|
||||
return GermanAirlinesVa\Schooling\Models\ExamMemberRank::createNew($args['memberID'], $args['memberRankID']);
|
||||
}
|
||||
|
||||
function resolveCreateExamTyperating($root, $args) {
|
||||
return GermanAirlinesVa\Schooling\Models\ExamTyperating::createNew($args['memberID'], $args['typeratingID']);
|
||||
}
|
||||
==
|
||||
# Content
|
||||
extend type Query {
|
||||
memberRanks: [MemberRank]!
|
||||
typeratings: [Typerating]!
|
||||
examMemberRanks(memberID: ID!): [ExamMemberRank]!
|
||||
examTyperatings(memberID: ID!): [ExamTyperating]!
|
||||
}
|
||||
extend type Mutation {
|
||||
createExamMemberRank(memberID: ID!, memberRankID: ID!): ExamMemberRank!
|
||||
createExamTyperating(memberID: ID!, typeratingID: ID!): ExamTyperating!
|
||||
}
|
||||
|
||||
type MemberRank {
|
||||
id: ID!
|
||||
name: String!
|
||||
description: String!
|
||||
points: Int!
|
||||
price: Int!
|
||||
badge: String!
|
||||
region: String!
|
||||
exam_questions: [ExamMemberRankQuestion]! @hasMany
|
||||
exams: [ExamMemberRank]! @hasMany
|
||||
}
|
||||
type Typerating {
|
||||
id: ID!
|
||||
name: String!
|
||||
price: Int!
|
||||
exam_questions: [ExamTyperatingQuestion]! @hasMany
|
||||
exams: [ExamTyperating]! @hasMany
|
||||
}
|
||||
type ExamMemberRank {
|
||||
id: ID!
|
||||
member_id: ID!
|
||||
member_rank: MemberRank! @belongsTo
|
||||
start: DateTime!
|
||||
status: ExamStatus!
|
||||
exam_questions: [ExamMemberRankQuestion]! @belongsToMany
|
||||
exam_answers: [ExamMemberRankAnswer]! @belongsToMany
|
||||
}
|
||||
type ExamTyperating {
|
||||
id: ID!
|
||||
member_id: ID!
|
||||
typerating: Typerating! @belongsTo
|
||||
start: DateTime!
|
||||
status: ExamStatus!
|
||||
exam_questions: [ExamTyperatingQuestion]! @belongsToMany
|
||||
exam_answers: [ExamTyperatingAnswer]! @belongsToMany
|
||||
}
|
||||
type ExamMemberRankQuestion {
|
||||
id: ID!
|
||||
member_rank: MemberRank! @belongsTo
|
||||
in_use: Boolean!
|
||||
mandatory: Boolean!
|
||||
text: String!
|
||||
picture: String!
|
||||
exam_answers: [ExamMemberRankAnswer]! @hasMany
|
||||
exam_member_ranks: [ExamMemberRank]! @belongsToMany
|
||||
}
|
||||
type ExamTyperatingQuestion {
|
||||
id: ID!
|
||||
typerating: Typerating! @belongsTo
|
||||
in_use: Boolean!
|
||||
mandatory: Boolean!
|
||||
text: String!
|
||||
picture: String!
|
||||
exam_answers: [ExamTyperatingAnswer]! @hasMany
|
||||
exma_typeratings: [ExamTyperating]! @belongsToMany
|
||||
}
|
||||
type ExamMemberRankAnswer {
|
||||
id: ID!
|
||||
exam_question: ExamMemberRankQuestion! @belongsTo
|
||||
text: String!
|
||||
is_correct: Boolean!
|
||||
exam_member_ranks: [ExamMemberRank]! @belongsToMany
|
||||
}
|
||||
type ExamTyperatingAnswer {
|
||||
id: ID!
|
||||
exam_question: ExamTyperatingQuestion! @belongsTo
|
||||
text: String!
|
||||
is_correct: Boolean!
|
||||
exam_typeratings: [ExamTyperating]! @belongsToMany
|
||||
}
|
||||
|
||||
enum ExamStatus {
|
||||
open
|
||||
pending
|
||||
closed
|
||||
validated
|
||||
}
|
||||
|
||||
scalar DateTime
|
||||
@scalar(class: "Nuwave\\Lighthouse\\Schema\\Types\\Scalars\\DateTime")
|
||||
@@ -1,6 +1,5 @@
|
||||
<?php namespace GermanAirlinesVa\Graphql\Models;
|
||||
|
||||
use Cms\Classes\Theme;
|
||||
use Model;
|
||||
|
||||
class GraphqlKey extends Model
|
||||
@@ -26,4 +25,8 @@ class GraphqlKey extends Model
|
||||
'member_id' => 'required',
|
||||
'key' => 'required',
|
||||
];
|
||||
|
||||
public $belongsTo = [
|
||||
'member' => 'GermanAirlinesVa\Social\Models\Member',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?php namespace GermanAirlinesVa\Graphql\Models;
|
||||
|
||||
use Cms\Classes\Theme;
|
||||
use Model;
|
||||
|
||||
class Settings extends Model
|
||||
|
||||
@@ -2,9 +2,11 @@ columns:
|
||||
id:
|
||||
label: id
|
||||
type: number
|
||||
member_id:
|
||||
label: member_id
|
||||
type: number
|
||||
member:
|
||||
label: member
|
||||
type: text
|
||||
relation: member
|
||||
valueFrom: name
|
||||
valid_from:
|
||||
label: valid_from
|
||||
type: datetime
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@ plugin:
|
||||
icon: oc-icon-database
|
||||
homepage: ''
|
||||
permissions:
|
||||
schemas:
|
||||
germanairlinesva.graphql.master:
|
||||
tab: 'germanairlinesva.graphql::lang.permission.tab.schemas'
|
||||
label: 'germanairlinesva.graphql::lang.permission.label.schemas'
|
||||
navigation:
|
||||
@@ -14,7 +14,7 @@ navigation:
|
||||
url: /
|
||||
icon: icon-database
|
||||
permissions:
|
||||
- schemas
|
||||
- germanairlinesva.graphql.master
|
||||
sideMenu:
|
||||
side-menu-item:
|
||||
label: 'germanairlinesva.graphql::lang.menu.playground'
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
# Relations
|
||||
|
||||
## GraphQLKeys
|
||||
|
||||
- **TODO** BelongsTo Member (External DB)
|
||||
@@ -1,6 +1,5 @@
|
||||
<?php namespace GermanAirlinesVa\GraphQl\Updates;
|
||||
|
||||
use Config;
|
||||
use Schema;
|
||||
use October\Rain\Database\Updates\Migration;
|
||||
|
||||
|
||||
@@ -41,9 +41,9 @@ p-defer@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
|
||||
integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
|
||||
|
||||
"php-parser@git+https://github.com/glayzzle/php-parser.git#e61e26102144f267ecf5e09020865a9baa6ca2f1":
|
||||
"php-parser@https://github.com/glayzzle/php-parser#e61e26102144f267ecf5e09020865a9baa6ca2f1":
|
||||
version "3.0.2"
|
||||
resolved "git+https://github.com/glayzzle/php-parser.git#e61e26102144f267ecf5e09020865a9baa6ca2f1"
|
||||
resolved "https://github.com/glayzzle/php-parser#e61e26102144f267ecf5e09020865a9baa6ca2f1"
|
||||
|
||||
prettier@^2.3.2:
|
||||
version "2.3.2"
|
||||
|
||||
Reference in New Issue
Block a user