2017-09-09 20:34:26 +05:30
|
|
|
// @flow
|
2016-02-13 20:58:47 +05:30
|
|
|
import { combineReducers } from 'redux';
|
|
|
|
|
2016-11-13 02:01:44 +05:30
|
|
|
import {
|
|
|
|
ERROR,
|
|
|
|
SET_CLIENT,
|
|
|
|
SET_OAUTH,
|
|
|
|
SET_OAUTH_RESULT,
|
|
|
|
SET_SCOPES,
|
|
|
|
SET_LOADING_STATE,
|
|
|
|
REQUIRE_PERMISSIONS_ACCEPT,
|
2017-08-23 00:09:08 +05:30
|
|
|
SET_CREDENTIALS,
|
2016-11-13 20:17:56 +05:30
|
|
|
SET_SWITCHER
|
2016-11-13 02:01:44 +05:30
|
|
|
} from './actions';
|
2016-02-13 20:58:47 +05:30
|
|
|
|
2018-02-18 01:29:35 +05:30
|
|
|
type Credentials = {
|
|
|
|
login?: string,
|
|
|
|
password?: string,
|
|
|
|
rememberMe?: bool,
|
|
|
|
returnUrl?: string,
|
|
|
|
isRelogin?: bool,
|
2019-06-30 19:02:50 +05:30
|
|
|
isTotpRequired?: bool
|
2018-02-18 01:29:35 +05:30
|
|
|
};
|
|
|
|
|
2019-06-30 19:02:50 +05:30
|
|
|
export default combineReducers<_, { action: string, payload?: mixed }>({
|
2017-08-23 00:09:08 +05:30
|
|
|
credentials,
|
2016-02-23 11:27:16 +05:30
|
|
|
error,
|
2016-04-02 16:28:54 +05:30
|
|
|
isLoading,
|
2016-11-13 20:17:56 +05:30
|
|
|
isSwitcherEnabled,
|
2016-02-27 16:23:58 +05:30
|
|
|
client,
|
2016-02-29 23:46:33 +05:30
|
|
|
oauth,
|
|
|
|
scopes
|
2016-02-13 20:58:47 +05:30
|
|
|
});
|
|
|
|
|
2019-06-30 19:02:50 +05:30
|
|
|
function error(state = null, { type, payload = null, error = false }) {
|
2016-02-13 20:58:47 +05:30
|
|
|
switch (type) {
|
|
|
|
case ERROR:
|
|
|
|
if (!error) {
|
|
|
|
throw new Error('Expected payload with error');
|
|
|
|
}
|
2016-11-13 02:01:44 +05:30
|
|
|
|
|
|
|
return payload;
|
|
|
|
|
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-08-23 00:09:08 +05:30
|
|
|
function credentials(
|
|
|
|
state = {},
|
2019-06-30 19:02:50 +05:30
|
|
|
{
|
|
|
|
type,
|
|
|
|
payload
|
|
|
|
}: {
|
2017-08-23 00:09:08 +05:30
|
|
|
type: string,
|
2018-02-18 01:29:35 +05:30
|
|
|
payload: ?Credentials
|
2017-08-23 00:09:08 +05:30
|
|
|
}
|
2016-11-13 02:01:44 +05:30
|
|
|
) {
|
2017-08-23 00:09:08 +05:30
|
|
|
if (type === SET_CREDENTIALS) {
|
2019-06-30 19:02:50 +05:30
|
|
|
if (payload && typeof payload === 'object') {
|
2017-08-23 00:09:08 +05:30
|
|
|
return {
|
|
|
|
...payload
|
|
|
|
};
|
|
|
|
}
|
2016-02-13 20:58:47 +05:30
|
|
|
|
2017-08-23 00:09:08 +05:30
|
|
|
return {};
|
2016-02-13 20:58:47 +05:30
|
|
|
}
|
2017-08-23 00:09:08 +05:30
|
|
|
|
|
|
|
return state;
|
2016-02-13 20:58:47 +05:30
|
|
|
}
|
2016-02-23 11:27:16 +05:30
|
|
|
|
2019-06-30 19:02:50 +05:30
|
|
|
function isSwitcherEnabled(state = true, { type, payload = false }) {
|
2016-11-13 20:17:56 +05:30
|
|
|
switch (type) {
|
|
|
|
case SET_SWITCHER:
|
|
|
|
if (typeof payload !== 'boolean') {
|
|
|
|
throw new Error('Expected payload of boolean type');
|
|
|
|
}
|
|
|
|
|
|
|
|
return payload;
|
|
|
|
|
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
}
|
2016-04-02 16:28:54 +05:30
|
|
|
|
2019-06-30 19:02:50 +05:30
|
|
|
function isLoading(state = false, { type, payload = null }) {
|
2016-04-02 16:28:54 +05:30
|
|
|
switch (type) {
|
|
|
|
case SET_LOADING_STATE:
|
|
|
|
return !!payload;
|
|
|
|
|
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-06-30 19:02:50 +05:30
|
|
|
function client(state = null, { type, payload = {} }) {
|
2016-02-23 11:27:16 +05:30
|
|
|
switch (type) {
|
|
|
|
case SET_CLIENT:
|
|
|
|
return {
|
|
|
|
id: payload.id,
|
|
|
|
name: payload.name,
|
|
|
|
description: payload.description
|
|
|
|
};
|
|
|
|
|
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
}
|
2016-02-27 16:23:58 +05:30
|
|
|
|
2019-06-30 19:02:50 +05:30
|
|
|
function oauth(state = null, { type, payload = {} }) {
|
2016-02-27 16:23:58 +05:30
|
|
|
switch (type) {
|
|
|
|
case SET_OAUTH:
|
|
|
|
return {
|
|
|
|
clientId: payload.clientId,
|
|
|
|
redirectUrl: payload.redirectUrl,
|
|
|
|
responseType: payload.responseType,
|
|
|
|
scope: payload.scope,
|
2016-11-19 20:11:15 +05:30
|
|
|
prompt: payload.prompt,
|
|
|
|
loginHint: payload.loginHint,
|
2016-02-27 16:23:58 +05:30
|
|
|
state: payload.state
|
|
|
|
};
|
|
|
|
|
2016-03-15 12:06:13 +05:30
|
|
|
case SET_OAUTH_RESULT:
|
|
|
|
return {
|
|
|
|
...state,
|
|
|
|
success: payload.success,
|
|
|
|
code: payload.code,
|
|
|
|
displayCode: payload.displayCode
|
|
|
|
};
|
|
|
|
|
2016-04-15 01:24:35 +05:30
|
|
|
case REQUIRE_PERMISSIONS_ACCEPT:
|
|
|
|
return {
|
|
|
|
...state,
|
|
|
|
acceptRequired: true
|
|
|
|
};
|
|
|
|
|
2016-02-27 16:23:58 +05:30
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
}
|
2016-02-29 23:46:33 +05:30
|
|
|
|
2019-06-30 19:02:50 +05:30
|
|
|
function scopes(state = [], { type, payload = [] }) {
|
2016-02-29 23:46:33 +05:30
|
|
|
switch (type) {
|
|
|
|
case SET_SCOPES:
|
|
|
|
return payload;
|
|
|
|
|
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
}
|
2017-08-23 00:09:08 +05:30
|
|
|
|
|
|
|
export function getLogin(state: Object): ?string {
|
|
|
|
return state.auth.credentials.login || null;
|
|
|
|
}
|
|
|
|
|
2018-02-18 01:29:35 +05:30
|
|
|
export function getCredentials(state: Object): Credentials {
|
2017-08-23 00:09:08 +05:30
|
|
|
return state.auth.credentials;
|
|
|
|
}
|