Skip to content
This repository has been archived by the owner on Jun 7, 2019. It is now read-only.

Commit

Permalink
feat(connectAccountLogin): #63 Modified user model and update the code
Browse files Browse the repository at this point in the history
  • Loading branch information
Venkatesh committed May 17, 2019
1 parent 5ca2056 commit 0e48554
Show file tree
Hide file tree
Showing 7 changed files with 77 additions and 46 deletions.
5 changes: 3 additions & 2 deletions web/src/app/app.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@ export class AppComponent implements OnInit {
this.userService.getUser()
.subscribe((user) => {
if (user) {
const userSocial = this.userService.addRefID(user);
this.saveUserSocialDetails(userSocial, user.credentials.provider.split('.')[0]);
const provider = Object.keys(user);
const userSocial = this.userService.addRefID(user, provider[0]);
this.saveUserSocialDetails(userSocial, provider[0]);
}
});
}
Expand Down
2 changes: 1 addition & 1 deletion web/src/app/components/login-page/login-page.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export class LoginPageComponent implements OnInit {
}

saveUser(user: User, provider: string) {
this.userService.saveUser(user)
this.userService.saveUser(user, provider)
.subscribe((userData) => {
this.saveUserSocialStats(userData, provider);
});
Expand Down
9 changes: 4 additions & 5 deletions web/src/app/components/social-cards/social-cards.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,19 +37,19 @@ export class SocialCardsComponent implements OnInit {
addGithubAccount() {
this.accountsService.linkWithGithub()
.subscribe((response) => {
this.saveSecondaryUser(response);
this.saveSecondaryUser(response, 'github');
});
}

addTwitterAccount() {
this.accountsService.linkWithTwitter()
.subscribe((response) => {
this.saveSecondaryUser(response);
this.saveSecondaryUser(response, 'twitter');
});
}

saveSecondaryUser(user: User) {
this.userService.saveUser(user)
saveSecondaryUser(user: User, provider) {
this.userService.saveLinkUser(user, provider)
.subscribe((response) => {
this.saveLinkUserSocialDetails(response, 'twitter');
});
Expand All @@ -73,6 +73,5 @@ export class SocialCardsComponent implements OnInit {
console.log('result', result); // TODO: Will remove in future
});
});

}
}
22 changes: 22 additions & 0 deletions web/src/app/models/account.model.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
export interface Account {
displayName: string;
photoUrl: string;
creationAt: string;
lastSignInAt: string;
credentials: {
accessToken: string,
provider: string,
refreshToken?: string,
secret?: string, // Optional field
};
additionalUserInfo: {
profile: {
createdAt: string,
updatedAt?: string,
followers: number,
following: number,
avatarUrl: string
},
username: string,
};
}
25 changes: 5 additions & 20 deletions web/src/app/models/user.model.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,8 @@
import { Account } from './account.model';
export interface User {
displayName: string;
photoUrl: string;
github?: Account;
twitter?: Account;
youtube?: Account;
instagram?: Account;
uid: string;
creationAt: string;
lastSignInAt: string;
credentials: {
accessToken: string,
provider: string,
refreshToken?: string,
secret?: string, // Optional field
};
additionalUserInfo: {
profile: {
createdAt: string,
updatedAt?: string,
followers: number,
following: number,
avatarUrl: string
},
username: string
};
}
30 changes: 18 additions & 12 deletions web/src/app/services/auth.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,15 +90,19 @@ export class AuthService {
profile
};


const normalisedUser = {
displayName: user.displayName,
github: {
displayName: user.displayName,
photoUrl: user.photoURL,
creationAt: user.metadata.creationTime,
lastSignInAt: user.metadata.lastSignInTime,
additionalUserInfo,
credentials,
},
uid: user.uid,
photoUrl: user.photoURL,
creationAt: user.metadata.creationTime,
lastSignInAt: user.metadata.lastSignInTime,
additionalUserInfo,
credentials,
};

return normalisedUser;
}

Expand All @@ -123,13 +127,15 @@ export class AuthService {
};

const normalisedUser = {
displayName: user.displayName,
twitter: {
displayName: user.displayName,
photoUrl: user.photoURL,
creationAt: user.metadata.creationTime,
lastSignInAt: user.metadata.lastSignInTime,
additionalUserInfo,
credentials,
},
uid: user.uid,
photoUrl: user.photoURL,
creationAt: user.metadata.creationTime,
lastSignInAt: user.metadata.lastSignInTime,
additionalUserInfo,
credentials,
};
return normalisedUser;
}
Expand Down
30 changes: 24 additions & 6 deletions web/src/app/services/user.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,18 @@ export class UserService {
this.user = this.db.collection('user');
}

saveUser(user: User): Observable<UserSocial> {
return from(this.user.doc(user.uid).set({ user }))

saveUser(user: User, provider): Observable<UserSocial> {
return from(this.user.doc(user.uid).set(user))
.pipe(
map(() => this.addRefID(user)),
map(() => this.addRefID(user, provider)),
catchError((err) => this.errorService.logError(err)),
);
}
saveLinkUser(user: User, provider): Observable<UserSocial> {
return from(this.user.doc(user.uid).update(user))
.pipe(
map(() => this.addRefID(user, provider)),
catchError((err) => this.errorService.logError(err)),
);
}
Expand Down Expand Up @@ -58,8 +66,18 @@ export class UserService {
return social;
}

addRefID(user: User): UserSocial {
const normalisedResponse = { ...user.additionalUserInfo.profile, userId: user.uid };
addRefID(user: User, provider): UserSocial {
let normalisedResponse;
switch (provider) {
case 'github':
normalisedResponse = { ...user.github.additionalUserInfo.profile, userId: user.uid };
break;
case 'twitter':
normalisedResponse = { ...user.twitter.additionalUserInfo.profile, userId: user.uid };
break;
default:
break;
}
return normalisedResponse;
}

Expand Down Expand Up @@ -90,7 +108,7 @@ export class UserService {
if (!response) {
return null;
}
return response.user;
return response;
}

formatUserSocial(response) {
Expand Down

0 comments on commit 0e48554

Please sign in to comment.