Prevent signin without hosted domain

This commit is contained in:
Tom Moor
2018-05-28 22:32:36 -07:00
parent 25aa1f288b
commit aa9ed09f08
6 changed files with 25 additions and 2 deletions

View File

@@ -37,6 +37,11 @@ router.get('google.callback', async ctx => {
url: 'https://www.googleapis.com/oauth2/v1/userinfo',
});
if (!profile.data.hd) {
ctx.redirect('/?notice=google-hd');
return;
}
const teamName = capitalize(profile.data.hd.split('.')[0]);
const [team, isFirstUser] = await Team.findOrCreate({
where: {

View File

@@ -10,6 +10,7 @@ import { developers, githubUrl } from '../../shared/utils/routeHelpers';
import { color } from '../../shared/styles/constants';
type Props = {
notice?: 'google-hd',
lastSignedIn: string,
googleSigninEnabled: boolean,
slackSigninEnabled: boolean,
@@ -31,6 +32,12 @@ function Home(props: Props) {
<p>
<SigninButtons {...props} />
</p>
{props.notice === 'google-hd' && (
<Notice>
Sorry, Google sign in cannot be used with a personal email. Please
try signing in with your company Google account.
</Notice>
)}
</Hero>
<Features reverse={{ mobile: true, tablet: false, desktop: false }}>
<Grid.Unit size={{ desktop: 1 / 3, tablet: 1 / 2 }}>
@@ -107,6 +114,13 @@ function Home(props: Props) {
);
}
const Notice = styled.p`
background: #ffd95c;
color: hsla(46, 100%, 20%, 1);
padding: 10px;
border-radius: 4px;
`;
const Screenshot = styled.img`
width: 100%;
box-shadow: 0 0 80px 0 rgba(124, 124, 124, 0.5),

View File

@@ -71,6 +71,7 @@ router.get('/', async ctx => {
await renderpage(
ctx,
<Home
notice={ctx.request.query.notice}
lastSignedIn={lastSignedIn}
googleSigninEnabled={!!process.env.GOOGLE_CLIENT_ID}
slackSigninEnabled={!!process.env.SLACK_KEY}