add oauth flows, profile, logout page, and index page

This commit is contained in:
cleverbeagle 2017-05-29 22:02:22 -05:00
parent 650c93273a
commit b0270cc98b
31 changed files with 449 additions and 162 deletions

View file

@ -0,0 +1,42 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Meteor } from 'meteor/meteor';
import { createContainer } from 'meteor/react-meteor-data';
import { ReactiveVar } from 'meteor/reactive-var';
import OAuthLoginButton from '../OAuthLoginButton/OAuthLoginButton';
import './OAuthLoginButtons.scss';
const OAuthLoginButtons = ({ services, emailMessage }) => (services.length ? (
<div className={`OAuthLoginButtons ${emailMessage ? 'WithEmailMessage' : ''}`}>
{services.map(service => <OAuthLoginButton key={service} service={service} />)}
{emailMessage ? <p className="EmailMessage" style={{ marginLeft: `-${emailMessage.offset}px` }}>
{emailMessage.text}
</p> : ''}
</div>
) : <div />);
OAuthLoginButtons.propTypes = {
services: PropTypes.array.isRequired,
emailMessage: PropTypes.object.isRequired,
};
const verificationComplete = new ReactiveVar(false);
const verifiedServices = new ReactiveVar([]);
export default createContainer(({ services }) => {
if (!verificationComplete.get()) {
Meteor.call('oauth.verifyConfiguration', services, (error, response) => {
if (error) {
console.warn(error);
} else {
verifiedServices.set(response);
verificationComplete.set(true);
}
});
}
return {
services: verifiedServices.get(),
};
}, OAuthLoginButtons);