Browse Source
Task/enable Bull Dashboard in admin control panel without environment variable (#6876)
* Enable Bull Dashboard without environment variable
* Update changelog
pull/6881/head
Thomas Kaul
1 week ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with
38 additions and
51 deletions
-
CHANGELOG.md
-
apps/api/src/app/app.module.ts
-
apps/api/src/app/user/user.service.ts
-
apps/api/src/services/configuration/configuration.service.ts
-
apps/api/src/services/interfaces/environment.interface.ts
-
apps/api/src/services/queues/data-gathering/data-gathering.module.ts
-
apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.module.ts
-
apps/api/src/services/queues/statistics-gathering/statistics-gathering.module.ts
|
|
@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 |
|
|
|
|
|
|
|
|
### Changed |
|
|
### Changed |
|
|
|
|
|
|
|
|
|
|
|
- Enabled the _Bull Dashboard_ in the admin control panel without requiring an environment variable (experimental) |
|
|
- Extracted the page tabs to a reusable component |
|
|
- Extracted the page tabs to a reusable component |
|
|
- Upgraded `bull-board` from version `7.0.0` to `7.1.5` |
|
|
- Upgraded `bull-board` from version `7.0.0` to `7.1.5` |
|
|
|
|
|
|
|
|
|
|
|
@ -74,8 +74,6 @@ import { UserModule } from './user/user.module'; |
|
|
AuthDeviceModule, |
|
|
AuthDeviceModule, |
|
|
AuthModule, |
|
|
AuthModule, |
|
|
BenchmarksModule, |
|
|
BenchmarksModule, |
|
|
...(process.env.ENABLE_FEATURE_BULL_BOARD === 'true' |
|
|
|
|
|
? [ |
|
|
|
|
|
BullBoardModule.forRoot({ |
|
|
BullBoardModule.forRoot({ |
|
|
adapter: ExpressAdapter, |
|
|
adapter: ExpressAdapter, |
|
|
boardOptions: { |
|
|
boardOptions: { |
|
|
@ -94,9 +92,7 @@ import { UserModule } from './user/user.module'; |
|
|
}, |
|
|
}, |
|
|
middleware: BullBoardAuthMiddleware, |
|
|
middleware: BullBoardAuthMiddleware, |
|
|
route: BULL_BOARD_ROUTE |
|
|
route: BULL_BOARD_ROUTE |
|
|
}) |
|
|
}), |
|
|
] |
|
|
|
|
|
: []), |
|
|
|
|
|
BullModule.forRoot({ |
|
|
BullModule.forRoot({ |
|
|
redis: { |
|
|
redis: { |
|
|
db: parseInt(process.env.REDIS_DB ?? '0', 10), |
|
|
db: parseInt(process.env.REDIS_DB ?? '0', 10), |
|
|
|
|
|
@ -532,7 +532,7 @@ export class UserService { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (hasRole(user, Role.ADMIN)) { |
|
|
if (hasRole(user, Role.ADMIN)) { |
|
|
if (this.configurationService.get('ENABLE_FEATURE_BULL_BOARD')) { |
|
|
if ((user.settings.settings as UserSettings).isExperimentalFeatures) { |
|
|
currentPermissions.push(permissions.accessAdminControlBullBoard); |
|
|
currentPermissions.push(permissions.accessAdminControlBullBoard); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -44,7 +44,6 @@ export class ConfigurationService { |
|
|
ENABLE_FEATURE_AUTH_GOOGLE: bool({ default: false }), |
|
|
ENABLE_FEATURE_AUTH_GOOGLE: bool({ default: false }), |
|
|
ENABLE_FEATURE_AUTH_OIDC: bool({ default: false }), |
|
|
ENABLE_FEATURE_AUTH_OIDC: bool({ default: false }), |
|
|
ENABLE_FEATURE_AUTH_TOKEN: bool({ default: true }), |
|
|
ENABLE_FEATURE_AUTH_TOKEN: bool({ default: true }), |
|
|
ENABLE_FEATURE_BULL_BOARD: bool({ default: false }), |
|
|
|
|
|
ENABLE_FEATURE_FEAR_AND_GREED_INDEX: bool({ default: false }), |
|
|
ENABLE_FEATURE_FEAR_AND_GREED_INDEX: bool({ default: false }), |
|
|
ENABLE_FEATURE_GATHER_NEW_EXCHANGE_RATES: bool({ default: true }), |
|
|
ENABLE_FEATURE_GATHER_NEW_EXCHANGE_RATES: bool({ default: true }), |
|
|
ENABLE_FEATURE_READ_ONLY_MODE: bool({ default: false }), |
|
|
ENABLE_FEATURE_READ_ONLY_MODE: bool({ default: false }), |
|
|
|
|
|
@ -20,7 +20,6 @@ export interface Environment extends CleanedEnvAccessors { |
|
|
ENABLE_FEATURE_AUTH_GOOGLE: boolean; |
|
|
ENABLE_FEATURE_AUTH_GOOGLE: boolean; |
|
|
ENABLE_FEATURE_AUTH_OIDC: boolean; |
|
|
ENABLE_FEATURE_AUTH_OIDC: boolean; |
|
|
ENABLE_FEATURE_AUTH_TOKEN: boolean; |
|
|
ENABLE_FEATURE_AUTH_TOKEN: boolean; |
|
|
ENABLE_FEATURE_BULL_BOARD: boolean; |
|
|
|
|
|
ENABLE_FEATURE_FEAR_AND_GREED_INDEX: boolean; |
|
|
ENABLE_FEATURE_FEAR_AND_GREED_INDEX: boolean; |
|
|
ENABLE_FEATURE_GATHER_NEW_EXCHANGE_RATES: boolean; |
|
|
ENABLE_FEATURE_GATHER_NEW_EXCHANGE_RATES: boolean; |
|
|
ENABLE_FEATURE_READ_ONLY_MODE: boolean; |
|
|
ENABLE_FEATURE_READ_ONLY_MODE: boolean; |
|
|
|
|
|
@ -19,8 +19,6 @@ import { DataGatheringProcessor } from './data-gathering.processor'; |
|
|
|
|
|
|
|
|
@Module({ |
|
|
@Module({ |
|
|
imports: [ |
|
|
imports: [ |
|
|
...(process.env.ENABLE_FEATURE_BULL_BOARD === 'true' |
|
|
|
|
|
? [ |
|
|
|
|
|
BullBoardModule.forFeature({ |
|
|
BullBoardModule.forFeature({ |
|
|
adapter: BullAdapter, |
|
|
adapter: BullAdapter, |
|
|
name: DATA_GATHERING_QUEUE, |
|
|
name: DATA_GATHERING_QUEUE, |
|
|
@ -28,9 +26,7 @@ import { DataGatheringProcessor } from './data-gathering.processor'; |
|
|
displayName: 'Data Gathering', |
|
|
displayName: 'Data Gathering', |
|
|
readOnlyMode: process.env.BULL_BOARD_IS_READ_ONLY !== 'false' |
|
|
readOnlyMode: process.env.BULL_BOARD_IS_READ_ONLY !== 'false' |
|
|
} |
|
|
} |
|
|
}) |
|
|
}), |
|
|
] |
|
|
|
|
|
: []), |
|
|
|
|
|
BullModule.registerQueue({ |
|
|
BullModule.registerQueue({ |
|
|
limiter: { |
|
|
limiter: { |
|
|
duration: ms('4 seconds'), |
|
|
duration: ms('4 seconds'), |
|
|
|
|
|
@ -25,8 +25,6 @@ import { PortfolioSnapshotProcessor } from './portfolio-snapshot.processor'; |
|
|
imports: [ |
|
|
imports: [ |
|
|
AccountBalanceModule, |
|
|
AccountBalanceModule, |
|
|
ActivitiesModule, |
|
|
ActivitiesModule, |
|
|
...(process.env.ENABLE_FEATURE_BULL_BOARD === 'true' |
|
|
|
|
|
? [ |
|
|
|
|
|
BullBoardModule.forFeature({ |
|
|
BullBoardModule.forFeature({ |
|
|
adapter: BullAdapter, |
|
|
adapter: BullAdapter, |
|
|
name: PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE, |
|
|
name: PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE, |
|
|
@ -34,9 +32,7 @@ import { PortfolioSnapshotProcessor } from './portfolio-snapshot.processor'; |
|
|
displayName: 'Portfolio Snapshot Computation', |
|
|
displayName: 'Portfolio Snapshot Computation', |
|
|
readOnlyMode: process.env.BULL_BOARD_IS_READ_ONLY !== 'false' |
|
|
readOnlyMode: process.env.BULL_BOARD_IS_READ_ONLY !== 'false' |
|
|
} |
|
|
} |
|
|
}) |
|
|
}), |
|
|
] |
|
|
|
|
|
: []), |
|
|
|
|
|
BullModule.registerQueue({ |
|
|
BullModule.registerQueue({ |
|
|
name: PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE, |
|
|
name: PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE, |
|
|
settings: { |
|
|
settings: { |
|
|
|
|
|
@ -13,7 +13,7 @@ import { StatisticsGatheringService } from './statistics-gathering.service'; |
|
|
@Module({ |
|
|
@Module({ |
|
|
exports: [BullModule, StatisticsGatheringService], |
|
|
exports: [BullModule, StatisticsGatheringService], |
|
|
imports: [ |
|
|
imports: [ |
|
|
...(process.env.ENABLE_FEATURE_BULL_BOARD === 'true' |
|
|
...(process.env.ENABLE_FEATURE_STATISTICS === 'true' |
|
|
? [ |
|
|
? [ |
|
|
BullBoardModule.forFeature({ |
|
|
BullBoardModule.forFeature({ |
|
|
adapter: BullAdapter, |
|
|
adapter: BullAdapter, |
|
|
|