From 574e666d64f46917ada338b8cac3a355ce5070d9 Mon Sep 17 00:00:00 2001 From: Steve Reis <stevereis93@gmail.com> Date: Fri, 15 Apr 2022 12:28:31 +0000 Subject: [PATCH] feat: Matomo integration --- api/src/config/matomo.config.ts | 9 +++++++++ api/src/engine/engine.resolver.ts | 12 +++++++----- api/src/engine/models/configuration.model.ts | 4 ++++ api/src/engine/models/configuration/matomo.model.ts | 13 +++++++++++++ api/src/main/app.module.ts | 3 ++- api/src/schema.gql | 7 +++++++ 6 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 api/src/config/matomo.config.ts create mode 100644 api/src/engine/models/configuration/matomo.model.ts diff --git a/api/src/config/matomo.config.ts b/api/src/config/matomo.config.ts new file mode 100644 index 0000000..274ae8c --- /dev/null +++ b/api/src/config/matomo.config.ts @@ -0,0 +1,9 @@ +import { registerAs } from '@nestjs/config'; + +export default registerAs('matomo', () => { + return { + enabled: process.env.MATOMO_ENABLED || false, + urlBase: process.env.MAMOTO_URL || undefined, + siteId: process.env.MATOMO_SITEID || undefined, + }; +}); diff --git a/api/src/engine/engine.resolver.ts b/api/src/engine/engine.resolver.ts index 2ea02a1..6260111 100644 --- a/api/src/engine/engine.resolver.ts +++ b/api/src/engine/engine.resolver.ts @@ -41,18 +41,20 @@ export class EngineResolver { @Public() configuration(): Configuration { const config = this.engineService.getConfiguration?.(); + const matomo = this.configSerivce.get('matomo'); const data = { ...(config ?? {}), - skipAuth: parseToBoolean( - this.configSerivce.get(authConstants.skipAuth), - true, - ), + connectorId: this.engineOptions.type, skipTos: parseToBoolean(this.configSerivce.get(ENGINE_SKIP_TOS)), enableSSO: parseToBoolean( this.configSerivce.get(authConstants.enableSSO), ), - connectorId: this.engineOptions.type, + skipAuth: parseToBoolean( + this.configSerivce.get(authConstants.skipAuth), + true, + ), + matomo, }; const version = Md5.hashStr(JSON.stringify(data)); diff --git a/api/src/engine/models/configuration.model.ts b/api/src/engine/models/configuration.model.ts index d2d390d..6ffe779 100644 --- a/api/src/engine/models/configuration.model.ts +++ b/api/src/engine/models/configuration.model.ts @@ -1,4 +1,5 @@ import { Field, ObjectType } from '@nestjs/graphql'; +import { Matomo } from './configuration/matomo.model'; @ObjectType() export class Configuration { @Field() @@ -21,4 +22,7 @@ export class Configuration { @Field({ nullable: true, defaultValue: true }) enableSSO?: boolean; + + @Field(() => Matomo, { nullable: true }) + matomo?: Matomo; } diff --git a/api/src/engine/models/configuration/matomo.model.ts b/api/src/engine/models/configuration/matomo.model.ts new file mode 100644 index 0000000..62782ce --- /dev/null +++ b/api/src/engine/models/configuration/matomo.model.ts @@ -0,0 +1,13 @@ +import { Field, ObjectType } from '@nestjs/graphql'; + +@ObjectType() +export class Matomo { + @Field({ nullable: true, defaultValue: false }) + enabled?: boolean; + + @Field({ nullable: true }) + siteId?: string; + + @Field({ nullable: true }) + urlBase?: string; +} diff --git a/api/src/main/app.module.ts b/api/src/main/app.module.ts index 4f784ef..ebc1be9 100644 --- a/api/src/main/app.module.ts +++ b/api/src/main/app.module.ts @@ -7,6 +7,7 @@ import { GraphQLError } from 'graphql'; import { join } from 'path'; import { AuthModule } from 'src/auth/auth.module'; import dbConfig from 'src/config/db.config'; +import matomoConfig from 'src/config/matomo.config'; import { EngineModule } from 'src/engine/engine.module'; import { FilesModule } from 'src/files/files.module'; import { UsersModule } from 'src/users/users.module'; @@ -18,7 +19,7 @@ import { AppService } from './app.service'; ConfigModule.forRoot({ isGlobal: true, envFilePath: ['.env', '.env.defaults'], - load: [dbConfig], + load: [dbConfig, matomoConfig], }), GraphQLModule.forRoot<ApolloDriverConfig>({ driver: ApolloDriver, diff --git a/api/src/schema.gql b/api/src/schema.gql index 95da149..8f5b0fe 100644 --- a/api/src/schema.gql +++ b/api/src/schema.gql @@ -14,6 +14,12 @@ type AuthenticationOutput { accessToken: String! } +type Matomo { + enabled: Boolean + siteId: String + urlBase: String +} + type Configuration { connectorId: String! hasGalaxy: Boolean @@ -22,6 +28,7 @@ type Configuration { skipAuth: Boolean skipTos: Boolean enableSSO: Boolean + matomo: Matomo } type Dataset { -- GitLab