mirror of
https://github.com/urosran/cally.git
synced 2025-07-10 15:17:17 +00:00
Adding and displaying family members
This commit is contained in:
@ -4,31 +4,72 @@ const {getFirestore} = require("firebase-admin/firestore");
|
||||
const admin = require("firebase-admin");
|
||||
const logger = require("firebase-functions/logger");
|
||||
|
||||
admin.initializeApp();
|
||||
try {
|
||||
admin.initializeApp();
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
}
|
||||
|
||||
exports.createSubUser = onRequest(async (request, response) => {
|
||||
const authHeader = request.get('Authorization');
|
||||
|
||||
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
||||
logger.warn("Missing or incorrect Authorization header", {authHeader});
|
||||
response.status(401).json({error: 'Unauthorized'});
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
logger.info("Processing user creation", {requestBody: request.body.data});
|
||||
const token = authHeader.split('Bearer ')[1];
|
||||
logger.info("Verifying ID token", {token});
|
||||
|
||||
const {userType, name, email, password} = request.body.data;
|
||||
|
||||
if (!email || !password || !name || !userType) {
|
||||
throw new Error("Missing required fields");
|
||||
let decodedToken;
|
||||
try {
|
||||
decodedToken = await getAuth().verifyIdToken(token);
|
||||
logger.info("ID token verified successfully", {uid: decodedToken.uid});
|
||||
} catch (verifyError) {
|
||||
logger.error("ID token verification failed", {error: verifyError.message});
|
||||
response.status(401).json({error: 'Unauthorized: Invalid token'});
|
||||
return;
|
||||
}
|
||||
|
||||
const userRecord = await getAuth().createUser({
|
||||
email, password, displayName: name,
|
||||
});
|
||||
logger.info("Processing user creation", {requestBody: request.body.data});
|
||||
|
||||
const {userType, firstName, lastName, email, password} = request.body.data;
|
||||
|
||||
if (!email || !password || !firstName || !lastName || !userType) {
|
||||
logger.warn("Missing required fields in request body", {requestBody: request.body.data});
|
||||
response.status(400).json({error: "Missing required fields"});
|
||||
return;
|
||||
}
|
||||
|
||||
let userRecord;
|
||||
try {
|
||||
userRecord = await getAuth().createUser({
|
||||
email, password, displayName: `${firstName} ${lastName}`,
|
||||
});
|
||||
logger.info("User record created", {userId: userRecord.uid});
|
||||
} catch (createUserError) {
|
||||
logger.error("User creation failed", {error: createUserError.message});
|
||||
response.status(500).json({error: "Failed to create user"});
|
||||
return;
|
||||
}
|
||||
|
||||
const userProfile = {
|
||||
userType, name, email, uid: userRecord.uid,
|
||||
userType, name: `${firstName} ${lastName}`, email, uid: userRecord.uid,
|
||||
};
|
||||
|
||||
await getFirestore().collection("Profiles").doc(userRecord.uid).set(userProfile);
|
||||
try {
|
||||
await getFirestore().collection("Profiles").doc(userRecord.uid).set(userProfile);
|
||||
logger.info("User profile saved to Firestore", {userId: userRecord.uid});
|
||||
} catch (firestoreError) {
|
||||
logger.error("Failed to save user profile to Firestore", {error: firestoreError.message});
|
||||
response.status(500).json({error: "Failed to save user profile"});
|
||||
return;
|
||||
}
|
||||
|
||||
response.status(200).json({
|
||||
data: {
|
||||
|
||||
message: "User created successfully", userId: userRecord.uid,
|
||||
}
|
||||
});
|
||||
|
Reference in New Issue
Block a user