chore: bump version to 1.7.22 and update CHANGELOG, tests and docs
Docs Check / Markdown lint (push) Successful in 1m14s
Build and Push Docker Image / build (push) Successful in 1m52s
Licence Check / Licence compatibility and copyright header verification (push) Successful in 1m55s
CI / Security audit (push) Successful in 2m25s
Docs Check / Mermaid diagram parse check (push) Successful in 3m6s
CI / Swagger Validation & Coverage (push) Successful in 3m22s
CI / Tests & coverage (push) Successful in 3m45s

This commit is contained in:
2026-05-27 17:42:41 +01:00
parent d2ac7731ca
commit 95bd703b26
16 changed files with 664 additions and 65 deletions
+52 -12
View File
@@ -5,6 +5,8 @@
* not a string, so we need to extract the username from the object.
*/
const { logToFile } = require('./logger');
/**
* Extracts the username from an Ombi request object.
* Handles both the OmbiUser object format and legacy string format.
@@ -15,19 +17,57 @@
function extractRequestedUser(request) {
if (!request) return '';
const requestedUser = request.requestedUser || request.RequestedUser;
// Handle object format: OmbiStore.Entities.OmbiUser
if (requestedUser && typeof requestedUser === 'object') {
// Priority: alias > userAlias > userName > normalizedUserName > requestedByAlias
return requestedUser.alias || requestedUser.Alias ||
requestedUser.userAlias || requestedUser.UserAlias ||
requestedUser.userName || requestedUser.UserName ||
requestedUser.normalizedUserName || requestedUser.NormalizedUserName ||
request.requestedByAlias || request.RequestedByAlias || '';
// Try to locate a user object or string from various fields common to Ombi Movies and TV shows
const userSource = request.requestedUser || request.RequestedUser ||
request.user || request.User ||
request.requestedBy || request.RequestedBy ||
request.ombiUser || request.OmbiUser ||
request.requestedByUser || request.RequestedByUser;
// If userSource is an object, extract key fields
if (userSource && typeof userSource === 'object') {
const username = userSource.alias || userSource.Alias ||
userSource.userAlias || userSource.UserAlias ||
userSource.userName || userSource.UserName ||
userSource.normalizedUserName || userSource.NormalizedUserName ||
userSource.displayName || userSource.DisplayName ||
userSource.email || userSource.Email;
if (username) return username;
}
// Handle string format (fallback for compatibility)
return requestedUser || request.requestedByAlias || request.RequestedByAlias || '';
// If userSource is a string and not an empty object/array
if (userSource && typeof userSource === 'string') {
return userSource;
}
// Fallbacks on the request root level
const rootFallback = request.requestedByAlias || request.RequestedByAlias ||
request.requestedByUsername || request.RequestedByUsername ||
request.requester || request.Requester ||
request.requestedByEmail || request.RequestedByEmail;
if (rootFallback) return rootFallback;
// Check seasons / childRequests nested arrays (common for Ombi TV show requests)
if (Array.isArray(request.seasons)) {
for (const season of request.seasons) {
const seasonUser = extractRequestedUser(season);
if (seasonUser) return seasonUser;
}
}
if (Array.isArray(request.childRequests)) {
for (const child of request.childRequests) {
const childUser = extractRequestedUser(child);
if (childUser) return childUser;
}
}
// Add warning log when user extraction returns empty for non-empty requests
if (Object.keys(request).length > 0 && !request.notificationType) {
logToFile(`[Ombi] WARNING: User extraction failed for request: ${JSON.stringify(request)}`);
}
return '';
}
function filterRequestsByUser(requests, username, showAll) {