rc Upgrade

This commit is contained in:
alma 2026-01-13 22:17:19 +01:00
parent 14ab50edfd
commit ed2175c080
4 changed files with 31 additions and 3 deletions

View File

@ -15,9 +15,19 @@ async function getUserToken(baseUrl: string) {
}; };
// Step 2: Create user token using admin credentials // Step 2: Create user token using admin credentials
// RocketChat 8.0.2+ requires a 'secret' parameter
const secret = process.env.ROCKET_CHAT_CREATE_TOKEN_SECRET;
if (!secret) {
console.error('ROCKET_CHAT_CREATE_TOKEN_SECRET is not configured');
return null;
}
const createTokenResponse = await fetch(`${baseUrl}/api/v1/users.createToken`, { const createTokenResponse = await fetch(`${baseUrl}/api/v1/users.createToken`, {
method: 'POST', method: 'POST',
headers: adminHeaders headers: adminHeaders,
body: JSON.stringify({
secret: secret
})
}); });
if (!createTokenResponse.ok) { if (!createTokenResponse.ok) {
@ -124,11 +134,19 @@ export async function GET(request: Request) {
}); });
// Step 3: Create a token for the current user // Step 3: Create a token for the current user
// RocketChat 8.0.2+ requires a 'secret' parameter
const secret = process.env.ROCKET_CHAT_CREATE_TOKEN_SECRET;
if (!secret) {
logger.error('[ROCKET_CHAT] ROCKET_CHAT_CREATE_TOKEN_SECRET is not configured');
return NextResponse.json({ messages: [] }, { status: 200 });
}
const createTokenResponse = await fetch(`${baseUrl}/api/v1/users.createToken`, { const createTokenResponse = await fetch(`${baseUrl}/api/v1/users.createToken`, {
method: 'POST', method: 'POST',
headers: adminHeaders, headers: adminHeaders,
body: JSON.stringify({ body: JSON.stringify({
userId: currentUser._id userId: currentUser._id,
secret: secret
}) })
}); });

View File

@ -160,6 +160,7 @@ LEANTIME_TOKEN=<token>
# RocketChat # RocketChat
ROCKET_CHAT_TOKEN=<token> ROCKET_CHAT_TOKEN=<token>
ROCKET_CHAT_USER_ID=<user-id> ROCKET_CHAT_USER_ID=<user-id>
ROCKET_CHAT_CREATE_TOKEN_SECRET=<secret> # Required for RocketChat 8.0.2+ (must match CREATE_TOKENS_FOR_USERS_SECRET on RocketChat server)
NEXT_PUBLIC_IFRAME_PAROLE_URL=https://rocketchat.example.com/channel/general NEXT_PUBLIC_IFRAME_PAROLE_URL=https://rocketchat.example.com/channel/general
# N8N # N8N

View File

@ -13,6 +13,7 @@ const envSchema = z.object({
LEANTIME_API_URL: z.string().url(), LEANTIME_API_URL: z.string().url(),
ROCKET_CHAT_TOKEN: z.string(), ROCKET_CHAT_TOKEN: z.string(),
ROCKET_CHAT_USER_ID: z.string(), ROCKET_CHAT_USER_ID: z.string(),
ROCKET_CHAT_CREATE_TOKEN_SECRET: z.string().optional(),
}); });
export const env = envSchema.parse(process.env); export const env = envSchema.parse(process.env);

View File

@ -129,11 +129,19 @@ export class RocketChatAdapter implements NotificationAdapter {
}; };
// Create token for the specific user // Create token for the specific user
// RocketChat 8.0.2+ requires a 'secret' parameter
const secret = process.env.ROCKET_CHAT_CREATE_TOKEN_SECRET;
if (!secret) {
logger.error('[ROCKETCHAT_ADAPTER] ROCKET_CHAT_CREATE_TOKEN_SECRET is not configured');
return null;
}
const createTokenResponse = await fetch(`${this.baseUrl}/api/v1/users.createToken`, { const createTokenResponse = await fetch(`${this.baseUrl}/api/v1/users.createToken`, {
method: 'POST', method: 'POST',
headers: adminHeaders, headers: adminHeaders,
body: JSON.stringify({ body: JSON.stringify({
userId: rocketChatUserId userId: rocketChatUserId,
secret: secret
}) })
}); });