Skip to content

Commit 3476709

Browse files
authored
[HUMAN App] feat: browser caching and decoded auth (#3486)
1 parent cf74f94 commit 3476709

File tree

4 files changed

+39
-27
lines changed

4 files changed

+39
-27
lines changed

packages/apps/human-app/frontend/src/shared/contexts/browser-auth-provider.ts

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,32 @@ import type {
55
} from '@/shared/types/browser-auth-provider';
66
import { type AuthTokensSuccessResponse } from '../schemas';
77

8-
const accessTokenKey = btoa('access_token');
9-
const refreshTokenKey = btoa('refresh_token');
10-
const authTypeKey = btoa('auth_type');
11-
const userDataKey = btoa('extendable_user_data');
8+
const accessTokenKey = 'ro_access_token';
9+
const refreshTokenKey = 'ro_refresh_token';
10+
const authTypeKey = 'ro_auth_type';
11+
const userDataKey = 'ro_extendable_user_data';
1212

1313
const browserAuthProvider: BrowserAuthProvider = {
1414
isAuthenticated: false,
1515
authType: 'web2',
16+
signOutSubscription: undefined,
17+
1618
signIn(
1719
{ access_token, refresh_token }: AuthTokensSuccessResponse,
1820
authType,
1921
signOutSubscription
2022
) {
2123
browserAuthProvider.isAuthenticated = true;
2224
browserAuthProvider.authType = authType;
23-
localStorage.setItem(accessTokenKey, btoa(access_token));
24-
localStorage.setItem(refreshTokenKey, btoa(refresh_token));
25-
localStorage.setItem(authTypeKey, btoa(authType));
25+
localStorage.setItem(accessTokenKey, access_token);
26+
localStorage.setItem(refreshTokenKey, refresh_token);
27+
localStorage.setItem(authTypeKey, authType);
2628

2729
if (signOutSubscription) {
2830
this.signOutSubscription = signOutSubscription;
2931
}
3032
},
33+
3134
signOut(args) {
3235
browserAuthProvider.isAuthenticated = false;
3336
localStorage.removeItem(accessTokenKey);
@@ -44,37 +47,41 @@ const browserAuthProvider: BrowserAuthProvider = {
4447
this.signOutSubscription = undefined;
4548
}
4649
},
47-
signOutSubscription: undefined,
50+
4851
getAccessToken() {
49-
const result = localStorage.getItem(accessTokenKey);
52+
const accessToken = localStorage.getItem(accessTokenKey);
5053

51-
if (!result) {
54+
if (!accessToken) {
5255
return null;
5356
}
5457

55-
return atob(result);
58+
return accessToken;
5659
},
60+
5761
getRefreshToken() {
58-
const result = localStorage.getItem(refreshTokenKey);
62+
const refreshToken = localStorage.getItem(refreshTokenKey);
5963

60-
if (!result) {
64+
if (!refreshToken) {
6165
return null;
6266
}
6367

64-
return atob(result);
68+
return refreshToken;
6569
},
70+
6671
getAuthType(): AuthType | null {
67-
const result = localStorage.getItem(authTypeKey);
72+
const authType = localStorage.getItem(authTypeKey);
6873

69-
if (!result) {
74+
if (!authType) {
7075
return null;
7176
}
7277

73-
return atob(result) as AuthType;
78+
return authType as AuthType;
7479
},
80+
7581
setUserData(userData) {
76-
localStorage.setItem(userDataKey, btoa(JSON.stringify(userData)));
82+
localStorage.setItem(userDataKey, JSON.stringify(userData));
7783
},
84+
7885
getUserData() {
7986
const userData = localStorage.getItem(userDataKey);
8087

@@ -84,7 +91,7 @@ const browserAuthProvider: BrowserAuthProvider = {
8491

8592
try {
8693
return {
87-
data: JSON.parse(atob(userData)) as unknown,
94+
data: JSON.parse(userData) as unknown,
8895
};
8996
} catch (error) {
9097
return { data: {} as unknown };

packages/apps/human-app/server/src/modules/h-captcha/h-captcha.controller.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Mapper } from '@automapper/core';
22
import { InjectMapper } from '@automapper/nestjs';
3-
import { Body, Controller, Get, Post, Request } from '@nestjs/common';
3+
import { Body, Controller, Get, Header, Post, Request } from '@nestjs/common';
44
import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
55
import { RequestWithUser } from '../../common/interfaces/jwt';
66
import { JwtUserData } from '../../common/utils/jwt-token.model';
@@ -29,8 +29,8 @@ export class HCaptchaController {
2929
@InjectMapper() private readonly mapper: Mapper,
3030
) {}
3131

32-
@Post('/enable')
3332
@ApiOperation({ summary: 'Enables h-captcha labeling' })
33+
@Post('/enable')
3434
public async enableLabeling(
3535
@Request() req: RequestWithUser,
3636
): Promise<EnableLabelingResponse> {
@@ -40,8 +40,8 @@ export class HCaptchaController {
4040
return this.service.enableLabeling(command);
4141
}
4242

43-
@Post('/verify')
4443
@ApiOperation({ summary: 'Sends solution for verification' })
44+
@Post('/verify')
4545
public async verifyToken(
4646
@Body() dto: VerifyTokenDto,
4747
@Request() req: RequestWithUser,
@@ -55,8 +55,9 @@ export class HCaptchaController {
5555
return await this.service.verifyToken(command);
5656
}
5757

58-
@Get('/daily-hmt-spent')
5958
@ApiOperation({ summary: 'Gets global daily HMT spent' })
59+
@Header('Cache-Control', 'public, max-age=60')
60+
@Get('/daily-hmt-spent')
6061
public async getDailyHmtSpent(
6162
@Request() req: RequestWithUser,
6263
): Promise<DailyHmtSpentResponse> {
@@ -71,8 +72,9 @@ export class HCaptchaController {
7172
return this.service.getDailyHmtSpent(command);
7273
}
7374

74-
@Get('/user-stats')
7575
@ApiOperation({ summary: 'Gets stats per user' })
76+
@Header('Cache-Control', 'public, max-age=60')
77+
@Get('/user-stats')
7678
public async getUserStats(
7779
@Request() req: RequestWithUser,
7880
): Promise<UserStatsResponse> {

packages/apps/human-app/server/src/modules/oracle-discovery/oracle-discovery.controller.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { InjectMapper } from '@automapper/nestjs';
33
import {
44
Controller,
55
Get,
6+
Header,
67
HttpException,
78
HttpStatus,
89
Query,
@@ -27,12 +28,13 @@ export class OracleDiscoveryController {
2728
@InjectMapper() private readonly mapper: Mapper,
2829
) {}
2930

30-
@Get('/oracles')
3131
@ApiOperation({ summary: 'Oracles discovery' })
3232
@ApiOkResponse({
3333
type: Array<DiscoveredOracle>,
3434
description: 'List of oracles',
3535
})
36+
@Header('Cache-Control', 'public, max-age=60')
37+
@Get('/oracles')
3638
public async getOracles(
3739
@Request() req: RequestWithUser,
3840
@Query() query: GetOraclesQuery,

packages/apps/human-app/server/src/modules/ui-configuration/ui-configuration.controller.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Controller, Get } from '@nestjs/common';
1+
import { Controller, Get, Header } from '@nestjs/common';
22
import { ApiOkResponse, ApiOperation, ApiTags } from '@nestjs/swagger';
33
import { EnvironmentConfigService } from '../../common/config/environment-config.service';
44
import { Public } from '../../common/decorators';
@@ -12,12 +12,13 @@ export class UiConfigurationController {
1212
private readonly environmentConfigService: EnvironmentConfigService,
1313
) {}
1414

15-
@Get('/ui-config')
1615
@ApiOperation({ summary: 'Retrieve UI configuration' })
1716
@ApiOkResponse({
1817
type: UiConfigResponseDto,
1918
description: 'UI Configuration object',
2019
})
20+
@Header('Cache-Control', 'public, max-age=3600')
21+
@Get('/ui-config')
2122
public async getConfig(): Promise<UiConfigResponseDto> {
2223
return {
2324
chainIdsEnabled: this.environmentConfigService.chainIdsEnabled,

0 commit comments

Comments
 (0)