FEAT: add TOTP support for change password and local build support

- Pass TOTP code to DUC for Keycloak users with MFA
- Add Dockerfile.local for local protospack builds
- Add .dockerignore to exclude node_modules from Docker context

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Rafael
2025-12-24 19:03:50 -03:00
co-authored by Claude Opus 4.5
parent b27298501d
commit 8e0182aa50
4 changed files with 28 additions and 3 deletions
+12
View File
@@ -0,0 +1,12 @@
node_modules
dist
.git
*.log
npm-debug.log*
.DS_Store
.env
.env.*
coverage
.nyc_output
*.tgz
!protospack.tgz
+12 -2
View File
@@ -1,4 +1,4 @@
FROM node:20-alpine AS base_image
FROM node:22-alpine AS base_image
RUN npm install -g npm@latest
FROM base_image AS build_base
@@ -19,10 +19,20 @@ ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
# Local build with secrets
# Check if local protospack tarball exists (for local dev)
FROM build_base AS build
COPY protospack*.tgz* ./
RUN --mount=type=secret,id=aws,target=/root/.aws/credentials \
aws codeartifact login --tool npm --namespace @dadosfera --repository dadosfera-npm --domain dadosfera --domain-owner 611330257153 --region us-east-1
RUN npm ci
RUN if [ -f "protospack.tgz" ]; then \
echo "Installing from local protospack tarball..." && \
npm install ./protospack.tgz --save-exact && \
npm ci --ignore-scripts && \
npm rebuild; \
else \
echo "Installing from CodeArtifact..." && \
npm ci; \
fi
COPY . .
RUN npm run build
+2 -1
View File
@@ -190,13 +190,14 @@ export class AuthController {
) {
this.logger.info('/auth - change-password');
const { oldPassword, newPassword } = body;
const { oldPassword, newPassword, totpCode } = body;
const { authorization: accessToken } = headers;
return this.authClient.changePassword({
accessToken,
oldPassword,
newPassword,
totpCode,
});
}
+2
View File
@@ -143,6 +143,7 @@ export class AuthClientService implements OnModuleInit {
accessToken,
oldPassword,
newPassword,
totpCode,
}: AuthChangePasswordRequest) {
this.logger.info('ChangePassword');
@@ -151,6 +152,7 @@ export class AuthClientService implements OnModuleInit {
accessToken,
oldPassword,
newPassword,
totpCode,
}),
);
}