grafana/public/app/features/auth-config/state/reducers.ts
Alexander Zobnin 7476219b0c
SAML: Configuration UI (#64054)
* Add initial authentication config page skeleton

* Add initial SAML config page WIP

* Add few more pages

* Add connect to IdP page

* Assertion mappings page stub and url params

* Able to save settings

* Some tweaks for authentication page

* Tweak behaviour

* Tweak provider name

* Move SAML config pages to enterprise

* minor refactor

* Able to reset settings

* Configure key and cert from UI

* Refactor WIP

* Tweak styles

* Optional save button

* Some tweaks for the page

* Don't show info popup when save settings

* Improve key/cert validation

* Fetch provider status and display on auth page

* Add settings list to the auth page

* Show call to action card if no auth configured

* clean up

* Show authentication page only if SAML available

* Add access control for SSO config page

* Add feature toggle for auth config UI

* Add code owners for auth config page

* Auth config UI disabled by default

* Fix feature toggle check

* Apply suggestions from review

* Refactor: use forms for steps

* Clean up

* Improve authentication page loading

* Fix CTA link

* Minor tweaks

* Fix page route

* Fix formatting

* Fix generated code formatting
2023-04-13 16:07:43 +02:00

58 lines
1.6 KiB
TypeScript

import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import { AuthConfigState, AuthProviderStatus, Settings, SettingsError } from 'app/types';
export const initialState: AuthConfigState = {
settings: {},
providerStatuses: {},
isLoading: false,
};
const authConfigSlice = createSlice({
name: 'authConfig',
initialState,
reducers: {
settingsUpdated: (state, action: PayloadAction<Settings>): AuthConfigState => {
return { ...state, settings: action.payload };
},
providerStatusesLoaded: (state, action: PayloadAction<{ [key: string]: AuthProviderStatus }>): AuthConfigState => {
return { ...state, providerStatuses: action.payload };
},
loadingBegin: (state: AuthConfigState) => {
return { ...state, isLoading: true };
},
loadingEnd: (state: AuthConfigState) => {
return { ...state, isLoading: false };
},
setError: (state, action: PayloadAction<SettingsError>): AuthConfigState => {
return { ...state, updateError: action.payload };
},
resetError: (state): AuthConfigState => {
return { ...state, updateError: undefined };
},
setWarning: (state, action: PayloadAction<SettingsError>): AuthConfigState => {
return { ...state, warning: action.payload };
},
resetWarning: (state): AuthConfigState => {
return { ...state, warning: undefined };
},
},
});
export const {
settingsUpdated,
providerStatusesLoaded,
loadingBegin,
loadingEnd,
setError,
resetError,
setWarning,
resetWarning,
} = authConfigSlice.actions;
export const authConfigReducer = authConfigSlice.reducer;
export default {
authConfig: authConfigReducer,
};