From a0e2092e01cc2c0cffcc66195f9d7b21f60cd9c2 Mon Sep 17 00:00:00 2001 From: Jori Lallo Date: Thu, 26 May 2016 23:36:49 -0700 Subject: [PATCH] Fixed login issues --- server/api/auth.js | 32 ++++++++++--------- server/models/User.js | 3 +- server/presenters.js | 2 +- src/components/SlackAuthLink/SlackAuthLink.js | 7 +++- 4 files changed, 25 insertions(+), 19 deletions(-) diff --git a/server/api/auth.js b/server/api/auth.js index 750d3eacc..5128bd63e 100644 --- a/server/api/auth.js +++ b/server/api/auth.js @@ -31,36 +31,37 @@ router.post('auth.slack', async (ctx) => { // Temp to block let allowedSlackIds = process.env.ALLOWED_SLACK_IDS.split(','); - if (!allowedSlackIds.includes(data.team_id)) throw httpErrors.BadRequest("Invalid Slack team"); + if (!allowedSlackIds.includes(data.team.id)) throw httpErrors.BadRequest("Invalid Slack team"); // User let userData; - let user = await User.findOne({ where: { slackId: data.user_id }}); + let user = await User.findOne({ where: { slackId: data.user.id }}); + + const authResponse = await fetch(`https://slack.com/api/auth.test?token=${data.access_token}`); + const authData = await authResponse.json(); if (user) { user.slackAccessToken = data.access_token; - user.save(); + user = await user.save(); } else { - // Find existing user - const userParams = { token: data.access_token, user: data.user_id } - const response = await fetch('https://slack.com/api/users.info?' + querystring.stringify(userParams)); - userData = await response.json(); + // Existing user user = await User.create({ - slackId: data.user_id, - username: userData.user.name, - name: userData.user.profile.real_name, - email: userData.user.profile.email, - slackData: userData.user, + slackId: data.user.id, + username: authData.user, + name: data.user.name, + email: data.user.email, + slackData: data.user, slackAccessToken: data.access_token, }); } // Team - let team = await Team.findOne({ where: { slackId: data.team_id } }); + let team = await Team.findOne({ where: { slackId: data.team.id } }); if (!team) { team = await Team.create({ - slackId: data.team_id, - name: data.team_name, + name: data.team.name, + slackId: data.team.id, + slackData: data.team, }); } @@ -72,6 +73,7 @@ router.post('auth.slack', async (ctx) => { team: await presentTeam(team), accessToken: user.getJwtToken(), }}; + console.log("enf") }); export default router; diff --git a/server/models/User.js b/server/models/User.js index 9b8da5f46..64452ab8e 100644 --- a/server/models/User.js +++ b/server/models/User.js @@ -29,8 +29,7 @@ const User = sequelize.define('user', { }, indexes: [ { - unique: true, - fields: ['email'] + fields: ['email'], }, ], }); diff --git a/server/presenters.js b/server/presenters.js index 45674ad3d..6dbd73596 100644 --- a/server/presenters.js +++ b/server/presenters.js @@ -8,7 +8,7 @@ export function presentUser(user) { name: user.name, username: user.username, email: user.email, - avatarUrl: user.slackData.profile.image_192, + avatarUrl: user.slackData.image_192, }); }); } diff --git a/src/components/SlackAuthLink/SlackAuthLink.js b/src/components/SlackAuthLink/SlackAuthLink.js index da01c9d8c..a61c4cf90 100644 --- a/src/components/SlackAuthLink/SlackAuthLink.js +++ b/src/components/SlackAuthLink/SlackAuthLink.js @@ -12,7 +12,12 @@ export default class SlackAuthLink extends React.Component { } static defaultProps = { - scopes: ['identify'] + scopes: [ + 'identity.email', + 'identity.basic', + 'identity.avatar', + 'identity.team', + ] } componentDidMount = () => {