Skip to content

Commit

Permalink
Merge pull request #6 from bcgov/emsedt-199
Browse files Browse the repository at this point in the history
Basic UI + Emsedt 199
  • Loading branch information
barrfalk authored Jun 11, 2024
2 parents b95f583 + 7fd89db commit 6337552
Show file tree
Hide file tree
Showing 27 changed files with 934 additions and 192 deletions.
121 changes: 116 additions & 5 deletions backend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"test:e2e": "jest --config ./test/jest-e2e.json"
},
"dependencies": {
"@nestjs/axios": "^3.0.2",
"@nestjs/cli": "^10.1.16",
"@nestjs/common": "^10.0.0",
"@nestjs/config": "^3.0.0",
Expand All @@ -32,13 +33,15 @@
"@nestjs/terminus": "^10.2.1",
"@nestjs/testing": "^10.0.0",
"@prisma/client": "^5.7.0",
"axios": "^1.7.2",
"dotenv": "^16.0.1",
"express-prom-bundle": "^7.0.0",
"helmet": "^7.0.0",
"nest-winston": "^1.9.4",
"nestjs-prisma": "^0.23.0",
"pg": "^8.11.3",
"prom-client": "^15.1.0",
"react-redux": "^9.1.2",
"reflect-metadata": "^0.2.0",
"rimraf": "^5.0.0",
"rxjs": "^7.8.0",
Expand Down
18 changes: 18 additions & 0 deletions backend/src/admin/admin.controller.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { Test, TestingModule } from '@nestjs/testing';
import { AdminController } from './admin.controller';

describe('AdminController', () => {
let controller: AdminController;

beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [AdminController],
}).compile();

controller = module.get<AdminController>(AdminController);
});

it('should be defined', () => {
expect(controller).toBeDefined();
});
});
12 changes: 12 additions & 0 deletions backend/src/admin/admin.controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { Controller, Get } from "@nestjs/common";
import { AdminService } from "./admin.service";

@Controller("admin")
export class AdminController {
constructor(private readonly adminService: AdminService) {}

@Get()
findAll(): Promise<any[]> {
return this.adminService.findAll();
}
}
11 changes: 11 additions & 0 deletions backend/src/admin/admin.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { Module } from "@nestjs/common";
import { AdminController } from "./admin.controller";
import { AdminService } from "./admin.service";
import { HttpModule } from "@nestjs/axios";

@Module({
imports: [HttpModule],
controllers: [AdminController],
providers: [AdminService],
})
export class AdminModule {}
18 changes: 18 additions & 0 deletions backend/src/admin/admin.service.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { Test, TestingModule } from '@nestjs/testing';
import { AdminService } from './admin.service';

describe('AdminService', () => {
let service: AdminService;

beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
providers: [AdminService],
}).compile();

service = module.get<AdminService>(AdminService);
});

it('should be defined', () => {
expect(service).toBeDefined();
});
});
54 changes: 54 additions & 0 deletions backend/src/admin/admin.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import { HttpService } from "@nestjs/axios";
import { Injectable } from "@nestjs/common";
import { firstValueFrom } from "rxjs";

@Injectable()
export class AdminService {
constructor(private readonly httpService: HttpService) {}

/**
* Gets a list of all ??? users
*
* @returns all ??? users
*/
async findAll(): Promise<any[]> {
const bearerToken = await this.getToken();
const role = "Enmods Admin";
const url = `${process.env.users_api_base_url}/integrations/${process.env.integration_id}/${process.env.css_environment}/roles/${role}/users`;
const config = {
headers: { Authorization: "Bearer " + bearerToken },
};
try {
console.log("trying user api");
const response = await firstValueFrom(this.httpService.get(url, config));
console.log(response);
return response.data.data;
} catch (err) {
console.log(err.response?.data || err.message);
throw err;
}
}

async getToken() {
const url = process.env.users_api_token_url;
const token = `${process.env.users_api_client_id}:${process.env.users_api_client_secret}`;
const encodedToken = Buffer.from(token).toString("base64");
const config = {
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Authorization: "Basic " + encodedToken,
},
};
const grantTypeParam = new URLSearchParams();
grantTypeParam.append("grant_type", "client_credentials");
try {
const response = await firstValueFrom(
this.httpService.post(url, grantTypeParam.toString(), config)
);
return response.data.access_token;
} catch (error) {
console.log(error.response?.data || error.message);
throw error;
}
}
}
4 changes: 3 additions & 1 deletion backend/src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { AppController } from "./app.controller";
import { MetricsController } from "./metrics.controller";
import { TerminusModule } from '@nestjs/terminus';
import { HealthController } from "./health.controller";
import { AdminModule } from './admin/admin.module';

const DB_HOST = process.env.POSTGRES_HOST || "localhost";
const DB_USER = process.env.POSTGRES_USER || "postgres";
Expand Down Expand Up @@ -45,7 +46,8 @@ function getMiddlewares() {
middlewares: getMiddlewares(),
},
}),
UsersModule
UsersModule,
AdminModule
],
controllers: [AppController,MetricsController, HealthController],
providers: [AppService]
Expand Down
Loading

0 comments on commit 6337552

Please sign in to comment.