UNPKG

redux-security

Version:
47 lines (36 loc) 1.75 kB
import Promise from 'bluebird' import { write, error } from 'redux-journal' import { manager } from 'redux-manager' import { TAGS } from '../config' import { SERVICE as SERVICE_SESSIONS } from '../../sessions/config' import { SERVICE as SERVICE_USERS } from '../../users/config' const tags = `${TAGS}.api.local` const sendFake = ({ email, code }) => Promise.try(() => { console.log(`Fake send to ${ email } code ${ code }`) }) export const configAPILocal = ( { serviceSessions = SERVICE_SESSIONS, serviceUsers = SERVICE_USERS, send = sendFake } = { serviceSessions: SERVICE_SESSIONS, serviceUsers: SERVICE_USERS, send: sendFake } ) => { const apiSessions = () => manager.api.get(serviceSessions) const apiUsers = () => manager.api.get(serviceUsers) const codeConfirm = ({ code }) => apiUsers().getByCode({ code }) .then((user) => apiUsers().confirmEmail({ userID: user._id })) const codeEmail = ({ sessionID }) => apiSessions().get({ sessionID }) .then((session) => apiUsers().get({ userID: session.userID })) .then((user) => apiUsers().codeGenerate({ userID: user._id }) .then(({ code }) => send({ email: user.email, code })) ) const login = ({ username, password }) => apiUsers() .check({ username, password }) .then(({ userID }) => apiSessions().create({ userID })) const logout = ({ sessionID }) => apiSessions() .remove({ _id: sessionID }) const signup = ({ username, password, email }) => apiUsers() .create({ username, password, email }) .then(({ userID }) => apiUsers().codeGenerate({ userID })) .then(({ code }) => send({ email, code })) return { codeEmail, codeConfirm, login, logout, signup } }