Skip to content

Commit 4e5a100

Browse files
Merge branch 'main' into fix/CVE-2025-66478
2 parents 3d8e944 + a5476ef commit 4e5a100

File tree

11 files changed

+37
-33
lines changed

11 files changed

+37
-33
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"type": "module",
66
"author": "Paraskevas (Paris) SMYRLAKIS",
77
"scripts": {
8-
"dev": "next dev --turbopack",
8+
"dev": "next dev --turbopack -H 0.0.0.0",
99
"build": "next build --turbopack",
1010
"start": "next start",
1111
"format": "prettier --write .",

src/components/atoms/AdditionalInfoActions.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,7 @@ export default function AdditionalInfoActions({
149149
disabled={disabled || busy !== null}
150150
onClick={provideExtrasSameDevice}
151151
>
152-
{busy === 'provide'
153-
? 'Starting…'
154-
: 'Provide additional qualifications (Same Device)'}
152+
{busy === 'provide' ? 'Starting…' : 'Provide additional qualifications'}
155153
</Button>
156154
)}
157155
{/* Only show QR Code button on desktop */}

src/components/atoms/ApplyCrossDeviceButton.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export default function ApplyCrossDeviceButton({ jobId }: { jobId: string }) {
3838
color="primary"
3939
startIcon={!pending ? <QrCode2OutlinedIcon /> : undefined}
4040
>
41-
{pending ? <CircularProgress size={20} /> : 'Apply (cross device)'}
41+
{pending ? <CircularProgress size={20} /> : 'Apply'}
4242
</Button>
4343
);
4444
}

src/components/atoms/ApplySameDeviceButton.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export default function ApplySameDeviceButton({ jobId }: { jobId: string }) {
5353
color="secondary" // your yellow/orange
5454
startIcon={!pending ? <AccountBalanceWalletOutlinedIcon /> : undefined}
5555
>
56-
{pending ? <CircularProgress size={20} /> : 'Apply (same device)'}
56+
{pending ? <CircularProgress size={20} /> : 'Apply'}
5757
</Button>
5858
);
5959
}

src/components/atoms/EmployeeIssuanceActions.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ export default function EmployeeIssuanceActions({ applicationId }: { application
9898
disabled={busy}
9999
onClick={() => issueEmployeeCredential('same-device')}
100100
>
101-
{busy ? 'Issuing…' : 'Issue Employee ID (Same Device)'}
101+
{busy ? 'Issuing…' : 'Issue Employee ID'}
102102
</Button>
103103
)}
104104
{/* Only show QR Code button on desktop */}

src/components/atoms/LogoBox.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,32 @@ export default function LogoBox() {
88
mb: 2,
99
bgcolor: 'white',
1010
p: 2,
11-
pb: '25px',
1211
border: 1,
1312
borderColor: 'divider',
1413
display: 'flex',
1514
flexDirection: 'row',
16-
gap: 3,
15+
gap: 2,
1716
alignItems: 'center',
1817
justifyContent: 'center',
18+
overflow: 'hidden',
1919
}}
2020
>
2121
<Image
2222
src="/logo-european-commission.svg"
2323
alt="European Commission"
24-
width={180}
25-
height={80}
24+
width={160}
25+
height={70}
2626
priority
27-
style={{ objectFit: 'contain', marginLeft: '-16px' }}
27+
style={{ objectFit: 'contain' }}
2828
/>
29-
<Box sx={{ width: '2px', height: '26px', bgcolor: 'primary.main', marginTop: '20px' }} />
29+
<Box sx={{ width: '2px', height: '40px', bgcolor: 'primary.main' }} />
3030
<Image
3131
src="/eudi-wallet-official.svg"
3232
alt="EU Digital Identity Wallet"
33-
width={140}
34-
height={50}
33+
width={130}
34+
height={45}
3535
priority
36-
style={{ objectFit: 'contain', marginTop: '33px' }}
36+
style={{ objectFit: 'contain' }}
3737
/>
3838
</Box>
3939
);

src/components/atoms/SigningActions.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ export default function SigningActions({
147147
disabled={busy}
148148
onClick={startCrossDevice}
149149
>
150-
Sign contract (Cross Device)
150+
Sign contract
151151
</Button>
152152
)}
153153
{/* Only show Same Device button on mobile */}
@@ -160,7 +160,7 @@ export default function SigningActions({
160160
disabled={busy}
161161
onClick={startSameDevice}
162162
>
163-
{busy ? 'Starting…' : 'Sign contract (Same Device)'}
163+
{busy ? 'Starting…' : 'Sign contract'}
164164
</Button>
165165
)}
166166
</Stack>

src/components/atoms/TaxResidencyActions.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ export default function TaxResidencyActions({ applicationId }: { applicationId:
111111
disabled={busy !== null}
112112
onClick={provideTaxResidencySameDevice}
113113
>
114-
{busy === 'same' ? 'Starting…' : 'Provide Tax Residency (Same Device)'}
114+
{busy === 'same' ? 'Starting…' : 'Provide Tax Residency'}
115115
</Button>
116116
)}
117117
{/* Only show QR Code button on desktop */}

src/components/organisms/VacancyApplicationSection.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import AccountBalanceWalletIcon from '@mui/icons-material/AccountBalanceWallet';
44
import { Box, Chip, Stack, Typography } from '@mui/material';
5+
import { useState, useEffect } from 'react';
6+
import { isMobile } from 'react-device-detect';
57

68
import ApplyCrossDeviceButton from '@/components/atoms/ApplyCrossDeviceButton';
79
import ApplySameDeviceButton from '@/components/atoms/ApplySameDeviceButton';
@@ -20,6 +22,12 @@ export default function VacancyApplicationSection({
2022
vacancyId,
2123
requiredCredentials,
2224
}: VacancyApplicationSectionProps) {
25+
const [mounted, setMounted] = useState(false);
26+
27+
useEffect(() => {
28+
setMounted(true);
29+
}, []);
30+
2331
// Filter out basic credentials (NONE, PID)
2432
const optionalCredentials = requiredCredentials.filter(
2533
(cred) => cred !== 'NONE' && cred !== 'PID',
@@ -64,8 +72,10 @@ export default function VacancyApplicationSection({
6472
)}
6573

6674
<Stack spacing={2}>
67-
<ApplySameDeviceButton jobId={vacancyId} />
68-
<ApplyCrossDeviceButton jobId={vacancyId} />
75+
{/* Only show Same Device button on mobile */}
76+
{mounted && isMobile && <ApplySameDeviceButton jobId={vacancyId} />}
77+
{/* Only show Cross Device button on desktop */}
78+
{mounted && !isMobile && <ApplyCrossDeviceButton jobId={vacancyId} />}
6979
</Stack>
7080
</Box>
7181
);

src/core/domain/services/verification/CredentialVerificationService.ts

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { CredentialType } from '@/core/domain/value-objects';
55
import { Inject } from '@/core/infrastructure/config/container';
66
import { createLogger } from '@/core/infrastructure/logging/Logger';
77
import { VpTokenRequest } from '@/core/shared/types/types/eudi';
8+
import { env } from '@env';
89

910
import { DiplomaQueryService } from './queries/DiplomaQueryService';
1011
import { PidQueryService } from './queries/PidQueryService';
@@ -83,19 +84,9 @@ export class CredentialVerificationService {
8384
};
8485

8586
// Add redirect URI for same-device flow
86-
// NOTE: EUDI Verifier is rejecting redirect templates with InvalidWalletResponseTemplate error
87-
// Disabling same-device flow redirect until verifier backend is fixed
88-
// See: https://github.com/eu-digital-identity-wallet/eudi-srv-web-verifier-endpoint-23220-4-kt/issues/XXX
8987
if (options.sameDeviceFlow) {
90-
this.logger.warn(
91-
'Same-device flow requested but redirect template disabled due to verifier bug',
92-
{
93-
applicationId: options.applicationId,
94-
},
95-
);
96-
// Uncomment when verifier supports redirect templates:
97-
// const base = env.NEXT_PUBLIC_APP_URI.replace(/\/+$/, '');
98-
// payload.wallet_response_redirect_uri_template = `${base}/applications/${options.applicationId}/callback?response_code={response_code}`;
88+
const base = env.NEXT_PUBLIC_APP_URI.replace(/\/+$/, '');
89+
payload.wallet_response_redirect_uri_template = `${base}/applications/${options.applicationId}/callback?response_code={RESPONSE_CODE}`;
9990
}
10091

10192
return payload;

0 commit comments

Comments
 (0)