Skip to content

Instantly share code, notes, and snippets.

@daniele-zurico
Created June 8, 2018 15:37
Show Gist options
  • Save daniele-zurico/ed21bea7fd193d58c5b2394e98cc69ba to your computer and use it in GitHub Desktop.
Save daniele-zurico/ed21bea7fd193d58c5b2394e98cc69ba to your computer and use it in GitHub Desktop.
import { User, Post } from "../models/users";
import { client } from "../server";
import { CLIENT_ID } from "../server";
const userController = {
users: (root: any, args: any) => User.find({}),
findOrCreateUser: async (token: string) => {
if (!token) {
return {authorized: false};
}
const googleUser = await userController.verifyGoogleToken(token);
const user = await userController.checkIfUserExists(googleUser.email);
if (user) {
return user;
} else {
return userController.saveUser(googleUser);
}
},
checkIfUserExists: (email: string) => {
return User.findOne({ email }).exec();
},
saveUser: (gUser: any) => {
const { email, name, picture, given_name, family_name, locale } = gUser;
const user = { email, name, picture, given_name, family_name, locale };
const newUser = new User(user);
return newUser.save();
},
verifyGoogleToken: async (token: string) => {
const ticket = await client.verifyIdToken({
idToken: token,
audience: CLIENT_ID
});
return ticket.getPayload();
}
};
export { userController };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment