UNPKG

backendless-console-sdk

Version:

Backendless Console SDK for Node.js and browser

202 lines (165 loc) 5.35 kB
import { cookieEnabled, deleteCookie, getCookie } from './utils/cookie' import { prepareRoutes } from './utils/routes' const routes = prepareRoutes({ getMyAccount : '/console/home/myaccount', updateMyAccount : '/console/home/myaccount/', login : '/console/home/login', loginWithTOTP : '/console/home/otp-login', cloudLogin : '/console/home/cloud/login', cloudLoginWithTOTP: '/console/home/cloud/otp-login', logout : '/console/home/logout', registerDev : '/console/devreg', deleteDev : '/console/developer-suicide', twoFA : '/console/developer/login/2fa', stripeConnect : '/console/developer/stripe-connect', changePassword : '/console/passwordchange', restorePassword : '/console/restorepassword', resendConfirmEmail: '/console/resend', discourseSSO : '/console/discourse/sso', socialLogin : '/console/social/oauth/:type/request_url', devToAutomationWorkspace: '/console/automation/management/:workspaceId/activatedev', stripeConnectionAuth : '/console/community/marketplace/stripe-connect/auth', stripeConnectionToken: '/console/community/marketplace/stripe-connect/token', devToAppTeam : '/:appId/console/activatedev', devPermissions: '/:appId/console/my-permissions', }) /** * * @param req * @param {Context} context */ export default (req, context) => ({ /** * @param {String=}authKey * @return {Promise|*} */ getAccountInfo(authKey) { const request = req.get(routes.getMyAccount()) if (authKey) { request.set('auth-key', authKey) } return request.send() .then(account => { context.setAuthKey(account.authKey) return account }) }, register(userData) { return req.post(routes.registerDev()).send(userData) }, suicide() { return req.delete(routes.deleteDev()).send() }, /** * @param {String} login * @param {String} password * @return {Promise.<{name:String, email:String, authKey:String}>} */ login(login, password) { return req.post(routes.login()) .unwrapBody(false) .send({ login, password }) .then(res => { if (res.body.otpCreated) { return res.body } return contextifyWithAuthToken(res, context) }) }, loginWithTOTP(authData) { return req.post(routes.loginWithTOTP()) .unwrapBody(false) .send(authData) .then(res => contextifyWithAuthToken(res, context)) }, /** * @param {String} login * @param {String} password * @return {Promise.<{name:String, email:String, authKey:String}>} */ cloudLogin(login, password) { return req.post(routes.cloudLogin()) .unwrapBody(false) .send({ login, password }) .then(res => { if (res.body.otpCreated) { return res.body } return contextifyWithAuthToken(res, context) }) }, cloudLoginWithTOTP(authData) { return req.post(routes.cloudLoginWithTOTP()) .unwrapBody(false) .send(authData) .then(res => contextifyWithAuthToken(res, context)) }, loginSocial(type) { return req.get(routes.socialLogin(type)) }, logout() { return req.delete(routes.logout()).then(() => { context.setAuthKey(null) if (cookieEnabled()) { deleteCookie('dev-auth-key') } }) }, restorePassword(email) { return req.post(routes.restorePassword()) .type('application/x-www-form-urlencoded; charset=UTF-8') .send('email=' + encodeURIComponent(email)) }, resendConfirmEmail(email) { return req.get(routes.resendConfirmEmail()).query({ email }) }, updateProfile(profile) { return req.put(routes.updateMyAccount(), profile) }, registerAndJoinAppTeam(appId, confirmationCode, userData) { return req.post(routes.devToAppTeam(appId)) .query({ 'confirmation-code': confirmationCode }) .unwrapBody(false) .send(userData) .then(res => contextifyWithAuthToken(res, context)) }, registerAndJoinWorkspace(workspaceId, confirmationCode, userData) { return req.automation.post(routes.devToAutomationWorkspace(workspaceId)) .query({ 'confirmation-code': confirmationCode }) .unwrapBody(false) .send(userData) .then(res => contextifyWithAuthToken(res, context)) }, loginToDiscourse(user, sig, sso) { return req.post(routes.discourseSSO(), { user, sig, sso }) }, getPermissions(appId) { return req.get(routes.devPermissions(appId)) }, completeStripeConnection(data) { return req.post(routes.stripeConnectionAuth(), data) }, getStripeConnectToken() { return req.get(routes.stripeConnectionToken()) }, getStripeConnectAccountId() { return req.get(routes.stripeConnect()) }, setStripeConnectAccountId(data) { return req.put(routes.stripeConnect(), data) }, get2FAState() { return req.get(routes.twoFA()) }, update2FAState(enabled) { return req.put(routes.twoFA(), { enabled }) }, changePassword(id, password) { return req.post(routes.changePassword(), { id, password }) } }) function contextifyWithAuthToken(res, context) { const authKey = (cookieEnabled() && getCookie('dev-auth-key')) || res.headers['auth-key'] context.setAuthKey(authKey) return { ...res.body, authKey } }