diff --git a/models/login_details.go b/models/login_details.go index bcc0c8372..51d99c652 100644 --- a/models/login_details.go +++ b/models/login_details.go @@ -38,6 +38,9 @@ import ( // swagger:model loginDetails type LoginDetails struct { + // animated login + AnimatedLogin bool `json:"animatedLogin,omitempty"` + // is direct p v IsDirectPV bool `json:"isDirectPV,omitempty"` diff --git a/portal-ui/src/api/consoleApi.ts b/portal-ui/src/api/consoleApi.ts index a982f04d7..04d586941 100644 --- a/portal-ui/src/api/consoleApi.ts +++ b/portal-ui/src/api/consoleApi.ts @@ -468,6 +468,7 @@ export interface LoginDetails { redirectRules?: RedirectRule[]; isDirectPV?: boolean; isK8S?: boolean; + animatedLogin?: boolean; } export interface LoginOauth2AuthRequest { diff --git a/portal-ui/src/screens/LoginPage/LoginPage.tsx b/portal-ui/src/screens/LoginPage/LoginPage.tsx index c08a25ab8..fbca5dca1 100644 --- a/portal-ui/src/screens/LoginPage/LoginPage.tsx +++ b/portal-ui/src/screens/LoginPage/LoginPage.tsx @@ -266,6 +266,10 @@ const Login = () => { const isK8S = useSelector((state: AppState) => state.login.isK8S); + const backgroundAnimation = useSelector( + (state: AppState) => state.login.backgroundAnimation + ); + useEffect(() => { if (navigateTo !== "") { dispatch(resetForm()); @@ -393,6 +397,7 @@ const Login = () => { . } + backgroundAnimation={backgroundAnimation} /> ); diff --git a/portal-ui/src/screens/LoginPage/loginSlice.ts b/portal-ui/src/screens/LoginPage/loginSlice.ts index 5b070f7a5..2671b1f9b 100644 --- a/portal-ui/src/screens/LoginPage/loginSlice.ts +++ b/portal-ui/src/screens/LoginPage/loginSlice.ts @@ -27,6 +27,7 @@ export interface LoginState { secretKey: string; sts: string; useSTS: boolean; + backgroundAnimation: boolean; loginStrategy: ILoginDetails; @@ -56,6 +57,7 @@ const initialState: LoginState = { loadingVersion: true, isDirectPV: false, isK8S: false, + backgroundAnimation: false, navigateTo: "", }; @@ -107,6 +109,7 @@ export const loginSlice = createSlice({ state.loginStrategy = action.payload; state.isDirectPV = !!action.payload.isDirectPV; state.isK8S = !!action.payload.isK8S; + state.backgroundAnimation = !!action.payload.animatedLogin; } }) .addCase(doLoginAsync.pending, (state, action) => { diff --git a/portal-ui/src/screens/LoginPage/types.ts b/portal-ui/src/screens/LoginPage/types.ts index ae6e8e9a3..d5932c02a 100644 --- a/portal-ui/src/screens/LoginPage/types.ts +++ b/portal-ui/src/screens/LoginPage/types.ts @@ -19,6 +19,7 @@ export interface ILoginDetails { redirectRules: redirectRule[]; isDirectPV?: boolean; isK8S?: boolean; + animatedLogin?: boolean; } export interface redirectRule { diff --git a/restapi/config.go b/restapi/config.go index 794ce9a3f..5ef8348b6 100644 --- a/restapi/config.go +++ b/restapi/config.go @@ -276,3 +276,7 @@ func getMaxConcurrentDownloadsLimit() int64 { func getConsoleDevMode() bool { return strings.ToLower(env.Get(ConsoleDevMode, "off")) == "on" } + +func getConsoleAnimatedLogin() bool { + return strings.ToLower(env.Get(ConsoleAnimatedLogin, "on")) == "on" +} diff --git a/restapi/consts.go b/restapi/consts.go index 9d0dc2b81..ed3b4c45e 100644 --- a/restapi/consts.go +++ b/restapi/consts.go @@ -54,6 +54,7 @@ const ( ConsoleMaxConcurrentUploads = "CONSOLE_MAX_CONCURRENT_UPLOADS" ConsoleMaxConcurrentDownloads = "CONSOLE_MAX_CONCURRENT_DOWNLOADS" ConsoleDevMode = "CONSOLE_DEV_MODE" + ConsoleAnimatedLogin = "CONSOLE_ANIMATED_LOGIN" LogSearchQueryAuthToken = "LOGSEARCH_QUERY_AUTH_TOKEN" SlashSeparator = "/" ) diff --git a/restapi/embedded_spec.go b/restapi/embedded_spec.go index 93ac0fc64..c68fcb4a1 100644 --- a/restapi/embedded_spec.go +++ b/restapi/embedded_spec.go @@ -7026,6 +7026,9 @@ func init() { "loginDetails": { "type": "object", "properties": { + "animatedLogin": { + "type": "boolean" + }, "isDirectPV": { "type": "boolean" }, @@ -16157,6 +16160,9 @@ func init() { "loginDetails": { "type": "object", "properties": { + "animatedLogin": { + "type": "boolean" + }, "isDirectPV": { "type": "boolean" }, diff --git a/restapi/user_login.go b/restapi/user_login.go index 129ff5ec8..a10946d03 100644 --- a/restapi/user_login.go +++ b/restapi/user_login.go @@ -216,6 +216,7 @@ func getLoginDetailsResponse(params authApi.LoginDetailParams, openIDProviders o LoginStrategy: loginStrategy, RedirectRules: redirectRules, IsK8S: isKubernetes(), + AnimatedLogin: getConsoleAnimatedLogin(), } return loginDetails, nil } diff --git a/swagger.yml b/swagger.yml index ec758b778..b047b4027 100644 --- a/swagger.yml +++ b/swagger.yml @@ -4355,6 +4355,8 @@ definitions: type: boolean isK8S: type: boolean + animatedLogin: + type: boolean loginOauth2AuthRequest: type: object required: