Newer
Older
export const SHOW_LOGIN_DIALOG = 'SHOW_LOGIN_DIALOG';
export const HIDE_LOGIN_DIALOG = 'HIDE_LOGIN_DIALOG';
export const AUTHENTICATION_PENDING = 'AUTHENTICATION_PENDING'
export const AUTHENTICATION_SUCCESS = 'AUTHENTICATION_SUCCESS'
export const AUTHENTICATION_ERROR = 'AUTHENTICATION_ERROR'
export function getShowLoginDialogAction() {
return {
type: SHOW_LOGIN_DIALOG
}
}
}
}
export function getAuthenticationPendingAction() {
return {
type: AUTHENTICATION_PENDING
}
}
export function getAuthenticationSuccessAction(userSession) {
return {
type: AUTHENTICATION_SUCCESS,
user: userSession.user,
accessToken: userSession.accessToken,
isAdmin: userSession.isAdmin
}
}
export function getAuthenticationErrorAction(error) {
return {
type: AUTHENTICATION_ERROR,
error: error
}
}
export function authenticateUser(userID, password) {
return dispatch => {
dispatch(getAuthenticationPendingAction());
login(userID, password)
.then(
userSession => {
const action = getAuthenticationSuccessAction(userSession);
dispatch(action);
},
error => {
dispatch(getAuthenticationErrorAction(error));
}
)
.catch(error => {
dispatch(getAuthenticationErrorAction(error))
})
}
}
function login(userID, password) {
const requestOptions = {
method: 'GET',
headers: { 'Authorization': 'Basic ' + btoa(userID + ":" + password) }
};
.then(handleResponse)
.then(userSession => {
return userSession
});
}
function handleResponse(response) {
return response.text().then(text => {
const data = text && JSON.parse(text);
adminRights = (JSON.parse(atob(splittedToken.split(".")[1]))).isAdministrator
userID = (JSON.parse(atob(splittedToken.split(".")[1]))).userID;
}
if (!response.ok) {
if (response.status === 401) {
logout();
}
const error = (data && data.message) || response.statusText;
return Promise.reject(error);
} else {
let userSession = {
}
return userSession
}
});
}
function logout() {