Updating api auth and ms graph endpoint (#19)

* Updating api auth and ms graph endpoint

* updating feature flag value

* Updating get feature flags functions

* Updating get feature flags functions
This commit was merged in pull request #19.
This commit is contained in:
2024-06-06 07:31:15 -05:00
committed by GitHub
parent dd73d48ffd
commit 80b4fb8c1d
16 changed files with 967 additions and 251 deletions

1
api/.gitignore vendored
View File

@@ -55,4 +55,5 @@ pids
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
local.settings.json

View File

@@ -24,9 +24,11 @@
"@nestjs/azure-database": "^3.0.0",
"@nestjs/azure-func-http": "^0.10.0",
"@nestjs/common": "^10.0.0",
"@nestjs/config": "^3.2.2",
"@nestjs/core": "^10.0.0",
"@nestjs/passport": "^10.0.3",
"@nestjs/platform-express": "^10.0.0",
"@noahspan/noahspan-modules": "^0.1.2",
"@noahspan/noahspan-modules": "^0.2.7",
"@schematics/angular": "^17.3.7",
"dotenv": "^16.4.5",
"reflect-metadata": "0.1.13",
@@ -39,6 +41,7 @@
"@types/express": "^4.17.17",
"@types/jest": "^29.5.2",
"@types/node": "^20.3.1",
"@types/passport-azure-ad": "^4.3.6",
"@types/supertest": "^6.0.0",
"jest": "^29.5.0",
"source-map-support": "^0.5.21",

View File

@@ -1,34 +1,57 @@
import { Controller, Get, Query } from '@nestjs/common';
import { AppService } from './app.service';
import { AppConfigService, AuthService } from '@noahspan/noahspan-modules';
import {
AppConfigService,
MsGraphService,
MsGraphClient
} from '@noahspan/noahspan-modules';
import { FeatureFlagValue } from '@azure/app-configuration';
import { Public } from '@noahspan/noahspan-modules';
@Controller()
export class AppController {
constructor(
private readonly appConfigService: AppConfigService,
private readonly authService: AuthService
private readonly msGraphService: MsGraphService
) {}
@Public()
@Get('featureFlags')
async getFeatureFlags(@Query() query: any): Promise<FeatureFlagValue[]> {
async getFeatureFlags(
@Query() query: any
): Promise<{ key: string; enabled: boolean }[]> {
try {
const token: string = await this.authService.getToken(
'client_credentials',
process.env.CLIENT_ID,
process.env.CLIENT_SECRET,
'https://azconfig.io'
);
const featureFlags: FeatureFlagValue[] =
const featureFlagKeys: string[] =
query.keys && query.keys.toString().includes(';')
? query.keys.split(';')
: [query.keys];
const featureFlagLabel: string = query.label;
const featureFlags: { key: string; enabled: boolean }[] =
await this.appConfigService.getFeatureFlags(
token,
`${query.key}`,
query.label
featureFlagKeys,
featureFlagLabel
);
return featureFlags;
} catch (error) {
console.log(error);
return error;
}
}
@Public()
@Get('profilePhoto')
async getProfilePhoto(@Query() query: any): Promise<any> {}
@Get('userProfile')
async getUserProfile(@Query() query: any) {
try {
const username: string = query.username;
const client: MsGraphClient =
await this.msGraphService.getMsGraphClient();
const userProfile = await client.api(`users/${username}`).get();
return userProfile;
} catch (error) {
return error;
}
}
}

View File

@@ -1,18 +1,42 @@
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { AppConfigModule, AuthModule } from '@noahspan/noahspan-modules';
import {
AppConfigModule,
AuthModule,
AuthGuard,
MsGraphModule
} from '@noahspan/noahspan-modules';
import { ConfigModule } from '@nestjs/config';
import { APP_GUARD } from '@nestjs/core';
@Module({
imports: [
ConfigModule.forRoot(),
AppConfigModule.register({
url: process.env.APP_CONFIG_URL
url: process.env.APP_CONFIG_URL,
tenantId: process.env.TENANT_ID,
clientId: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET
}),
AuthModule.register({
tenantId: process.env.TENANT_ID
tenantId: process.env.TENANT_ID,
clientId: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET
}),
MsGraphModule.register({
tenantId: process.env.TENANT_ID,
clientId: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET
})
],
controllers: [AppController],
providers: [AppService]
providers: [
{
provide: APP_GUARD,
useClass: AuthGuard
},
AppService
]
})
export class AppModule {}