Question:
Can someone help me elevate this function so a Non-Admin member can call it.
Product:
Regular Editor
→ This function is in a backend .jsw file
The main problem I’m facing is that when I call the function in the Testing-Environment it works properly and is returning either the NotOk or Ok, depending on the Member.
But when I call it from a regular Member Demo-Account it gives me a permissions error, since the “Members/FullData” App-Database is Read: Admin (btw. in the Docs it says it’s Read: All, but thats not true).
FYI: Due to logical restrictions I can’t use the “getMember, etc.” from the Members API, since I don’t have access to the Member ID. (This function gets called by a custom Velo login form).
So the logical solution would be to just elevate the query right? Well I can’t seem to get it to work. What am I missing?
import wixData from 'wix-data';
import { elevate } from 'wix-auth';
const amountSessionsPerMember = 1;
export async function CheckMemberSessionCount(memberEmail) {
console.log("MemberEmailatBackend: " + memberEmail);
try {
const elevatedQuery = elevate(wixData.query);
// Suche nach dem Mitglied anhand der E-Mail-Adresse in der Datenbank
let memberResult = await elevatedQuery("Members/FullData")
.eq("loginEmail", memberEmail)
.find();
console.log("QueryResult:", memberResult.items);
if (memberResult.items.length > 0) {
// Mitglied gefunden, Zugriff auf das 'custom_sessions' Feld
const memberData = memberResult.items[0];
const sessionFieldValue = memberData.custom_sessions;
if (sessionFieldValue !== undefined) {
const currentSessions = Number(sessionFieldValue); // Umwandlung in eine Zahl, falls erforderlich
// Vergleiche die aktuelle Anzahl der Sitzungen mit der festgelegten Grenze
if (currentSessions > amountSessionsPerMember) {
return "notOk";
} else {
return "Ok";
}
} else {
console.log("Kein 'Sessions'-Feld für dieses Mitglied gefunden.");
return "fieldNotFound"; // Gibt an, dass kein 'Sessions'-Feld gefunden wurde
}
} else {
// Kein Mitglied mit dieser E-Mail gefunden
console.log("Kein Mitglied mit der angegebenen E-Mail gefunden.");
return "memberNotFound"; // Gibt an, dass kein Mitglied gefunden wurde
}
} catch (error) {
console.error("Fehler beim Abrufen der Mitgliederdaten:", error);
return "error"; // Gibt an, dass ein Fehler aufgetreten ist
}
}
@CODE-NINJA any thoughts on this? I would really appreciate your help