mirror of
https://github.com/urosran/cally.git
synced 2025-07-10 07:07:16 +00:00
Added firebase functions
This commit is contained in:
15
.idea/git_toolbox_prj.xml
generated
Normal file
15
.idea/git_toolbox_prj.xml
generated
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GitToolBoxProjectSettings">
|
||||
<option name="commitMessageIssueKeyValidationOverride">
|
||||
<BoolValueOverride>
|
||||
<option name="enabled" value="true" />
|
||||
</BoolValueOverride>
|
||||
</option>
|
||||
<option name="commitMessageValidationEnabledOverride">
|
||||
<BoolValueOverride>
|
||||
<option name="enabled" value="true" />
|
||||
</BoolValueOverride>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
5
firebase/.firebaserc
Normal file
5
firebase/.firebaserc
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"projects": {
|
||||
"default": "cally-family-calendar"
|
||||
}
|
||||
}
|
69
firebase/.gitignore
vendored
Normal file
69
firebase/.gitignore
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
firebase-debug.log*
|
||||
firebase-debug.*.log*
|
||||
|
||||
# Firebase cache
|
||||
.firebase/
|
||||
|
||||
# Firebase config
|
||||
|
||||
# Uncomment this if you'd like others to create their own Firebase project.
|
||||
# For a team working on the same Firebase project(s), it is recommended to leave
|
||||
# it commented so all members can deploy to the same project(s) in .firebaserc.
|
||||
# .firebaserc
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (http://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
|
||||
# dataconnect generated files
|
||||
.dataconnect
|
37
firebase/firebase.json
Normal file
37
firebase/firebase.json
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
"functions": [
|
||||
{
|
||||
"source": "functions",
|
||||
"codebase": "default",
|
||||
"ignore": [
|
||||
"node_modules",
|
||||
".git",
|
||||
"firebase-debug.log",
|
||||
"firebase-debug.*.log",
|
||||
"*.local"
|
||||
],
|
||||
"predeploy": [
|
||||
"npm --prefix \"$RESOURCE_DIR\" run lint"
|
||||
]
|
||||
}
|
||||
],
|
||||
"firestore": {
|
||||
"rules": "firestore.rules",
|
||||
"indexes": "firestore.indexes.json"
|
||||
},
|
||||
"emulators": {
|
||||
"auth": {
|
||||
"port": 9099
|
||||
},
|
||||
"functions": {
|
||||
"port": 5001
|
||||
},
|
||||
"firestore": {
|
||||
"port": 5471
|
||||
},
|
||||
"ui": {
|
||||
"enabled": true
|
||||
},
|
||||
"singleProjectMode": true
|
||||
}
|
||||
}
|
4
firebase/firestore.indexes.json
Normal file
4
firebase/firestore.indexes.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"indexes": [],
|
||||
"fieldOverrides": []
|
||||
}
|
19
firebase/firestore.rules
Normal file
19
firebase/firestore.rules
Normal file
@ -0,0 +1,19 @@
|
||||
rules_version = '2';
|
||||
|
||||
service cloud.firestore {
|
||||
match /databases/{database}/documents {
|
||||
|
||||
// This rule allows anyone with your Firestore database reference to view, edit,
|
||||
// and delete all data in your Firestore database. It is useful for getting
|
||||
// started, but it is configured to expire after 30 days because it
|
||||
// leaves your app open to attackers. At that time, all client
|
||||
// requests to your Firestore database will be denied.
|
||||
//
|
||||
// Make sure to write security rules for your app before that time, or else
|
||||
// all client requests to your Firestore database will be denied until you Update
|
||||
// your rules
|
||||
match /{document=**} {
|
||||
allow read, write: if request.time < timestamp.date(2024, 9, 5);
|
||||
}
|
||||
}
|
||||
}
|
28
firebase/functions/.eslintrc.js
Normal file
28
firebase/functions/.eslintrc.js
Normal file
@ -0,0 +1,28 @@
|
||||
module.exports = {
|
||||
env: {
|
||||
es6: true,
|
||||
node: true,
|
||||
},
|
||||
parserOptions: {
|
||||
"ecmaVersion": 2018,
|
||||
},
|
||||
extends: [
|
||||
"eslint:recommended",
|
||||
"google",
|
||||
],
|
||||
rules: {
|
||||
"no-restricted-globals": ["error", "name", "length"],
|
||||
"prefer-arrow-callback": "error",
|
||||
"quotes": ["error", "double", {"allowTemplateLiterals": true}],
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
files: ["**/*.spec.*"],
|
||||
env: {
|
||||
mocha: true,
|
||||
},
|
||||
rules: {},
|
||||
},
|
||||
],
|
||||
globals: {},
|
||||
};
|
2
firebase/functions/.gitignore
vendored
Normal file
2
firebase/functions/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
node_modules/
|
||||
*.local
|
45
firebase/functions/index.js
Normal file
45
firebase/functions/index.js
Normal file
@ -0,0 +1,45 @@
|
||||
const {onRequest} = require("firebase-functions/v2/https");
|
||||
const {getAuth} = require("firebase-admin/auth");
|
||||
const {getFirestore} = require("firebase-admin/firestore");
|
||||
const admin = require("firebase-admin");
|
||||
const logger = require("firebase-functions/logger");
|
||||
|
||||
admin.initializeApp();
|
||||
|
||||
exports.createSubUser = onRequest(async (request, response) => {
|
||||
try {
|
||||
logger.info("Processing user creation", {requestBody: request.body.data});
|
||||
|
||||
const {userType, name, email, password} = request.body.data;
|
||||
|
||||
if (!email || !password || !name || !userType) {
|
||||
throw new Error("Missing required fields");
|
||||
}
|
||||
|
||||
const userRecord = await getAuth().createUser({
|
||||
email,
|
||||
password,
|
||||
displayName: name,
|
||||
});
|
||||
|
||||
const userProfile = {
|
||||
userType,
|
||||
name,
|
||||
email,
|
||||
uid: userRecord.uid,
|
||||
};
|
||||
|
||||
await getFirestore().collection("Profiles").doc(userRecord.uid).set(userProfile);
|
||||
|
||||
response.status(200).json({
|
||||
data: {
|
||||
|
||||
message: "User created successfully",
|
||||
userId: userRecord.uid,
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error("Error in createSubUser function", {error: error.message});
|
||||
response.status(500).json({data: {error: error.message}});
|
||||
}
|
||||
});
|
7146
firebase/functions/package-lock.json
generated
Normal file
7146
firebase/functions/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
26
firebase/functions/package.json
Normal file
26
firebase/functions/package.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"name": "functions",
|
||||
"description": "Cloud Functions for Firebase",
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
"serve": "firebase emulators:start --only functions",
|
||||
"shell": "firebase functions:shell",
|
||||
"start": "npm run shell",
|
||||
"deploy": "firebase deploy --only functions",
|
||||
"logs": "firebase functions:log"
|
||||
},
|
||||
"engines": {
|
||||
"node": "18"
|
||||
},
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"firebase-admin": "^12.1.0",
|
||||
"firebase-functions": "^5.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^8.15.0",
|
||||
"eslint-config-google": "^0.14.0",
|
||||
"firebase-functions-test": "^3.1.0"
|
||||
},
|
||||
"private": true
|
||||
}
|
3121
ios/Podfile.lock
Normal file
3121
ios/Podfile.lock
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user