{"version":3,"sources":["store/apps/actions.js","store/apps/operations.js","store/features/operations.js","store/features/actions.js","components/molecules/ConfirmPhoneModal/index.js","store/users/types.js","utils/api.js","store sync //.//.+//operations/.js$","store sync //.//.+//reducers/.js$","store/apps/reducers.js","store/auth/reducers.js","store/companies/reducers.js","store/features/reducers.js","store/users/reducers.js","components sync //.//[^/]+//[^/]+//index/.js$","components/molecules/UserCardActions/index.js","components/organisms/AddAppModal/index.js","components/organisms/AddUserModal/index.js","store/apps/types.js","components/organisms/DeleteUserAlert/index.js","components/organisms/EditCompanyModal/index.js","components/organisms/UserCard/index.js","components/pages/Home/index.js","components/pages/NotFound/index.js","components/pages/ResetPassword/index.js","components/templates/MainTemplate/index.js","registerServiceWorker.js","store/reducers.js","store/store.js","App.js","utils/requireAuth.js","index.js","components/pages/MyProfilePage/account.svg","components/pages/MyProfilePage/index.js","store/ui/actions.js","store/ui/types.js","components/organisms/UsersTable/data.js","components/organisms/UsersTable/TableHead.js","components/organisms/UsersTable/index.js","store/companies/actions.js","store/companies/operations.js","components/pages/User/styles.js","components/pages/User/index.js","store/operations.js","components/index.js","store/features/types.js","config.js","store/users/actions.js","store/users/operations.js","store/auth/types.js","store/auth/actions.js","store/auth/operations.js","store/companies/types.js"],"names":["getAppAbilitiesSuccess","abilities","type","types","payload","getApps","dispatch","a","Api","request","apps","clients","err","getUserApps","id","Promise","resolve","reject","getAppAbilities","appId","actions","getAbilityActions","abilityId","abilityActions","enableFeature","uuid","method","msg","feature","json","message","error","disableFeature","Transition","props","in","ConfirmPhoneModal","open","handleClose","phone","onSuccess","useDispatch","useInput","smsCode","value","bindSmsCode","bind","onClose","TransitionComponent","onSubmit","e","preventDefault","confirmPhoneNumber","then","color","AsYouType","input","label","fullWidth","style","margin","autoFocus","variant","rounded","GET_USERS_REQUEST","GET_USERS_SUCCESS","GET_USERS_ERROR","GET_CURRENT_USER_REQUEST","GET_CURRENT_USER_SUCCESS","GET_CURRENT_USER_ERROR","INVITE_USER_REQUEST","INVITE_USER_SUCCESS","INVITE_USER_ERROR","GET_USER_PERMISSIONS_REQUEST","GET_USER_PERMISSIONS_SUCCESS","GET_USER_PERMISSIONS_ERROR","UPDATE_USER_PERMISSIONS_REQUEST","UPDATE_USER_PERMISSIONS_SUCCESS","UPDATE_USER_PERMISSIONS_ERROR","BLOCK_USER_REQUEST","BLOCK_USER_SUCCESS","BLOCK_USER_ERROR","DELETE_USER_REQUEST","DELETE_USER_SUCCESS","DELETE_USER_ERROR","UPDATE_USER_REQUEST","UPDATE_USER_SUCCESS","UPDATE_USER_ERROR","UPDATE_CURRENT_USER_SUCCESS","UPDATE_CURRENT_USER_ERROR","CONFIRM_PHONE_NUMBER_SUCCESS","CONFIRM_PHONE_NUMBER_ERROR","CLEAR_USERS","api","baseUri","this","status","sessionStorage","removeItem","window","location","config","redirectUri","href","endpoint","options","BASE_URI","Request","headers","Headers","credentials","fetch","r","catch","_handleError","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","keys","Object","module","exports","initialState","userApps","collection","state","isLoggedIn","auth","user","companies","loading","features","currentUser","users","UserCardActions","classes","toggleModal","toggleUserBlock","authorizedUser","className","flex","company","title","placement","onClick","is_blocked","Margin","styled","div","direction","AddAppModal","app_ids","s","app_id","handleSelect","setState","handleChange","prop","target","updateUser","userId","match","params","OPTIONS","name","SELECTED_OPTIONS","filter","includes","aria-labelledby","PaperProps","overflow","selected","placeholder","secondary","React","Component","connect","withRouter","Form","form","ActionsWrapper","InviteUserModal","login","loginError","snackbarErr","handleinviteUser","body","entries","reduce","acc","key","search","console","log","inviteUser","user_id","getUsers","history","push","modal","handleBlur","isEmail","isMobilePhone","length","appsError","usersError","fullScreen","header","center","onChange","onBlur","InputProps","startAdornment","position","autoComplete","tabIndex","marginRight","primary","withStyles","theme","display","justifyContent","GET_APPS_REQUEST","GET_APPS_SUCCESS","GET_APPS_ERROR","GET_USER_APPS_REQUEST","GET_USER_APPS_SUCCESS","GET_USER_APPS_ERROR","GET_APP_ABILITIES_REQUEST","GET_APP_ABILITIES_SUCCESS","GET_APP_ABILITIES_ERROR","GET_ABILITY_ACTIONS_REQUEST","GET_ABILITY_ACTIONS_SUCCESS","GET_ABILITY_ACTIONS_ERROR","onConfirm","aria-describedby","AddUserModal","newSelectedCompany","page","limit","q","searchCompanies","getCompanies","company_id","handleCompanyChange","handleChangePage","handleChangeRowsPerPage","handleSearch","companiesError","meta","width","tableLayout","el","hover","cursor","component","scope","padding","identifier","bottom","left","right","background","boxShadow","count","pages_count","rowsPerPage","rowsPerPageOptions","backIconButtonProps","nextIconButtonProps","labelRowsPerPage","labelDisplayedRows","from","to","onChangePage","onChangeRowsPerPage","UserCard","permissions","appAbilities","updateUserPermissions","flexDirection","card","shadow","border","full_name","subheader","email","action","paddingLeft","paddingRight","marginBottom","x","column","app","gutterBottom","fontSize","ability","privileges","translation","isDisabled","is_feature","namespace","selectedOptions","row","subcolumn","permissionColumn","size","HomePage","componentDidMount","modalIsOpen","toggleSearch","isSearching","searchUsers","searchQuery","currentTarget","event","throttle","logo","fixed","disableRipple","total","fullPage","root","marginTop","minWidth","zIndex","Div","styles","height","alignItems","useState","didSendNewPassword","setDidSendNewPassword","useEffect","role","aria-label","Wrapper","Content","section","MainTemplate","children","isLocalhost","Boolean","hostname","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","reducers","require","forEach","storeName","camelCase","replace","default","combineReducers","middleware","thunk","enhancer","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","applyMiddleware","persistedState","loadState","store","createStore","rootReducer","subscribe","saveState","getState","PrivateRoutes","C","Authentication","checkAuth","requireAuth","Home","exact","path","MyProfilePage","User","NotFound","Routes","ResetPassword","Root","AOS","init","duration","once","I18nextProvider","i18n","fallback","App","node","document","getElementById","ReactDOM","render","URL","process","origin","addEventListener","response","get","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker","Fade","Body","Container","p","sizes","tablet","Row","useHistory","useRouteMatch","useSelector","featureToggling","modifiedInfo","setModifiedInfo","setModifiedInfoToTrue","bindEmail","bindName","setValue","surname","bindSurname","setPhone","handleReturn","useCallback","m","exec","redirectUrl","confirmPhoneModal","setConfirmPhoneModal","values","flat","Dialog","updateCurrentUser","confirmation_required","TextField","disabled","marginLeft","Typography","align","f","ExpansionPanel","ExpansionPanelSummary","expandIcon","ExpandMore","FormControlLabel","display_name","stopPropagation","is_enabled","onFocus","control","Switch","checked","pointerEvents","undefined","ExpansionPanelDetails","description","disablePadding","MyTableHead","createSortHandler","property","onRequestSort","order","orderBy","TableHead","TableRow","columnData","active","TableCell","numeric","sortDirection","cell","Tooltip","enterDelay","TableSortLabel","PhoneIphone","backgroundColor","UsersTable","data","handleRequestSort","getSorting","b","Table","rowCount","TableBody","sort","n","data-aos","TablePagination","getCompaniesSuccess","flexWrap","avatar","palette","flexBasis","alignSelf","UserPage","deleteUserModal","addAppModal","editCompanyModal","snackbarSuccess","snackbarError","getCurrentUser","setTimeout","all","getUserPermissions","permission","newActions","oldPermissions","newActionValues","modalName","deleteUser","componentName","ENABLE_FEATURE_REQUEST","ENABLE_FEATURE_SUCCESS","ENABLE_FEATURE_FAILURE","DISABLE_FEATURE_REQUEST","DISABLE_FEATURE_SUCCESS","DISABLE_FEATURE_FAILURE","APP_BASE_URL","APP_REDIRECT_URL","ssoUri","APP_SSO_URL","brand","getUsersSuccess","getCurrentUserSuccess","inviteUserError","getUserPermissionsSuccess","updateUserPermissionsError","blockUserSuccess","deleteUserSuccess","updateUserSuccess","setParams","join","JSON","stringify","blockUser","errorMessage","password","signIn","confirmation_code","SIGN_IN","SIGN_IN_ERROR","CHECK_AUTH","LOG_OUT_REQUEST","LOG_OUT_SUCCESS","LOG_OUT_ERROR","signInError","logOutRequest","logOutSuccess","logOutError","ignoreSessionStorage","redirect_to","logOut","clear","GET_COMPANIES_REQUEST","GET_COMPANIES_SUCCESS","GET_COMPANIES_ERROR"],"mappings":"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","file":"static/js/main.5b8b86f3.chunk.js","sourcesContent":["//@flow\nimport * as types from './types'\n\nexport const getAppsRequest = (): types.requestAction => ({\n type: types.GET_APPS_REQUEST,\n})\n\nexport const getAppsSuccess = (\n clients: Array\n): types.successAction => ({\n type: types.GET_APPS_SUCCESS,\n payload: clients,\n})\n\nexport const getAppsError = (err: string): types.errorAction => ({\n type: types.GET_APPS_ERROR,\n err,\n})\n\nexport const getUserAppsRequest = (): types.requestAction => ({\n type: types.GET_USER_APPS_REQUEST,\n})\n\nexport const getUserAppsSuccess = (\n clients: types.App[]\n): types.successAction => ({\n type: types.GET_USER_APPS_SUCCESS,\n payload: clients,\n})\n\nexport const getUserAppsError = (err: string): types.errorAction => ({\n type: types.GET_USER_APPS_ERROR,\n err,\n})\n\nexport const getAppAbilitiesRequest = (): types.requestAction => ({\n type: types.GET_APP_ABILITIES_REQUEST,\n})\n\nexport const getAppAbilitiesSuccess = (\n abilities: any[]\n): types.successAction => ({\n type: types.GET_APP_ABILITIES_SUCCESS,\n payload: abilities,\n})\n\nexport const getAppAbilitiesError = (err: string): types.errorAction => ({\n type: types.GET_APP_ABILITIES_ERROR,\n err,\n})\n\nexport const getAbilityActionsRequest = (): types.requestAction => ({\n type: types.GET_ABILITY_ACTIONS_REQUEST,\n})\n\nexport const getAbilityActionsSuccess = (\n actions: Array\n): types.successAction => ({\n type: types.GET_ABILITY_ACTIONS_SUCCESS,\n payload: actions,\n})\n\nexport const getAbilityActionsError = (err: string): types.errorAction => ({\n type: types.GET_ABILITY_ACTIONS_ERROR,\n err,\n})\n","//@flow\nimport * as actions from './actions'\nimport Api from 'utils/api'\nimport type { App } from './types'\n\nexport const getApps: Function = (): Function => async (\n dispatch: Function\n): Promise => {\n dispatch(actions.getAppsRequest())\n try {\n const apps: App[] = await Api.request('/apps')\n dispatch(actions.getAppsSuccess(apps))\n } catch (err) {\n dispatch(\n actions.getAppsError('Произошла ошибка при получении списка приложений.')\n )\n }\n}\n\nexport const getUserApps: Function = (id: number): Function => async (\n dispatch: Function\n): Promise => {\n dispatch(actions.getUserAppsRequest())\n try {\n const apps: App[] = await Api.request(`/users/${id}/apps`)\n dispatch(actions.getUserAppsSuccess(apps))\n return Promise.resolve(apps)\n } catch (err) {\n dispatch(actions.getUserAppsError(err))\n return Promise.reject(err)\n }\n}\n\nexport const getAppAbilities: Function = (appId: number): Function => async (\n dispatch: Function\n): Promise => {\n dispatch(actions.getAppAbilitiesRequest())\n try {\n const abilities: Object[] = await Api.request(`/apps/${appId}/abilities`)\n dispatch(actions.getAppAbilitiesSuccess(abilities))\n return Promise.resolve(abilities)\n } catch (err) {\n dispatch(\n actions.getAppAbilitiesError(\n 'При получении списка возможностей приложения произошла ошибка. Проверьте свой уровень доступа.'\n )\n ) // !\n return Promise.reject(err)\n }\n}\n\nexport const getAbilityActions: Function = (\n abilityId: number\n): Function => async (dispatch: Function): Promise => {\n dispatch(actions.getAbilityActionsRequest())\n try {\n const abilityActions: Object[] = await Api.request(\n `/actions?ability_id=${abilityId}`\n )\n dispatch(actions.getAbilityActionsSuccess(abilityActions))\n return Promise.resolve(abilityActions)\n } catch (err) {\n dispatch(actions.getAbilityActionsError(err))\n return Promise.reject(err)\n }\n}\n\n// export const getAppsPermissions: Function = (\n// userId: number\n// ): Function => async (dispatch: Function): Promise => {\n// dispatch(actions.)\n// }\n","import * as actions from './actions'\nimport Api from 'utils/api'\n\nexport const enableFeature: Function = (uuid): string => async (\n dispatch: Function,\n): Promise => {\n dispatch(actions.enableFeatureRequest())\n try {\n await Api.request(`/features/${uuid}/status?enabled=true`, {\n method: 'PUT',\n })\n dispatch(actions.enableFeatureSuccess('Функция была успешно активирована'))\n return Promise.resolve()\n } catch (err) {\n const { message } = await err.json()\n dispatch(actions.enableFeatureFailure(message))\n return Promise.reject(message)\n }\n}\n\nexport const disableFeature: Function = (uuid): string => async (\n dispatch: Function,\n): Promise => {\n dispatch(actions.disableFeatureRequest())\n try {\n await Api.request(`/features/${uuid}/status?enabled=false`, {\n method: 'PUT',\n })\n dispatch(\n actions.disableFeatureSuccess('Функция была успешно деактивирована'),\n )\n return Promise.resolve()\n } catch (err) {\n const { message } = await err.json()\n dispatch(actions.disableFeatureFailure(message))\n return Promise.reject(message)\n }\n}\n","import * as types from './types'\n\nexport const enableFeatureRequest = () => ({\n type: types.ENABLE_FEATURE_REQUEST,\n})\nexport const enableFeatureSuccess = (msg, feature) => ({\n type: types.ENABLE_FEATURE_SUCCESS,\n payload: { msg, feature },\n})\nexport const enableFeatureFailure = error => ({\n type: types.ENABLE_FEATURE_FAILURE,\n payload: { error },\n})\n\nexport const disableFeatureRequest = () => ({\n type: types.DISABLE_FEATURE_REQUEST,\n})\nexport const disableFeatureSuccess = (msg, feature) => ({\n type: types.DISABLE_FEATURE_SUCCESS,\n payload: { msg, feature },\n})\nexport const disableFeatureFailure = error => ({\n type: types.DISABLE_FEATURE_FAILURE,\n payload: { error },\n})\n","import React from 'react'\nimport {\n Dialog,\n DialogContent,\n DialogActions,\n DialogTitle,\n Typography,\n TextField,\n Zoom,\n} from '@material-ui/core'\nimport { Button, useInput } from 'sputnik-ui'\nimport { AsYouType } from 'libphonenumber-js'\nimport { useDispatch } from 'react-redux'\n\nimport { confirmPhoneNumber } from 'store/users/operations'\n\nconst Transition = props => \n\nexport default function ConfirmPhoneModal({\n open,\n handleClose,\n phone,\n onSuccess,\n ...props\n}) {\n const dispatch = useDispatch()\n\n const { value: smsCode, bind: bindSmsCode } = useInput('')\n\n const handleSubmit = e => {\n e.preventDefault()\n dispatch(confirmPhoneNumber(phone, smsCode)).then(onSuccess)\n }\n return (\n \n Подвердите свой номер телефона\n
\n \n \n На номер {new AsYouType('RU').input(phone)} была отправлена SMS с\n кодом подтверждения.\n \n \n \n \n \n \n
\n
\n )\n}\n","//@flow\nexport const GET_USERS_REQUEST: string = 'users/GET_USERS_REQUEST'\nexport const GET_USERS_SUCCESS: string = 'users/GET_USERS_SUCCESS'\nexport const GET_USERS_ERROR: string = 'users/GET_USERS_ERROR'\n\nexport const GET_CURRENT_USER_REQUEST: string = 'users/GET_CURRENT_USER_REQUEST'\nexport const GET_CURRENT_USER_SUCCESS: string = 'users/GET_CURRENT_USER_SUCCESS'\nexport const GET_CURRENT_USER_ERROR: string = 'users/GET_CURRENT_USER_ERROR'\n\nexport const INVITE_USER_REQUEST: string = 'users/INVITE_USER_REQUEST'\nexport const INVITE_USER_SUCCESS: string = 'users/INVITE_USER_SUCCESS'\nexport const INVITE_USER_ERROR: string = 'users/INVITE_USER_ERROR'\n\nexport const GET_USER_PERMISSIONS_REQUEST: string =\n 'users/GET_USER_PERMISSIONS_REQUEST'\nexport const GET_USER_PERMISSIONS_SUCCESS: string =\n 'users/GET_USER_PERMISSIONS_SUCCESS'\nexport const GET_USER_PERMISSIONS_ERROR: string =\n 'users/GET_USER_PERMISSIONS_ERROR'\n\nexport const UPDATE_USER_PERMISSIONS_REQUEST: string =\n 'users/UPDATE_USER_PERMISSIONS_REQUEST'\nexport const UPDATE_USER_PERMISSIONS_SUCCESS: string =\n 'users/UPDATE_USER_PERMISSIONS_SUCCESS'\nexport const UPDATE_USER_PERMISSIONS_ERROR: string =\n 'users/UPDATE_USER_PERMISSIONS_ERROR'\n\nexport const BLOCK_USER_REQUEST: string = 'users/BLOCK_USER_REQUEST'\nexport const BLOCK_USER_SUCCESS: string = 'users/BLOCK_USER_SUCCESS'\nexport const BLOCK_USER_ERROR: string = 'users/BLOCK_USER_ERROR'\n\nexport const DELETE_USER_REQUEST: string = 'users/DELETE_USER_REQUEST'\nexport const DELETE_USER_SUCCESS: string = 'users/DELETE_USER_SUCCESS'\nexport const DELETE_USER_ERROR: string = 'users/DELETE_USER_ERROR'\n\nexport const UPDATE_USER_REQUEST: string = 'users/UPDATE_USER_REQUEST'\nexport const UPDATE_USER_SUCCESS: string = 'users/UPDATE_USER_SUCCESS'\nexport const UPDATE_USER_ERROR: string = 'users/UPDATE_USER_ERROR'\n\nexport const UPDATE_CURRENT_USER_REQUEST: string =\n 'users/UPDATE_CURRENT_USER_REQUEST'\nexport const UPDATE_CURRENT_USER_SUCCESS: string =\n 'users/UPDATE_CURRENT_USER_SUCCESS'\nexport const UPDATE_CURRENT_USER_ERROR: string =\n 'users/UPDATE_CURRENT_USER_ERROR'\n\nexport const CONFIRM_PHONE_NUMBER_REQUEST: string =\n 'users/CONFIRM_PHONE_NUMBER_REQUEST'\nexport const CONFIRM_PHONE_NUMBER_SUCCESS: string =\n 'users/CONFIRM_PHONE_NUMBER_SUCCESS'\nexport const CONFIRM_PHONE_NUMBER_ERROR: string =\n 'users/CONFIRM_PHONE_NUMBER_ERROR'\n\nexport const CLEAR_USERS: string = 'users/CLEAR_USERS'\n\nexport type requestAction = {\n type: string,\n}\n\nexport type successAction = {\n type: string,\n payload?: any,\n}\n\nexport type errorAction = {\n type: string,\n payload: string,\n}\n\nexport type User = {\n id: number,\n email: string,\n}\n","/* eslint-disable */\n\nimport config from 'config'\n\n/**\n *\n *\n * @export\n * @class Api\n */\nclass Api {\n /**\n * Creates an instance of Api.\n * @param {*} baseUri\n * @memberof Api\n */\n constructor(baseUri) {\n this.baseUri = baseUri\n }\n\n /**\n * Makes a redirect to the SSO if err status is 401, returns a Promise.reject\n *\n * @param {*} err\n * @returns {Promise}\n * @memberof Api\n */\n _handleError(err: any): Promise {\n if (err.status === 401) {\n sessionStorage.removeItem('auth')\n window.location = `${config.redirectUri}/auth/sso?origin=${\n window.location.href\n }`\n return Promise.reject()\n }\n return Promise.reject(err)\n }\n\n /**\n * Makes an api request, handles error status 401\n *\n * @param {string} endpoint - the endpoint, that gets appended to the (default) baseUri\n * @param {?Object} [options={}] - custom request options, override default ones\n * @param {?string} baseUri - custom baseUri\n * @returns {Promise}\n * @memberof Api\n */\n request(\n endpoint: string,\n options: ?Object = {},\n baseUri: ?string,\n ): Promise {\n const BASE_URI: string = baseUri || this.baseUri\n\n const request = new Request(`${BASE_URI}${endpoint}`, {\n headers: new Headers({\n 'Content-Type': 'application/json',\n }),\n credentials: 'include',\n ...options,\n })\n\n return fetch(request)\n .then(r => (r.status <= 200 ? r.json() : Promise.reject(r)))\n .catch(this._handleError)\n }\n}\n\nconst api = new Api(config.baseUri)\n\nexport default api\n","var map = {\n\t\"./apps/operations.js\": 123,\n\t\"./auth/operations.js\": 75,\n\t\"./companies/operations.js\": 354,\n\t\"./features/operations.js\": 124,\n\t\"./users/operations.js\": 61\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 230;","var map = {\n\t\"./apps/reducers.js\": 268,\n\t\"./auth/reducers.js\": 269,\n\t\"./companies/reducers.js\": 270,\n\t\"./features/reducers.js\": 271,\n\t\"./users/reducers.js\": 272\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 267;","//@flow\nimport * as types from './types'\n\ntype State = {\n clients: ?(Object[]),\n error: ?string,\n userApps: ?(Object[]),\n collection: ?(Object[]),\n error: ?string,\n}\n\ntype Action = {\n type: string,\n payload?: Object | string | Object[],\n err: string,\n}\n\nconst initialState: State = {\n clients: null,\n userApps: null,\n collection: null,\n error: null,\n}\n\nconst clients = (\n state: State = initialState,\n { type, payload, err }: Action\n) => {\n switch (type) {\n case types.GET_USER_APPS_SUCCESS:\n return { ...state, userApps: payload, error: null }\n case types.GET_USER_APPS_ERROR:\n return { ...state, error: err }\n case types.GET_APPS_SUCCESS:\n return { ...state, collection: payload, error: null }\n case types.GET_APPS_ERROR:\n return { ...state, error: err }\n case types.GET_APP_ABILITIES_ERROR:\n return { ...state, error: err }\n default:\n return state\n }\n}\n\nexport default clients\n","import * as types from './types'\n\nconst initialState = {\n isLoggedIn: false,\n error: null\n}\n\nexport default function auth(state = initialState, { type, payload }) {\n switch (type) {\n case types.SIGN_IN:\n return { ...state, isLoggedIn: true, error: null, user: payload }\n case types.SIGN_IN_ERROR:\n return { ...state, error: payload }\n case types.LOG_OUT_SUCCESS:\n return { ...state, isLoggedIn: false, error: null, user: null }\n default:\n return state\n }\n}\n","//@flow\nimport * as types from './types'\n\nconst initialState = {\n collection: null,\n}\n\nconst companies = (state = initialState, { type, payload }) => {\n switch (type) {\n case types.GET_COMPANIES_SUCCESS:\n return { ...state, collection: payload, error: null }\n case types.GET_COMPANIES_ERROR:\n return { ...state, error: null }\n default:\n return state\n }\n}\n\nexport default companies\n","import * as types from './types'\n\nconst initialState = {\n msg: '',\n error: '',\n loading: false,\n}\n\nexport default function features(state = initialState, { type, payload }) {\n switch (type) {\n case types.ENABLE_FEATURE_REQUEST:\n return { ...state, loading: true }\n case types.ENABLE_FEATURE_SUCCESS:\n return { ...state, msg: payload.msg, loading: false }\n case types.ENABLE_FEATURE_FAILURE:\n return { ...state, error: payload.error, loading: false }\n case types.DISABLE_FEATURE_REQUEST:\n return { ...state, loading: true }\n case types.DISABLE_FEATURE_SUCCESS:\n return { ...state, msg: payload.msg, loading: false }\n case types.DISABLE_FEATURE_FAILURE:\n return { ...state, error: payload.error, loading: false }\n\n case 'ui/CLEAR_STATUS':\n return { ...state, error: '', msg: '' }\n default:\n return state\n }\n}\n","//@flow\nimport * as types from './types'\n\ntype State = {\n users: ?Array,\n currentUser: ?Object,\n error: ?string,\n msg: ?string,\n}\n\ntype Action = {\n +type: string,\n +payload: any,\n}\n\nconst initialState: State = {\n currentUser: null,\n users: null,\n error: null,\n msg: null,\n}\n\nconst users = (state: State = initialState, { type, payload }: Action) => {\n switch (type) {\n case types.GET_CURRENT_USER_SUCCESS:\n return { ...state, currentUser: payload, error: null }\n case types.GET_CURRENT_USER_ERROR:\n return { ...state, error: payload }\n case types.GET_USERS_SUCCESS:\n return { ...state, users: payload, error: null }\n case types.GET_USERS_ERROR:\n return { ...state, error: payload }\n case types.DELETE_USER_SUCCESS:\n return { ...state, error: null }\n case types.DELETE_USER_ERROR:\n return { ...state, error: payload }\n case types.INVITE_USER_ERROR:\n return { ...state, error: payload }\n case types.UPDATE_CURRENT_USER_SUCCESS:\n return { ...state, msg: payload.msg, error: null }\n case types.UPDATE_CURRENT_USER_ERROR:\n return { ...state, error: payload }\n case types.CONFIRM_PHONE_NUMBER_SUCCESS:\n return { ...state, msg: payload.msg }\n case types.CONFIRM_PHONE_NUMBER_ERROR:\n return { ...state, error: payload.error }\n case types.UPDATE_USER_ERROR:\n return { ...state, error: payload }\n case types.CLEAR_USERS:\n return { ...state, users: null }\n default:\n return state\n }\n}\n\nexport default users\n","var map = {\n\t\"./molecules/ConfirmPhoneModal/index.js\": 143,\n\t\"./molecules/UserCardActions/index.js\": 279,\n\t\"./organisms/AddAppModal/index.js\": 280,\n\t\"./organisms/AddUserModal/index.js\": 281,\n\t\"./organisms/DeleteUserAlert/index.js\": 344,\n\t\"./organisms/EditCompanyModal/index.js\": 345,\n\t\"./organisms/UserCard/index.js\": 346,\n\t\"./organisms/UsersTable/index.js\": 353,\n\t\"./pages/Home/index.js\": 347,\n\t\"./pages/MyProfilePage/index.js\": 352,\n\t\"./pages/NotFound/index.js\": 348,\n\t\"./pages/ResetPassword/index.js\": 349,\n\t\"./pages/User/index.js\": 355,\n\t\"./templates/MainTemplate/index.js\": 350\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 278;","import React from 'react'\n\nimport Tooltip from '@material-ui/core/Tooltip'\nimport IconButton from '@material-ui/core/IconButton'\n\nimport BlockIcon from '@material-ui/icons/Block'\nimport DeleteIcon from '@material-ui/icons/DeleteForever'\nimport AddIcon from '@material-ui/icons/AddToQueue'\nimport WorkIcon from '@material-ui/icons/Work'\n\nconst UserCardActions = ({\n currentUser,\n classes,\n toggleModal,\n toggleUserBlock,\n authorizedUser,\n}) => {\n return (\n
\n {authorizedUser.company.uuid ===\n 'b1782e4f-9198-49d1-b5aa-7bdba9c87d21' && (\n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n )\n}\n\nexport default UserCardActions\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { Select, Loader, Button } from 'sputnik-ui'\nimport { withRouter } from 'react-router-dom'\nimport styled from 'styled-components'\n\nimport Dialog from '@material-ui/core/Dialog'\nimport DialogActions from '@material-ui/core/DialogActions'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport DialogTitle from '@material-ui/core/DialogTitle'\nimport Slide from '@material-ui/core/Slide'\n\nimport { getApps, updateUser } from 'store/operations'\n\n// codereview-disable-next-line\nconst Margin = styled.div`\n margin-top: 1.625rem;\n width: 100%;\n`\n\nconst Transition = props => \n\nclass AddAppModal extends React.Component {\n state = {\n app_ids: this.props.userApps.map(s => s.app_id),\n }\n\n componentDidMount() {\n this.props.dispatch(getApps())\n }\n\n handleSelect = options =>\n this.setState({ app_ids: options.map(o => o.value) })\n\n handleChange = prop => e => this.setState({ [prop]: e.target.value })\n\n updateUser = () => {\n this.props\n .dispatch(\n updateUser({\n userId: this.props.match.params.id,\n app_ids: this.state.app_ids,\n }),\n )\n .then(this.props.handleClose)\n }\n\n render() {\n const { open, handleClose, apps } = this.props\n\n const OPTIONS =\n apps &&\n apps.map(s => ({\n value: s.app_id,\n label: s.name,\n }))\n\n const SELECTED_OPTIONS =\n OPTIONS && OPTIONS.filter(o => this.state.app_ids.includes(o.value))\n\n return (\n \n \n Редактирование списка приложений\n \n \n {!apps ? (\n \n ) : (\n
\n \n \n \n
\n )}\n
\n \n \n \n Обновить\n \n \n \n )\n }\n}\n\nconst mapStateToProps = ({ apps }) => ({\n apps: apps.collection,\n userApps: apps.userApps,\n})\n\nexport default connect(mapStateToProps)(withRouter(AddAppModal))\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport styled from 'styled-components'\nimport { Select, Loader, Button, Toast } from 'sputnik-ui'\nimport { withRouter } from 'react-router-dom'\nimport isEmail from 'validator/lib/isEmail'\nimport { isMobilePhone } from 'validator'\nimport Dialog from '@material-ui/core/Dialog'\nimport TextField from '@material-ui/core/TextField'\nimport EmailIcon from '@material-ui/icons/Email'\nimport InputAdornment from '@material-ui/core/InputAdornment'\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport Slide from '@material-ui/core/Slide'\nimport CloseIcon from '@material-ui/icons/Close'\nimport Typography from '@material-ui/core/Typography'\nimport Send from '@material-ui/icons/Send'\nimport { withStyles } from '@material-ui/core/styles'\n\nimport { getApps, inviteUser, getUsers } from 'store/operations'\n\nconst Form = styled.form`\n display: flex;\n flex-wrap: wrap;\n margin: 0 auto;\n max-width: 100%;\n padding: 2.625rem;\n\n @media screen and (min-width: 768px) {\n max-width: 35rem;\n }\n`\n\n// codereview-disable-next-line\nconst Margin = styled.div`\n margin-top: 1.325rem;\n width: 100%;\n`\n\nconst Transition = (props) => \n\nconst styles = (theme) => ({\n header: {\n position: 'relative',\n },\n center: {\n display: 'flex',\n justifyContent: 'center',\n },\n})\n\nconst ActionsWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n align-items: center;\n margin-top: 1.625rem;\n width: 100%;\n\n button:first-child {\n margin-right: 0.625rem;\n }\n`\n\nclass InviteUserModal extends React.Component {\n state = {\n app_ids: [],\n login: '',\n loginError: false,\n snackbarErr: false,\n }\n\n componentDidMount() {\n this.props.dispatch(getApps())\n }\n\n handleSelect = (options) =>\n this.setState({ app_ids: options.map((o) => o.value) })\n\n handleChange = (prop) => (e) =>\n this.setState({ [prop]: e.target.value, [`${prop}Error`]: false })\n\n handleinviteUser = () => {\n const { login, app_ids } = this.state\n const body = {\n login,\n app_ids,\n }\n\n const errors = Object.entries(this.state).reduce((acc, [key, value]) => {\n if (key.search('Error') !== -1) {\n if (value === true) return true\n }\n return acc\n }, false)\n\n if (!errors) {\n this.props\n .dispatch(inviteUser(body))\n .then(({ user_id }) => {\n this.props.dispatch(getUsers({}))\n this.props.history.push(`/user/${user_id}`)\n })\n .catch((err) => {\n console.log('err', err)\n this.setState({ snackbarErr: true })\n })\n } else {\n this.setState({ snackbarErr: true })\n console.log('errors were found')\n }\n }\n\n toggleModal = (modal) => () => this.setState({ [modal]: !this.state[modal] })\n\n handleBlur = (prop) => (e) => {\n if (\n prop === 'login' &&\n !(\n isEmail(this.state.login) ||\n isMobilePhone(this.state.login, ['ru-RU']) ||\n isMobilePhone(this.state.login, ['kk-KZ'])\n )\n ) {\n this.setState({ [`${prop}Error`]: true })\n } else if (this.state[prop].length < 1) {\n this.setState({ [`${prop}Error`]: true })\n }\n }\n\n render() {\n const { open, handleClose, apps, appsError, classes, usersError } =\n this.props\n\n const OPTIONS =\n apps &&\n apps.map((s) => ({\n value: s.app_id,\n label: s.name,\n }))\n const SELECTED_OPTIONS =\n OPTIONS && OPTIONS.filter((o) => this.state.app_ids.includes(o.value))\n\n return (\n \n \n \n \n Пригласить нового пользователя\n \n \n \n\n {!apps ? (\n \n ) : (\n
\n \n \n \n ),\n }}\n error={this.state.loginError}\n autoComplete=\"email\"\n />\n\n \n \n \n \n \n\n \n \n Пригласить\n \n \n \n )}\n \n {usersError || 'Заполните все поля'}\n \n \n )\n }\n}\n\nconst mapStateToProps = ({ apps, auth: { user: authorizedUser }, users }) => ({\n apps: apps.collection,\n appsError: apps.error,\n authorizedUser,\n usersError: users.error,\n})\n\nexport default connect(mapStateToProps)(\n withStyles(styles)(withRouter(InviteUserModal))\n)\n","//@flow\nexport const GET_APPS_REQUEST: string = 'clients/GET_APPS_REQUEST'\nexport const GET_APPS_SUCCESS: string = 'clients/GET_APPS_SUCCESS'\nexport const GET_APPS_ERROR: string = 'clients/GET_APPS_ERROR'\n\nexport const GET_USER_APPS_REQUEST: string = 'clients/GET_USER_APPS_REQUEST'\nexport const GET_USER_APPS_SUCCESS: string = 'clients/GET_USER_APPS_SUCCESS'\nexport const GET_USER_APPS_ERROR: string = 'clients/GET_USER_APPS_ERROR'\n\nexport const GET_APP_ABILITIES_REQUEST: string =\n 'clients/GET_APP_ABILITIES_REQUEST'\nexport const GET_APP_ABILITIES_SUCCESS: string =\n 'clients/GET_APP_ABILITIES_SUCCESS'\nexport const GET_APP_ABILITIES_ERROR: string = 'clients/GET_APP_ABILITIES_ERROR'\n\nexport const GET_ABILITY_ACTIONS_REQUEST: string =\n 'clients/GET_ABILITY_ACTIONS_REQUEST'\nexport const GET_ABILITY_ACTIONS_SUCCESS: string =\n 'clients/GET_ABILITY_ACTIONS_SUCCESS'\nexport const GET_ABILITY_ACTIONS_ERROR: string =\n 'clients/GET_ABILITY_ACTIONS_ERROR'\n\nexport type requestAction = {\n type: string,\n}\n\nexport type successAction = {\n type: string,\n payload: Object | Array | string,\n}\n\nexport type errorAction = {\n type: string,\n err: string,\n}\n\nexport type App = {\n id: number,\n name: string,\n app_id: string,\n app_secret: string,\n}\n","import React from 'react'\nimport { Button } from 'sputnik-ui'\nimport Dialog from '@material-ui/core/Dialog'\nimport DialogActions from '@material-ui/core/DialogActions'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport DialogContentText from '@material-ui/core/DialogContentText'\nimport DialogTitle from '@material-ui/core/DialogTitle'\n\nexport default ({ classes, open, handleClose, onConfirm }) => (\n \n \n Вы точно хотите удалить данного пользователя?\n \n \n \n Это действие нельзя будет отменить.\n \n \n \n \n \n \n \n)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { Loader, Button } from 'sputnik-ui'\nimport { withRouter } from 'react-router-dom'\nimport styled from 'styled-components'\n\nimport Dialog from '@material-ui/core/Dialog'\nimport DialogActions from '@material-ui/core/DialogActions'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport DialogTitle from '@material-ui/core/DialogTitle'\nimport Slide from '@material-ui/core/Slide'\n\nimport { getCompanies, updateUser } from 'store/operations'\nimport {\n Tab,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TablePagination,\n TableRow,\n TextField,\n Typography,\n} from '@material-ui/core'\n\nconst Transition = (props) => \n\nclass AddUserModal extends React.Component {\n state = {\n company: this.props.currentUser.company,\n newSelectedCompany: null,\n page: 0,\n limit: 10,\n q: '',\n }\n\n componentDidMount() {\n this.props.dispatch(\n getCompanies({\n q: this.state.q,\n page: this.state.page,\n limit: this.state.limit,\n })\n )\n }\n\n searchCompanies = () => {\n this.props.dispatch(\n getCompanies({\n q: this.state.q,\n page: this.state.page,\n limit: this.state.limit,\n })\n )\n }\n\n updateUser = () => {\n this.props\n .dispatch(\n updateUser({\n userId: this.props.match.params.id,\n company_id: this.state.company.id,\n })\n )\n .then(this.props.handleClose)\n }\n\n handleCompanyChange = (e) => {\n const company = e.target.value\n this.setState({ company })\n }\n\n handleChangePage = (e, page) => {\n this.setState({ page }, this.searchCompanies)\n }\n\n handleChangeRowsPerPage = (e) => {\n const limit = e.target.value\n this.setState({ limit }, this.searchCompanies)\n }\n\n handleSearch = (e) => {\n const q = e.target.value\n this.setState({ q }, this.searchCompanies)\n }\n\n render() {\n const { limit, page } = this.state\n const { open, handleClose, companies, companiesError, meta } = this.props\n\n return (\n \n Изменить компанию\n \n \n Компания {this.state.company?.name}\n \n \n \n Обновить\n \n \n \n {!companies ? (\n \n ) : (\n <>\n \n \n \n \n Имя компании\n Идентификатор\n \n \n \n {companies.map((el) => (\n this.setState({ company: el })}\n style={{\n cursor: 'pointer',\n }}\n // data-aos=\"fade-left\"\n >\n \n {el.name}\n \n \n {el.identifier}\n \n \n ))}\n \n \n \n `${from}-${to} из ${count}`\n }\n onChangePage={this.handleChangePage}\n onChangeRowsPerPage={this.handleChangeRowsPerPage}\n />\n \n )}\n \n \n )\n }\n}\n\nconst mapStateToProps = ({ users: { currentUser }, companies }) => ({\n currentUser,\n companies: companies.collection?.companies,\n meta: companies.collection?.meta,\n companiesError: companies.error,\n})\n\nexport default connect(mapStateToProps)(withRouter(AddUserModal))\n","import React from 'react'\nimport { Select, Button, Wrapper, Container } from 'sputnik-ui'\n\nimport Typography from '@material-ui/core/Typography'\nimport Divider from '@material-ui/core/Divider'\nimport Card from '@material-ui/core/Card'\nimport CardContent from '@material-ui/core/CardContent'\nimport CardHeader from '@material-ui/core/CardHeader'\nimport Avatar from '@material-ui/core/Avatar'\n\nconst UserCard = ({\n history,\n classes,\n currentUser,\n permissions,\n appAbilities,\n handleSelect,\n updateUserPermissions,\n actions,\n}) => (\n \n \n \n // {currentUser.full_name.slice(0, 1).toUpperCase()}\n // \n // }\n title={currentUser.full_name}\n subheader={currentUser.email}\n action={actions}\n classes={{ action: classes.action }}\n style={{ paddingLeft: 0, paddingRight: 0 }}\n />\n \n\n \n\n \n \n {appAbilities.map(x => (\n
\n \n {x.app.name}\n \n {Object.entries(x.abilities).map(([key, ability]) => {\n const options = ability.privileges.map(s => ({\n value: s.action,\n label: s.translation,\n isDisabled: s.is_feature,\n }))\n const selected =\n (permissions[x.app.app_id] &&\n permissions[x.app.app_id][\n `${ability.namespace ? ability.namespace + '/' : ''}${\n ability.name\n }`\n ]) ||\n null\n\n const selectedOptions = options.filter(\n o => selected && selected.includes(o.value),\n )\n return (\n
\n \n {ability.translation}\n \n
\n \n
\n
\n )\n })}\n
\n ))}\n
\n \n \n обновить данные\n \n \n
\n \n)\n\nexport default UserCard\n","//@flow\nimport * as React from 'react'\nimport { MainTemplate, AddUserModal, UsersTable } from 'components'\nimport { Navbar, Loader } from 'sputnik-ui'\nimport { connect } from 'react-redux'\nimport type { State, Props } from './types'\nimport throttle from 'lodash/throttle'\n\nimport { withStyles } from '@material-ui/core/styles'\n\nimport Tooltip from '@material-ui/core/Tooltip'\nimport IconButton from '@material-ui/core/IconButton'\nimport TextField from '@material-ui/core/TextField'\nimport PersonAdd from '@material-ui/icons/PersonAdd'\nimport SearchIcon from '@material-ui/icons/Search'\n\nimport { getUsers } from 'store/operations'\n\nconst styles = theme => ({\n root: {\n width: '100%',\n marginTop: 24,\n },\n\n search: {\n minWidth: '300px',\n zIndex: 1200,\n\n paddingLeft: 10,\n },\n})\n\nclass HomePage extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n modalIsOpen: false,\n isSearching: false,\n searchQuery: '',\n page: 0,\n limit: 10,\n }\n\n this.searchUsers = throttle(this.searchUsers, 400)\n }\n\n componentDidMount = () => {\n this.props.dispatch(\n getUsers({ page: this.state.page, limit: this.state.limit }),\n )\n }\n\n toggleModal = () =>\n this.setState({\n modalIsOpen: !this.state.modalIsOpen,\n })\n\n toggleSearch = () => this.setState({ isSearching: !this.state.isSearching })\n\n searchUsers = () =>\n this.props.dispatch(getUsers({ q: this.state.searchQuery }))\n\n onChange = ({ currentTarget: { value } }) => {\n this.setState({ searchQuery: value }, this.searchUsers)\n }\n\n handleChangePage = (event: ?SyntheticEvent<>, page: number) => {\n this.setState({ page }, () => {\n // this.props.dispatch(clearUsers())\n this.props.dispatch(\n getUsers({ page: this.state.page, limit: this.state.limit }),\n )\n })\n }\n\n handleChangeRowsPerPage = (e: SyntheticEvent<>) => {\n //$FlowFixMe\n this.setState({ limit: e.target.value }, () =>\n this.props.dispatch(\n getUsers({ page: this.state.page, limit: this.state.limit }),\n ),\n )\n }\n\n render() {\n const { classes, users } = this.props\n const { modalIsOpen, isSearching, page, limit } = this.state\n\n if (!users) return \n\n return (\n \n {isSearching ? (\n \n ) : (\n \n \n \n \n \n )}\n\n \n \n \n \n \n \n }\n />\n }\n >\n {/* */}\n\n \n\n \n \n )\n }\n}\n\nconst mapStateToProps = ({ users }) => ({\n users: users.users,\n})\n\n//$FlowFixMe\nexport default connect(mapStateToProps)(withStyles(styles)(HomePage))\n","import React from 'react'\nimport styled from 'styled-components'\nimport Typography from '@material-ui/core/Typography'\nimport Button from '@material-ui/core/Button'\nimport { withRouter } from 'react-router-dom'\n\nconst Div = styled.div`\n width: 100%;\n height: 100vh;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n`\n\nexport default withRouter(({ history }) => (\n
\n \n 404\n \n\n Данной страницы не существует.\n\n history.push('/')}\n >\n Перейти на главную\n \n
\n))\n","import React, { useState, useEffect } from 'react'\nimport { Typography } from '@material-ui/core'\nimport { Loader } from 'sputnik-ui'\nimport { withRouter } from 'react-router-dom'\nimport Api from 'utils/api'\n\nconst styles = {\n fullPage: {\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n },\n}\n\nconst ResetPasswordPage = ({ match }) => {\n const [didSendNewPassword, setDidSendNewPassword] = useState(false)\n\n const {\n params: { id },\n } = match\n\n useEffect(() => {\n Api.request(`/password_resets/${id}`, {\n method: 'PUT',\n }).then(() => setDidSendNewPassword(true))\n }, [match])\n\n return didSendNewPassword ? (\n
\n \n 😌\n \n \n Новый пароль был выслан на ваш email.\n \n
\n ) : (\n \n )\n}\n\nexport default withRouter(ResetPasswordPage)\n","// https://github.com/diegohaz/arc/wiki/Atomic-Design#templates\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport styled, { css } from 'styled-components'\nimport { Container } from 'sputnik-ui'\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n overflow: auto;\n height: calc(100% - 4.125rem);\n margin-top: 4.125rem;\n`\n\nconst Header = styled.header`\n position: static;\n top: 0;\n width: 100%;\n z-index: 999;\n`\n\nconst Content = styled.section``\n\nconst MainTemplate = ({ header, children, margin, subheader, ...props }) => {\n return (\n \n {header}\n {children}\n \n )\n}\n\nMainTemplate.propTypes = {\n header: PropTypes.node.isRequired,\n subheader: PropTypes.node,\n children: PropTypes.any.isRequired,\n margin: PropTypes.string,\n}\n\nexport default MainTemplate\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register() {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://goo.gl/SC7cgQ'\n );\n });\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import camelCase from 'lodash/camelCase'\nimport { combineReducers } from 'redux'\n\nconst reducers = {}\n\nconst req = require.context('.', true, /\\.\\/.+\\/reducers\\.js$/)\n\nreq.keys().forEach(key => {\n const storeName = camelCase(key.replace(/\\.\\/(.+)\\/.+$/, '$1'))\n reducers[storeName] = req(key).default\n})\n\nexport default combineReducers(reducers)\n","import { createStore, applyMiddleware, compose } from 'redux'\nimport rootReducer from './reducers'\nimport thunk from 'redux-thunk'\nimport throttle from 'lodash/throttle'\nimport { loadState, saveState } from 'sputnik-ui'\n\nconst middleware = [thunk]\n\nconst composeEnhancers =\n typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n // Specify extension’s options like name, actionsBlacklist, actionsCreators, serialize...\n })\n : compose\n\nconst enhancer = composeEnhancers(\n applyMiddleware(...middleware)\n // other store enhancers if any\n)\n\nconst persistedState = loadState()\n\nconst store = createStore(rootReducer, persistedState, enhancer)\n\nstore.subscribe(throttle(() => saveState(store.getState()), 1000))\n\nexport default store\n","// import React...\nimport React from 'react'\nimport { Route, Switch } from 'react-router-dom'\nimport { Home, User, MyProfilePage, NotFound, ResetPassword } from 'components'\nimport requireAuth from 'utils/requireAuth'\n\nconst PrivateRoutes = requireAuth(() => (\n \n \n \n \n \n \n))\n\nconst Routes = () => (\n \n \n \n \n)\n\nexport default Routes\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { checkAuth } from 'store/auth/operations'\nimport { Loader } from 'sputnik-ui'\n\nexport default function requireAuth(C) {\n class Authentication extends Component {\n componentDidMount() {\n // check session\n this.props.dispatch(checkAuth())\n }\n\n render() {\n const { isLoggedIn } = this.props\n\n if (!isLoggedIn) {\n return \n }\n\n return \n }\n }\n\n const mapStateToProps = ({ auth }) => ({\n isLoggedIn: auth.isLoggedIn,\n })\n\n return connect(mapStateToProps)(Authentication)\n}\n","//@flow\nimport * as React from 'react'\n//$FlowFixMe\nimport { useEffect } from 'react'\nimport ReactDOM from 'react-dom'\nimport { theme, i18n, Loader, ThemeProvider, Metrika } from 'sputnik-ui'\nimport { Provider } from 'react-redux'\nimport registerServiceWorker from './registerServiceWorker'\nimport store from 'store/store'\n//$FlowFixMe\nimport { BrowserRouter } from 'react-router-dom'\nimport { I18nextProvider } from 'react-i18next'\nimport AOS from 'aos'\nimport App from './App'\n\nconst Root = (): React.Node => {\n useEffect(() => {\n AOS.init({\n // easing: 'ease-out-quad',\n duration: 400,\n once: true,\n })\n }, [])\n return (\n \n \n \n \n }>\n \n \n \n \n \n \n \n )\n}\n\nconst node = document.getElementById('root')\n\nif (node === null) {\n throw new Error('no node element')\n}\n\nReactDOM.render(, node)\nregisterServiceWorker()\n","var _excluded = [\"svgRef\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar SvgAccount = function SvgAccount(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 490 360\",\n style: {\n enableBackground: \"new 0 0 490 360\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n style: {\n fill: \"currentColor\"\n },\n d: \"M121.4,291.5C152.7,323.8,196.5,344,245,344c94.8,0,172-77.2,172-172S339.8,0,245,0S73,77.2,73,172 c0,45.2,17.6,86.4,46.2,117.1C119.8,290.1,120.6,290.8,121.4,291.5z M245,324.2c-37.4,0-71.8-13.6-98.3-36.1 c44.6-14.8,61.1-32.8,67.2-44.8c8.5,3.7,18,5.7,28.5,5.8c0.2,0,0.5,0,0.7,0c0.1,0,0.7,0,0.9,0s0.5,0,0.7,0 c11.4-0.2,21.7-2.5,30.6-6.8c5.7,12,21.9,30.6,67.8,45.8C316.7,310.6,282.4,324.2,245,324.2z M189.4,140.2c0-0.2,0-0.4,0-0.6 c2.4-52.1,40.8-56.2,52.6-56.2c0.5,0,0.9,0,1.2,0s0.5,0,0.8,0s0.6,0,1.2,0c11.7,0,50.2,4.1,52.6,56.2c0,0.2,0,0.4,0,0.6 c0.1,0.5,5,48.7-17.5,74c-8.9,10-20.8,15-36.3,15.1c-0.1,0-0.3,0-0.3,0l0,0c-0.1,0-0.2,0-0.3,0c-15.6-0.2-27.4-5.1-36.3-15.1 C184.5,189.1,189.3,140.7,189.4,140.2z M245,19.8c83.9,0,152.2,68.3,152.2,152.2c0,38.4-14.4,73.6-37.9,100.4 c-64.6-18.8-67.1-41.6-67.1-41.9c0,0.4,0,0.5,0,0.5h-0.7c1.2-1.2,2.4-2.4,3.6-3.7c27.5-30.9,22.9-83.8,22.4-89 c-2.7-55.2-40.6-74.8-72.3-74.8c-0.6,0-1.2,0-1.6,0c-0.4,0-0.9,0-1.6,0c-31.7,0-69.7,19.6-72.3,74.8c-0.5,5.1-5,58,22.4,89 c1.6,1.8,3.3,3.5,5,5.1c-2.1,5.8-12.7,24.2-66.4,39.9c-23.6-26.8-37.9-61.9-37.9-100.3C92.8,88.1,161.1,19.8,245,19.8z\"\n }));\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgAccount, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/account.c9e97c09.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useCallback, useEffect } from 'react'\nimport { connect, useSelector, useDispatch } from 'react-redux'\nimport styled from 'styled-components'\nimport {\n Loader,\n Button,\n Toast,\n Avatar,\n useInput,\n Container,\n FullscreenExitButton,\n FullscreenDialogTitle,\n} from 'sputnik-ui'\nimport { withRouter, useHistory, useRouteMatch } from 'react-router-dom'\nimport isEmail from 'validator/lib/isEmail'\n\nimport { updateCurrentUser } from 'store/users/operations'\nimport { checkAuth } from 'store/auth/operations'\nimport { clearStatus } from 'store/ui/actions'\nimport { ReactComponent as AccountIcon } from './account.svg'\nimport {\n Dialog,\n DialogActions,\n TextField,\n Toolbar,\n Fade,\n Typography,\n ExpansionPanel,\n FormControlLabel,\n Switch,\n ExpansionPanelSummary,\n ExpansionPanelDetails,\n IconButton,\n} from '@material-ui/core'\nimport { ExpandMore, ChevronLeft } from '@material-ui/icons'\nimport { AsYouType } from 'libphonenumber-js'\nimport ConfirmPhoneModal from 'components/molecules/ConfirmPhoneModal'\nimport { disableFeature, enableFeature } from 'store/features/operations'\n\nconst Transition = props => \n\nconst MARGIN = 2\n\nconst Body = styled(Container)`\n display: flex;\n flex-direction: column;\n align-items: center;\n /* justify-content: center; */\n /* margin-top: 4rem; */\n /* margin-bottom: 4rem; */\n`\n\nconst Form = styled.form`\n display: flex;\n flex-direction: column;\n max-width: ${p => p.theme.sizes.tablet};\n width: 100%;\n`\n\nconst Row = styled.div`\n display: flex;\n align-items: center;\n`\n\nconst ActionsWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n align-items: center;\n margin-top: 1.625rem;\n width: 100%;\n\n button:first-child {\n margin-right: 0.625rem;\n }\n`\n\nconst styles = {\n video: {\n backgroundColor: '#fafafa',\n borderRadius: 30,\n width: '100%',\n marginBottom: '1rem',\n height: 0,\n paddingBottom: '56.25%',\n },\n}\n\nfunction PhoneInputCustom(props) {\n return \n}\n\nfunction MyProfilePage({ ...props }) {\n const history = useHistory()\n const match = useRouteMatch()\n const dispatch = useDispatch()\n const user = useSelector(({ auth }) => auth.user)\n const { msg, error, featureToggling } = useSelector(\n ({ users, features }) => ({\n msg: users.msg || features.msg,\n error: users.error || features.error,\n featureToggling: features.loading,\n }),\n )\n\n const [modifiedInfo, setModifiedInfo] = useState(false)\n const setModifiedInfoToTrue = () => setModifiedInfo(true)\n\n const { bind: bindEmail, value: email } = useInput(\n (user && user.email) || '',\n setModifiedInfoToTrue,\n )\n const { bind: bindName, value: name, setValue: setName } = useInput(\n (user && user.name) || '',\n setModifiedInfoToTrue,\n )\n const { bind: bindSurname, value: surname, setValue: setSurname } = useInput(\n (user && user.surname) || '',\n setModifiedInfoToTrue,\n )\n const { value: phone, setValue: setPhone } = useInput(\n (user && user.phone) || '',\n setModifiedInfoToTrue,\n )\n\n // useEffect(() => {\n // setName(user.name)\n // setSurname(user.surname)\n // setPhone(user.phone)\n // }, [user])\n\n const handleReturn = useCallback(() => {\n const regExp = /.*account.sputnik.systems\\/user\\/me\\?redirect_to=(.*)/\n const m = regExp.exec(window.location)\n const redirectUrl = m && m[1]\n\n redirectUrl ? (window.location = redirectUrl) : history.push('/')\n }, [window.location])\n\n const [confirmPhoneModal, setConfirmPhoneModal] = useState(false)\n const handleSubmit = e => {\n e.preventDefault()\n\n dispatch(updateCurrentUser({ name, surname, phone })).then(\n ({ confirmation_required }) => {\n if (confirmation_required) {\n setConfirmPhoneModal(true)\n } else {\n handleReturn()\n }\n },\n )\n // .then(handleReturn)\n }\n\n const formatPhone = value => {\n return new AsYouType('RU').input(value)\n }\n\n const features = Object.values(user?.features || {}).flat(1)\n\n return (\n \n {/* \n \n Мой профиль\n \n */}\n \n Мой профиль\n \n {/* \n \n \n \n\n Мой профиль\n */}\n\n {/* */}\n {/* \n Настройки профиля\n */}\n\n
\n \n\n {\n setPhone(e.target.value)\n setModifiedInfoToTrue()\n }}\n >\n\n \n \n \n \n \n \n сохранить изменения\n \n\n \n Экспериментальные функции\n \n\n \n Может быть они даже работают 😌\n \n\n {features.map(f => (\n \n }>\n {\n event.stopPropagation()\n\n f.is_enabled\n ? dispatch(disableFeature(f.uuid)).then(() =>\n dispatch(checkAuth()),\n )\n : dispatch(enableFeature(f.uuid)).then(() =>\n dispatch(checkAuth()),\n )\n }}\n onFocus={event => event.stopPropagation()}\n control={}\n label={f.display_name}\n // disabled={featureToggling}\n style={{\n pointerEvents: featureToggling ? 'none' : undefined,\n }}\n />\n \n \n {/* {video_url && (\n \n )} */}\n {f.description}\n \n \n ))}\n\n
\n \n \n setConfirmPhoneModal(false)}\n onSuccess={() => {\n dispatch(checkAuth())\n handleReturn()\n }}\n >\n dispatch(clearStatus())}\n >\n {msg}\n \n dispatch(clearStatus())}\n >\n {error}\n \n
\n )\n}\n\nexport default MyProfilePage\n","import * as types from './types'\n\nexport const clearStatus = () => ({\n type: types.CLEAR_STATUS,\n})\n","export const CLEAR_STATUS = 'ui/CLEAR_STATUS'\n","export default [\n {\n id: 'email',\n\n disablePadding: false,\n label: 'E-mail',\n },\n {\n id: 'full_name',\n\n disablePadding: false,\n label: 'Имя',\n },\n {\n id: 'company',\n\n disablePadding: false,\n label: 'Компания',\n },\n {\n id: 'phone',\n\n disablePadding: false,\n label: 'Телефон',\n },\n]\n","import React from 'react'\nimport TableHead from '@material-ui/core/TableHead'\nimport TableSortLabel from '@material-ui/core/TableSortLabel'\nimport PropTypes from 'prop-types'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableRow from '@material-ui/core/TableRow'\nimport Tooltip from '@material-ui/core/Tooltip'\nimport columnData from './data'\nimport AccountIcon from '@material-ui/icons/AccountCircle'\nimport BusinessIcon from '@material-ui/icons/Business'\nimport EmailIcon from '@material-ui/icons/Email'\nimport { withStyles } from '@material-ui/core/styles'\nimport { PhoneIphone } from '@material-ui/icons'\n\nconst styles = theme => ({\n cell: {\n backgroundColor: 'white',\n },\n label: {\n color: 'black',\n },\n})\n\nclass MyTableHead extends React.Component {\n createSortHandler = property => event => {\n this.props.onRequestSort(event, property)\n }\n\n render() {\n const { order, orderBy, classes } = this.props\n\n return (\n \n \n {columnData.map(column => {\n const active = orderBy === column.id\n return (\n \n \n \n {column.id === 'email' && (\n \n )}\n {column.id === 'full_name' && (\n \n )}\n {column.id === 'company' && (\n \n )}\n {column.id === 'phone' && (\n \n )}\n\n {column.label}\n \n \n \n )\n })}\n \n \n )\n }\n}\n\nMyTableHead.propTypes = {\n onRequestSort: PropTypes.func.isRequired,\n order: PropTypes.string.isRequired,\n orderBy: PropTypes.string.isRequired,\n rowCount: PropTypes.number.isRequired,\n}\n\nexport default withStyles(styles)(MyTableHead)\n","//@flow\nimport * as React from 'react'\nimport TableHead from './TableHead'\nimport { withRouter } from 'react-router-dom'\nimport { Container } from 'sputnik-ui'\n\nimport Table from '@material-ui/core/Table'\nimport TableBody from '@material-ui/core/TableBody'\nimport TableCell from '@material-ui/core/TableCell'\nimport TablePagination from '@material-ui/core/TablePagination'\nimport TableRow from '@material-ui/core/TableRow'\n\ntype User = {\n id: number,\n email: string,\n company: string,\n full_name: string,\n phone: string,\n}\n\ntype P = {\n history: Object,\n users: Object[],\n handleChangePage: Function,\n page: number,\n limit: number,\n handleChangeRowsPerPage: Function,\n count: number,\n}\n\ntype S = {\n order: string,\n orderBy: string,\n data: Object[],\n}\n\nclass UsersTable extends React.Component {\n state = {\n order: 'asc',\n orderBy: 'email',\n data: [],\n }\n\n static getDerivedStateFromProps(props: P, state: S) {\n if (props.users) {\n // && props.users.length !== state.data.length\n return {\n //$FlowFixMe\n data: props.users.sort((a, b) => (a.email < b.email ? 1 : -1)),\n }\n }\n return state\n }\n\n handleRequestSort = (event: SyntheticEvent, property: string) => {\n const orderBy = property\n let order = 'desc'\n\n if (this.state.orderBy === property && this.state.order === 'desc') {\n order = 'asc'\n }\n\n this.setState({ order, orderBy })\n }\n\n getSorting = (order: string, orderBy: string) => {\n return order === 'desc'\n ? (a: Object, b: Object) => (b[orderBy] < a[orderBy] ? -1 : 1)\n : (a: Object, b: Object) => (a[orderBy] < b[orderBy] ? -1 : 1)\n }\n\n render() {\n const { data, order, orderBy } = this.state\n const { history, page, limit } = this.props\n\n return (\n \n
\n \n \n\n \n {data.sort(this.getSorting(order, orderBy)).map((n: User) => {\n return (\n history.push(`/user/${n.id}`)}\n style={{\n cursor: 'pointer',\n }}\n data-aos=\"fade-left\"\n >\n \n {n.email}\n \n \n {n.full_name}\n \n {n.company}\n {n.phone}\n \n )\n })}\n \n \n
\n \n //$FlowFixMe\n `${from}-${to} из ${count}`\n }\n onChangePage={this.props.handleChangePage}\n onChangeRowsPerPage={this.props.handleChangeRowsPerPage}\n />\n
\n )\n }\n}\n\nexport default withRouter(UsersTable)\n","//@flow\nimport * as types from './types'\n\nexport const getCompaniesRequest = (): types.requestAction => ({\n type: types.GET_COMPANIES_REQUEST,\n})\n\nexport const getCompaniesSuccess = (\n companies: Object[]\n): types.successAction => ({\n type: types.GET_COMPANIES_SUCCESS,\n payload: companies,\n})\n\nexport const getCompaniesError = (err: string): types.errorAction => ({\n type: types.GET_COMPANIES_ERROR,\n payload: err,\n})\n","//@flow\nimport * as actions from './actions'\nimport Api from 'utils/api'\n\nexport const getCompanies =\n ({ q, page, limit }) =>\n async (dispatch) => {\n dispatch(actions.getCompaniesRequest())\n try {\n const companies = await Api.request(\n `/companies?q=${q}&page=${page + 1}&limit=${limit}`\n )\n dispatch(actions.getCompaniesSuccess(companies))\n } catch (err) {\n dispatch(actions.getCompaniesError(err))\n }\n }\n","const styles = theme => ({\n column: {\n display: 'flex',\n alignItems: 'left',\n marginBottom: '1.625rem',\n flexWrap: 'wrap',\n },\n row: {\n display: 'flex',\n width: '100%',\n marginBottom: '.625rem',\n },\n // actionsPanel: {\n // paddingTop: '10px',\n // paddingBottom: '10px',\n // paddingRight: '20px',\n // overflow: 'visible',\n // justifyContent: 'flex-end',\n // },\n avatar: {\n backgroundColor: theme.palette.secondary['500'],\n color: 'black',\n },\n card: {\n overflow: 'visible',\n marginBottom: '2rem',\n },\n subcolumn: {\n flexBasis: '15%',\n alignSelf: 'flex-end',\n },\n permissionColumn: {\n flexBasis: '85%',\n },\n action: {\n margin: 0,\n },\n flex: {\n display: 'flex',\n alignSelf: 'flex-end',\n },\n error: {\n color: theme.palette.error['main'],\n },\n})\n\nexport default styles\n","import React, { Component } from 'react'\nimport {\n MainTemplate,\n DeleteUserAlert,\n AddAppModal,\n UserCard,\n UserCardActions,\n EditCompanyModal,\n} from 'components'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport { Loader, Navbar, Toast } from 'sputnik-ui'\nimport type { State, Props } from './types'\nimport styles from './styles'\nimport { withStyles } from '@material-ui/core/styles'\n\nimport {\n getCurrentUser,\n getUserPermissions,\n updateUserPermissions,\n deleteUser,\n updateUser,\n} from 'store/users/operations'\nimport { getUserApps, getAppAbilities } from 'store/apps/operations'\n\nclass UserPage extends Component {\n state = {\n appAbilities: null,\n permissions: null,\n deleteUserModal: false,\n addAppModal: false,\n editCompanyModal: false,\n snackbarSuccess: false,\n snackbarError: false,\n }\n\n componentDidMount() {\n this.init()\n }\n\n init = async () => {\n const { dispatch, match } = this.props\n const { id } = match.params\n\n dispatch(getCurrentUser(id)).catch(err =>\n setTimeout(() => {\n this.props.history.push('/')\n }, 1000),\n )\n const apps = await dispatch(getUserApps(id))\n\n // bunch apps and their abilities together\n const appAbilities = await Promise.all(\n apps.map(async app => {\n const abilities = await dispatch(getAppAbilities(app.app_id))\n return { app, abilities }\n }),\n )\n\n /* get permissions, and change their structure */\n const permissions = await dispatch(getUserPermissions(id)).then(\n permissions =>\n permissions.reduce(\n (acc, permission) => ({\n ...acc,\n [permission.app_id]: permission.abilities\n ? Object.values(permission.abilities).reduce(\n (abilities, ability) => ({\n ...abilities,\n [`${ability.namespace ? ability.namespace + '/' : ''}${\n ability.name\n }`]: ability.privileges?.map(x => x.action),\n }),\n {},\n )\n : [],\n }),\n {},\n ),\n )\n\n this.setState({ appAbilities, permissions })\n }\n\n handleSelect = (appId, ability) => newActions => {\n const { permissions: oldPermissions } = this.state\n const newActionValues = newActions ? newActions.map(a => a.value) : []\n\n // this.state.appAbilities\n const permissions = {\n ...oldPermissions,\n [appId]: {\n //$FlowFixMe\n ...oldPermissions[appId],\n [`${ability.namespace ? ability.namespace + '/' : ''}${\n ability.name\n }`]: newActionValues,\n },\n }\n this.setState({ permissions })\n }\n\n updateUserPermissions = async () => {\n const { permissions } = this.state\n const { match, dispatch } = this.props\n\n try {\n await Promise.resolve(\n // for each client\n await Object.entries(permissions).forEach(\n async ([appId, abilities]) =>\n await dispatch(\n updateUserPermissions({\n userId: match.params.id,\n appId,\n abilities,\n }),\n ),\n ),\n )\n this.toggleModal('snackbarSuccess')()\n this.init()\n } catch (error) {\n this.toggleModal('snackbarError')()\n }\n }\n\n toggleModal = modalName => () =>\n this.setState({ [modalName]: !this.state[modalName] })\n\n deleteUser = () => {\n this.props\n .dispatch(deleteUser(this.props.match.params.id))\n .then(() => this.props.history.push('/'))\n .catch(this.toggleModal('snackbarError'))\n }\n\n toggleUserBlock = () => {\n if (this.props.currentUser) {\n this.props\n .dispatch(\n updateUser({\n userId: this.props.match.params.id,\n is_blocked: !this.props.currentUser.is_blocked,\n }),\n )\n .then(() => this.init())\n }\n }\n\n render() {\n const {\n classes,\n currentUser,\n usersError,\n appsError,\n authorizedUser,\n history,\n } = this.props\n const { appAbilities, permissions } = this.state\n\n\n if (!currentUser) {\n return (\n \n )\n }\n\n if (!appAbilities || !permissions) {\n return (\n \n )\n }\n\n return (\n }>\n \n }\n />\n \n \n {\n this.init()\n this.toggleModal('addAppModal')()\n }}\n />\n \n Информация о пользователе была успешно обновлена.\n \n \n {usersError ||\n 'При обновлении информации о пользователе произошла ошибка'}\n \n \n )\n }\n}\n\nconst mapStateToProps = ({ users, apps, auth: { user } }) => ({\n currentUser: users.currentUser,\n userApps: apps.userApps,\n usersError: users.error,\n appsError: apps.error,\n authorizedUser: user,\n})\n\nexport default connect(mapStateToProps)(\n withRouter(withStyles(styles)(UserPage)),\n)\n","// https://github.com/diegohaz/arc/wiki/Actions\nconst req = require.context('.', true, /\\.\\/.+\\/operations\\.js$/)\n\nreq.keys().forEach(key => {\n const actions = req(key)\n\n Object.keys(actions).forEach(name => {\n module.exports[name] = actions[name]\n })\n})\n","// https://github.com/diegohaz/arc/wiki/Atomic-Design#do-not-worry\nconst req = require.context('.', true, /\\.\\/[^/]+\\/[^/]+\\/index\\.js$/)\n\nreq.keys().forEach((key) => {\n const componentName = key.replace(/^.+\\/([^/]+)\\/index\\.js/, '$1')\n module.exports[componentName] = req(key).default\n})\n","export const ENABLE_FEATURE_REQUEST: string = 'features/ENABLE_FEATURE_REQUEST'\nexport const ENABLE_FEATURE_SUCCESS: string = 'features/ENABLE_FEATURE_SUCCESS'\nexport const ENABLE_FEATURE_FAILURE: string = 'features/ENABLE_FEATURE_FAILURE'\n\nexport const DISABLE_FEATURE_REQUEST: string =\n 'features/DISABLE_FEATURE_REQUEST'\nexport const DISABLE_FEATURE_SUCCESS: string =\n 'features/DISABLE_FEATURE_SUCCESS'\nexport const DISABLE_FEATURE_FAILURE: string =\n 'features/DISABLE_FEATURE_FAILURE'\n","export default {\n baseUri:\n process.env.APP_BASE_URL ||\n 'https://sso.sputnik.systems',\n redirectUri:\n process.env.APP_REDIRECT_URL ||\n 'https://sso.sputnik.systems',\n ssoUri: process.env.APP_SSO_URL || 'https://sso.sputnik.systems',\n // baseUri: 'https://sso-test.k8s.sputnik.systems',\n // redirectUri: 'https://sso-test.k8s.sputnik.systems',\n // ssoUri: 'https://sso-test.k8s.sputnik.systems',\n app: 'Управление Аккаунтами',\n brand: 'Спутник',\n}\n// https://sso-test.k8s.sputnik.systems\n","//@flow\nimport * as types from './types'\n\nexport const getUsersRequest = (): types.requestAction => ({\n type: types.GET_USERS_REQUEST,\n})\n\nexport const getUsersSuccess = (users: Array): types.successAction => ({\n type: types.GET_USERS_SUCCESS,\n payload: users,\n})\n\nexport const getUsersError = (err: string): types.errorAction => ({\n type: types.GET_USERS_ERROR,\n payload: err,\n})\n\nexport const getCurrentUserRequest = (): types.requestAction => ({\n type: types.GET_CURRENT_USER_REQUEST,\n})\n\nexport const getCurrentUserSuccess = (\n user: types.User,\n): types.successAction => ({\n type: types.GET_CURRENT_USER_SUCCESS,\n payload: user,\n})\n\nexport const getCurrentUserError = (err: string): types.errorAction => ({\n type: types.GET_CURRENT_USER_ERROR,\n payload: err,\n})\n\nexport const inviteUserRequest = (): types.requestAction => ({\n type: types.INVITE_USER_REQUEST,\n})\n\nexport const inviteUserSuccess = (): types.successAction => ({\n type: types.INVITE_USER_SUCCESS,\n})\n\nexport const inviteUserError = (err: string): types.errorAction => ({\n type: types.INVITE_USER_ERROR,\n payload: err,\n})\n\nexport const getUserPermissionsRequest = (): types.requestAction => ({\n type: types.GET_USER_PERMISSIONS_REQUEST,\n})\n\nexport const getUserPermissionsSuccess = (\n permissions: Array,\n): types.successAction => ({\n type: types.GET_USER_PERMISSIONS_SUCCESS,\n payload: permissions,\n})\n\nexport const getUserPermissionsError = (err: string): types.errorAction => ({\n type: types.GET_USER_PERMISSIONS_ERROR,\n payload: err,\n})\n\nexport const updateUserPermissionsRequest = (): types.requestAction => ({\n type: types.UPDATE_USER_PERMISSIONS_REQUEST,\n})\n\nexport const updateUserPermissionsSuccess = (\n permissions: Array,\n): types.successAction => ({\n type: types.UPDATE_USER_PERMISSIONS_SUCCESS,\n payload: permissions,\n})\n\nexport const updateUserPermissionsError = (err: string): types.errorAction => ({\n type: types.UPDATE_USER_PERMISSIONS_ERROR,\n payload: err,\n})\n\nexport const blockUserRequest = (): types.requestAction => ({\n type: types.BLOCK_USER_REQUEST,\n})\n\nexport const blockUserSuccess = (response: any): types.successAction => ({\n type: types.BLOCK_USER_SUCCESS,\n payload: response,\n})\n\nexport const blockUserError = (err: string): types.errorAction => ({\n type: types.BLOCK_USER_ERROR,\n payload: err,\n})\n\nexport const deleteUserRequest = (): types.requestAction => ({\n type: types.DELETE_USER_REQUEST,\n})\n\nexport const deleteUserSuccess = (response: any): types.successAction => ({\n type: types.DELETE_USER_SUCCESS,\n payload: response,\n})\n\nexport const deleteUserError = (err: string): types.errorAction => ({\n type: types.DELETE_USER_ERROR,\n payload: err,\n})\n\nexport const updateUserRequest = (): types.requestAction => ({\n type: types.UPDATE_USER_REQUEST,\n})\n\nexport const updateUserSuccess = (response: any): types.successAction => ({\n type: types.UPDATE_USER_SUCCESS,\n payload: response,\n})\n\nexport const updateUserError = (err: string): types.errorAction => ({\n type: types.UPDATE_USER_ERROR,\n payload: err,\n})\n\nexport const updateCurrentUserRequest = (): types.requestAction => ({\n type: types.UPDATE_USER_REQUEST,\n})\nexport const updateCurrentUserSuccess = (msg: string): types.successAction => ({\n type: types.UPDATE_USER_SUCCESS,\n payload: { msg },\n})\nexport const updateCurrentUserError = (err: string): types.errorAction => ({\n type: types.UPDATE_USER_ERROR,\n payload: err,\n})\n\nexport const confirmPhoneNumberRequest = (): types.requestAction => ({\n type: types.UPDATE_USER_REQUEST,\n})\nexport const confirmPhoneNumberSuccess = (\n msg: string,\n): types.successAction => ({\n type: types.UPDATE_USER_SUCCESS,\n payload: { msg },\n})\nexport const confirmPhoneNumberError = (err: string): types.errorAction => ({\n type: types.UPDATE_USER_ERROR,\n payload: err,\n})\n\nexport const clearUsers = () => ({\n type: types.CLEAR_USERS,\n})\n","//@flow\nimport * as actions from './actions'\nimport Api from 'utils/api'\nimport type { User } from './types'\nimport { signIn } from '../auth/actions'\n\nexport const getUsers: Function = ({\n q,\n page,\n limit,\n}: {\n q: string,\n page: number,\n limit: number,\n}): Function => async (dispatch: Function): Promise => {\n dispatch(actions.getUsersRequest())\n try {\n const setParams = () => {\n let params = []\n\n if (q) {\n params.push(`q=${q}`)\n }\n if (limit) {\n params.push(`limit=${limit}`)\n }\n if (limit && page) {\n params.push(`offset=${limit * page}`)\n }\n params = params.join('&')\n\n return `?${params}`\n }\n\n const users: Array = await Api.request(`/users${setParams()}`)\n dispatch(actions.getUsersSuccess(users))\n } catch (err) {\n dispatch(actions.getUsersError(err))\n }\n}\n\nexport const getCurrentUser: Function = (id: number): Function => async (\n dispatch: Function,\n): Promise => {\n dispatch(actions.getCurrentUserRequest())\n try {\n const user: User = await Api.request(`/users/${id}`)\n dispatch(actions.getCurrentUserSuccess(user))\n } catch (err) {\n dispatch(\n actions.getCurrentUserError(\n 'Не удалось получить информацию о данном пользователе',\n ),\n )\n return Promise.reject(err)\n }\n}\n\ntype newUser = {\n email: string,\n app_ids: Object[],\n}\n\nexport const inviteUser: Function = (body: newUser): Function => async (\n dispatch: Function,\n): Promise => {\n dispatch(actions.inviteUserRequest())\n try {\n const response = await Api.request(`/invites`, {\n method: 'POST',\n body: JSON.stringify(body),\n })\n dispatch(actions.inviteUserSuccess())\n return Promise.resolve(response)\n } catch (err) {\n const { message } = await err.json()\n dispatch(actions.inviteUserError(message))\n return Promise.reject(err)\n }\n}\n\nexport const getUserPermissions: Function = (\n userId: number,\n appId?: number,\n): Function => async (dispatch: Function): Promise => {\n dispatch(actions.getUserPermissionsRequest())\n try {\n const permissions = appId\n ? await Api.request(`/users/${userId}/permissions?app_id=${appId}`)\n : await Api.request(`/users/${userId}/permissions`)\n dispatch(actions.getUserPermissionsSuccess(permissions))\n return Promise.resolve(permissions)\n } catch (err) {\n dispatch(actions.inviteUserError(err))\n return Promise.reject(err)\n }\n}\n\nexport const updateUserPermissions: Function = ({\n userId,\n appId,\n abilities,\n}): Function => async (dispatch: Function): Promise => {\n dispatch(actions.updateUserPermissionsRequest())\n try {\n const response = await Api.request(\n `/permissions?user_id=${userId}&app_id=${appId}`,\n {\n method: 'PUT',\n body: JSON.stringify({ abilities: abilities}),\n },\n )\n\n dispatch(actions.updateUserPermissionsSuccess(response))\n return Promise.resolve(response)\n } catch (err) {\n dispatch(actions.updateUserPermissionsError(err))\n return Promise.reject(err)\n }\n}\n\nexport const blockUser: Function = ({\n userId,\n appId,\n abilities,\n}): Function => async (dispatch: Function): Promise => {\n dispatch(actions.blockUserRequest())\n try {\n const response = await Api.request(`/user`)\n dispatch(actions.blockUserSuccess(response))\n return Promise.resolve(response)\n } catch (err) {\n dispatch(actions.blockUserError(err))\n return Promise.reject(err)\n }\n}\n\nexport const deleteUser: Function = (id): Function => async (\n dispatch: Function,\n): Promise => {\n dispatch(actions.deleteUserRequest())\n try {\n const response = await Api.request(`/users/${id}`, { method: 'DELETE' })\n dispatch(actions.deleteUserSuccess(response))\n return Promise.resolve(response)\n } catch (err) {\n const errorMessage =\n err.status === 403\n ? 'У вас отсутствуют права на удаление пользователя'\n : 'При удалении пользователя произошла ошибка'\n dispatch(actions.deleteUserError(errorMessage))\n return Promise.reject(errorMessage)\n }\n}\n\nexport const updateUser: Function = ({\n userId,\n email,\n password,\n app_ids,\n is_blocked,\n company_id,\n}): Object => async (dispatch: Function): Promise => {\n dispatch(actions.updateUserRequest())\n\n const setParams = () => {\n let params = []\n\n if (email) params.push(`email=${email}`)\n if (password) params.push(`password=${password}`)\n if (app_ids) params.push(`app_ids=${app_ids}`)\n if (is_blocked !== undefined) params.push(`is_blocked=${is_blocked}`)\n if (company_id) params.push(`company_id=${company_id}`)\n params = params.join('&')\n\n return `?${params}`\n }\n\n try {\n const response = await Api.request(`/users/${userId}${setParams()}`, {\n method: 'PUT',\n })\n dispatch(actions.updateUserSuccess(response))\n return Promise.resolve(response)\n } catch (err) {\n dispatch(actions.updateUserPermissionsError(err))\n return Promise.reject(err)\n }\n}\n\nexport const updateCurrentUser: Function = ({\n name,\n surname,\n phone,\n}): Object => async (dispatch: Function): Promise => {\n dispatch(actions.updateCurrentUserRequest())\n try {\n const user = await Api.request(`/users/me/edit`, {\n method: 'PATCH',\n body: JSON.stringify({ phone, name, surname }),\n })\n dispatch(actions.updateCurrentUserSuccess(user))\n dispatch(signIn(user))\n return Promise.resolve(user)\n } catch (err) {\n const { message } = await err.json()\n dispatch(actions.updateCurrentUserError(message))\n return Promise.reject(message)\n }\n}\n\nexport const confirmPhoneNumber: Function = (phone, code): Object => async (\n dispatch: Function,\n): Promise => {\n dispatch(actions.confirmPhoneNumberRequest())\n try {\n const response = await Api.request(`/phone_confirmations`, {\n method: 'PUT',\n body: JSON.stringify({ phone, confirmation_code: code }),\n })\n dispatch(actions.confirmPhoneNumberSuccess(response))\n return Promise.resolve(response)\n } catch (err) {\n const { message } = await err.json()\n dispatch(actions.confirmPhoneNumberError(message))\n return Promise.reject(message)\n }\n}\n","export const SIGN_IN = 'auth/SIGN_IN'\nexport const SIGN_IN_ERROR = 'auth/SIGN_IN_ERROR'\nexport const CHECK_AUTH = 'auth/CHECK_AUTH'\n\nexport const LOG_OUT_REQUEST = 'auth/LOG_OUT_REQUEST'\nexport const LOG_OUT_SUCCESS = 'auth/LOG_OUT_SUCCESS'\nexport const LOG_OUT_ERROR = 'auth/LOG_OUT_ERROR'\n","import * as types from './types'\n\nexport const signIn = user => ({\n type: types.SIGN_IN,\n payload: user\n})\n\nexport const signInError = error => ({\n type: types.SIGN_IN_ERROR,\n payload: error\n})\n\nexport const checkAuth = () => ({\n type: types.CHECK_AUTH\n})\n\nexport const logOutRequest = () => ({ type: types.LOG_OUT_REQUEST })\n\nexport const logOutSuccess = () => ({ type: types.LOG_OUT_SUCCESS })\n\nexport const logOutError = () => ({ type: types.LOG_OUT_ERROR })\n","import * as actions from './actions'\nimport Api from 'utils/api'\nimport config from 'config'\n\nexport const checkAuth = (ignoreSessionStorage: ?boolean) => async (\n dispatch: Function,\n getState: Function,\n) => {\n dispatch(actions.checkAuth())\n\n try {\n const user: Object = await Api.request(\n `/users/me?app=${config.redirectUri}`,\n {},\n config.ssoUri,\n )\n dispatch(actions.signIn(user))\n } catch (err) {\n const { redirect_to } = await err.json()\n if (redirect_to) {\n window.location = config.ssoUri + redirect_to\n }\n dispatch(actions.signInError())\n }\n}\n\nexport const logOut = () => async dispatch => {\n dispatch(actions.logOutRequest())\n try {\n const response = await Api.request('/logout')\n dispatch(actions.logOutSuccess())\n sessionStorage.clear()\n window.location.reload()\n return Promise.resolve(response)\n } catch (err) {\n dispatch(actions.logOutError(err))\n return Promise.reject(err)\n }\n}\n\n// export const logOut = () => console.log(123)\n","//@flow\nexport const GET_COMPANIES_REQUEST: string = 'users/GET_COMPANIES_REQUEST'\nexport const GET_COMPANIES_SUCCESS: string = 'users/GET_COMPANIES_SUCCESS'\nexport const GET_COMPANIES_ERROR: string = 'users/GET_COMPANIES_ERROR'\n\nexport type requestAction = {\n type: string,\n}\n\nexport type successAction = {\n type: string,\n payload?: any,\n}\n\nexport type errorAction = {\n type: string,\n payload: string,\n}\n"],"sourceRoot":""}