{
  "algorithm": {
    "parameters": [],
    "statements": [
      {
        "command": "WriteSessionStorage",
        "expression": "\"http://bss-perimeter.beesion.team:30270/#/login\"",
        "sessionStorageVariableName": "SsoUrl"
      },
      {
        "command": "Set",
        "expression": "ReadToken()",
        "variableName": "token"
      },
      {
        "children": [
          {
            "command": "Set",
            "expression": "ReadJtiByParams()",
            "variableName": "jti"
          },
          {
            "children": [
              {
                "command": "Set",
                "expression": "AuthServerBff.GetTokenByJti(^jti)",
                "variableName": "token"
              },
              {
                "children": [
                  {
                    "command": "Execute",
                    "expression": "SaveToken(^token)"
                  }
                ],
                "command": "If",
                "expression": "IsNotNull(^token) && IsNotNull(^token.access_token)"
              }
            ],
            "command": "If",
            "expression": "IsNotNull(^jti)"
          }
        ],
        "command": "If",
        "expression": "IsNull(^token)"
      },
      {
        "command": "LoadResource",
        "resourceName": "Culture:En",
        "variableName": "culture"
      },
      {
        "command": "Set",
        "expression": "IsValidToken(^token)",
        "variableName": "isValid"
      },
      {
        "children": [
          {
            "command": "Launch",
            "expressionCulture": "^culture",
            "expressionIcon": "\"beesion-logo.png\"",
            "expressionMainMenu": "\"\"",
            "expressionSubTitle": "\"\"",
            "expressionTitle": "\"\"",
            "expressionToolsMenu": "\"\"",
            "padding": "large",
            "uiComponentName": "CmpSsoRedirect"
          }
        ],
        "command": "If",
        "expression": "!isValid"
      },
      {
        "children": [
          {
            "command": "Set",
            "expression": "MsBusiness.GetUserInfo(^token.access_token)",
            "variableName": "userInfo"
          },
          {
            "command": "ReadLocalStorage",
            "localStorageVariableName": "lang",
            "variableName": "lang"
          },
          {
            "command": "LoadResource",
            "resourceName": "Menu:MainMenu",
            "variableName": "menu"
          },
          {
            "command": "Switch",
            "expression": "^lang"
          },
          {
            "children": [
              {
                "command": "LoadResource",
                "resourceName": "Culture:SfSp",
                "variableName": "sfCulture"
              },
              {
                "command": "LoadResource",
                "resourceName": "Culture:Sp",
                "variableName": "culture"
              }
            ],
            "command": "Case",
            "expression": "\"sp\""
          },
          {
            "children": [
              {
                "command": "LoadResource",
                "resourceName": "Culture:SfEn",
                "variableName": "sfCulture"
              },
              {
                "command": "LoadResource",
                "resourceName": "Culture:En",
                "variableName": "culture"
              }
            ],
            "command": "Default"
          },
          {
            "command": "Set",
            "expression": "Union(^culture.translations, ^sfCulture.translations, key)",
            "variableName": "culture.translations"
          },
          {
            "command": "Set",
            "expression": "[]",
            "variableName": "worldOptions"
          },
          {
            "command": "Push",
            "expressionItem": "{ icon: \"culture-en.svg\", text: \"[[English]]\", handlerKey: \"culture-en\" }",
            "variableNameList": "worldOptions"
          },
          {
            "command": "Push",
            "expressionItem": "{ icon: \"culture-sp.svg\", text: \"[[Spanish]]\", handlerKey: \"culture-sp\" }",
            "variableNameList": "worldOptions"
          },
          {
            "command": "Set",
            "expression": "[]",
            "variableName": "userOptions"
          },
          {
            "command": "Push",
            "expressionItem": "{ icon: \"user.svg\", text: \"[[User]]\", handlerKey: \"user-info\" }",
            "variableNameList": "userOptions"
          },
          {
            "command": "Push",
            "expressionItem": "{ icon: \"change-password.svg\", text: \"[[ChangePassword]]\", handlerKey: \"change-password\" }",
            "variableNameList": "userOptions"
          },
          {
            "command": "Push",
            "expressionItem": "{ icon: \"logout.svg\", text: \"[[Logout]]\", handlerKey: \"logout\" }",
            "variableNameList": "userOptions"
          },
          {
            "command": "Set",
            "expression": "{ icon: \"user.svg\", text: ^userInfo.user_name, children: ^userOptions }",
            "variableName": "userMenu"
          },
          {
            "command": "Launch",
            "expressionCulture": "^culture",
            "expressionIcon": "\"beesion-logo.png\"",
            "expressionMainMenu": "^menu",
            "expressionSubTitle": "\"\"",
            "expressionTitle": "\"Strategic Plan\"",
            "expressionToolsMenu": "{ children: [{ icon: \"world.svg\", children: ^worldOptions }, ^userMenu] }",
            "padding": "normal",
            "uiComponentName": "CmpHome"
          }
        ],
        "command": "Else"
      }
    ],
    "typeReturn": "any",
    "variables": [
      {
        "name": "culture",
        "type": "any"
      },
      {
        "name": "menu",
        "type": "any"
      },
      {
        "name": "lang",
        "type": "string"
      },
      {
        "name": "worldOptions",
        "type": "list(MenuItem)"
      },
      {
        "name": "userOptions",
        "type": "list(MenuItem)"
      },
      {
        "name": "userMenu",
        "type": "MenuItem"
      },
      {
        "name": "isValid",
        "type": "boolean"
      },
      {
        "name": "userInfo",
        "type": "any"
      },
      {
        "name": "jti",
        "type": "string"
      },
      {
        "name": "sfCulture",
        "type": "Culture"
      },
      {
        "name": "token",
        "type": "JwtToken"
      }
    ]
  }
}