Skip to content

Commit 1b4b699

Browse files
committed
fix: Flow modification in generate token using clientId and secrat API
Signed-off-by: shitrerohit <[email protected]>
1 parent c4d66f2 commit 1b4b699

File tree

8 files changed

+463
-366
lines changed

8 files changed

+463
-366
lines changed

apps/api-gateway/src/authz/authz.controller.ts

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ import {
77
Param,
88
Post,
99
Query,
10+
Req,
1011
Res,
1112
UnauthorizedException,
12-
UseFilters
13+
UseFilters,
14+
UseGuards
1315
} from '@nestjs/common';
1416
import { AuthzService } from './authz.service';
1517
import { CommonService } from '../../../../libs/common/src/common.service';
@@ -18,7 +20,7 @@ import { ApiResponseDto } from '../dtos/apiResponse.dto';
1820
import { UserEmailVerificationDto } from '../user/dto/create-user.dto';
1921
import IResponseType from '@credebl/common/interfaces/response.interface';
2022
import { ResponseMessages } from '@credebl/common/response-messages';
21-
import { Response } from 'express';
23+
import { Response, Request } from 'express';
2224
import { EmailVerificationDto } from '../user/dto/email-verify.dto';
2325
import { AuthTokenResponse } from './dtos/auth-token-res.dto';
2426
import { LoginUserDto } from '../user/dto/login-user.dto';
@@ -30,6 +32,10 @@ import { ResetTokenPasswordDto } from './dtos/reset-token-password';
3032
import { RefreshTokenDto } from './dtos/refresh-token.dto';
3133
import { getDefaultClient } from '../user/utils';
3234
import { ClientAliasValidationPipe } from './decorators/user-auth-client';
35+
import { SessionGuard } from './guards/session.guard';
36+
interface SessionDetails {
37+
sessionId: string;
38+
}
3339
@Controller('auth')
3440
@ApiTags('auth')
3541
@UseFilters(CustomExceptionFilter)
@@ -174,18 +180,30 @@ export class AuthzController {
174180
* @returns User's access token details
175181
*/
176182
@Get('/sessionDetails')
183+
@UseGuards(SessionGuard)
177184
@ApiOperation({
178185
summary: 'Fetch session details',
179186
description: 'Fetch session details against logged in user'
180187
})
181188
@ApiQuery({
182189
name: 'sessionId',
183-
type: String,
184-
required: true
190+
required: false
185191
})
186192
@ApiResponse({ status: HttpStatus.OK, description: 'Success', type: AuthTokenResponse })
187-
async sessionDetails(@Query() sessionId: string, @Res() res: Response): Promise<Response> {
188-
const sessionDetails = await this.authzService.getSession(sessionId);
193+
async sessionDetails(
194+
@Res() res: Response,
195+
@Req() req: Request,
196+
@Query() sessionId: SessionDetails
197+
): Promise<Response> {
198+
this.logger.debug(`in authz controller`);
199+
200+
let sessionDetails;
201+
if (0 < Object.keys(sessionId).length) {
202+
sessionDetails = await this.authzService.getSession(sessionId);
203+
}
204+
if (req.user) {
205+
sessionDetails = req.user;
206+
}
189207

190208
const finalResponse: IResponseType = {
191209
statusCode: HttpStatus.OK,
Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { CanActivate, ExecutionContext, Injectable, UnauthorizedException } from '@nestjs/common';
1+
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
22

33
import { Request } from 'express';
44
import { UserRepository } from 'apps/user/repositories/user.repository';
@@ -10,17 +10,18 @@ export class SessionGuard implements CanActivate {
1010
async canActivate(context: ExecutionContext): Promise<boolean> {
1111
const request = context.switchToHttp().getRequest<Request>();
1212
const sessionId = request.cookies['session_id'];
13-
if (!sessionId) {
14-
throw new UnauthorizedException('Missing session cookie');
15-
}
16-
17-
const user = await this.userRepository.validateSession(sessionId);
1813

19-
if (!user) {
20-
throw new UnauthorizedException('Invalid session');
14+
// if (!sessionId) {
15+
// throw new UnauthorizedException('Missing session cookie');
16+
// }
17+
if (sessionId) {
18+
const user = await this.userRepository.validateSession(sessionId);
19+
request.user = user;
2120
}
2221

23-
request.user = user;
22+
// if (!user) {
23+
// throw new UnauthorizedException('Invalid session');
24+
// }
2425
return true;
2526
}
2627
}

apps/api-gateway/src/organization/organization.controller.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -550,11 +550,18 @@ export class OrganizationController {
550550
}
551551

552552
const orgCredentials = await this.organizationService.clientLoginCredentials(clientCredentialsDto);
553+
553554
const finalResponse: IResponse = {
554555
statusCode: HttpStatus.OK,
555556
message: ResponseMessages.organisation.success.clientCredentials,
556557
data: orgCredentials
557558
};
559+
res.cookie('session_id', orgCredentials.sessionId, {
560+
httpOnly: true,
561+
sameSite: 'lax',
562+
secure: false
563+
});
564+
558565
return res.status(HttpStatus.OK).json(finalResponse);
559566
}
560567
/**

apps/organization/repositories/organization.repository.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -760,7 +760,29 @@ export class OrganizationRepository {
760760
throw error;
761761
}
762762
}
763-
763+
async getOrgAndAdminUser(orgId: string): Promise<user_org_roles> {
764+
try {
765+
return this.prisma.user_org_roles.findFirst({
766+
where: {
767+
orgId
768+
// orgRole:{
769+
// name:'admin'
770+
// }
771+
},
772+
include: {
773+
user: {
774+
select: {
775+
id: true,
776+
keycloakUserId: true
777+
}
778+
}
779+
}
780+
});
781+
} catch (error) {
782+
this.logger.error(`Error in fetch in organization with admin details`);
783+
throw error;
784+
}
785+
}
764786
async getCredDefByOrg(orgId: string): Promise<
765787
{
766788
tag: string;

0 commit comments

Comments
 (0)