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
+
1
182
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