add oauth flows, profile, logout page, and index page
This commit is contained in:
parent
650c93273a
commit
b0270cc98b
31 changed files with 449 additions and 162 deletions
42
imports/ui/components/OAuthLoginButtons/OAuthLoginButtons.js
Normal file
42
imports/ui/components/OAuthLoginButtons/OAuthLoginButtons.js
Normal 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);
|
||||
Loading…
Add table
Add a link
Reference in a new issue