Skip to content

Commit

Permalink
Merge pull request #102 from Shubham4026/backend_features
Browse files Browse the repository at this point in the history
Task #216924: Added Parent Rbac Module and Role Child Module
  • Loading branch information
vijaykhollam authored Apr 8, 2024
2 parents 178b630 + ebeead8 commit 15e9972
Show file tree
Hide file tree
Showing 15 changed files with 127 additions and 854 deletions.
725 changes: 68 additions & 657 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"@nestjs/passport": "^10.0.3",
"@nestjs/platform-express": "^8.0.0",
"@nestjs/schedule": "^1.1.0",
"@nestjs/swagger": "^5.2.0",
"@nestjs/swagger": "^5.2.1",
"@nestjs/typeorm": "^10.0.2",
"axios": "^0.26.1",
"cache-manager": "^3.6.1",
Expand Down
4 changes: 2 additions & 2 deletions src/adapters/hasura/rbac.adapter.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { HttpService } from "@nestjs/axios";
import { Injectable } from "@nestjs/common";
import { RoleDto } from "../../rbac/dto/rbac.dto";
import { RoleSearchDto } from "../../rbac/dto/rbac-search.dto";
import { RoleDto } from "../../rbac/role/dto/role.dto";
import { RoleSearchDto } from "../../rbac/role/dto/role-search.dto";

@Injectable()
export class HasuraRoleService {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { HttpStatus, Injectable } from '@nestjs/common';
import { Role } from "../../rbac/entities/rbac.entity";
import { Role } from "src/rbac/role/entities/rbac.entity"
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { RoleDto } from "../../rbac/dto/rbac.dto";
import { RoleDto } from "../../../rbac/role/dto/role.dto";
import { SuccessResponse } from 'src/success-response';
import { ErrorResponseTypeOrm } from 'src/error-response-typeorm';
import { RoleSearchDto } from "../../rbac/dto/rbac-search.dto";
import { RoleSearchDto } from "../../../rbac/role/dto/role-search.dto";

@Injectable()
export class PostgresRbacService {
export class PostgresRoleService {
constructor(
@InjectRepository(Role)
private roleRepository: Repository<Role>
Expand Down
4 changes: 2 additions & 2 deletions src/adapters/rbacservicelocator.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { RoleSearchDto } from "../rbac/dto/rbac-search.dto";
import { RoleDto } from "../rbac/dto/rbac.dto";
import { RoleSearchDto } from "../rbac/role/dto/role-search.dto";
import { RoleDto } from "../rbac/role/dto/role.dto";

export interface IServicelocatorRbac {
getRole(
Expand Down
10 changes: 6 additions & 4 deletions src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Module } from "@nestjs/common";
import { ConfigModule } from "@nestjs/config";
import { AppController } from "./app.controller";
import { AppService } from "./app.service";
import { MulterModule } from "@nestjs/platform-express/multer";
// import { MulterModule } from "@nestjs/platform-express/multer";
/*
// Below modules not in use for Shiksha 2.0
import { StudentModule } from "./student/student.module";
Expand All @@ -28,13 +28,15 @@ import { CohortMembersModule } from "./cohortMembers/cohortMembers.module";
import { FieldsModule } from "./fields/fields.module";
import { AttendanceModule } from "./attendance/attendance.module";
import { UserModule } from "./user/user.module";
import { RbacModule } from "./rbac/rbac.module";

@Module({
imports: [
RbacModule,
ConfigModule.forRoot({ isGlobal: true }),
MulterModule.register({
dest: "./uploads",
}),
// MulterModule.register({
// dest: "./uploads",
// }),
UserModule,
AttendanceModule,
CohortModule,
Expand Down
19 changes: 3 additions & 16 deletions src/rbac/rbac.module.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,9 @@
import { HttpModule } from "@nestjs/axios";
import { Module } from "@nestjs/common";
import { RoleController } from "./rbac.controller";
import { Role } from "./entities/rbac.entity";
import { RoleService } from "./rbac.service";
import { TypeOrmModule } from "@nestjs/typeorm";
import { PostgresModule } from "src/adapters/postgres/potsgres-module";
import { PostgresRbacService } from "src/adapters/postgres/rbac-adapter";
import { HasuraModule } from "src/adapters/hasura/hasura.module";
import { HasuraRoleService } from "src/adapters/hasura/rbac.adapter";
import { RoleModule } from "./role/role.module";

@Module({
imports: [
TypeOrmModule.forFeature([Role]),
HttpModule,
PostgresModule,
HasuraModule
RoleModule
],
controllers: [RoleController],
providers: [RoleService,PostgresRbacService,HasuraRoleService],
})
export class RoleModule {}
export class RbacModule {}
18 changes: 0 additions & 18 deletions src/rbac/rbac.service.spec.ts

This file was deleted.

134 changes: 0 additions & 134 deletions src/rbac/rbac.service.ts

This file was deleted.

File renamed without changes.
3 changes: 3 additions & 0 deletions src/rbac/dto/rbac.dto.ts → src/rbac/role/dto/role.dto.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import { Expose } from "class-transformer";
import { ApiProperty } from "@nestjs/swagger";
import {IsNotEmpty,IsString, IsUUID} from "class-validator"

export class RoleDto {
@Expose()
@IsUUID()
roleId: string;

@ApiProperty({
Expand All @@ -11,6 +13,7 @@ export class RoleDto {
default: "",
})
@Expose()
@IsNotEmpty()
roleName: string;

constructor(obj: any) {
Expand Down
File renamed without changes.
22 changes: 11 additions & 11 deletions src/rbac/rbac.controller.ts → src/rbac/role/role.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,18 @@ import {
ApiHeader,
} from "@nestjs/swagger";
import { Request } from "@nestjs/common";
import { RoleDto } from "./dto/rbac.dto";
import { RoleSearchDto } from "./dto/rbac-search.dto";
import { RoleService } from "./rbac.service";
import { RoleDto } from "./dto/role.dto";
import { RoleSearchDto } from "./dto/role-search.dto";
import { Response, response } from "express";
import { JwtAuthGuard } from "src/common/guards/keycloak.guard";
import { RbacAdapter } from "./rbacadapter";
import { RoleAdapter } from "./roleadapter"


@ApiTags("rbac")
@Controller("rbac")
@Controller("role")
@UseGuards(JwtAuthGuard)
export class RoleController {
constructor(private readonly roleService: RoleService,private readonly rbacAdapter:RbacAdapter) { }
constructor(private readonly roleAdapter:RoleAdapter) { }

//Get role
@Get("/:id")
Expand All @@ -50,12 +49,13 @@ export class RoleController {
@Req() request: Request,
@Res() response: Response
) {
const result = await this.rbacAdapter.buildRbacAdapter().getRole(roleId, request);
const result = await this.roleAdapter.buildRbacAdapter().getRole(roleId, request);
return response.status(result.statusCode).json(result);
}

//Create role
@Post()
@UsePipes(new ValidationPipe())
@ApiBasicAuth("access-token")
@ApiCreatedResponse({ description: "Role has been created successfully." })
@ApiBody({ type: RoleDto })
Expand All @@ -66,7 +66,7 @@ export class RoleController {
@Body() roleDto: RoleDto,
@Res() response: Response
) {
const result = await this.rbacAdapter.buildRbacAdapter().createRole(request, roleDto);
const result = await this.roleAdapter.buildRbacAdapter().createRole(request, roleDto);
return response.status(result.statusCode).json(result);
}

Expand All @@ -83,7 +83,7 @@ export class RoleController {
@Body() roleDto: RoleDto,
@Res() response: Response
) {
const result = await this.rbacAdapter.buildRbacAdapter().updateRole(roleId, request, roleDto);
const result = await this.roleAdapter.buildRbacAdapter().updateRole(roleId, request, roleDto);
return response.status(result.statusCode).json(result);
}

Expand All @@ -103,7 +103,7 @@ export class RoleController {
@Res() response: Response
) {
let tenantid = headers["tenantid"];
const result = await this.rbacAdapter.buildRbacAdapter().searchRole(tenantid,request,roleSearchDto);
const result = await this.roleAdapter.buildRbacAdapter().searchRole(tenantid,request,roleSearchDto);
return response.status(result.statusCode).json(result);
}

Expand All @@ -116,7 +116,7 @@ export class RoleController {
@Param("id") roleId: string,
@Res() response: Response
) {
const result = await this.rbacAdapter.buildRbacAdapter().deleteRole(roleId);
const result = await this.roleAdapter.buildRbacAdapter().deleteRole(roleId);
return response.status(result.statusCode).json(result);
}
}
22 changes: 22 additions & 0 deletions src/rbac/role/role.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import {Module } from '@nestjs/common';
import { RoleController } from './role.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Role } from './entities/rbac.entity';
import { HasuraModule } from 'src/adapters/hasura/hasura.module';
import { PostgresModule } from 'src/adapters/postgres/potsgres-module';
import { PostgresRoleService } from 'src/adapters/postgres/rbac/role-adapter';
import { HasuraRoleService } from 'src/adapters/hasura/rbac.adapter';
import { HttpModule } from '@nestjs/axios';
import { RoleAdapter } from './roleadapter';

@Module({
imports: [
TypeOrmModule.forFeature([Role]),
HttpModule,
PostgresModule,
HasuraModule
],
controllers: [RoleController],
providers: [RoleAdapter,HasuraRoleService,PostgresRoleService],
})
export class RoleModule {}
10 changes: 5 additions & 5 deletions src/rbac/rbacadapter.ts → src/rbac/role/roleadapter.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { Injectable } from "@nestjs/common";
import { IServicelocatorRbac } from "../adapters/rbacservicelocator";
import { HasuraRoleService } from "../adapters/hasura/rbac.adapter";
import { PostgresRbacService } from "../adapters/postgres/rbac-adapter";
import { IServicelocatorRbac } from "../../adapters/rbacservicelocator";
import { HasuraRoleService } from "../../adapters/hasura/rbac.adapter";
import { PostgresRoleService } from "../../adapters/postgres/rbac/role-adapter";

@Injectable()
export class RbacAdapter {
export class RoleAdapter {
constructor(private hasuraProvider: HasuraRoleService,
private postgresProvider:PostgresRbacService) {}
private postgresProvider:PostgresRoleService) {}
buildRbacAdapter(): IServicelocatorRbac {
let adapter: IServicelocatorRbac;

Expand Down

0 comments on commit 15e9972

Please sign in to comment.