decap-cms-core
Version:
Decap CMS core application, see decap-cms package for the main distribution.
112 lines (110 loc) • 3.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.USE_OPEN_AUTHORING = exports.LOGOUT = exports.AUTH_SUCCESS = exports.AUTH_REQUEST_DONE = exports.AUTH_REQUEST = exports.AUTH_FAILURE = void 0;
exports.authError = authError;
exports.authenticate = authenticate;
exports.authenticateUser = authenticateUser;
exports.authenticating = authenticating;
exports.doneAuthenticating = doneAuthenticating;
exports.loginUser = loginUser;
exports.logout = logout;
exports.logoutUser = logoutUser;
exports.useOpenAuthoring = useOpenAuthoring;
var _backend = require("../backend");
var _notifications = require("./notifications");
const AUTH_REQUEST = exports.AUTH_REQUEST = 'AUTH_REQUEST';
const AUTH_SUCCESS = exports.AUTH_SUCCESS = 'AUTH_SUCCESS';
const AUTH_FAILURE = exports.AUTH_FAILURE = 'AUTH_FAILURE';
const AUTH_REQUEST_DONE = exports.AUTH_REQUEST_DONE = 'AUTH_REQUEST_DONE';
const USE_OPEN_AUTHORING = exports.USE_OPEN_AUTHORING = 'USE_OPEN_AUTHORING';
const LOGOUT = exports.LOGOUT = 'LOGOUT';
function authenticating() {
return {
type: AUTH_REQUEST
};
}
function authenticate(userData) {
return {
type: AUTH_SUCCESS,
payload: userData
};
}
function authError(error) {
return {
type: AUTH_FAILURE,
error: 'Failed to authenticate',
payload: error
};
}
function doneAuthenticating() {
return {
type: AUTH_REQUEST_DONE
};
}
function useOpenAuthoring() {
return {
type: USE_OPEN_AUTHORING
};
}
function logout() {
return {
type: LOGOUT
};
}
// Check if user data token is cached and is valid
function authenticateUser() {
return (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
dispatch(authenticating());
return Promise.resolve(backend.currentUser()).then(user => {
if (user) {
if (user.useOpenAuthoring) {
dispatch(useOpenAuthoring());
}
dispatch(authenticate(user));
} else {
dispatch(doneAuthenticating());
}
}).catch(error => {
dispatch(authError(error));
dispatch(logoutUser());
});
};
}
function loginUser(credentials) {
return (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
dispatch(authenticating());
return backend.authenticate(credentials).then(user => {
if (user.useOpenAuthoring) {
dispatch(useOpenAuthoring());
}
dispatch(authenticate(user));
}).catch(error => {
console.error(error);
dispatch((0, _notifications.addNotification)({
message: {
details: error.message,
key: 'ui.toast.onFailToAuth'
},
type: 'error',
dismissAfter: 8000
}));
dispatch(authError(error));
});
};
}
function logoutUser() {
return (dispatch, getState) => {
const state = getState();
const backend = (0, _backend.currentBackend)(state.config);
Promise.resolve(backend.logout()).then(() => {
dispatch(logout());
dispatch((0, _notifications.clearNotifications)());
});
};
}