@@ -61,11 +61,11 @@ export const AUTH_CHANGE_PASSWORD_FAIL = createAction(
6161
6262export const AUTH_UPDATE_USER_DATA = createAction ( 'AUTH_UPDATE_USER_DATA' ) ;
6363
64- export const AUTH_FACEBOOK_INIT = createAction ( 'AUTH_FACEBOOK_INIT ' ) ;
64+ export const AUTH_PROVIDER_INIT = createAction ( 'AUTH_PROVIDER_INIT ' ) ;
6565
66- export const AUTH_FACEBOOK_SUCCESS = createAction ( 'AUTH_FACEBOOK_SUCCESS ' ) ;
66+ export const AUTH_PROVIDER_SUCCESS = createAction ( 'AUTH_PROVIDER_SUCCESS ' ) ;
6767
68- export const AUTH_FACEBOOK_FAIL = createAction ( 'AUTH_FACEBOOK_FAIL ' ) ;
68+ export const AUTH_PROVIDER_FAIL = createAction ( 'AUTH_PROVIDER_FAIL ' ) ;
6969
7070export const logout = ( ) => {
7171 return async dispatch => {
@@ -241,62 +241,76 @@ export const changeUserPassword = (currentPassword, newPassword) => {
241241 } ;
242242} ;
243243
244- export const authFacebook = ( ) => {
244+ const authWithProvider = provider => {
245245 return async ( dispatch , getState ) => {
246- dispatch ( AUTH_FACEBOOK_INIT ( ) ) ;
246+ dispatch ( AUTH_PROVIDER_INIT ( ) ) ;
247247 const { locale } = getState ( ) . preferences ;
248-
249- const provider = new firebase . auth . FacebookAuthProvider ( ) ;
250-
251- provider . addScope ( 'email' ) ;
252- provider . addScope ( 'user_location' ) ;
253-
254248 let result ;
255249
256250 try {
257251 result = await firebase . auth ( ) . signInWithPopup ( provider ) ;
258252 } catch ( error ) {
259253 const errorMessage = firebaseError ( error . code , locale ) ;
260- return dispatch ( AUTH_FACEBOOK_FAIL ( { error : errorMessage } ) ) ;
254+ return dispatch ( AUTH_PROVIDER_FAIL ( { error : errorMessage } ) ) ;
261255 }
262256 const { user, additionalUserInfo } = result ;
263257
264258 const { uid } = firebase . auth ( ) . currentUser ;
265259
266260 const createdAt = new Date ( ) . toString ( ) ;
261+
262+ const { location } = additionalUserInfo . profile ;
263+
267264 const userData = {
268265 isAdmin : false ,
269266 email : user . email ,
270267 name : user . displayName ,
271268 createdAt,
272269 logoUrl : user . photoURL ,
273- location : additionalUserInfo . profile . location . name
270+ location : location ? location . name : null
274271 } ;
275- let userFacebook ;
272+
273+ let userValue ;
276274 try {
277- userFacebook = (
275+ userValue = (
278276 await firebase
279277 . database ( )
280278 . ref ( `users/${ uid } ` )
281279 . once ( 'value' )
282280 ) . val ( ) ;
283281 } catch ( error ) {
284282 const errorMessage = firebaseError ( error . code , locale ) ;
285- return dispatch ( AUTH_FACEBOOK_FAIL ( { error : errorMessage } ) ) ;
283+ return dispatch ( AUTH_PROVIDER_FAIL ( { error : errorMessage } ) ) ;
286284 }
287285
288- if ( ! userFacebook ) {
286+ if ( ! userValue ) {
289287 try {
290288 await firebase
291289 . database ( )
292290 . ref ( `users/${ uid } ` )
293291 . set ( userData ) ;
294292 } catch ( error ) {
295293 const errorMessage = firebaseError ( error . code , locale ) ;
296- return dispatch ( AUTH_FACEBOOK_FAIL ( { error : errorMessage } ) ) ;
294+ return dispatch ( AUTH_PROVIDER_FAIL ( { error : errorMessage } ) ) ;
297295 }
298296 }
299297
300- return dispatch ( AUTH_FACEBOOK_SUCCESS ( { id : uid , ...userData } ) ) ;
298+ return dispatch (
299+ AUTH_PROVIDER_SUCCESS ( { id : uid , ...userData , ...userValue } )
300+ ) ;
301301 } ;
302302} ;
303+
304+ export const authFacebook = ( ) => {
305+ const provider = new firebase . auth . FacebookAuthProvider ( ) ;
306+ provider . addScope ( 'email' ) ;
307+ provider . addScope ( 'user_location' ) ;
308+ return authWithProvider ( provider ) ;
309+ } ;
310+
311+ export const authGoogle = ( ) => {
312+ const provider = new firebase . auth . GoogleAuthProvider ( ) ;
313+ provider . addScope ( 'https://www.googleapis.com/auth/user.addresses.read' ) ;
314+ provider . addScope ( 'https://www.googleapis.com/auth/userinfo.email' ) ;
315+ return authWithProvider ( provider ) ;
316+ } ;
0 commit comments