Skip to content

Commit 8c85c2b

Browse files
author
Aishwarya Nair
committed
updated user service api
1 parent 970b82f commit 8c85c2b

File tree

1 file changed

+216
-35
lines changed

1 file changed

+216
-35
lines changed
Lines changed: 216 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,217 @@
1+
// Provides APIs to Frontend
2+
3+
import {
4+
registerUserUsingFirebase,
5+
loginUserUsingFirebase,
6+
logoutUserUsingFirebase,
7+
resetUserPasswordUsingFirebase,
8+
} from "../Authentication/UserAuthenticationController";
9+
10+
import {
11+
updateUserEmailInFirebase,
12+
deleteUserAccountInFirebase,
13+
updateUserPasswordInFirebase,
14+
} from "../Authentication/UserProfileUpdateController";
15+
16+
import {
17+
getUserData,
18+
postUserData,
19+
patchUserData,
20+
deleteUserData,
21+
updateUserPrivilege,
22+
getAllUsersData,
23+
} from "./UserServiceClientController";
24+
25+
import {getFirebaseUserCredentials} from "../Authentication/AuthenticationState";
26+
27+
import {updateUserState, setUserState, isUserAdmin} from "./UserState";
28+
29+
async function registerUser(
30+
userName,
31+
userEmail,
32+
userPassword,
33+
userGithubId,
34+
userPreferredLanguage
35+
) {
36+
const isFirebaseUserRegistrationSuccessful = await registerUserUsingFirebase(
37+
userEmail,
38+
userPassword
39+
);
40+
41+
if (isFirebaseUserRegistrationSuccessful.success) {
42+
const userId = getFirebaseUserCredentials().uid;
43+
const result = await postUserData(
44+
userId,
45+
userName,
46+
userEmail,
47+
userGithubId,
48+
userPreferredLanguage
49+
);
50+
51+
if (result !== null && result.status === 201) {
52+
setUserState(result.data.user);
53+
54+
return isFirebaseUserRegistrationSuccessful;
55+
}
56+
57+
// Firebase Account Created, But Could Not Be Stored In User Service Database
58+
await deleteUserAccountInFirebase();
59+
}
60+
61+
isFirebaseUserRegistrationSuccessful.success = false;
62+
return isFirebaseUserRegistrationSuccessful;
63+
}
64+
65+
async function loginUser(userEmail, userPassword) {
66+
const isFirebaseUserLoginSuccessful = await loginUserUsingFirebase(
67+
userEmail,
68+
userPassword
69+
);
70+
71+
if (isFirebaseUserLoginSuccessful) {
72+
const userId = getFirebaseUserCredentials().uid;
73+
const result = await getUserData(userId);
74+
75+
if (result !== null && result.status === 200) {
76+
setUserState(result.data.user);
77+
78+
return true;
79+
}
80+
81+
// User Logged In, But User Data Could Not Be Obtained From User Service
82+
await logoutUser();
83+
}
84+
85+
return false;
86+
}
87+
88+
async function logoutUser() {
89+
const result = await logoutUserUsingFirebase();
90+
91+
if (result === true) {
92+
setUserState(null);
93+
}
94+
95+
return result;
96+
}
97+
98+
async function resetUserPassword(userEmail) {
99+
const result = await resetUserPasswordUsingFirebase(userEmail);
100+
101+
return result;
102+
}
103+
104+
async function deleteUser() {
105+
if (getFirebaseUserCredentials() !== null) {
106+
const result = await deleteUserData(getFirebaseUserCredentials().uid);
107+
108+
if (result !== null && result.status === 200) {
109+
const isDeletedFromFirebase = await deleteUserAccountInFirebase();
110+
111+
if (isDeletedFromFirebase) {
112+
setUserState(null);
113+
114+
return true;
115+
}
116+
}
117+
}
118+
119+
return false;
120+
}
121+
122+
async function updateUserData(
123+
updatedUserName,
124+
updatedUserEmail,
125+
updatedUserGithubId,
126+
updatedUserPreferredLanguage
127+
) {
128+
const currentEmailId = getFirebaseUserCredentials().email;
129+
const isEmailIdUpdated = currentEmailId !== updatedUserEmail;
130+
131+
if (isEmailIdUpdated) {
132+
const result = await updateUserEmailInFirebase(updatedUserEmail);
133+
134+
if (result === false) {
135+
return false;
136+
}
137+
}
138+
139+
const result = await patchUserData(
140+
getFirebaseUserCredentials().uid,
141+
updatedUserName,
142+
updatedUserEmail,
143+
updatedUserGithubId,
144+
updatedUserPreferredLanguage
145+
);
146+
147+
if (result !== null && result.status === 200) {
148+
// Update User State
149+
updateUserState(
150+
updatedUserName,
151+
updatedUserEmail,
152+
updatedUserGithubId,
153+
updatedUserPreferredLanguage
154+
);
155+
156+
return true;
157+
}
158+
159+
// Reset Updated Email
160+
await updateUserEmailInFirebase(currentEmailId);
161+
return false;
162+
}
163+
164+
async function updateLoggedInUserPassword(updatedUserPassword) {
165+
const result = await updateUserPasswordInFirebase(updatedUserPassword);
166+
167+
return result;
168+
}
169+
170+
async function elevateUserPrivilege(userEmailToElevate) {
171+
if ((await isUserAdmin()) === true) {
172+
const result = await updateUserPrivilege(userEmailToElevate, true);
173+
174+
if (result !== null && result.status === 200) {
175+
return true;
176+
}
177+
}
178+
179+
return false;
180+
}
181+
1182
async function lowerUserPrivilege(userEmailToLower) {
2-
if ((await isUserAdmin()) === true) {
3-
const result = await updateUserPrivilege(userEmailToLower, false);
4-
5-
if (result !== null && result.status === 200) {
6-
return true;
7-
}
8-
}
9-
10-
return false;
11-
}
12-
13-
async function getAllRegisteredUsers() {
14-
if ((await isUserAdmin()) === true) {
15-
const result = await getAllUsersData();
16-
17-
if (result !== null && result.status === 200) {
18-
return result.data.users;
19-
}
20-
}
21-
22-
return null;
23-
}
24-
25-
export {
26-
registerUser,
27-
loginUser,
28-
logoutUser,
29-
resetUserPassword,
30-
deleteUser,
31-
updateUserData,
32-
updateLoggedInUserPassword,
33-
elevateUserPrivilege,
34-
lowerUserPrivilege,
35-
getAllRegisteredUsers,
36-
};
183+
if ((await isUserAdmin()) === true) {
184+
const result = await updateUserPrivilege(userEmailToLower, false);
185+
186+
if (result !== null && result.status === 200) {
187+
return true;
188+
}
189+
}
190+
191+
return false;
192+
}
193+
194+
async function getAllRegisteredUsers() {
195+
if ((await isUserAdmin()) === true) {
196+
const result = await getAllUsersData();
197+
198+
if (result !== null && result.status === 200) {
199+
return result.data.users;
200+
}
201+
}
202+
203+
return null;
204+
}
205+
206+
export {
207+
registerUser,
208+
loginUser,
209+
logoutUser,
210+
resetUserPassword,
211+
deleteUser,
212+
updateUserData,
213+
updateLoggedInUserPassword,
214+
elevateUserPrivilege,
215+
lowerUserPrivilege,
216+
getAllRegisteredUsers,
217+
};

0 commit comments

Comments
 (0)