diff --git a/server/api/auth.js b/server/api/auth.js index 750d3eac..5128bd63 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 9b8da5f4..64452ab8 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 45674ad3..6dbd7359 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 da01c9d8..a61c4cf9 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 = () => {