diff --git a/api/src/config/matomo.config.ts b/api/src/config/matomo.config.ts new file mode 100644 index 0000000000000000000000000000000000000000..274ae8cbdbd66075e8a8a0d7252843b70ee3dfbd --- /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 2ea02a19025029f551ea684fa756ca7b842e82d6..6260111702f3268881409f80f5db91cc197c1cba 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 d2d390dc67e6bbd120932a382dc324a0d1e1f677..6ffe779cc55962c0dc0c20fd0e3d47c9e4d73348 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 0000000000000000000000000000000000000000..62782ce3f4b63bfdee7cbf8821578dd04d9a6db5 --- /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 4f784efb09a185d903b603ad1ec5c677afd9c703..ebc1be97cb1be3d02a48c3ec4d561280df249b03 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 95da1492e47ee6d0470960adf26763505a6c1d4d..8f5b0feba8b4b7d1c700ddf1d9e02563d532fe83 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 {