diff --git a/src/entities/VerifiableCredential.entity.ts b/src/entities/VerifiableCredential.entity.ts index 8615cbc..b316bbb 100644 --- a/src/entities/VerifiableCredential.entity.ts +++ b/src/entities/VerifiableCredential.entity.ts @@ -22,6 +22,12 @@ export class VerifiableCredentialEntity { @Column({ type: "varchar", nullable: false }) format: string; + + @Column({ type: "varchar", nullable: false, default: "" }) + credentialConfigurationId: string = ""; + + @Column({ type: "varchar", nullable: false, default: "" }) + credentialIssuerIdentifier: string = ""; } diff --git a/src/entities/user.entity.ts b/src/entities/user.entity.ts index ed20efc..8e2e634 100644 --- a/src/entities/user.entity.ts +++ b/src/entities/user.entity.ts @@ -122,6 +122,9 @@ class UserEntity { @OneToMany(() => FcmTokenEntity, (fcmToken) => fcmToken.user, { eager: true }) fcmTokenList: FcmTokenEntity[]; + + @Column({ nullable: false, default: 3600 }) + openidRefreshTokenMaxAgeInSeconds: number; } @Entity({ name: "webauthn_credential" }) diff --git a/src/routers/user.router.ts b/src/routers/user.router.ts index 3504ae9..68ea64f 100644 --- a/src/routers/user.router.ts +++ b/src/routers/user.router.ts @@ -331,6 +331,9 @@ userController.get('/account-info', async (req: Request, res: Response) => { username: user.username, displayName: user.displayName, hasPassword: user.passwordHash !== null, + settings: { + openidRefreshTokenMaxAgeInSeconds: user.openidRefreshTokenMaxAgeInSeconds, + }, webauthnCredentials: (user.webauthnCredentials || []).map(cred => ({ createTime: cred.createTime, credentialId: cred.credentialId, @@ -597,4 +600,28 @@ userController.delete('/', async (req: Request, res: Response) => { } }); + +userController.post('/settings', async (req: Request, res: Response) => { + try { + const { + openidRefreshTokenMaxAgeInSeconds + } = req.body; + const userRes = await getUser(req.user.id); + + if (userRes.ok) { + const user = userRes.unwrap(); + await updateUser(user.uuid, (userEntity, manager) => { + userEntity.openidRefreshTokenMaxAgeInSeconds = openidRefreshTokenMaxAgeInSeconds; + manager.save(userEntity); + return userEntity; + }) + return res.send({ openidRefreshTokenMaxAgeInSeconds: user.openidRefreshTokenMaxAgeInSeconds }) + } + return res.status(400).send({ error: userRes.err }); + } + catch (err) { + return res.status(500).send({ error: err }); + } +}); + export default noAuthUserController;