redux-security
Version:
47 lines (36 loc) • 1.75 kB
JavaScript
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
}
}