Skip to content

Commit 70de447

Browse files
committed
Migrated http function to be callable by the sdk
1 parent 70628dc commit 70de447

File tree

8 files changed

+242
-361
lines changed

8 files changed

+242
-361
lines changed

functions/package-lock.json

Lines changed: 202 additions & 221 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

functions/package.json

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,16 @@
1414
},
1515
"main": "lib/index.js",
1616
"dependencies": {
17-
"@google-cloud/storage": "^4.7.0",
18-
"camelcase": "^5.3.1",
19-
"cookie-parser": "^1.4.4",
20-
"cors": "^2.8.5",
21-
"express": "^4.17.1",
2217
"firebase-admin": "^8.12.1",
23-
"firebase-function-tools": "^1.1.3",
2418
"firebase-functions": "^3.6.2",
25-
"fs-extra": "^8.1.0",
19+
"firebase-functions-test": "^0.2.0",
20+
"firebase-function-tools": "^1.1.3",
2621
"glob": "^7.1.6",
27-
"uuid": "^7.0.3"
22+
"camelcase": "^5.3.1"
2823
},
2924
"devDependencies": {
3025
"tslint": "^5.12.0",
31-
"typescript": "^3.8.0",
32-
"firebase-functions-test": "^0.2.0"
26+
"typescript": "^3.8.0"
3327
},
3428
"private": true
3529
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { https } from 'firebase-functions';
2+
import { auth } from 'firebase-admin';
3+
4+
const createUserAuth = async (email: string, isAdmin: boolean) => {
5+
const { uid } = await auth().createUser({ email });
6+
7+
await auth().setCustomUserClaims(uid, {
8+
isAdmin
9+
});
10+
11+
return uid;
12+
};
13+
14+
export default https.onCall(async data => {
15+
const { email, isAdmin } = data;
16+
17+
if (!email) {
18+
throw new https.HttpsError('invalid-argument', 'auth/invalid-email');
19+
}
20+
21+
let uid;
22+
try {
23+
uid = await createUserAuth(email, isAdmin);
24+
} catch (error) {
25+
throw new https.HttpsError('invalid-argument', error.code);
26+
}
27+
28+
return { uid };
29+
});

functions/src/requests/app.function.ts

Lines changed: 0 additions & 18 deletions
This file was deleted.

functions/src/requests/middlewares/auth.ts

Lines changed: 0 additions & 62 deletions
This file was deleted.

functions/src/requests/routes/users.ts

Lines changed: 0 additions & 40 deletions
This file was deleted.

src/firebase.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import firebase from 'firebase/app';
22
import 'firebase/database';
33
import 'firebase/auth';
44
import 'firebase/storage';
5+
import 'firebase/functions';
56

67
const config = {
78
apiKey: process.env.REACT_APP_FIRE_BASE_KEY,

src/state/actions/users.js

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { createAction } from 'redux-act';
22
import { toastr } from 'react-redux-toastr';
33

4-
import axios from 'utils/axios';
54
import { firebaseError } from 'utils';
65
import firebase from 'firebase.js';
76
import { checkUserData } from './auth';
@@ -151,18 +150,15 @@ export const createUser = ({
151150
dispatch(USERS_CREATE_USER_INIT());
152151
const { locale } = getState().preferences;
153152

154-
const user = firebase.auth().currentUser;
155-
156-
const userToken = await user.getIdToken();
157-
158153
let response;
159154
try {
160-
response = await axios(userToken).post('/users', { email, isAdmin });
155+
const createUserAuth = firebase
156+
.functions()
157+
.httpsCallable('httpsCreateUser');
158+
159+
response = await createUserAuth({ email, isAdmin });
161160
} catch (error) {
162-
const errorMessage = firebaseError(
163-
error.response.data.error.code,
164-
locale
165-
);
161+
const errorMessage = firebaseError(error.message, locale);
166162
toastr.error('', errorMessage);
167163
return dispatch(
168164
USERS_CREATE_USER_FAIL({

0 commit comments

Comments
 (0)