diff --git a/Altinn.Authorization.sln b/Altinn.Authorization.sln index 621f47f3..7fad1303 100644 --- a/Altinn.Authorization.sln +++ b/Altinn.Authorization.sln @@ -9,25 +9,25 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Altinn.Authorization.Hostin EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{6F9E4C3C-5339-452F-A22B-2072CEDDB407}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.Authorization.Hosting", "src\libs\Altinn.Authorization.Hosting\src\Altinn.Authorization.Hosting\Altinn.Authorization.Hosting.csproj", "{676C7114-4829-4760-B32B-91C396AB39D2}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.Hosting", "src\libs\Altinn.Authorization.Hosting\src\Altinn.Authorization.Hosting\Altinn.Authorization.Hosting.csproj", "{676C7114-4829-4760-B32B-91C396AB39D2}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{46F86171-0313-48FC-B0F1-BC8EFE8109D6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.Authorization.Hosting.Tests", "src\libs\Altinn.Authorization.Hosting\tests\Altinn.Authorization.Hosting.Tests\Altinn.Authorization.Hosting.Tests.csproj", "{7724C311-DBD5-4E8B-BDA3-C8B910CCF8C6}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.Hosting.Tests", "src\libs\Altinn.Authorization.Hosting\tests\Altinn.Authorization.Hosting.Tests\Altinn.Authorization.Hosting.Tests.csproj", "{7724C311-DBD5-4E8B-BDA3-C8B910CCF8C6}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Altinn.Authorization.Configuration", "Altinn.Authorization.Configuration", "{57F7EADB-D618-4D20-9751-9E953CB25573}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{47DBC3CF-755F-49C9-BB0C-0499937A43D1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.Authorization.Configuration", "src\libs\Altinn.Authorization.Configuration\src\Altinn.Authorization.Configuration\Altinn.Authorization.Configuration.csproj", "{D9C86932-3DF0-442C-9E16-01B5EAE3F7F4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.Configuration", "src\libs\Altinn.Authorization.Configuration\src\Altinn.Authorization.Configuration\Altinn.Authorization.Configuration.csproj", "{D9C86932-3DF0-442C-9E16-01B5EAE3F7F4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.Authorization.Configuration.OpenTelemetry", "src\libs\Altinn.Authorization.Configuration\src\Altinn.Authorization.Configuration.OpenTelemetry\Altinn.Authorization.Configuration.OpenTelemetry.csproj", "{EE4433FE-68B9-4F09-96AF-567A4A6701FF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.Configuration.OpenTelemetry", "src\libs\Altinn.Authorization.Configuration\src\Altinn.Authorization.Configuration.OpenTelemetry\Altinn.Authorization.Configuration.OpenTelemetry.csproj", "{EE4433FE-68B9-4F09-96AF-567A4A6701FF}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.Authorization.Configuration.Postgres", "src\libs\Altinn.Authorization.Configuration\src\Altinn.Authorization.Configuration.Postgres\Altinn.Authorization.Configuration.Postgres.csproj", "{BADE7097-AFD5-4096-9378-3CCDB0EC95B9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.Configuration.Postgres", "src\libs\Altinn.Authorization.Configuration\src\Altinn.Authorization.Configuration.Postgres\Altinn.Authorization.Configuration.Postgres.csproj", "{BADE7097-AFD5-4096-9378-3CCDB0EC95B9}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{DCA1F893-53AA-4C9E-9794-215F901E0B61}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.Authorization.Configuration.Tests", "src\libs\Altinn.Authorization.Configuration\tests\Altinn.Authorization.Configuration.Tests\Altinn.Authorization.Configuration.Tests.csproj", "{66B2E84E-FF2C-4503-9081-5093928CD20C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.Configuration.Tests", "src\libs\Altinn.Authorization.Configuration\tests\Altinn.Authorization.Configuration.Tests\Altinn.Authorization.Configuration.Tests.csproj", "{66B2E84E-FF2C-4503-9081-5093928CD20C}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "apps", "apps", "{15B73811-7124-43E0-9DAF-895121B12EBA}" EndProject @@ -35,19 +35,17 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Altinn.Authorization.Index" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{50EE64F2-349A-46A5-87EB-282BAAE0DA63}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.Authorization.Index", "src\apps\Altinn.Authorization.Index\src\Altinn.Authorization.Index\Altinn.Authorization.Index.csproj", "{8D1DB300-7C01-45BF-B677-8C402A2E1B65}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.Index", "src\apps\Altinn.Authorization.Index\src\Altinn.Authorization.Index\Altinn.Authorization.Index.csproj", "{8D1DB300-7C01-45BF-B677-8C402A2E1B65}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Altinn.Authorization.AccessPackages", "Altinn.Authorization.AccessPackages", "{7EB60BDC-609B-4A73-9765-F4B9BFADB007}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C38C05DD-A87C-4166-8D30-58E9305E1FB1}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.Authorization.AccessPackages", "src\apps\Altinn.Authorization.AccessPackages\src\Altinn.Authorization.AccessPackages\Altinn.Authorization.AccessPackages.csproj", "{3E719CAF-CE38-4412-B372-D73FFA3DFADE}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.Authorization.AccessPackages.Models", "src\apps\Altinn.Authorization.AccessPackages\src\Altinn.Authorization.AccessPackages.Models\Altinn.Authorization.AccessPackages.Models.csproj", "{AF91ACE5-6AE2-47B2-9BD1-064064AA910A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.AccessPackages", "src\apps\Altinn.Authorization.AccessPackages\src\Altinn.Authorization.AccessPackages\Altinn.Authorization.AccessPackages.csproj", "{3E719CAF-CE38-4412-B372-D73FFA3DFADE}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Altinn.Authorization.DeployApi", "Altinn.Authorization.DeployApi", "{400D49D3-87B7-4960-B553-C8693CDB5755}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.Authorization.DeployApi", "src\apps\Altinn.Authorization.DeployApi\src\Altinn.Authorization.DeployApi\Altinn.Authorization.DeployApi.csproj", "{3238A95C-CC93-4E46-B11F-EADABDD1D17B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.DeployApi", "src\apps\Altinn.Authorization.DeployApi\src\Altinn.Authorization.DeployApi\Altinn.Authorization.DeployApi.csproj", "{3238A95C-CC93-4E46-B11F-EADABDD1D17B}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -87,10 +85,6 @@ Global {3E719CAF-CE38-4412-B372-D73FFA3DFADE}.Debug|Any CPU.Build.0 = Debug|Any CPU {3E719CAF-CE38-4412-B372-D73FFA3DFADE}.Release|Any CPU.ActiveCfg = Release|Any CPU {3E719CAF-CE38-4412-B372-D73FFA3DFADE}.Release|Any CPU.Build.0 = Release|Any CPU - {AF91ACE5-6AE2-47B2-9BD1-064064AA910A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AF91ACE5-6AE2-47B2-9BD1-064064AA910A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AF91ACE5-6AE2-47B2-9BD1-064064AA910A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AF91ACE5-6AE2-47B2-9BD1-064064AA910A}.Release|Any CPU.Build.0 = Release|Any CPU {3238A95C-CC93-4E46-B11F-EADABDD1D17B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3238A95C-CC93-4E46-B11F-EADABDD1D17B}.Debug|Any CPU.Build.0 = Debug|Any CPU {3238A95C-CC93-4E46-B11F-EADABDD1D17B}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -118,7 +112,6 @@ Global {7EB60BDC-609B-4A73-9765-F4B9BFADB007} = {15B73811-7124-43E0-9DAF-895121B12EBA} {C38C05DD-A87C-4166-8D30-58E9305E1FB1} = {7EB60BDC-609B-4A73-9765-F4B9BFADB007} {3E719CAF-CE38-4412-B372-D73FFA3DFADE} = {C38C05DD-A87C-4166-8D30-58E9305E1FB1} - {AF91ACE5-6AE2-47B2-9BD1-064064AA910A} = {C38C05DD-A87C-4166-8D30-58E9305E1FB1} {400D49D3-87B7-4960-B553-C8693CDB5755} = {15B73811-7124-43E0-9DAF-895121B12EBA} {3238A95C-CC93-4E46-B11F-EADABDD1D17B} = {400D49D3-87B7-4960-B553-C8693CDB5755} EndGlobalSection diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index 6aeb1641..b61f431a 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -10,11 +10,16 @@ + + + + - + + @@ -23,13 +28,14 @@ - + + - + @@ -37,18 +43,20 @@ - + + - + + - + \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/AccessPackages.Aspire.csproj b/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/AccessPackages.Aspire.csproj new file mode 100644 index 00000000..a289ae62 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/AccessPackages.Aspire.csproj @@ -0,0 +1,23 @@ + + + + + Exe + net8.0 + enable + enable + true + 2163e793-201c-46c9-9d8f-a586a3aaf7b5 + + + + + + + + + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/Program.cs b/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/Program.cs new file mode 100644 index 00000000..f63c4435 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/Program.cs @@ -0,0 +1,13 @@ +using Projects; + +var builder = DistributedApplication.CreateBuilder(args); + +builder.AddProject("cli"); +builder.AddProject("api"); +builder.AddProject("web"); + +/* +builder.AddProject("brreg"); +*/ + +builder.Build().Run(); diff --git a/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/Properties/launchSettings.json b/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/Properties/launchSettings.json new file mode 100644 index 00000000..8b1da8d2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/Properties/launchSettings.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:17031;http://localhost:15251", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "DOTNET_ENVIRONMENT": "Development", + "DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21039", + "DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22174" + } + }, + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:15251", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "DOTNET_ENVIRONMENT": "Development", + "DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19065", + "DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20170" + } + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/appsettings.Development.json b/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/appsettings.json b/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/appsettings.json new file mode 100644 index 00000000..31c092aa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/AccessPackages.Aspire/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning", + "Aspire.Hosting.Dcp": "Warning" + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/Altinn.Authorization.AccessPackages.sln b/src/apps/Altinn.Authorization.AccessPackages/Altinn.Authorization.AccessPackages.sln index 3e839456..077b4c5c 100644 --- a/src/apps/Altinn.Authorization.AccessPackages/Altinn.Authorization.AccessPackages.sln +++ b/src/apps/Altinn.Authorization.AccessPackages/Altinn.Authorization.AccessPackages.sln @@ -5,30 +5,82 @@ VisualStudioVersion = 17.0.31903.59 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{9287E06E-BAF1-4F4B-B795-0B53B745DA50}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.Authorization.AccessPackages", "src\Altinn.Authorization.AccessPackages\Altinn.Authorization.AccessPackages.csproj", "{ABF49F87-89DB-4EE2-9941-A1FCFD5DE7FF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.AccessPackages.Common", "src\Altinn.Authorization.AccessPackages.Common\Altinn.Authorization.AccessPackages.Common.csproj", "{88E1FB4F-863D-479E-9AF7-E11B2E896BD4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Altinn.Authorization.AccessPackages.Models", "src\Altinn.Authorization.AccessPackages.Models\Altinn.Authorization.AccessPackages.Models.csproj", "{B19D6F9C-4F08-41B8-AE2D-DF9F9F2A43C1}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.AccessPackages.DbAccess", "src\Altinn.Authorization.AccessPackages.DbAccess\Altinn.Authorization.AccessPackages.DbAccess.csproj", "{5630D7FB-7DF6-4803-A828-A02CC21974E5}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.AccessPackages.Repo", "src\Altinn.Authorization.AccessPackages.Repo\Altinn.Authorization.AccessPackages.Repo.csproj", "{A187084E-5459-45D1-A897-56FEEEAD5879}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.AccessPackages.CLI", "src\Altinn.Authorization.AccessPackages.CLI\Altinn.Authorization.AccessPackages.CLI.csproj", "{B67A1BE1-FC3E-48A6-841D-474F27B7296F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.AccessPackages", "src\Altinn.Authorization.AccessPackages\Altinn.Authorization.AccessPackages.csproj", "{F8894253-1209-4076-ADDC-598AFFF69D12}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Styx", "..\..\..\..\..\poc\Styx\Styx\Styx.csproj", "{C8F95A18-0794-46B9-8C84-8A9138274334}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.FFB", "src\Altinn.Authorization.AccessPackages.FFB\Altinn.Authorization.FFB.csproj", "{D11A8DD1-692C-46D6-9C7A-0E2A5B468ED5}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Altinn.Authorization.Importers.BRREG", "src\Altinn.Authorization.Importers.BRREG\Altinn.Authorization.Importers.BRREG.csproj", "{FA0ECB21-12E4-4299-88A0-72D4EB5A2B86}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AccessPackages.Aspire", "AccessPackages.Aspire\AccessPackages.Aspire.csproj", "{3758A91B-C5D8-4263-B292-5E099B8F8063}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {88E1FB4F-863D-479E-9AF7-E11B2E896BD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {88E1FB4F-863D-479E-9AF7-E11B2E896BD4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {88E1FB4F-863D-479E-9AF7-E11B2E896BD4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {88E1FB4F-863D-479E-9AF7-E11B2E896BD4}.Release|Any CPU.Build.0 = Release|Any CPU + {5630D7FB-7DF6-4803-A828-A02CC21974E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5630D7FB-7DF6-4803-A828-A02CC21974E5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5630D7FB-7DF6-4803-A828-A02CC21974E5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5630D7FB-7DF6-4803-A828-A02CC21974E5}.Release|Any CPU.Build.0 = Release|Any CPU + {A187084E-5459-45D1-A897-56FEEEAD5879}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A187084E-5459-45D1-A897-56FEEEAD5879}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A187084E-5459-45D1-A897-56FEEEAD5879}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A187084E-5459-45D1-A897-56FEEEAD5879}.Release|Any CPU.Build.0 = Release|Any CPU + {B67A1BE1-FC3E-48A6-841D-474F27B7296F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B67A1BE1-FC3E-48A6-841D-474F27B7296F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B67A1BE1-FC3E-48A6-841D-474F27B7296F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B67A1BE1-FC3E-48A6-841D-474F27B7296F}.Release|Any CPU.Build.0 = Release|Any CPU + {F8894253-1209-4076-ADDC-598AFFF69D12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F8894253-1209-4076-ADDC-598AFFF69D12}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F8894253-1209-4076-ADDC-598AFFF69D12}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F8894253-1209-4076-ADDC-598AFFF69D12}.Release|Any CPU.Build.0 = Release|Any CPU + {C8F95A18-0794-46B9-8C84-8A9138274334}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C8F95A18-0794-46B9-8C84-8A9138274334}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C8F95A18-0794-46B9-8C84-8A9138274334}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C8F95A18-0794-46B9-8C84-8A9138274334}.Release|Any CPU.Build.0 = Release|Any CPU + {D11A8DD1-692C-46D6-9C7A-0E2A5B468ED5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D11A8DD1-692C-46D6-9C7A-0E2A5B468ED5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D11A8DD1-692C-46D6-9C7A-0E2A5B468ED5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D11A8DD1-692C-46D6-9C7A-0E2A5B468ED5}.Release|Any CPU.Build.0 = Release|Any CPU + {FA0ECB21-12E4-4299-88A0-72D4EB5A2B86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FA0ECB21-12E4-4299-88A0-72D4EB5A2B86}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FA0ECB21-12E4-4299-88A0-72D4EB5A2B86}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FA0ECB21-12E4-4299-88A0-72D4EB5A2B86}.Release|Any CPU.Build.0 = Release|Any CPU + {3758A91B-C5D8-4263-B292-5E099B8F8063}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3758A91B-C5D8-4263-B292-5E099B8F8063}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3758A91B-C5D8-4263-B292-5E099B8F8063}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3758A91B-C5D8-4263-B292-5E099B8F8063}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {ABF49F87-89DB-4EE2-9941-A1FCFD5DE7FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ABF49F87-89DB-4EE2-9941-A1FCFD5DE7FF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ABF49F87-89DB-4EE2-9941-A1FCFD5DE7FF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ABF49F87-89DB-4EE2-9941-A1FCFD5DE7FF}.Release|Any CPU.Build.0 = Release|Any CPU - {B19D6F9C-4F08-41B8-AE2D-DF9F9F2A43C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B19D6F9C-4F08-41B8-AE2D-DF9F9F2A43C1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B19D6F9C-4F08-41B8-AE2D-DF9F9F2A43C1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B19D6F9C-4F08-41B8-AE2D-DF9F9F2A43C1}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection GlobalSection(NestedProjects) = preSolution - {ABF49F87-89DB-4EE2-9941-A1FCFD5DE7FF} = {9287E06E-BAF1-4F4B-B795-0B53B745DA50} - {B19D6F9C-4F08-41B8-AE2D-DF9F9F2A43C1} = {9287E06E-BAF1-4F4B-B795-0B53B745DA50} + {88E1FB4F-863D-479E-9AF7-E11B2E896BD4} = {9287E06E-BAF1-4F4B-B795-0B53B745DA50} + {5630D7FB-7DF6-4803-A828-A02CC21974E5} = {9287E06E-BAF1-4F4B-B795-0B53B745DA50} + {A187084E-5459-45D1-A897-56FEEEAD5879} = {9287E06E-BAF1-4F4B-B795-0B53B745DA50} + {B67A1BE1-FC3E-48A6-841D-474F27B7296F} = {9287E06E-BAF1-4F4B-B795-0B53B745DA50} + {F8894253-1209-4076-ADDC-598AFFF69D12} = {9287E06E-BAF1-4F4B-B795-0B53B745DA50} + {C8F95A18-0794-46B9-8C84-8A9138274334} = {9287E06E-BAF1-4F4B-B795-0B53B745DA50} + {D11A8DD1-692C-46D6-9C7A-0E2A5B468ED5} = {9287E06E-BAF1-4F4B-B795-0B53B745DA50} + {FA0ECB21-12E4-4299-88A0-72D4EB5A2B86} = {9287E06E-BAF1-4F4B-B795-0B53B745DA50} + {3758A91B-C5D8-4263-B292-5E099B8F8063} = {9287E06E-BAF1-4F4B-B795-0B53B745DA50} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5EBE6D29-F6B8-4EE6-9C6C-A70E98E65748} EndGlobalSection EndGlobal diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.CLI/Altinn.Authorization.AccessPackages.CLI.csproj b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.CLI/Altinn.Authorization.AccessPackages.CLI.csproj new file mode 100644 index 00000000..295fb734 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.CLI/Altinn.Authorization.AccessPackages.CLI.csproj @@ -0,0 +1,23 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + + + + + + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.CLI/Class1.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.CLI/Class1.cs new file mode 100644 index 00000000..9bcf71fa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.CLI/Class1.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Altinn.Authorization.AccessPackages.CLI; + +public static class Telemetry +{ + public static ActivitySource Source = new ActivitySource("Altinn.Authorization.AccessPackages.CLI", "1.0.0"); +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.CLI/Program.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.CLI/Program.cs new file mode 100644 index 00000000..8126094b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.CLI/Program.cs @@ -0,0 +1,106 @@ +using Altinn.Authorization.AccessPackages.CLI; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.DbAccess.Migrate.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Altinn.Authorization.AccessPackages.Repo.Extensions; +using Altinn.Authorization.Importers.BRREG; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using OpenTelemetry; +using OpenTelemetry.Logs; +using OpenTelemetry.Resources; +using OpenTelemetry.Trace; + + + +HostApplicationBuilder builder = Host.CreateApplicationBuilder(); +builder.Configuration.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); + +builder.Services.AddLogging(); + +builder.Services.Configure(builder.Configuration.GetRequiredSection("DbObjDefConfig")); +builder.Services.AddSingleton(); + +builder.Services.Configure(builder.Configuration.GetSection("DbMigration")); +builder.Services.AddDbAccessMigrations(); + +builder.Services.Configure(builder.Configuration.GetSection("JsonIngest")); +builder.Services.AddDbAccessIngests(); + +builder.Services.AddDbAccessData(); + +builder.Services.AddSingleton(); +builder.Services.AddSingleton(); + +var host = builder.Build(); + +using var tracerProvider = Sdk.CreateTracerProviderBuilder() + .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("AccessPackages", serviceInstanceId: "cli")) + .AddSource("Altinn.Authorization.AccessPackages.Repo") + .AddOtlpExporter() + .Build(); + +using var tracerProvider2 = Sdk.CreateTracerProviderBuilder() + .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("DbAccess", serviceInstanceId: "cli")) + .AddSource("Altinn.Authorization.DbAccess") + .AddOtlpExporter() + .Build(); + +var definitions = host.Services.GetRequiredService(); +definitions.SetDatabaseDefinitions(); + +await host.Services.UseDbAccessMigrations(); +await host.Services.UseDbAccessIngests(); + +var ingestor = host.Services.GetRequiredService(); +//await ingestor.IngestAll(); + +//var importer = host.Services.GetRequiredService(); +/* +await importer.ImportUnit(); +await importer.ImportSubUnit(); +await importer.ImportRoles(); +importer.WriteChangeRefsToConsole(); +*/ + +/* Testing stuff */ + +using var a = Telemetry.Source.StartActivity(); +a?.AddEvent(new System.Diagnostics.ActivityEvent("dfdfdf")); + +var providerService = host.Services.GetRequiredService(); +var res = await providerService.Get(); +foreach (var item in res) +{ + Console.WriteLine(item.Name); +} + + +/* +// Test Provider +var providerService = host.Services.GetRequiredService(); +var providerResult = await providerService.Repo.Get(requestOption); +foreach (var item in providerResult) +{ + Console.WriteLine($"{item.Id}:{item.Name}"); +} + +// Test Variant +var variantService = host.Services.GetRequiredService(); +var variantResult = await variantService.Repo.Get(requestOption); +foreach (var item in variantResult) +{ + Console.WriteLine($"{item.Id}:{item.Name}"); +} + +// Test Package +var packageService = host.Services.GetRequiredService(); +var packageResult = await packageService.Repo.Get(requestOption); +foreach (var item in packageResult) +{ + Console.WriteLine($"{item.Id}:{item.Name}"); +} +*/ \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.CLI/appsettings.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.CLI/appsettings.json new file mode 100644 index 00000000..7ccfe3a0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.CLI/appsettings.json @@ -0,0 +1,41 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "DbObjDefConfig": { + "BaseSchema": "dbo", + "TranslationSchema": "translation", + "HistorySchema": "history", + "TranslateObjects": [ + "Area", + "AreaGroup", + "EntityType", + "Package", + "Role", + "Tag", + "TagGroup" + ], + "HistoryObjects": [""] + }, + "DataService": { + "ConnectionString": "Database=wiggin02;Host=localhost;Username=wigg;Password=jw8s0F4;Include Error Detail=true" + }, + "DbMigration": { + "ConnectionString": "Database=wiggin02;Host=localhost;Username=wigg;Password=jw8s0F4;Include Error Detail=true", + "CollectionId": "AccessPackages", + "DefaultSchema": "dbo", + "TranslationSchema": "translation", + "HistorySchema": "history" + }, + "JsonIngest": { + "BasePath": "..\\Altinn.Authorization.AccessPackages.Repo\\Ingest\\JsonData\\", + "Languages": [ + "nno", + "eng" + ] + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Altinn.Authorization.AccessPackages.Common.csproj b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Altinn.Authorization.AccessPackages.Common.csproj new file mode 100644 index 00000000..029b5c61 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Altinn.Authorization.AccessPackages.Common.csproj @@ -0,0 +1,10 @@ + + + + net8.0 + enable + enable + SA1122;SA1516;8618 + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Area.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Area.cs new file mode 100644 index 00000000..0b9a70c1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Area.cs @@ -0,0 +1,43 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// Area to organize accesspackages stuff +/// +public class Area +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// Name + /// + public string Name { get; set; } + + /// + /// Description + /// + public string Description { get; set; } + + /// + /// IconName + /// + public string IconName { get; set; } + + /// + /// GroupId + /// + public Guid GroupId { get; set; } +} + +/// +/// Extended Area +/// +public class ExtArea : Area +{ + /// + /// Group + /// + public AreaGroup Group { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/AreaGroup.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/AreaGroup.cs new file mode 100644 index 00000000..c5e4a818 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/AreaGroup.cs @@ -0,0 +1,22 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// For grouping of Areas +/// +public class AreaGroup +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// Name + /// + public string Name { get; set; } + + /// + /// Description + /// + public string Description { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Entity.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Entity.cs new file mode 100644 index 00000000..a22ad8a4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Entity.cs @@ -0,0 +1,48 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// Entity +/// +public class Entity +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// TypeId + /// + public Guid TypeId { get; set; } + + /// + /// VariantId + /// + public Guid VariantId { get; set; } + + /// + /// Name + /// + public string Name { get; set; } + + /// + /// RefId + /// + public string RefId { get; set; } +} + +/// +/// Extended Entity +/// +public class ExtEntity : Entity +{ + /// + /// Type + /// + public EntityType Type { get; set; } + + /// + /// Variant + /// + public EntityVariant Variant { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/EntityType.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/EntityType.cs new file mode 100644 index 00000000..350342b1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/EntityType.cs @@ -0,0 +1,33 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// EntityType +/// +public class EntityType +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// ProviderId + /// + public Guid ProviderId { get; set; } + + /// + /// Name + /// + public string Name { get; set; } +} + +/// +/// Extended EntityType +/// +public class ExtEntityType : EntityType +{ + /// + /// Provider + /// + public Provider Provider { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/EntityVariant.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/EntityVariant.cs new file mode 100644 index 00000000..60237143 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/EntityVariant.cs @@ -0,0 +1,38 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// EntityVariant +/// +public class EntityVariant +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// TypeId + /// + public Guid TypeId { get; set; } + + /// + /// Name + /// + public string Name { get; set; } + + /// + /// Description + /// + public string Description { get; set; } +} + +/// +/// Extended EntityVariant +/// +public class ExtEntityVariant : EntityVariant +{ + /// + /// Type + /// + public EntityType Type { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/EntityVariantRole.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/EntityVariantRole.cs new file mode 100644 index 00000000..500730ed --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/EntityVariantRole.cs @@ -0,0 +1,38 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// EntityVariantRole +/// +public class EntityVariantRole +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// VariantId + /// + public Guid VariantId { get; set; } + + /// + /// RoleId + /// + public Guid RoleId { get; set; } +} + +/// +/// Extended EntityVariantRole +/// +public class ExtEntityVariantRole : EntityVariantRole +{ + /// + /// Variant + /// + public EntityVariant Variant { get; set; } + + /// + /// Role + /// + public Role Role { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Package.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Package.cs new file mode 100644 index 00000000..3d1f0fca --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Package.cs @@ -0,0 +1,87 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// Package +/// +public class Package +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// ProviderId + /// + public Guid ProviderId { get; set; } + + /// + /// EntityTypeId + /// + public Guid EntityTypeId { get; set; } + + /// + /// AreaId + /// + public Guid AreaId { get; set; } + + /// + /// Name + /// + public string Name { get; set; } + + /// + /// Description + /// + public string Description { get; set; } + + /// + /// IsDelegable + /// + public bool IsDelegable { get; set; } +} + +/// +/// Extended Package +/// +public class ExtPackage : Package +{ + /// + /// Provider + /// + public Provider Provider { get; set; } + + /// + /// EntityType + /// + public EntityType EntityType { get; set; } + + /// + /// Area + /// + public Area Area { get; set; } +} + +public class Meta +{ + public Guid Id { get; set; } + public string Title { get; set; } + public string Ingress { get; set; } + public string Body { get; set; } +} + +public class MetaSection +{ + public Guid Id { get; set; } + public Guid MetaId { get; set; } + public string Title { get; set; } + public string Body { get; set; } +} + +public class MetaLink +{ + public Guid Id { get; set; } + public Guid MetaId { get; set; } + public string Title { get; set; } + public string Body { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/PackageDelegation.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/PackageDelegation.cs new file mode 100644 index 00000000..c994756d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/PackageDelegation.cs @@ -0,0 +1,58 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// PackageDelegation +/// +public class PackageDelegation +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// PackageId + /// + public Guid PackageId { get; set; } + + /// + /// ForId + /// + public Guid ForId { get; set; } + + /// + /// ToId + /// + public Guid ToId { get; set; } + + /// + /// ById + /// + public Guid ById { get; set; } +} + +/// +/// Extended PackageDelegation +/// +public class ExtPackageDelegation : PackageDelegation +{ + /// + /// Package + /// + public Package Package { get; set; } + + /// + /// For (Entity) + /// + public Entity For { get; set; } + + /// + /// To (Entity) + /// + public Entity To { get; set; } + + /// + /// By (Entity) + /// + public Entity By { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/PackageResource.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/PackageResource.cs new file mode 100644 index 00000000..e2adaa0a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/PackageResource.cs @@ -0,0 +1,53 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// PackageResource +/// +public class PackageResource +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// PackageId + /// + public Guid PackageId { get; set; } + + /// + /// ResourceId + /// + public Guid ResourceId { get; set; } + + /// + /// Read + /// + public bool Read { get; set; } + + /// + /// Write + /// + public bool Write { get; set; } + + /// + /// Sign + /// + public bool Sign { get; set; } +} + +/// +/// Extended PackageResource +/// +public class ExtPackageResource : PackageResource +{ + /// + /// Package + /// + public Package Package { get; set; } + + /// + /// Resource + /// + public Resource Resource { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/PackageTag.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/PackageTag.cs new file mode 100644 index 00000000..894bbcbe --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/PackageTag.cs @@ -0,0 +1,38 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// PackageTag +/// +public class PackageTag +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// PackageId + /// + public Guid PackageId { get; set; } + + /// + /// TagId + /// + public Guid TagId { get; set; } +} + +/// +/// Extended PackageTag +/// +public class ExtPackageTag : PackageTag +{ + /// + /// Package + /// + public Package Package { get; set; } + + /// + /// Tag + /// + public Tag Tag { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Provider.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Provider.cs new file mode 100644 index 00000000..3d1a410f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Provider.cs @@ -0,0 +1,17 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// Provider +/// +public class Provider +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// Name + /// + public string Name { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Resource.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Resource.cs new file mode 100644 index 00000000..e866e4a8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Resource.cs @@ -0,0 +1,53 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// Resource +/// +public class Resource +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// ProviderId + /// + public Guid ProviderId { get; set; } + + /// + /// GroupId + /// + public Guid GroupId { get; set; } + + /// + /// TypeId + /// + public Guid TypeId { get; set; } + + /// + /// Name + /// + public string Name { get; set; } +} + +/// +/// Extended Resource +/// +public class ExtResource : Resource +{ + /// + /// Provider + /// + public Provider Provider { get; set; } + + /// + /// Group + /// + public ResourceGroup Group { get; set; } + + /// + /// Type + /// + public ResourceType Type { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/ResourceGroup.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/ResourceGroup.cs new file mode 100644 index 00000000..1d5bc548 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/ResourceGroup.cs @@ -0,0 +1,33 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// ResourceGroup +/// +public class ResourceGroup +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// ProviderId + /// + public Guid ProviderId { get; set; } + + /// + /// Name + /// + public string Name { get; set; } +} + +/// +/// Extended ResourceGroup +/// +public class ExtResourceGroup : ResourceGroup +{ + /// + /// Provider + /// + public Provider Provider { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/ResourceType.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/ResourceType.cs new file mode 100644 index 00000000..17db048c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/ResourceType.cs @@ -0,0 +1,17 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// ResourceType +/// +public class ResourceType +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// Name + /// + public string Name { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Role.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Role.cs new file mode 100644 index 00000000..8ea61b32 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Role.cs @@ -0,0 +1,63 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// Role +/// +public class Role +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// EntityTypeId + /// e.g Organization + /// + public Guid EntityTypeId { get; set; } + + /// + /// ProviderId + /// + public Guid ProviderId { get; set; } + + /// + /// Name + /// e.g Dagligleder + /// + public string Name { get; set; } + + /// + /// Code + /// e.g DAGL + /// + public string Code { get; set; } + + /// + /// Description + /// e.g The main operator of the organization + /// + public string Description { get; set; } + + /// + /// Urn + /// e.g altinn:role:dagl + /// + public string Urn { get; set; } +} + +/// +/// Extended Role +/// +public class ExtRole : Role +{ + /// + /// EntityType + /// + public EntityType EntityType { get; set; } + + /// + /// Provider + /// + public Provider Provider { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/RoleAssignment.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/RoleAssignment.cs new file mode 100644 index 00000000..0bfcba94 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/RoleAssignment.cs @@ -0,0 +1,48 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// RoleAssignment +/// +public class RoleAssignment +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// RoleId + /// + public Guid RoleId { get; set; } + + /// + /// ForId + /// + public Guid ForId { get; set; } + + /// + /// ToId + /// + public Guid ToId { get; set; } +} + +/// +/// Extended RoleAssignment +/// +public class ExtRoleAssignment : RoleAssignment +{ + /// + /// Role + /// + public Role Role { get; set; } + + /// + /// For (Entity) + /// + public Entity For { get; set; } + + /// + /// To (Entity) + /// + public Entity To { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/RoleMap.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/RoleMap.cs new file mode 100644 index 00000000..bac4e5ad --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/RoleMap.cs @@ -0,0 +1,39 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// RoleMap +/// Entities with a one roile can also get another one +/// +public class RoleMap +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// HasRoleId + /// + public Guid HasRoleId { get; set; } + + /// + /// GetRoleId + /// + public Guid GetRoleId { get; set; } +} + +/// +/// Extended RoleMap +/// +public class ExtRoleMap : RoleMap +{ + /// + /// HasRole (Role) + /// + public Role HasRole { get; set; } + + /// + /// GetRole (Role) + /// + public Role GetRole { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/RolePackage.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/RolePackage.cs new file mode 100644 index 00000000..a16de1d1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/RolePackage.cs @@ -0,0 +1,60 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// RolePackage +/// +public class RolePackage +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// RoleId + /// + public Guid RoleId { get; set; } + + /// + /// PackageId + /// + public Guid PackageId { get; set; } + + /// + /// EntityVariantId (optional) + /// + public Guid? EntityVariantId { get; set; } + + /// + /// IsActor + /// TODO : Rename => HasAccess + /// + public bool IsActor { get; set; } // Is this the right place? Or is it Package Permission? No.... Or PackageResource? + + /// + /// IsAdmin + /// TODO : Rename => CanDelegate + /// + public bool IsAdmin { get; set; } // Is this the right place? +} + +/// +/// Extended RolePackage +/// +public class ExtRolePackage : RolePackage +{ + /// + /// Role + /// + public Role Role { get; set; } + + /// + /// Package + /// + public Package Package { get; set; } + + /// + /// Variant (optional) + /// + public EntityVariant? EntityVariant { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Tag.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Tag.cs new file mode 100644 index 00000000..5c798dee --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/Tag.cs @@ -0,0 +1,43 @@ +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// Tag +/// +public class Tag +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// GroupId + /// + public Guid? GroupId { get; set; } + + /// + /// ParentId + /// + public Guid? ParentId { get; set; } + + /// + /// Name + /// + public string Name { get; set; } +} + +/// +/// Extended tag +/// +public class ExtTag : Tag +{ + /// + /// Group (optional) + /// + public TagGroup? Group { get; set; } + + /// + /// Parent (optional) + /// + public Tag? Parent { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/TagGroup.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/TagGroup.cs new file mode 100644 index 00000000..6d41e385 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Common/Models/TagGroup.cs @@ -0,0 +1,31 @@ +using System.Diagnostics.CodeAnalysis; + +namespace Altinn.Authorization.AccessPackages.Models; + +/// +/// TagGroup +/// +public class TagGroup +{ + /// + /// Id + /// + public Guid Id { get; set; } + + /// + /// Name + /// + public string Name { get; set; } +} + +/// +/// TagGroup +/// +[Experimental("ExpandList")] +public class ExtTagGroup : TagGroup +{ + /// + /// Tags + /// + public IEnumerable Tags { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Altinn.Authorization.AccessPackages.DbAccess.csproj b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Altinn.Authorization.AccessPackages.DbAccess.csproj new file mode 100644 index 00000000..8d170056 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Altinn.Authorization.AccessPackages.DbAccess.csproj @@ -0,0 +1,24 @@ + + + + net8.0 + enable + enable + SA1122;SA1516;CS8618;CA1860 + + + + + + + + + + + + + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbBasicConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbBasicConverter.cs new file mode 100644 index 00000000..927dfa65 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbBasicConverter.cs @@ -0,0 +1,25 @@ +using System.Data; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; + +/// +/// Converters for rows to objects +/// +/// BasicType +public interface IDbBasicConverter +{ + /// + /// Convert list of basic object from DataReader + /// + /// IDataReader + /// + List ConvertBasic(IDataReader reader); + + /// + /// Convert single basic object from DataReader + /// + /// IDataReader + /// Column prefix + /// + T? ConvertSingleBasic(IDataReader reader, string prefix); +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbBasicDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbBasicDataService.cs new file mode 100644 index 00000000..564c1def --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbBasicDataService.cs @@ -0,0 +1,145 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; + +/// +/// Basic data service +/// +/// +public interface IDbBasicDataService +{ + /// + /// Data repository + /// + IDbBasicRepo Repo { get; } + + /// + /// Get all entities + /// + /// RequestOptions + /// CancellationToken + /// T representing the result of the asynchronous operation. + Task> Get(RequestOptions? options = null, CancellationToken cancellationToken = default); + + /// + /// Get single entity based on identity + /// + /// Identity + /// RequestOptions + /// CancellationToken + /// T representing the result of the asynchronous operation. + Task Get(Guid id, RequestOptions? options = null, CancellationToken cancellationToken = default); + + /// + /// Get Entities based on property and value + /// + /// Filter property + /// Filter value + /// RequestOptions + /// CancellationToken + /// T representing the result of the asynchronous operation. + Task> Get(string property, Guid value, RequestOptions? options = null, CancellationToken cancellationToken = default); + + /// + /// Get Entities based on property and value + /// + /// Filter property + /// Filter value + /// RequestOptions + /// CancellationToken + /// T representing the result of the asynchronous operation. + Task> Get(string property, int value, RequestOptions? options = null, CancellationToken cancellationToken = default); + + /// + /// Get Entities based on property and value + /// + /// Filter property + /// Filter value + /// RequestOptions + /// CancellationToken + /// T representing the result of the asynchronous operation. + Task> Get(string property, string value, RequestOptions? options = null, CancellationToken cancellationToken = default); + + /// + /// Get Entities based on filters + /// + /// Filters + /// RequestOptions + /// CancellationToken + /// T representing the result of the asynchronous operation. + Task> Get(Dictionary parameters, RequestOptions? options = null, CancellationToken cancellationToken = default); + + /// + /// Search for entities + /// + /// Term to filter on + /// RequestOptions + /// CancellationToken + /// T representing the result of the asynchronous operation. + Task> Search(string term, RequestOptions? options = null, CancellationToken cancellationToken = default); + + /// + /// Search for entities + /// + /// Term to filter on + /// RequestOptions + /// CancellationToken + /// T representing the result of the asynchronous operation. + Task<(IEnumerable Data, PagedResult PageInfo)> SearchPaged(string term, RequestOptions options, CancellationToken cancellationToken = default); + + /// + /// Create entity + /// + /// Entity to create + /// CancellationToken + Task Create(T entity, CancellationToken cancellationToken = default); + + /// + /// Create entities + /// + /// Entities to create + /// CancellationToken + Task Create(List entities, CancellationToken cancellationToken = default); + + /// + /// Update entity + /// + /// Identity + /// Entity to update + /// CancellationToken + Task Update(Guid id, T entity, CancellationToken cancellationToken = default); + + /// + /// Update single property on entity + /// + /// Identity + /// Property to update + /// Updated value + /// CancellationToken + Task Update(Guid id, string property, string value, CancellationToken cancellationToken = default); + + /// + /// Update single property on entity + /// + /// Identity + /// Property to update + /// Updated value + /// CancellationToken + Task Update(Guid id, string property, int value, CancellationToken cancellationToken = default); + + /// + /// Update single property on entity + /// + /// Identity + /// Property to update + /// Updated value + /// CancellationToken + Task Update(Guid id, string property, Guid value, CancellationToken cancellationToken = default); + + /// + /// Delete entity + /// + /// Identity + /// CancellationToken + Task Delete(Guid id, CancellationToken cancellationToken = default); +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbBasicRepo.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbBasicRepo.cs new file mode 100644 index 00000000..4fcbdd19 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbBasicRepo.cs @@ -0,0 +1,91 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Npgsql; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; + +/// +/// Basic data access +/// +/// +public interface IDbBasicRepo +{ + #region NEW + + /// + /// Get single entity based on identity + /// + /// GenericFilter + /// RequestOptions + /// CancellationToken + /// T representing the result of the asynchronous operation. + Task> Get(List? parameters = null, RequestOptions? options = null, CancellationToken cancellationToken = default); + + /// + /// Create entity + /// + /// Entity to create + /// CancellationToken + Task Create(T entity, CancellationToken cancellationToken = default); + + /// + /// Update single property on entity + /// + /// Identity + /// GenericParameters + /// CancellationToken + Task Update(Guid id, List parameters, CancellationToken cancellationToken = default); + + /// + /// Update entity + /// + /// Identity + /// Entity to update + /// CancellationToken + Task Update(Guid id, T entity, CancellationToken cancellationToken = default); + + /// + /// Delete entity + /// + /// Identity + /// CancellationToken + Task Delete(Guid id, CancellationToken cancellationToken = default); + + /// + /// Search for entities + /// + /// Term to filter on + /// RequestOptions + /// CancellationToken + /// T representing the result of the asynchronous operation. + Task<(IEnumerable Data, PagedResult PageInfo)> Search(string term, RequestOptions options, CancellationToken cancellationToken = default); + #endregion + + #region OLD + + /// + /// Ingest entities using bulk methods + /// + /// Entities to ingest + /// CancellationToken + /// + Task Ingest(List data, CancellationToken cancellationToken = default); + + /// + /// Creates translation for entity + /// + /// Entity to create translation for + /// Languagecode (e.g nob, bbo, eng) + /// CancellationToken + Task CreateTranslation(T entity, string language, CancellationToken cancellationToken = default); + + /// + /// Updates translation for entity + /// + /// Identity + /// Entity to update translation for + /// Languagecode (e.g nob, bbo, eng) + /// CancellationToken + Task UpdateTranslation(Guid id, T entity, string language, CancellationToken cancellationToken = default); + + #endregion +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbCrossConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbCrossConverter.cs new file mode 100644 index 00000000..496806b9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbCrossConverter.cs @@ -0,0 +1,26 @@ +using System.Data; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; + +/// +/// Converters for rows to extendedobjects +/// +/// A Table +/// Cross join table +/// B Table +public interface IDbCrossConverter : IDbBasicConverter +{ + /// + /// Convert list of TA objects from DataReader + /// + /// IDataReader + /// + List ConvertA(IDataReader reader); + + /// + /// Convert list of TB objects from DataReader + /// + /// IDataReader + /// + List ConvertB(IDataReader reader); +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbCrossDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbCrossDataService.cs new file mode 100644 index 00000000..5866b2a1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbCrossDataService.cs @@ -0,0 +1,33 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; + +/// +/// Data repo interface for cross joined objects +/// +/// TA Type +/// Cross Type +/// TB Type +public interface IDbCrossDataService : IDbBasicDataService +{ + /// + /// Actual repo implementation + /// + IDbCrossRepo CrossRepo { get; } + + /// + /// Using a cross join table to return TA objects based on TB.Id + /// + /// Identity for TB object + /// RequestOptions + /// + Task> GetA(Guid BId, RequestOptions? options = null); + + /// + /// Using a cross join table to return TB objects based on TA.Id + /// + /// Identity for TA object + /// RequestOptions + /// + Task> GetB(Guid AId, RequestOptions? options = null); +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbCrossRepo.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbCrossRepo.cs new file mode 100644 index 00000000..e9fd22cb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbCrossRepo.cs @@ -0,0 +1,37 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; + +/// +/// Interface to retrive data from cross join tables +/// +/// A Table +/// Cross join table +/// B Table +public interface IDbCrossRepo : IDbBasicRepo +{ + /// + /// Override default column names for the cross table + /// + /// Columnname in TResult for TA + /// Columnname in TResult for TB + void SetCrossColumns(string xAColumn, string xBColumn); + + /// + /// Using a cross join table to return TA objects based on TB.Id + /// + /// Identity for TB object + /// RequestOptions + /// CancellationToken + /// + Task> ExecuteForA(Guid BId, RequestOptions? options = null, CancellationToken cancellationToken = default); + + /// + /// Using a cross join table to return TB objects based on TA.Id + /// + /// Identity for TA object + /// RequestOptions + /// CancellationToken + /// + Task> ExecuteForB(Guid AId, RequestOptions? options = null, CancellationToken cancellationToken = default); +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbExtendedConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbExtendedConverter.cs new file mode 100644 index 00000000..3306dbb6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbExtendedConverter.cs @@ -0,0 +1,18 @@ +using System.Data; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; + +/// +/// Converters for rows to extendedobjects +/// +/// BasicType +/// ExtendedType +public interface IDbExtendedConverter : IDbBasicConverter +{ + /// + /// Convert list of extended objects from DataReader + /// + /// IDataReader + /// + List ConvertExtended(IDataReader reader); +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbExtendedDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbExtendedDataService.cs new file mode 100644 index 00000000..b335998e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbExtendedDataService.cs @@ -0,0 +1,61 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; + +/// +/// Data repo interface for extended objects +/// +/// Base Type +/// Extendtet Type +public interface IDbExtendedDataService : IDbBasicDataService +{ + /// + /// Actual repo implementation + /// + IDbExtendedRepo ExtendedRepo { get; } + + /// + /// Get all + /// + /// RequestOptions + Task> GetExtended(RequestOptions? options = null); + + /// + /// Get based on property + /// + /// Filter property + /// Filter value + /// RequestOptions + Task> GetExtended(string property, Guid value, RequestOptions? options = null); + + /// + /// Get based on property + /// + /// Filter property + /// Filter value + /// RequestOptions + Task> GetExtended(string property, int value, RequestOptions? options = null); + + /// + /// Get based on property + /// + /// Filter property + /// Filter value + /// RequestOptions + Task> GetExtended(string property, string value, RequestOptions? options = null); + + /// + /// Get based on identifer + /// + /// Identifier + /// RequestOptions + Task GetExtended(Guid id, RequestOptions? options = null); + + /// + /// Search + /// + /// Searchterm + /// RequestOptions + /// Starts with + Task<(IEnumerable Data, PagedResult PageInfo)> SearchExtended(string term, RequestOptions options, bool startsWith = false); +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbExtendedRepo.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbExtendedRepo.cs new file mode 100644 index 00000000..5aa0e26e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Contracts/IDbExtendedRepo.cs @@ -0,0 +1,36 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; + +/// +/// Extended repo for extendable objects +/// +/// BaseType (e.g EntityType) +/// ExtendedType (e.g ExtEntityType) +public interface IDbExtendedRepo : IDbBasicRepo +{ + /// + /// Get extended object + /// + /// GenericFilter + /// RequestOptions + Task> GetExtended(List? filters = null, RequestOptions? options = null); + + /// + /// Search + /// + /// Searchterm + /// RequestOptions + /// Starts with + Task<(IEnumerable Data, PagedResult PageInfo)> SearchExtended(string term, RequestOptions options, bool startsWith = false); + + /// + /// Adds join to configuration + /// + /// + /// Alias + /// Property on base object to join from + /// Property on join object to join to + /// Is this optional + void Join(string alias = "", string baseJoinProperty = "", string joinProperty = "Id", bool optional = false); +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DataTypes.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DataTypes.cs new file mode 100644 index 00000000..ecaef7ad --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DataTypes.cs @@ -0,0 +1,66 @@ +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +/// +/// Common DataTypes +/// +public static class DataTypes +{ + /// + /// Guid + /// + public static CommonDataType Guid => new("uniqueidentifier", "uuid"); + + /// + /// Bool + /// + public static CommonDataType Bool => new("bit", "boolean"); + + /// + /// Int + /// + public static CommonDataType Int => new("int", "int"); + + /// + /// String + /// + /// Length (default: 250) + /// + public static CommonDataType String(int length = 250) => new($"nvarchar({length})", "text"); + + /// + /// StringMax + /// + public static CommonDataType StringMax => new("nvarchar(max)", "text"); + + /// + /// DateTimeOffset + /// + public static CommonDataType DateTimeOffset => new("datetimeoffset(7)", "timestamptz"); +} + +/// +/// Common DataType +/// +public readonly struct CommonDataType +{ + /// + /// Initializes a new instance of the struct. + /// + /// MSSQL variant + /// Postgres variant + public CommonDataType(string mssql, string postgres) : this() + { + MsSql = mssql; + Postgres = postgres; + } + + /// + /// MSSQL variant + /// + public string Postgres { get; } + + /// + /// Postgres variant + /// + public string MsSql { get; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DbDefinitions.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DbDefinitions.cs new file mode 100644 index 00000000..7b22b96f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DbDefinitions.cs @@ -0,0 +1,42 @@ +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +/// +/// Static resource holding Database Definitions () +/// +public static class DbDefinitions +{ + private static Dictionary DbObjects { get; set; } = new Dictionary(); + + /// + /// Add a definition + /// + /// Type + /// DbObjDefConfig + public static void Add(DbObjDefConfig config) + { + if (!DbObjects.ContainsKey(typeof(T))) + { + DbObjects.Add(typeof(T), new ObjectDefinition(typeof(T), config)); + } + } + + /// + /// Gets a definition + /// + /// Type + /// + public static ObjectDefinition? Get() + { + return Get(type: typeof(T)); + } + + /// + /// Gets a definition + /// + /// Type + /// + public static ObjectDefinition? Get(Type type) + { + return DbObjects.ContainsKey(type) ? DbObjects.First(t => t.Key == type).Value : null; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DbObjDefConfig.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DbObjDefConfig.cs new file mode 100644 index 00000000..9e3ab3c3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DbObjDefConfig.cs @@ -0,0 +1,34 @@ +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +/// +/// Database Object Configuration +/// +public class DbObjDefConfig +{ + /// + /// Base schema + /// + public string BaseSchema { get; set; } + + /// + /// Translation schema + /// + public string TranslationSchema { get; set; } + + /// + /// History schema + /// + public string HistorySchema { get; set; } + + /// + /// Ovbjects with translations + /// + public List TranslateObjects { get; set; } + + /// + /// Objects with history + /// + public List HistoryObjects { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DbObject.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DbObject.cs new file mode 100644 index 00000000..1cda5702 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DbObject.cs @@ -0,0 +1,86 @@ +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +/// +/// Database Object +/// +public class DbObject +{ + /// + /// Type + /// + public Type Type { get; set; } + + /// + /// Schema + /// + public string Schema { get; set; } + + /// + /// Name + /// + public string Name { get; set; } + + /// + /// Alias + /// + public string Alias { get; set; } + + /// + /// Initializes a new instance of the class. + /// + /// Type + /// Name + /// Schema + /// Alias + public DbObject(Type type, string name, string schema, string alias = "") + { + Type = type; + Name = name; + Schema = schema; + Alias = string.IsNullOrEmpty(alias) ? name : alias; + } + + /// + /// Gets Sql definition + /// + /// Include alias (default: true) + /// Use AsOf (default: false) + /// + public string GetSqlDefinition(bool includeAlias = true, bool useAsOf = false) + { + var res = $"[{Schema}].[{Name}]"; + if (useAsOf) + { + res += " FOR SYSTEM_TIME AS OF @_AsOf "; + } + + if (includeAlias) + { + res += $" AS [{Alias}]"; + } + + return res; + } + + /// + /// Gets Postgres definition + /// + /// Include alias (default: true) + /// Use AsOf (default: false) + /// + public string GetPostgresDefinition(bool includeAlias = true, bool useAsOf = false) + { + var res = $"{Schema}.{Name}"; + if (useAsOf) + { + Console.WriteLine("AsOf feature is not available on postgres"); + } + + if (includeAlias) + { + res += $" AS {Alias}"; + } + + return res; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DbPageResult.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DbPageResult.cs new file mode 100644 index 00000000..64deee59 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/DbPageResult.cs @@ -0,0 +1,18 @@ +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +/// +/// DbPageResult +/// Used to extract data from query result +/// +public class DbPageResult +{ + /// + /// Total pages + /// + public int TotalPages { get; set; } + + /// + /// Total items + /// + public int TotalItems { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/GenericFilter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/GenericFilter.cs new file mode 100644 index 00000000..9b44b593 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/GenericFilter.cs @@ -0,0 +1,126 @@ +using System.Data.SqlClient; +using Npgsql; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +/// +/// Generic filter +/// +public class GenericFilter +{ + /// + /// Key + /// + public string Key { get; set; } + + /// + /// Comparer + /// + public DbOperator Comparer { get; set; } + + /// + /// Value + /// + public object Value { get; set; } + + /// + /// Constructor + /// + public GenericFilter(string key, object value, DbOperator? comparer = null) + { + Key = key; + Comparer = comparer ?? DbOperators.EqualTo; + Value = value; + } +} + +/// +/// DbOperators +/// +public static class DbOperators +{ + /// + /// EqualTo + /// + public static DbOperator EqualTo => new("=", "{$Key} = {$Value}"); + + /// + /// NotEqualTo + /// + public static DbOperator NotEqualTo => new("<>", "{$Key} <> {$Value}"); + + /// + /// In + /// + public static DbOperator In => new("in", "{$Key} IN({$Value})"); + + /// + /// NotIn + /// + public static DbOperator NotIn => new("not in", "{$Key} NOT IN({$Value})"); + + /// + /// Contains + /// + public static DbOperator Contains => new("like", "{$Key} LIKE '%{$}%'"); + + /// + /// NotContains + /// + public static DbOperator NotContains => new("not like", "{$Key} NOT LIKE '%{$Value}%'"); + + /// + /// StartsWith + /// + public static DbOperator StartsWith => new("like", "LIKE '{$}%'"); + + /// + /// EndsWith + /// + public static DbOperator EndsWith => new("like", "LIKE '%{$}'"); +} + +/// +/// DbOperator +/// +/// Name (used for ToString override) +/// Code +public readonly struct DbOperator(string name, string code) +{ + /// + /// Name (used for ToString override) + /// + public string Name { get; } = name; + + /// + /// Code + /// + public string Code { get; } = code; + + /// + /// Returns Name + /// + /// + public override string ToString() + { + return Name; + } +} + +/// +/// Generic Parameter +/// +/// Key +/// Value +public class GenericParameter(string key, object value) +{ + /// + /// Key + /// + public string Key { get; set; } = key; + + /// + /// Value + /// + public object Value { get; set; } = value; +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/Join.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/Join.cs new file mode 100644 index 00000000..13ae3a62 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/Join.cs @@ -0,0 +1,66 @@ +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +/// +/// Join definition +/// +public class Join +{ + /// + /// Alias + /// + public string Alias { get; set; } + + /// + /// Join is optional + /// + public bool Optional { get; set; } + + /// + /// DbObject that holds the refrenceId + /// e.g. Entity + /// + public ObjectDefinition BaseObj { get; set; } + + /// + /// Refrence column on BaseObj + /// e.g. GroupId + /// + public string BaseJoinProperty { get; set; } + + /// + /// DbObject that is refrenced + /// e.g. Group + /// + public ObjectDefinition JoinObj { get; set; } + + /// + /// Column in JoinObj that is refrenced + /// e.g. Id + /// + public string JoinProperty { get; set; } + + /// + /// Additional filter on for the join statement + /// e.g. delete is null + /// + public List Filter { get; set; } = []; + + /// + /// Initializes a new instance of the class. + /// + /// Alias + /// Base objecttype + /// Join objecttype + /// Base join property + /// Join property + /// Optional + public Join(string alias, Type baseType, Type joinType, string baseJoinProperty = "", string joinProperty = "Id", bool optional = false) + { + BaseObj = DbDefinitions.Get(baseType) ?? throw new Exception($"Definition for '{baseType.Name}' not found"); + JoinObj = DbDefinitions.Get(joinType) ?? throw new Exception($"Definition for '{joinType.Name}' not found"); + Alias = alias; + BaseJoinProperty = string.IsNullOrEmpty(baseJoinProperty) ? alias + "Id" : baseJoinProperty; + JoinProperty = joinProperty; + Optional = optional; + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/ObjectDefinition.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/ObjectDefinition.cs new file mode 100644 index 00000000..09eb1da7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/ObjectDefinition.cs @@ -0,0 +1,68 @@ +using System.Reflection; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +/// +/// Database Object Definition +/// +public class ObjectDefinition +{ + /// + /// Base object definition + /// + public DbObject BaseDbObject { get; set; } + + /// + /// Translation object definition + /// + public DbObject TranslationDbObject { get; set; } + + /// + /// History object definition + /// + public DbObject HistoryDbObject { get; set; } + + /// + /// Use translation + /// + public bool UseTranslation { get; set; } = false; + + /// + /// Use history + /// + public bool UseHistory { get; set; } = false; + + /// + /// Properties + /// + public Dictionary Properties { get; set; } + + /// + /// New Database Object Definition + /// + /// Type + /// DbObjDefConfig + public ObjectDefinition(Type type, DbObjDefConfig config) + { + var name = type.Name; + Properties = new Dictionary(); + foreach (var property in type.GetProperties()) + { + Properties.Add(property.Name, property); + } + + BaseDbObject = new DbObject(type, name, config.BaseSchema, name); + TranslationDbObject = new DbObject(type, name, config.TranslationSchema, "Translation" + name); + HistoryDbObject = new DbObject(type, name, config.HistorySchema, "History" + name); + + if (config.TranslateObjects != null && config.TranslateObjects.Contains(name)) + { + UseTranslation = true; + } + + if (config.HistoryObjects != null && config.HistoryObjects.Contains(name)) + { + UseHistory = true; + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/PagedResult.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/PagedResult.cs new file mode 100644 index 00000000..ae370885 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/PagedResult.cs @@ -0,0 +1,36 @@ +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +/// +/// To be formated to HTTP Headers +/// +public class PagedResult +{ + /// + /// Current page + /// Header: x-page-current + /// + public int CurrentPage { get; set; } + + /// + /// Item count + /// Header: x-page-itemcount + /// + public int ItemCount { get; set; } + + /// + /// Page size + /// Header: x-page-size + /// + public int PageSize { get; set; } + + /// + /// Page count + /// Header: x-page-count + /// + public int PageCount { get; set; } + + /// + /// Links + /// + public Dictionary Links { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/RequestOptions.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/RequestOptions.cs new file mode 100644 index 00000000..1af760c5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Models/RequestOptions.cs @@ -0,0 +1,37 @@ +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +/// +/// RequestOptions +/// +public class RequestOptions +{ + /// + /// Language + /// + public string Language { get; set; } + + /// + /// AsOf + /// + public DateTimeOffset? AsOf { get; set; } + + /// + /// OrderBy + /// + public string OrderBy { get; set; } + + /// + /// UsePaging (default: false) + /// + public bool UsePaging { get; set; } = false; + + /// + /// PageSize (default: 25) + /// + public int PageSize { get; set; } = 25; + + /// + /// PageNumber (default: 1) + /// + public int PageNumber { get; set; } = 1; +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/BaseCrossDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/BaseCrossDataService.cs new file mode 100644 index 00000000..128b6f11 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/BaseCrossDataService.cs @@ -0,0 +1,34 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Services; + +/// +public class BaseCrossDataService : BaseDataService, IDbCrossDataService +{ + /// + /// Cross repo + /// + public IDbCrossRepo CrossRepo { get; } + + /// + /// Base data service + /// + /// ExtendedRepo + public BaseCrossDataService(IDbCrossRepo repo) : base(repo) + { + CrossRepo = repo; + } + + /// + public async Task> GetA(Guid bId, RequestOptions? options = null) + { + return await CrossRepo.ExecuteForA(bId, options); + } + + /// + public async Task> GetB(Guid aId, RequestOptions? options = null) + { + return await CrossRepo.ExecuteForB(aId, options); + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/BaseDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/BaseDataService.cs new file mode 100644 index 00000000..f102a60f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/BaseDataService.cs @@ -0,0 +1,159 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Microsoft.Extensions.Logging; +using Npgsql; +using OpenTelemetry; +using OpenTelemetry.Metrics; +using OpenTelemetry.Trace; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Services; + +public static class Logs +{ + public static ILoggerFactory LoggerFactory { get; set; } = new LoggerFactory(); + +} + +/// +public class BaseDataService : IDbBasicDataService +{ + /// + /// Extended repo + /// + public IDbBasicRepo Repo { get; } + public ILogger Logger { get; } + + /// + /// Base data service + /// + /// ExtendedRepo + public BaseDataService(IDbBasicRepo repo) + { + Repo = repo; + Logger = Logs.LoggerFactory.CreateLogger(typeof(BaseDataService)); + } + + /// + public async Task> Get(RequestOptions? options = null, CancellationToken cancellationToken = default) + { + using var a = Telemetry.StartActivity("Get"); + return await Repo.Get(parameters: new List(), options, cancellationToken: cancellationToken); + } + + /// + public async Task Get(Guid id, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + using var a = Telemetry.StartActivity("Get"); + try + { + var res = await Repo.Get([new GenericFilter("Id", id)], options, cancellationToken: cancellationToken); + if (res != null) + { + return res.First(); + } + + return default; + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + throw; + } + } + + /// + public async Task> Get(string property, Guid value, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + using var a = Telemetry.StartActivity("Get"); + return await Repo.Get([new GenericFilter(property, value)], options, cancellationToken: cancellationToken); + } + + /// + public async Task> Get(string property, int value, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + using var a = Telemetry.StartActivity("Get"); + return await Repo.Get([new GenericFilter(property, value)], options, cancellationToken: cancellationToken); + } + + /// + public async Task> Get(string property, string value, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + using var a = Telemetry.StartActivity("Get"); + return await Repo.Get([new GenericFilter(property, value)], options, cancellationToken: cancellationToken); + } + + /// + public async Task> Get(Dictionary parameters, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + using var a = Telemetry.StartActivity("Get"); + var param = new List(); + foreach (var p in parameters) + { + param.Add(new GenericFilter(p.Key, p.Value)); + } + + return await Repo.Get(param, options, cancellationToken: cancellationToken); + } + + /// + public async Task> Search(string term, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + using var a = Telemetry.StartActivity("Search"); + return await Repo.Get([new GenericFilter("Name", term, comparer: DbOperators.Contains)], options, cancellationToken: cancellationToken); + } + + /// + public Task<(IEnumerable Data, PagedResult PageInfo)> SearchPaged(string term, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + using var a = Telemetry.StartActivity("SearchPaged"); + return Repo.Search(term, options ?? new RequestOptions(), cancellationToken); + } + + /// + public async Task Create(List entities, CancellationToken cancellationToken = default) + { + int count = 0; + foreach (var entity in entities) + { + count += await Create(entity, cancellationToken: cancellationToken); + } + + return count; + } + + /// + public async Task Create(T entity, CancellationToken cancellationToken = default) + { + return await Repo.Create(entity, cancellationToken: cancellationToken); + } + + /// + public async Task Update(Guid id, T entity, CancellationToken cancellationToken = default) + { + return await Repo.Update(id, entity, cancellationToken: cancellationToken); + } + + /// + public async Task Update(Guid id, string property, Guid value, CancellationToken cancellationToken = default) + { + return await Repo.Update(id, [new GenericParameter(property, value)], cancellationToken: cancellationToken); + } + + /// + public async Task Update(Guid id, string property, string value, CancellationToken cancellationToken = default) + { + return await Repo.Update(id, [new GenericParameter(property, value)], cancellationToken: cancellationToken); + } + + /// + public async Task Update(Guid id, string property, int value, CancellationToken cancellationToken = default) + { + return await Repo.Update(id, [new GenericParameter(property, value)], cancellationToken: cancellationToken); + } + + /// + public async Task Delete(Guid id, CancellationToken cancellationToken = default) + { + return await Repo.Delete(id, cancellationToken); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/BaseExtendedDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/BaseExtendedDataService.cs new file mode 100644 index 00000000..22eac5dd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/BaseExtendedDataService.cs @@ -0,0 +1,64 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Services; + +/// +public class BaseExtendedDataService : BaseDataService, IDbExtendedDataService +{ + /// + /// Extended repo + /// + public IDbExtendedRepo ExtendedRepo { get; } + + /// + /// Base data service + /// + /// ExtendedRepo + public BaseExtendedDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo = repo; + } + + /// + public async Task GetExtended(Guid id, RequestOptions? options = null) + { + var result = await ExtendedRepo.GetExtended([new GenericFilter("Id", id)], options); + if (result != null) + { + return result.First(); + } + + throw new Exception("Not found"); + } + + /// + public async Task> GetExtended(RequestOptions? options = null) + { + return await ExtendedRepo.GetExtended(filters: [], options: options); + } + + /// + public async Task> GetExtended(string property, string value, RequestOptions? options = null) + { + return await ExtendedRepo.GetExtended([new GenericFilter(property, value)], options); + } + + /// + public async Task> GetExtended(string property, int value, RequestOptions? options = null) + { + return await ExtendedRepo.GetExtended([new GenericFilter(property, value)], options); + } + + /// + public async Task> GetExtended(string property, Guid value, RequestOptions? options = null) + { + return await ExtendedRepo.GetExtended([new GenericFilter(property, value)], options); + } + + /// + public async Task<(IEnumerable Data, PagedResult PageInfo)> SearchExtended(string term, RequestOptions? options = null, bool startsWith = false) + { + return await ExtendedRepo.SearchExtended(term, options ?? new RequestOptions(), startsWith); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Mssql/SqlBasicRepo.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Mssql/SqlBasicRepo.cs new file mode 100644 index 00000000..3fa239eb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Mssql/SqlBasicRepo.cs @@ -0,0 +1,488 @@ +using System.Data; +using System.Data.SqlClient; +using System.Reflection; +using System.Text; +using System.Text.Json; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using FastMember; +using Microsoft.Extensions.Configuration; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Services.Mssql; + +/// +/// Data Service +/// +/// For type +public class SqlBasicRepo : IDbBasicRepo + where T : class +{ + private readonly SqlConnection connection; + private readonly string connectionString; + + /// + /// Database definition of type + /// + public ObjectDefinition DbObjDef { get; } + + /// + /// Initializes a new instance of the class. + /// + /// Configuration + public SqlBasicRepo(IConfiguration config) + { + var configSection = config.GetRequiredSection("SqlBasicRepo"); + connectionString = configSection["ConnectionString"] ?? throw new Exception("Missing connectionstring"); + connection = new SqlConnection(connectionString); + + DbObjDef = DbDefinitions.Get() ?? throw new Exception($"Definition for '{typeof(T).Name}' not found"); + } + + /// + public async Task> Get(List? parameters = null, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + var jsonResult = await GetJson(parameters, options, cancellationToken); + if (string.IsNullOrEmpty(jsonResult)) + { + return []; + } + + return JsonSerializer.Deserialize>(jsonResult) ?? throw new Exception("Unable to deserialize data"); + } + + /// + public async Task<(IEnumerable Data, PagedResult PageInfo)> Search(string term, RequestOptions options, CancellationToken cancellationToken = default) + { + try + { + var json = await GetJson([new GenericFilter("Name", term, comparer: DbOperators.Contains)], options, cancellationToken); + var data = JsonSerializer.Deserialize>(json) ?? throw new Exception("Unable to deserialize data"); + var pageInfo = JsonSerializer.Deserialize>(json) ?? throw new Exception("Unable to deserialize page data"); + + var info = pageInfo.First(); + var paged = new PagedResult() + { + PageCount = (info.TotalItems + options.PageSize - 1) / options.PageSize, + ItemCount = pageInfo.First().TotalItems + }; + paged.CurrentPage = options.PageNumber; + paged.PageSize = options.PageSize; + + return (data, paged); + } + catch + { + return default; + } + } + + /// + public async Task Ingest(List data, CancellationToken cancellationToken = default) + { + using var conn = new SqlConnection(connection.ConnectionString); + using (var bcp = new SqlBulkCopy(connection)) + using (var reader = ObjectReader.Create(data, DbObjDef.Properties.Select(t => t.Key).ToArray())) + { + // bcp.NotifyAfter = 1000; + bcp.BatchSize = 1000; + bcp.BulkCopyTimeout = 1000; + bcp.DestinationTableName = DbObjDef.BaseDbObject.GetSqlDefinition(includeAlias: false); + await bcp.WriteToServerAsync(reader, cancellationToken); + } + } + + /// + public async Task CreateTranslation(T entity, string language, CancellationToken cancellationToken = default) + { + if (DbObjDef.TranslationDbObject == null) + { + return 0; + } + + var param = GetTranslationEntityAsSqlParameter(entity); + param.Add("Language", new SqlParameter("Language", language)); + using var cmd = connection.CreateCommand(); + cmd.CommandText = $"INSERT {DbObjDef.TranslationDbObject.GetSqlDefinition(includeAlias: false)} ({InsertColumns([.. param.Keys])}) VALUES({InsertValues([.. param.Keys])})"; + cmd.Parameters.AddRange([.. param.Values]); + return await ExecuteCommand(cmd, cancellationToken); + } + + /// + public async Task Create(T entity, CancellationToken cancellationToken = default) + { + var param = GetEntityAsSqlParameter(entity); + using var cmd = connection.CreateCommand(); + cmd.CommandText = $"INSERT {DbObjDef.BaseDbObject.GetSqlDefinition(includeAlias: false)} ({InsertColumns([.. param.Keys])}) VALUES({InsertValues([.. param.Keys])})"; + cmd.Parameters.AddRange([.. param.Values]); + return await ExecuteCommand(cmd, cancellationToken); + } + + private string GetCommand(RequestOptions? options = null, List? filters = null, CancellationToken cancellationToken = default) + { + options ??= new RequestOptions(); + StringBuilder sb = new StringBuilder(); + + if (options.UsePaging) + { + sb.AppendLine("WITH [PagedResult] AS ("); + } + + sb.AppendLine("SELECT "); + sb.AppendLine(GenerateColumns(options)); + if (options.UsePaging) + { + string orderBy = string.IsNullOrEmpty(options.OrderBy) ? "Id" : options.OrderBy; + sb.AppendLine($",ROW_NUMBER() OVER (ORDER BY [{DbObjDef.BaseDbObject.Alias}].[{orderBy}]) AS [_RowNum]"); + } + + sb.AppendLine(" FROM " + GenerateSource(options)); + + if (filters != null && filters.Count > 0) + { + sb.AppendLine("WHERE " + string.Join(" AND ", filters.Select(t => $"[{DbObjDef.BaseDbObject.Alias}].[{t.Key}] {t.Comparer} @{t.Key}"))); + } + + if (options.UsePaging) + { + sb.AppendLine(")"); + sb.AppendLine("SELECT *"); + sb.AppendLine("FROM [PagedResult], (SELECT MAX([PagedResult].[_RowNum]) AS [TotalItems] FROM [PagedResult]) AS PageInfo"); + sb.AppendLine($"ORDER BY [_RowNum] OFFSET {options.PageSize * (options.PageNumber - 1)} ROWS FETCH NEXT {options.PageSize} ROWS ONLY"); + } + + return sb.ToString(); + } + + private async Task GetJson(List? parameters = null, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + options ??= new RequestOptions(); + parameters ??= []; + + var cmd = GetCommand(options, parameters); + + if (options.Language != null) + { + parameters.Add(new GenericFilter("Language", options.Language)); + } + + if (options.AsOf.HasValue) + { + parameters.Add(new GenericFilter("_AsOf", options.AsOf.Value)); + } + + return await ExecuteForJson(cmd, parameters: parameters, singleResult: false, cancellationToken); + } + + private string InsertColumns(List values) + { + return string.Join(',', values.OrderBy(t => t).Select(t => $"[{t}]").ToList()); + } + + private string InsertValues(List values) + { + return string.Join(',', values.OrderBy(t => t).Select(t => $"@{t}").ToList()); + } + + /// + public async Task UpdateTranslation(Guid id, T entity, string language, CancellationToken cancellationToken = default) + { + if (DbObjDef.TranslationDbObject == null) + { + return 0; + } + + var param = GetTranslationEntityAsSqlParameter(entity); + using var cmd = connection.CreateCommand(); + cmd.Parameters.AddRange([.. param.Values]); + cmd.Parameters.Add(new SqlParameter("_id", id)); + cmd.Parameters.Add(new SqlParameter("_language", language)); + cmd.CommandText = $"UPDATE {DbObjDef.TranslationDbObject.GetSqlDefinition(includeAlias: false)} SET {UpdateSetStatement([.. param.Keys])} WHERE [Id] = @_id AND [Language] = @_language"; + return await ExecuteCommand(cmd, cancellationToken); + } + + /// + public async Task Update(Guid id, T entity, CancellationToken cancellationToken = default) + { + var param = GetEntityAsSqlParameter(entity); + using var cmd = connection.CreateCommand(); + cmd.Parameters.AddRange([.. param.Values]); + cmd.Parameters.Add(new SqlParameter("_id", id)); + cmd.CommandText = $"UPDATE {DbObjDef.BaseDbObject.GetSqlDefinition(includeAlias: false)} SET {UpdateSetStatement([.. param.Keys])} WHERE [Id] = @_id"; + return await ExecuteCommand(cmd, cancellationToken); + } + + /// + public async Task Update(Guid id, List parameters, CancellationToken cancellationToken = default) + { + var param = new Dictionary(); + foreach (var parameter in parameters) + { + param.Add(parameter.Key, new SqlParameter(parameter.Key, parameter.Value)); + } + + using var cmd = connection.CreateCommand(); + cmd.Parameters.AddRange([.. param.Values]); + cmd.Parameters.Add(new SqlParameter("_id", id)); + cmd.CommandText = $"UPDATE {DbObjDef.BaseDbObject.GetSqlDefinition(includeAlias: false)} SET {UpdateSetStatement([.. param.Keys])} WHERE [Id] = @_id"; + return await ExecuteCommand(cmd, cancellationToken); + } + + private string UpdateSetStatement(List values) + { + return string.Join(',', values.OrderBy(t => t).Select(t => $"[{t}] = @{t}").ToList()); + } + + /// + public async Task Delete(Guid id, CancellationToken cancellationToken = default) + { + using var cmd = connection.CreateCommand(); + cmd.Parameters.Add(new SqlParameter("_id", id)); + cmd.CommandText = $"DELETE {DbObjDef.BaseDbObject.GetSqlDefinition(includeAlias: false)} WHERE [Id] = @_id"; + return await ExecuteCommand(cmd, cancellationToken); + } + + private async Task CheckIfTranslationExists(Guid id, string language, CancellationToken cancellationToken = default) + { + if (DbObjDef.TranslationDbObject == null) + { + return false; + } + + using var cmd = connection.CreateCommand(); + cmd.Parameters.Add(new SqlParameter("Id", id)); + cmd.Parameters.Add(new SqlParameter("Language", language)); + cmd.CommandText = $"SELECT COUNT(*) AS [Cnt] FROM {DbObjDef.TranslationDbObject.GetSqlDefinition(includeAlias: false)} WHERE [Id] = @Id AND [Language] = @Language"; + var res = await ExecuteScalarCommand(cmd, cancellationToken); + _ = int.TryParse(res?.ToString(), out int rowCount); + + if (rowCount > 0) + { + return true; + } + + return false; + } + + private async Task ExecuteScalarCommand(SqlCommand cmd, CancellationToken cancellationToken = default) + { + try + { + if (connection.State != ConnectionState.Open) + { + connection.Open(); + } + + return await cmd.ExecuteScalarAsync(cancellationToken); + } + catch + { + Console.WriteLine(cmd.CommandText); + foreach (SqlParameter param in cmd.Parameters) + { + Console.WriteLine($"{param.ParameterName}:{param.Value}"); + } + + throw; + } + finally + { + connection.Close(); + } + } + + private async Task ExecuteCommand(SqlCommand cmd, CancellationToken cancellationToken = default) + { + try + { + if (connection.State != ConnectionState.Open) + { + connection.Open(); + } + + return await cmd.ExecuteNonQueryAsync(cancellationToken); + } + catch + { + Console.WriteLine(cmd.CommandText); + foreach (SqlParameter param in cmd.Parameters) + { + Console.WriteLine($"{param.ParameterName}:{param.Value}"); + } + + throw; + } + finally + { + connection.Close(); + } + } + + private List ConvertToSqlParamter(List filters) + { + var result = new List(); + foreach (var filter in filters) + { + result.Add(ConvertToSqlParamter(filter)); + } + + return result; + } + + private SqlParameter ConvertToSqlParamter(GenericFilter filter) + { + return new SqlParameter(filter.Key, filter.Value); + } + + /// + /// Executes query and returns json + /// + /// Query + /// Parameters + /// Expect pnly one result + /// CancellationToken + /// + protected async Task ExecuteForJson(string query, List? parameters, bool singleResult = false, CancellationToken cancellationToken = default) + { + using var conn = new SqlConnection(connectionString); + using var cmd = conn.CreateCommand(); + cmd.CommandText = query; + cmd.CommandText += " FOR JSON PATH"; + if (singleResult) + { + cmd.CommandText += ", WITHOUT_ARRAY_WRAPPER"; + } + + if (parameters != null && parameters.Any()) + { + cmd.Parameters.AddRange(ConvertToSqlParamter(parameters).ToArray()); + } + + try + { + Console.WriteLine(cmd.CommandText); + conn.Open(); + var reader = await cmd.ExecuteReaderAsync(cancellationToken); + StringBuilder sb = new StringBuilder(); + while (await reader.ReadAsync(cancellationToken)) + { + sb.Append(reader.GetString(0)); + } + + return sb.ToString(); + } + catch + { + Console.WriteLine(cmd.CommandText); + throw; + } + finally + { + conn.Close(); + } + } + + private Dictionary GetEntityAsSqlParameter(object entity) + { + var parameters = new Dictionary(); + foreach (PropertyInfo property in entity.GetType().GetProperties()) + { + parameters.Add(property.Name, new SqlParameter(property.Name, property.GetValue(entity) ?? DBNull.Value)); + } + + return parameters; + } + + private Dictionary GetTranslationEntityAsSqlParameter(object entity) + { + var parameters = new Dictionary(); + foreach (PropertyInfo property in entity.GetType().GetProperties()) + { + if (property.PropertyType == typeof(string) || property.Name == "Id") + { + parameters.Add(property.Name, new SqlParameter(property.Name, property.GetValue(entity) ?? DBNull.Value)); + } + } + + return parameters; + } + + /// + /// Generate sources for query + /// + /// RequestOptions + /// + protected string GenerateSource(RequestOptions options) + { + return GenerateSource(DbObjDef, options); + } + + /// + /// Generate sources for query + /// + /// Object definition + /// RequestOptions + /// + protected string GenerateSource(ObjectDefinition dbObjDef, RequestOptions options) + { + bool useTranslation = !string.IsNullOrEmpty(options.Language); + string asOfCommand = options.AsOf.HasValue ? " FOR SYSTEM_TIME AS OF @_AsOf " : ""; + + if (dbObjDef.TranslationDbObject == null) + { + useTranslation = false; + } + + // TODO: If table hasHistory + if (useTranslation) + { + return $""" + {dbObjDef.BaseDbObject.GetSqlDefinition(useAsOf: options.AsOf.HasValue)} + OUTER APPLY (SELECT TOP(1) [T].* FROM {dbObjDef.TranslationDbObject?.GetSqlDefinition(includeAlias: false, useAsOf: options.AsOf.HasValue)} AS [T] WHERE [T].[Id] = [{dbObjDef.BaseDbObject.Alias}].[Id] AND [T].[Language] = @Language) AS [{dbObjDef.TranslationDbObject?.Alias}] + """; + } + else + { + return dbObjDef.BaseDbObject.GetSqlDefinition(useAsOf: options.AsOf.HasValue); + } + } + + /// + /// Generate columns for query + /// + /// RequestOptions + /// + protected string GenerateColumns(RequestOptions options) + { + return GenerateColumns(DbObjDef, options); + } + + /// + /// Generate columns for query + /// + /// Object definition + /// RequestOptions + /// + protected string GenerateColumns(ObjectDefinition dbObjDef, RequestOptions options) + { + bool useTranslation = !string.IsNullOrEmpty(options.Language); + if (dbObjDef.TranslationDbObject == null) + { + useTranslation = false; + } + + var columns = new List(); + foreach (var p in dbObjDef.Properties) + { + if (useTranslation && p.Value.PropertyType == typeof(string)) + { + columns.Add($"ISNULL([{dbObjDef.TranslationDbObject?.Alias}].[{p.Key}],[{dbObjDef.BaseDbObject.Alias}].[{p.Key}]) AS [{p.Key}]"); + } + else + { + columns.Add($"[{dbObjDef.BaseDbObject.Alias}].[{p.Key}] AS [{p.Key}]"); + } + } + + return string.Join(',', columns); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Mssql/SqlCrossRepo.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Mssql/SqlCrossRepo.cs new file mode 100644 index 00000000..2e9f5304 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Mssql/SqlCrossRepo.cs @@ -0,0 +1,194 @@ +using System.Text; +using System.Text.Json; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Microsoft.Extensions.Configuration; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Services.Mssql; + +/// +public class SqlCrossRepo : SqlBasicRepo, IDbCrossRepo + where T : class + where TA : class + where TB : class +{ + private string XAColumn { get; set; } = typeof(TA).Name + "Id"; + private string XBColumn { get; set; } = typeof(TB).Name + "Id"; + + private ObjectDefinition ObjDefA { get; set; } + private ObjectDefinition ObjDefB { get; set; } + + /// + /// Initializes a new instance of the class. + /// + /// IConfiguration + public SqlCrossRepo(IConfiguration config) : base(config) + { + ObjDefA = DbDefinitions.Get() ?? throw new Exception($"Definition for '{typeof(TA).Name}' not found"); + ObjDefB = DbDefinitions.Get() ?? throw new Exception($"Definition for '{typeof(TB).Name}' not found"); + } + + /// + public void SetCrossColumns(string xAColumn, string xBColumn) + { + XAColumn = xAColumn; + XBColumn = xBColumn; + } + + /// + public async Task> ExecuteForA(Guid BId, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + options ??= new RequestOptions(); + var query = GenerateQuery(BId, XAColumn, XBColumn, options); + try + { + string jsonResult = await ExecuteForJson(query.Query, query.Parameters, singleResult: false, cancellationToken: cancellationToken); + if (string.IsNullOrEmpty(jsonResult)) + { + return []; + } + + try + { + return JsonSerializer.Deserialize>(jsonResult) ?? throw new Exception("Unable to deserialize data"); + } + catch (Exception ex) + { + Console.WriteLine(query); + Console.WriteLine(ex.Message); + Console.WriteLine(jsonResult); + throw; + } + } + catch + { + Console.WriteLine(query); + throw; + } + } + + /// + public async Task> ExecuteForB(Guid AId, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + options ??= new RequestOptions(); + var query = GenerateQuery(AId, XBColumn, XAColumn, options); + try + { + string jsonResult = await ExecuteForJson(query.Query, query.Parameters, singleResult: false, cancellationToken: cancellationToken); + if (string.IsNullOrEmpty(jsonResult)) + { + return []; + } + + try + { + return JsonSerializer.Deserialize>(jsonResult) ?? throw new Exception("Unable to deserialize data"); + } + catch (Exception ex) + { + Console.WriteLine(query); + Console.WriteLine(ex.Message); + Console.WriteLine(jsonResult); + throw; + } + } + catch + { + Console.WriteLine(query); + throw; + } + } + + private (string Query, List Parameters) GenerateQuery(Guid id, string sourceColumn, string filterColumn, RequestOptions? options = null) + { + options ??= new RequestOptions(); + bool useTranslation = !string.IsNullOrEmpty(options.Language); + var param = new List + { + new GenericFilter("Id", id) + }; + + var baseObjDef = DbDefinitions.Get(typeof(T)) ?? throw new Exception($"Definition for '{typeof(T).Name}' not found"); + baseObjDef.BaseDbObject.Alias = "X"; + + var objDef = DbDefinitions.Get(typeof(TResult)) ?? throw new Exception($"Definition for '{typeof(TResult).Name}' not found"); + objDef.BaseDbObject.Alias = "TResult"; + + StringBuilder sb = new StringBuilder(); + sb.Append("SELECT "); + sb.AppendLine(GenerateColumns(objDef, options)); + sb.AppendLine($"FROM {DbObjDef.BaseDbObject.GetSqlDefinition(includeAlias: false)} AS [TResult]"); + sb.AppendLine($"INNER JOIN {objDef.BaseDbObject.GetSqlDefinition(includeAlias: false)} AS [{objDef.BaseDbObject.Alias}] ON [TResult].[{sourceColumn}] = [{objDef.BaseDbObject.Alias}].[Id]"); + + if (useTranslation) + { + sb.AppendLine($"OUTER APPLY (SELECT [Trans].* FROM {objDef.TranslationDbObject?.GetSqlDefinition(includeAlias: false)} AS [Trans] WHERE [Trans].[Id] = [{objDef.BaseDbObject.Alias}].[Id] AND [Trans].[Language] = @Language) AS [{objDef.TranslationDbObject?.Alias}]"); + } + + sb.AppendLine($"WHERE [TResult].[{filterColumn}] = @Id"); + string query = sb.ToString(); + if (useTranslation) + { + param.Add(new GenericFilter("Language", options.Language)); + } + + if (options.AsOf.HasValue) + { + param.Add(new GenericFilter("_AsOf", options.AsOf.Value)); + } + + return (query, param); + } + + private async Task> Get(Guid id, ObjectDefinition joinDef, string sourceColumn, string filterColumn, RequestOptions? options = null) + { + options ??= new RequestOptions(); + bool useTranslation = !string.IsNullOrEmpty(options.Language); + var param = new List + { + new GenericFilter("Id", id) + }; + + StringBuilder sb = new StringBuilder(); + sb.Append("SELECT "); + sb.AppendLine(GenerateColumns(joinDef, options)); + sb.AppendLine($"FROM {DbObjDef.BaseDbObject.GetSqlDefinition(includeAlias: false)} AS [TResult]"); + sb.AppendLine($"INNER JOIN {joinDef.BaseDbObject.GetSqlDefinition(includeAlias: false)} AS [{joinDef.BaseDbObject.Alias}] ON [TResult].[{sourceColumn}] = [{joinDef.BaseDbObject.Alias}].[Id]"); + + if (useTranslation) + { + sb.AppendLine($"OUTER APPLY (SELECT [Trans].* FROM {joinDef.TranslationDbObject?.GetSqlDefinition(includeAlias: false)} AS [Trans] WHERE [Trans].[Id] = [{joinDef.BaseDbObject.Alias}].[Id] AND [Trans].[Language] = @Language) AS [{joinDef.TranslationDbObject?.Alias}]"); + } + + sb.AppendLine($"WHERE [TResult].[{filterColumn}] = @Id"); + string query = sb.ToString(); + if (useTranslation) + { + param.Add(new GenericFilter("Language", options.Language)); + } + + if (options.AsOf.HasValue) + { + param.Add(new GenericFilter("_AsOf", options.AsOf.Value)); + } + + string jsonResult = await ExecuteForJson(query, [.. param], singleResult: false); + + if (string.IsNullOrEmpty(jsonResult)) + { + return []; + } + + try + { + return JsonSerializer.Deserialize>(jsonResult) ?? throw new Exception("Unable to deserialize data"); + } + catch (Exception ex) + { + Console.WriteLine(query); + Console.WriteLine(ex.Message); + Console.WriteLine(jsonResult); + throw; + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Mssql/SqlExtendedRepo.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Mssql/SqlExtendedRepo.cs new file mode 100644 index 00000000..befe0943 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Mssql/SqlExtendedRepo.cs @@ -0,0 +1,223 @@ +using System.Data.SqlClient; +using System.Text; +using System.Text.Json; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Services.Mssql; + +/// +public class SqlExtendedRepo : SqlBasicRepo, IDbExtendedRepo + where T : class + where TExtended : class +{ + private List Joins { get; set; } = []; + + /// + public void Join(string? alias = null, string baseJoinProperty = "", string joinProperty = "Id", bool optional = false) + { + alias = alias ?? typeof(TJoin).Name; + Joins.Add(new Join(alias, typeof(T), typeof(TJoin), baseJoinProperty, joinProperty, optional)); + } + + /// + /// Initializes a new instance of the class. + /// + /// IConfiguration + public SqlExtendedRepo(IConfiguration config) : base(config) { } + + /// + public async Task<(IEnumerable Data, PagedResult PageInfo)> SearchExtended(string term, RequestOptions options, bool startsWith = false) + { + try + { + var json = await GetExtJson([new GenericFilter("Name", term, comparer: startsWith ? DbOperators.StartsWith : DbOperators.Contains)], options); + + var data = JsonSerializer.Deserialize>(json) ?? throw new Exception("Unable to deserialize data"); + var pageInfo = JsonSerializer.Deserialize>(json) ?? throw new Exception("Unable to deserialize page data"); + + var info = pageInfo.First(); + var paged = new PagedResult() + { + PageCount = (info.TotalItems + options.PageSize - 1) / options.PageSize, + ItemCount = pageInfo.First().TotalItems + }; + paged.CurrentPage = options.PageNumber; + paged.PageSize = options.PageSize; + + return (data, paged); + } + catch + { + return default; + } + } + + /// + public async Task> GetExtended(List? filters = null, RequestOptions? options = null) + { + options ??= new RequestOptions(); + filters ??= new List(); + var cmd = GetCommand(options, filters); + + if (options.Language != null) + { + filters.Add(new GenericFilter("Language", options.Language)); + } + + if (options.AsOf.HasValue) + { + filters.Add(new GenericFilter("_AsOf", options.AsOf.Value)); + } + + string jsonResult = await ExecuteForJson(cmd, parameters: filters, singleResult: false); + if (string.IsNullOrEmpty(jsonResult)) + { + return []; + } + + return JsonSerializer.Deserialize>(jsonResult) ?? throw new Exception("Unable to deserialize data"); + } + + private async Task GetExtJson(List filters, RequestOptions? options = null) + { + options ??= new RequestOptions(); + var cmd = GetCommand(options, filters); + + if (options.Language != null) + { + filters.Add(new GenericFilter("Language", options.Language)); + } + + if (options.AsOf.HasValue) + { + filters.Add(new GenericFilter("_AsOf", options.AsOf.Value)); + } + + try + { + return await ExecuteForJson(cmd, parameters: filters, singleResult: false); + } + catch + { + Console.WriteLine(cmd); + throw; + } + } + + private string GetCommand(RequestOptions? options = null, List? filters = null) + { + options ??= new RequestOptions(); + StringBuilder sb = new StringBuilder(); + + if (options.UsePaging) + { + sb.AppendLine("WITH [PagedResult] AS ("); + } + + sb.AppendLine("SELECT "); + sb.AppendLine(GenerateColumns(options)); + foreach (var j in Joins) + { + sb.AppendLine(","); + sb.Append(GenerateJoinColumns(j, options)); + } + + if (options.UsePaging) + { + string orderBy = string.IsNullOrEmpty(options.OrderBy) ? "Id" : options.OrderBy; + sb.AppendLine($",ROW_NUMBER() OVER (ORDER BY [{DbObjDef.BaseDbObject.Alias}].[{orderBy}]) AS [_RowNum]"); + } + + sb.AppendLine(" FROM " + GenerateSource(options)); + foreach (var j in Joins) + { + var joinStatement = GetJoinStatement(j, options); + sb.AppendLine(joinStatement.Query); + } + + if (filters != null && filters.Count > 0) + { + sb.AppendLine("WHERE " + string.Join(" AND ", filters.Select(t => $"[{DbObjDef.BaseDbObject.Alias}].[{t.Key}] {t.Comparer} @{t.Key}"))); + } + + if (options.UsePaging) + { + sb.AppendLine(")"); + sb.AppendLine("SELECT *"); + sb.AppendLine("FROM [PagedResult], (SELECT MAX([PagedResult].[_RowNum]) AS [TotalItems] FROM [PagedResult]) AS PageInfo"); + sb.AppendLine($"ORDER BY [_RowNum] OFFSET {options.PageSize * (options.PageNumber - 1)} ROWS FETCH NEXT {options.PageSize} ROWS ONLY"); + } + + return sb.ToString(); + } + + private string GetJoinFilterString(Join join) + { + if (join.Filter == null || join.Filter.Count == 0) + { + return ""; + } + + string result = string.Empty; + + foreach (var filter in join.Filter) + { + result += $" AND [{join.BaseObj.BaseDbObject.Alias}].[{filter.Key}] {filter.Comparer} [{join.Alias}].[{filter.Value}]"; + } + + return result; + } + + /// + /// Generate mssql join statement + /// + /// Join + /// RequestOptions + /// + /// + public (string Query, List Parameters) GetJoinStatement(Join join, RequestOptions options) + { + // TODO: If table hasHistory... + string asOfCommand = options.AsOf.HasValue ? " FOR SYSTEM_TIME AS OF @_AsOf " : ""; + + var query = $"{(join.Optional ? "LEFT OUTER" : "INNER")} JOIN {join.JoinObj.BaseDbObject.GetSqlDefinition(includeAlias: false)} {asOfCommand} AS [{join.Alias}] ON [{join.BaseObj.BaseDbObject.Alias}].[{join.BaseJoinProperty}] = [{join.Alias}].[{join.JoinProperty}] {GetJoinFilterString(join)}"; + + bool useTranslation = !string.IsNullOrEmpty(options.Language); + if (useTranslation && join.JoinObj.UseTranslation && join.JoinObj.TranslationDbObject != null) + { + query += $""" + OUTER APPLY (SELECT TOP(1) [T].* FROM {join.JoinObj.TranslationDbObject.GetSqlDefinition(includeAlias: false)} {asOfCommand} AS [T] WHERE [T].[Id] = [{join.Alias}].[Id] AND [T].[Language] = @Language) AS [{join.Alias}{join.JoinObj.TranslationDbObject.Alias}] + """; + } + + return (Query: query, Parameters: join.Filter); + } + + /// + /// Generate mssql columns + /// + /// Join + /// RequestOptions + /// + public string GenerateJoinColumns(Join join, RequestOptions options) + { + bool useTranslation = !string.IsNullOrEmpty(options.Language); + var columns = new List(); + foreach (var p in join.JoinObj.BaseDbObject.Type.GetProperties()) + { + if (join.JoinObj.TranslationDbObject != null && join.JoinObj.UseTranslation && useTranslation && p.PropertyType == typeof(string)) + { + columns.Add($"ISNULL([{join.Alias}{join.JoinObj.TranslationDbObject.Alias}].[{p.Name}],[{join.Alias}].[{p.Name}]) AS [{join.Alias}.{p.Name}]"); + } + else + { + columns.Add($"[{join.Alias}].[{p.Name}] AS [{join.Alias}.{p.Name}]"); + } + } + + return string.Join(',', columns); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Postgres/PostgresBasicRepo.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Postgres/PostgresBasicRepo.cs new file mode 100644 index 00000000..c3d647bd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Postgres/PostgresBasicRepo.cs @@ -0,0 +1,535 @@ +using System.Data; +using System.Diagnostics; +using System.Reflection; +using System.Text; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Dapper; +using Microsoft.Extensions.Configuration; +using Npgsql; +using NpgsqlTypes; +using OpenTelemetry.Trace; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Services.Postgres; + +/// +/// Postgres implementation of IDbBasicRepo +/// +/// +public class PostgresBasicRepo : IDbBasicRepo + where T : class +{ + /// + /// Connection + /// + protected string ConnectionString { get; } + + private readonly IDbBasicConverter dbConverter; + + /// + /// Database object definition for T + /// + protected ObjectDefinition DbObjDef { get; } + + /// + /// Initializes a new instance of the class. + /// + /// Configuration + /// IDbBasicConverter + public PostgresBasicRepo(IConfiguration config, IDbBasicConverter dbConverter) + { + DefaultTypeMap.MatchNamesWithUnderscores = true; + var configSection = config.GetSection("DataService"); + ConnectionString = configSection["ConnectionString"] ?? throw new Exception("Missing connectionstring"); + this.dbConverter = dbConverter; + DbObjDef = DbDefinitions.Get() ?? throw new Exception($"Definition for '{typeof(T).Name}' not found"); + } + + /// + public async Task> Get(List? parameters = null, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + using var a = Telemetry.StartActivity("PostgresBasicRepo.Get"); + a?.AddEvent(new ActivityEvent("Generate query")); + + options ??= new RequestOptions(); + parameters ??= []; + + var cmd = GetCommand(options, parameters); + var param = new Dictionary(); + if (parameters.Count > 0) + { + foreach (var kv in parameters) + { + param.Add(kv.Key, kv.Value); + } + } + + if (options.Language != null) + { + param.Add("Language", options.Language); + } + + if (options.AsOf.HasValue) + { + param.Add("_AsOf", options.AsOf.Value); + } + + return await Execute(cmd, param, cancellationToken: cancellationToken); + } + + /// + public async Task<(IEnumerable Data, PagedResult PageInfo)> Search(string term, RequestOptions options, CancellationToken cancellationToken = default) + { + throw new NotImplementedException(); + /* + // SQL Implementation + try + { + var json = await GetJson([new GenericFilter("Name", term.GetValue(), comparer: "LIKE")], options, cancellationToken); + var data = JsonSerializer.Deserialize>(json) ?? throw new Exception("Unable to deserialize data"); + var pageInfo = JsonSerializer.Deserialize>(json) ?? throw new Exception("Unable to deserialize page data"); + + var info = pageInfo.First(); + var paged = new PagedResult() + { + PageCount = (info.TotalItems + options.PageSize - 1) / options.PageSize, + ItemCount = pageInfo.First().TotalItems + }; + paged.CurrentPage = options.PageNumber; + paged.PageSize = options.PageSize; + + return (data, paged); + } + catch + { + return default; + } + */ + } + + /// + public async Task Ingest(List data, CancellationToken cancellationToken = default) + { + using var conn = new NpgsqlConnection(ConnectionString); + conn.Open(); + + var dt = new DataTable(); + var dataAdapter = new NpgsqlDataAdapter($"select * from {DbObjDef.BaseDbObject.GetPostgresDefinition(includeAlias: false)} LIMIT 10", conn); + dataAdapter.Fill(dt); + dt.Clear(); + + var columns = new Dictionary(); + foreach (DataColumn c in dt.Columns) + { + columns.Add(c.ColumnName, (PostgresDataTypeConverter.GetPostgresType(c.DataType), DbObjDef.Properties.Values.First(t => t.Name.Equals(c.ColumnName, StringComparison.CurrentCultureIgnoreCase)))); + } + + using var writer = await conn.BeginBinaryImportAsync($"COPY {DbObjDef.BaseDbObject.GetPostgresDefinition(includeAlias: false)} ({string.Join(',', columns.Keys)}) FROM STDIN (FORMAT BINARY)", cancellationToken: cancellationToken); + writer.Timeout = new TimeSpan(0, 10, 0); + int batchCompleted = 0; + int batchSize = 1000; + int completed = 0; + foreach (var d in data) + { + writer.StartRow(); + foreach (var c in columns) + { + try + { + writer.Write(c.Value.Property.GetValue(d), c.Value.Type); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to write data in column '{c.Key}' for '{DbObjDef.BaseDbObject.Name}'. Trying to write null. " + ex.Message); + try + { + writer.WriteNull(); + } + catch + { + Console.WriteLine($"Failed to write null in column '{c.Key}' for '{DbObjDef.BaseDbObject.Name}'."); + throw; + } + } + } + + completed++; + if (completed == batchSize) + { + batchCompleted++; + completed = 0; + Console.WriteLine($"Ingested {(batchCompleted * batchSize) + completed}"); + } + } + + Console.WriteLine($"Ingested {(batchCompleted * batchSize) + completed}"); + writer.Complete(); + } + + /// + public async Task Create(T entity, CancellationToken cancellationToken = default) + { + var param = GetEntityAsSqlParameter(entity); + string query = $"INSERT INTO {DbObjDef.BaseDbObject.GetPostgresDefinition(includeAlias: false)} ({InsertColumns([.. param.Keys])}) VALUES({InsertValues([.. param.Keys])})"; + return await ExecuteCommand(query, [.. param.Values], cancellationToken: cancellationToken); + } + + /// + public async Task CreateTranslation(T entity, string language, CancellationToken cancellationToken = default) + { + if (DbObjDef.TranslationDbObject == null) + { + return 0; + } + + var param = GetTranslationEntityAsSqlParameter(entity); + param.Add("Language", new NpgsqlParameter("Language", language)); + var query = $"INSERT INTO {DbObjDef.TranslationDbObject.GetPostgresDefinition(includeAlias: false)} ({InsertColumns([.. param.Keys])}) VALUES({InsertValues([.. param.Keys])})"; + return await ExecuteCommand(query, [.. param.Values], cancellationToken: cancellationToken); + } + + /// + public async Task UpdateTranslation(Guid id, T entity, string language, CancellationToken cancellationToken = default) + { + if (DbObjDef.TranslationDbObject == null) + { + return 0; + } + + var param = GetTranslationEntityAsSqlParameter(entity); + string query = $"UPDATE {DbObjDef.TranslationDbObject.GetPostgresDefinition(includeAlias: false)} SET {UpdateSetStatement([.. param.Keys])} WHERE Id = @_id AND Language = @_language"; + param.Add("_id", new NpgsqlParameter("_id", id)); + param.Add("Language", new NpgsqlParameter("_language", language)); + return await ExecuteCommand(query, [.. param.Values], cancellationToken: cancellationToken); + } + + /// + public async Task Update(Guid id, T entity, CancellationToken cancellationToken = default) + { + var param = GetEntityAsSqlParameter(entity); + string query = $"UPDATE {DbObjDef.BaseDbObject.GetPostgresDefinition(includeAlias: false)} SET {UpdateSetStatement([.. param.Keys])} WHERE Id = @_id"; + param.Add("_id", new NpgsqlParameter("_id", id)); + return await ExecuteCommand(query, [.. param.Values], cancellationToken: cancellationToken); + } + + /// + public async Task Update(Guid id, List parameters, CancellationToken cancellationToken = default) + { + string query = $"UPDATE {DbObjDef.BaseDbObject.GetPostgresDefinition(includeAlias: false)} SET {UpdateSetStatement(parameters.Select(t => t.Key).ToList())} WHERE id = @_id"; + parameters.Add(new GenericParameter("_id", id)); + return await ExecuteCommand(query, parameters, cancellationToken: cancellationToken); + } + + /// + public async Task Delete(Guid id, CancellationToken cancellationToken = default) + { + string query = $"DELETE FROM {DbObjDef.BaseDbObject.GetPostgresDefinition(includeAlias: false)} WHERE id = @_id"; + return await ExecuteCommand(query, [new NpgsqlParameter("_id", id)], cancellationToken: cancellationToken); + } + + #region Internal + private string UpdateSetStatement(List values) + { + return string.Join(',', values.OrderBy(t => t).Select(t => $"{t} = @{t}").ToList()); + } + + private string InsertColumns(List values) + { + return string.Join(',', values.OrderBy(t => t).Select(t => $"{t}").ToList()); + } + + private string InsertValues(List values) + { + return string.Join(',', values.OrderBy(t => t).Select(t => $"@{t}").ToList()); + } + + private string GetCommand(RequestOptions? options = null, List? filters = null) + { + /* check from cache */ + + options ??= new RequestOptions(); + var sb = new StringBuilder(); + + if (options.UsePaging) + { + sb.AppendLine("WITH pagedresult AS ("); + } + + sb.AppendLine("SELECT "); + sb.AppendLine(GenerateColumns(options)); + + if (options.UsePaging) + { + string orderBy = string.IsNullOrEmpty(options.OrderBy) ? "Id" : options.OrderBy; + sb.AppendLine($",ROW_NUMBER() OVER (ORDER BY {DbObjDef.BaseDbObject.Alias}.{orderBy}) AS _rownum"); + } + + sb.AppendLine("FROM " + GenerateSource(options)); + if (filters != null && filters.Count > 0) + { + sb.AppendLine("WHERE " + string.Join(" AND ", filters.Select(t => $"{DbObjDef.BaseDbObject.Alias}.{t.Key} {t.Comparer} @{t.Key}"))); + } + + if (options.UsePaging) + { + sb.AppendLine(")"); + sb.AppendLine("SELECT *"); + sb.AppendLine("FROM pagedresult, (SELECT MAX(pagedresult._rownum) AS totalitems FROM pagedresult) AS pageinfo"); + sb.AppendLine($"ORDER BY _rownum OFFSET {options.PageSize * (options.PageNumber - 1)} ROWS FETCH NEXT {options.PageSize} ROWS ONLY"); + } + + /* save to cache */ + + return sb.ToString(); + } + + private async Task ExecuteCommand(string query, List parameters, CancellationToken cancellationToken = default) + { + var queryParameters = new List(); + if (parameters != null && parameters.Count > 0) + { + foreach (var p in parameters) + { + queryParameters.Add(new NpgsqlParameter(p.Key, p.Value)); + } + } + + return await ExecuteCommand(query, queryParameters, cancellationToken); + } + + /// + /// Execute command + /// + /// Query + /// Parameters + /// CancellationToken + /// TA representing the result of the asynchronous operation. + private async Task ExecuteCommand(string query, List parameters, CancellationToken cancellationToken = default) + { + try + { + using var connection = new NpgsqlConnection(ConnectionString); + using var cmd = connection.CreateCommand(); + cmd.Parameters.AddRange(parameters.ToArray()); + cmd.CommandText = query; + connection.Open(); + return await cmd.ExecuteNonQueryAsync(cancellationToken: cancellationToken); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + Console.WriteLine(query); + foreach (NpgsqlParameter param in parameters) + { + Console.WriteLine($"{param.ParameterName}:{param.Value}"); + } + + throw; + } + } + + /// + /// Execute query + /// + /// Query + /// Parameters + /// CancellationToken + /// + private async Task> Execute(string query, Dictionary? parameters = null, CancellationToken cancellationToken = default) + { + + using var a = Telemetry.StartActivity("PostgresBasicRepo.Execute"); + a?.SetCustomProperty("query", query); + + try + { + // Console.WriteLine(query); + using var c = new NpgsqlConnection(ConnectionString); + var cmd = new CommandDefinition(query, parameters, cancellationToken: cancellationToken); + return dbConverter.ConvertBasic(await c.ExecuteReaderAsync(cmd)); + } + catch (Exception ex) + { + a?.SetStatus(ActivityStatusCode.Error, ""); + a?.RecordException(ex); + + // a?.SetCustomProperty("query", query); + + // Console.WriteLine(query); + if (parameters != null) + { + foreach (var param in parameters) + { + a?.SetCustomProperty(param.Key, param.Value); + + // Console.WriteLine($"{param.Key}:{param.Value}"); + } + } + + throw; + } + } + + /// + /// Get translation parameters + /// Ignores non-string values + /// + /// Translated object + /// + private Dictionary GetTranslationEntityAsSqlParameter(object entity) + { + var parameters = new Dictionary(); + foreach (PropertyInfo property in entity.GetType().GetProperties()) + { + if (property.PropertyType == typeof(string) || property.Name == "Id") + { + parameters.Add(property.Name, new NpgsqlParameter(property.Name, property.GetValue(entity) ?? DBNull.Value)); + } + } + + return parameters; + } + + /// + /// PostgresDataTypeConverter + /// + internal static class PostgresDataTypeConverter + { + /// + /// GetPostgresType + /// + /// Type + /// + public static NpgsqlDbType GetPostgresType(Type type) + { + if (type == typeof(string)) + { + return NpgsqlDbType.Text; + } + + if (type == typeof(int)) + { + return NpgsqlDbType.Integer; + } + + if (type == typeof(DateTimeOffset)) + { + return NpgsqlDbType.TimestampTz; + } + + if (type == typeof(Guid)) + { + return NpgsqlDbType.Uuid; + } + + if (type == typeof(bool)) + { + return NpgsqlDbType.Boolean; + } + + Console.WriteLine($"Typeconverter not found for '{type.Name}'"); + + return NpgsqlDbType.Text; + } + } + + /// + /// Generate parameters based on object + /// + /// Object + /// + protected Dictionary GetEntityAsSqlParameter(object entity) + { + var parameters = new Dictionary(); + foreach (PropertyInfo property in entity.GetType().GetProperties()) + { + parameters.Add(property.Name, new NpgsqlParameter(property.Name, property.GetValue(entity) ?? DBNull.Value)); + } + + return parameters; + } + + /// + /// Generate source for query + /// + /// RequestOptions + /// + protected string GenerateSource(RequestOptions options) + { + return GenerateSource(DbObjDef, options); + } + + /// + /// Generate sources for query + /// + /// Object definition + /// RequestOptions + /// + protected string GenerateSource(ObjectDefinition dbObjDef, RequestOptions options) + { + bool useTranslation = !string.IsNullOrEmpty(options.Language); + + /* + // Not implemented + string AsOfCommand = options.AsOf.HasValue ? " FOR SYSTEM_TIME AS OF @_AsOf " : ""; + */ + + if (dbObjDef.TranslationDbObject == null) + { + useTranslation = false; + } + + if (useTranslation && dbObjDef.UseTranslation) + { + return $""" + {dbObjDef.BaseDbObject.GetPostgresDefinition(useAsOf: options.AsOf.HasValue)} + LEFT JOIN LATERAL (select * from {dbObjDef.TranslationDbObject?.GetPostgresDefinition(includeAlias: false, useAsOf: options.AsOf.HasValue)} as t where t.Id = {dbObjDef.BaseDbObject.Alias}.Id AND t.Language = @Language) as {dbObjDef.TranslationDbObject?.Alias} on 1=1 + """; + } + else + { + return dbObjDef.BaseDbObject.GetPostgresDefinition(useAsOf: options.AsOf.HasValue); + } + } + + /// + /// Generate columns for query + /// + /// RequestOptions + /// + protected string GenerateColumns(RequestOptions options) + { + return GenerateColumns(DbObjDef, options); + } + + /// + /// Generate columns for query + /// + /// Object definition + /// RequestOptions + /// + protected string GenerateColumns(ObjectDefinition dbObjDef, RequestOptions options) + { + bool useTranslation = !string.IsNullOrEmpty(options.Language); + if (dbObjDef.TranslationDbObject == null) + { + useTranslation = false; + } + + var columns = new List(); + foreach (var p in dbObjDef.Properties.Values) + { + if (useTranslation && dbObjDef.UseTranslation && p.PropertyType == typeof(string)) + { + columns.Add($"coalesce({dbObjDef.TranslationDbObject?.Alias}.{p.Name},{dbObjDef.BaseDbObject.Alias}.{p.Name}) AS {p.Name}"); + } + else + { + columns.Add($"{dbObjDef.BaseDbObject.Alias}.{p.Name} AS {p.Name}"); + } + } + + return string.Join(',', columns); + } + #endregion +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Postgres/PostgresCrossRepo.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Postgres/PostgresCrossRepo.cs new file mode 100644 index 00000000..2e6603aa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Postgres/PostgresCrossRepo.cs @@ -0,0 +1,118 @@ +using System.Text; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Dapper; +using Microsoft.Extensions.Configuration; +using Npgsql; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Services.Postgres; + +/// +public class PostgresCrossRepo : PostgresBasicRepo, IDbCrossRepo + where TA : class + where T : class + where TB : class +{ + private string XAColumn { get; set; } + private string XBColumn { get; set; } + + private readonly IDbCrossConverter dbCrossConverter; + + /// + /// Initializes a new instance of the class. + /// + /// IConfiguration + /// IDbBasicConverter + public PostgresCrossRepo(IConfiguration config, IDbCrossConverter dbConverter) : base(config, dbConverter) + { + dbCrossConverter = dbConverter; + XAColumn = typeof(TA).Name + "Id"; + XBColumn = typeof(TB).Name + "Id"; + } + + /// + /// Override columnnames + /// + /// Ref column for table A + /// Ref column for table B + public void SetCrossColumns(string xAColumn, string xBColumn) + { + XAColumn = xAColumn; + XBColumn = xBColumn; + } + + /// + public async Task> ExecuteForA(Guid BId, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + options ??= new RequestOptions(); + var query = GenerateQuery(BId, XAColumn, XBColumn, options); + try + { + using var connection = new NpgsqlConnection(ConnectionString); + CommandDefinition cmd = new CommandDefinition(query.Query, query.Parameters, cancellationToken: cancellationToken); + return dbCrossConverter.ConvertA(await connection.ExecuteReaderAsync(cmd)); + } + catch + { + Console.WriteLine(query); + throw; + } + } + + /// + public async Task> ExecuteForB(Guid AId, RequestOptions? options = null, CancellationToken cancellationToken = default) + { + options ??= new RequestOptions(); + var query = GenerateQuery(AId, XBColumn, XAColumn, options); + try + { + using var connection = new NpgsqlConnection(ConnectionString); + CommandDefinition cmd = new CommandDefinition(query.Query, query.Parameters, cancellationToken: cancellationToken); + return dbCrossConverter.ConvertB(await connection.ExecuteReaderAsync(cmd)); + } + catch + { + Console.WriteLine(query); + throw; + } + } + + private (string Query, Dictionary Parameters) GenerateQuery(Guid id, string sourceColumn, string filterColumn, RequestOptions? options = null) + { + options ??= new RequestOptions(); + var param = new Dictionary(); + param.Add("Id", id); + + var baseObjDef = DbDefinitions.Get(typeof(T)) ?? throw new Exception($"Definition for '{typeof(T).Name}' not found"); + baseObjDef.BaseDbObject.Alias = "X"; + + var objDef = DbDefinitions.Get(typeof(TResult)) ?? throw new Exception($"Definition for '{typeof(TResult).Name}' not found"); + objDef.BaseDbObject.Alias = "TResult"; + + StringBuilder sb = new StringBuilder(); + sb.Append("SELECT "); + sb.AppendLine(GenerateColumns(objDef, options)); + sb.AppendLine($"FROM {GenerateSource(baseObjDef, options)}"); + sb.AppendLine($"INNER JOIN {objDef.BaseDbObject.GetPostgresDefinition(includeAlias: false)} AS TResult ON X.{sourceColumn} = TResult.Id"); + if (!string.IsNullOrEmpty(options.Language) && objDef.UseTranslation) + { + sb.AppendLine($"LEFT JOIN LATERAL (select * from {objDef.TranslationDbObject?.GetPostgresDefinition(includeAlias: false, useAsOf: options.AsOf.HasValue)} as t where t.Id = {objDef.BaseDbObject.Alias}.Id AND t.Language = @Language) as {objDef.TranslationDbObject?.Alias} on 1=1"); + } + + sb.AppendLine($"WHERE X.{filterColumn} = @Id"); + + string query = sb.ToString(); + + if (options.Language != null) + { + param.Add("Language", options.Language); + } + + if (options.AsOf.HasValue) + { + param.Add("_AsOf", options.AsOf.Value); + } + + return (query, param); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Postgres/PostgresExtendedRepo.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Postgres/PostgresExtendedRepo.cs new file mode 100644 index 00000000..9151dec9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/Postgres/PostgresExtendedRepo.cs @@ -0,0 +1,214 @@ +using System.Text; +using System.Text.Json; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Dapper; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Options; +using Npgsql; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Services.Postgres; + +/// +public class PostgresExtendedRepo : PostgresBasicRepo, IDbExtendedRepo + where T : class + where TExtended : class +{ + private List Joins { get; set; } = new List(); + private readonly IDbExtendedConverter dbExtendedConverter; + + /// + /// Initializes a new instance of the class. + /// + /// IConfiguration + /// IDbBasicConverter + public PostgresExtendedRepo(IConfiguration config, IDbExtendedConverter dbConverter) : base(config, dbConverter) + { + dbExtendedConverter = dbConverter; + } + + /// + public async Task<(IEnumerable Data, PagedResult PageInfo)> SearchExtended(string term, RequestOptions? options = null, bool startsWith = false) + { + var data = await GetExtended([new GenericFilter("Name", term, comparer: startsWith ? DbOperators.StartsWith : DbOperators.Contains)], options); + var paged = new PagedResult() + { + PageCount = 1, + ItemCount = data.Count(), + CurrentPage = 0, + PageSize = data.Count() + }; + + return (data, paged); + } + + /// + public void Join(string? alias = null, string baseJoinProperty = "", string joinProperty = "Id", bool optional = false) + { + alias = string.IsNullOrEmpty(alias) ? typeof(TJoin).Name : alias; + Joins.Add(new Join(alias, typeof(T), typeof(TJoin), baseJoinProperty, joinProperty, optional)); + } + + /// + public async Task> GetExtended(List? filters = null, RequestOptions? options = null) + { + options ??= new RequestOptions(); + var cmd = GetCommand(options, filters); + var param = new Dictionary(); + + if (filters != null) + { + foreach (var filter in filters) + { + param.Add(filter.Key, filter.Value); + } + } + + if (options.Language != null) + { + param.Add("Language", options.Language); + } + + if (options.AsOf.HasValue) + { + param.Add("_AsOf", options.AsOf.Value); + } + + return await ExecuteExtended(cmd, param); + } + + #region Internal + private async Task> ExecuteExtended(string query, Dictionary? parameters = null, CancellationToken cancellationToken = default) + { + try + { + using var connection = new NpgsqlConnection(ConnectionString); + CommandDefinition cmd = new CommandDefinition(query, parameters, cancellationToken: cancellationToken); + return dbExtendedConverter.ConvertExtended(await connection.ExecuteReaderAsync(cmd)); + } + catch + { + Console.WriteLine(query); + throw; + } + } + + private string GetCommand(RequestOptions? options = null, List? filters = null) + { + options ??= new RequestOptions(); + StringBuilder sb = new StringBuilder(); + + if (options.UsePaging) + { + sb.AppendLine("WITH PagedResult AS ("); + } + + sb.AppendLine("SELECT "); + sb.AppendLine(GenerateColumns(options)); + foreach (var j in Joins) + { + sb.Append(","); + sb.AppendLine(GenerateJoinPostgresColumns(j, options)); + } + + if (options.UsePaging) + { + string orderBy = string.IsNullOrEmpty(options.OrderBy) ? "Id" : options.OrderBy; + sb.AppendLine($",ROW_NUMBER() OVER (ORDER BY {DbObjDef.BaseDbObject.Alias}.{orderBy}) AS _RowNum"); + } + + sb.AppendLine("FROM " + GenerateSource(options)); + foreach (var j in Joins) + { + var joinStatement = GetJoinPostgresStatement(j, options); + sb.AppendLine(joinStatement.Query); + } + + if (filters != null && filters.Count > 0) + { + sb.AppendLine("WHERE " + string.Join(" AND ", filters.Select(t => $"{DbObjDef.BaseDbObject.Alias}.{t.Key} {t.Comparer} @{t.Key}"))); + } + + if (options.UsePaging) + { + sb.AppendLine(")"); + sb.AppendLine("SELECT *"); + sb.AppendLine("FROM PagedResult, (SELECT MAX(PagedResult._RowNum) AS TotalItems FROM PagedResult) AS PageInfo"); + sb.AppendLine($"ORDER BY _RowNum OFFSET {options.PageSize * (options.PageNumber - 1)} ROWS FETCH NEXT {options.PageSize} ROWS ONLY"); + } + + // Console.WriteLine(sb.ToString()); + return sb.ToString(); + } + + private string GetJoinPostgresFilterString(Join join) + { + if (join.Filter == null || join.Filter.Count == 0) + { + return ""; + } + + string result = string.Empty; + + foreach (var filter in join.Filter) + { + result += $" AND {join.BaseObj.BaseDbObject.Alias}.{filter.Key} = _{join.Alias}.{filter.Value}"; + } + + return result; + } + + /// + /// Generate Postgres join statement + /// + /// Join + /// RequestOptions + /// + public (string Query, List Parameters) GetJoinPostgresStatement(Join join, RequestOptions options) + { + // TODO: If table hasHistory... + if (options.AsOf.HasValue) + { + throw new NotImplementedException("AsOf feature not enabled in postgres"); + } + + string asOfCommand = options.AsOf.HasValue ? " FOR SYSTEM_TIME AS OF @_AsOf " : " "; + var query = $"{(join.Optional ? "LEFT OUTER" : "INNER")} JOIN {join.JoinObj.BaseDbObject.GetPostgresDefinition(includeAlias: false)}{asOfCommand}AS _{join.Alias} ON {join.BaseObj.BaseDbObject.Alias}.{join.BaseJoinProperty} = _{join.Alias}.{join.JoinProperty} {GetJoinPostgresFilterString(join)}"; + + bool useTranslation = !string.IsNullOrEmpty(options.Language); + if (useTranslation && join.JoinObj.UseTranslation && join.JoinObj.TranslationDbObject != null) + { + query += $""" + LEFT JOIN LATERAL (select * from {join.JoinObj.TranslationDbObject.GetPostgresDefinition(includeAlias: false)} {asOfCommand} as t where t.Id = _{join.Alias}.Id AND t.Language = @Language) as {join.Alias}{join.JoinObj.TranslationDbObject.Alias} on 1=1 + """; + } + + return (Query: query, Parameters: join.Filter); + } + + /// + /// Generate Postgres columns + /// + /// Join + /// RequestOptions + /// + public string GenerateJoinPostgresColumns(Join join, RequestOptions options) + { + bool useTranslation = !string.IsNullOrEmpty(options.Language); + var columns = new List(); + foreach (var p in join.JoinObj.Properties.Values) + { + if (join.JoinObj.TranslationDbObject != null && join.JoinObj.UseTranslation && useTranslation && p.PropertyType == typeof(string)) + { + columns.Add($"coalesce({join.Alias}{join.JoinObj.TranslationDbObject.Alias}.{p.Name},_{join.Alias}.{p.Name}) AS {join.Alias}_{p.Name}"); + } + else + { + columns.Add($"_{join.Alias}.{p.Name} AS {join.Alias}_{p.Name}"); + } + } + + return string.Join(',', columns); + } + #endregion +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/StatementCache.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/StatementCache.cs new file mode 100644 index 00000000..8e0ed7b5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Data/Services/StatementCache.cs @@ -0,0 +1,37 @@ +namespace Altinn.Authorization.AccessPackages.DbAccess.Data.Services; + +public static class StatementCache +{ + private static List Statemensts { get; set; } = new List(); + + public static void Set(string statement, string[] filtercolumns, bool useTranslation, bool useHistory) + { + Statemensts.Add(new Statement() + { + Type = typeof(T), + Query = statement, + UseHistory = useHistory, + UseTranslation = useTranslation, + Filters = filtercolumns + }); + } + + public static string? Get(string[] filtercolumns, bool useTranslation, bool useHistory) + { + return Statemensts.Where(t => + t.Type == typeof(T) && + t.UseTranslation == useTranslation && + t.UseHistory == useHistory && + t.Filters == filtercolumns + ).First().Query ?? null; + } +} + +public class Statement +{ + public Type Type { get; set; } + public string Query { get; set; } + public bool UseTranslation { get; set; } + public bool UseHistory { get; set; } + public string[] Filters { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Ingest/Contracts/IDatabaseIngest.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Ingest/Contracts/IDatabaseIngest.cs new file mode 100644 index 00000000..88d6b43e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Ingest/Contracts/IDatabaseIngest.cs @@ -0,0 +1,16 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +/// Database Ingest Service +/// +public interface IDatabaseIngest +{ + /// + /// Ingest all + /// + /// CancellationToken + /// + Task> IngestAll(CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Ingest/Contracts/IIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Ingest/Contracts/IIngestService.cs new file mode 100644 index 00000000..5bba6c12 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Ingest/Contracts/IIngestService.cs @@ -0,0 +1,30 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Ingest.Contracts; + +/// +/// IngestService +/// +/// Type to be ingested +/// ExtendedRepo to be used to ingest +public interface IIngestService + where TRepo : IDbBasicDataService +{ + /// + /// ExtendedRepo to be used to ingest + /// + TRepo DataService { get; } + + /// + /// Action to ingest data + /// + /// CancellationToken + /// IngestResult + Task IngestData(CancellationToken cancellationToken); + + /// + /// Hints if translations are available + /// + bool LoadTranslations { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Ingest/Models/IngestResult.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Ingest/Models/IngestResult.cs new file mode 100644 index 00000000..bd9e16ae --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Ingest/Models/IngestResult.cs @@ -0,0 +1,46 @@ +namespace Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; + +/// +/// Result generated from an ingest action +/// +public class IngestResult +{ + /// + /// IngestResult constructor + /// + /// Type of data ingested + public IngestResult(Type type) + { + Type = type; + } + + /// + /// Type of data ingested + /// + public Type Type { get; set; } + + /// + /// Indicate if ingestion was successfull + /// + public bool Success { get; set; } + + /// + /// Objects created + /// + public int Created { get; set; } + + /// + /// Objects updated + /// + public int Updated { get; set; } + + /// + /// Objects delted + /// + public int Deleted { get; set; } + + /// + /// Objects ignored + /// + public int Ignored { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Ingest/Models/JsonIngestConfig.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Ingest/Models/JsonIngestConfig.cs new file mode 100644 index 00000000..71f41bc3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Ingest/Models/JsonIngestConfig.cs @@ -0,0 +1,17 @@ +namespace Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; + +/// +/// JsonIngestConfig +/// +public class JsonIngestConfig +{ + /// + /// Basepath to data files + /// + public string BasePath { get; set; } + + /// + /// List of used languagecodes + /// + public List Languages { get; set; } = []; +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Contracts/IDatabaseMigration.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Contracts/IDatabaseMigration.cs new file mode 100644 index 00000000..976b9af8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Contracts/IDatabaseMigration.cs @@ -0,0 +1,13 @@ +namespace Altinn.Authorization.AccessPackages.DbAccess.Migrate.Contracts; + +/// +/// Database migration for schema +/// +public interface IDatabaseMigration +{ + /// + /// Initiate migration + /// + /// + Task Init(); +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Contracts/IDbMigrationFactory.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Contracts/IDbMigrationFactory.cs new file mode 100644 index 00000000..88dbe751 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Contracts/IDbMigrationFactory.cs @@ -0,0 +1,72 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Migrate.Contracts; + +/// +/// Database Migration Factory +/// +public interface IDbMigrationFactory +{ + /// + /// Enable translation + /// + bool UseTranslation { get; set; } + + /// + /// Enable history + /// + bool UseHistory { get; set; } + + /// + /// Initialize + /// + Task Init(); + + /// + /// Create schema + /// + /// Name + Task CreateSchema(string name); + + /// + /// Create function + /// + /// Name + /// Query + Task CreateFunction(string name, string query); + + /// + /// Create table + /// + /// + /// Create History table + /// Create Translation table + /// PrimaryKeys + Task CreateTable(bool withHistory = false, bool withTranslation = false, Dictionary? primaryKeyColumns = null); + + /// + /// Create column + /// + /// Type + /// Name + /// Datatype + /// Nullable + /// Default value + Task CreateColumn(string name, CommonDataType dbType, bool nullable = false, string? defaultValue = null); + + /// + /// Create unique constraint + /// + /// + /// Properties to be included in the constraint + Task CreateUniqueConstraint(string[] propertyNames); + + /// + /// Create foreign key constraint + /// + /// + /// + /// Source property + /// Target property (default: Id) + Task CreateForeignKeyConstraint(string sourceProperty, string targetProperty = "Id"); +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Models/DbMigrationConfig.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Models/DbMigrationConfig.cs new file mode 100644 index 00000000..b4bc3e8e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Models/DbMigrationConfig.cs @@ -0,0 +1,32 @@ +namespace Altinn.Authorization.AccessPackages.DbAccess.Migrate.Models; + +/// +/// Database Migration Configuration +/// +public class DbMigrationConfig +{ + /// + /// ConnectionString + /// + public string ConnectionString { get; set; } + + /// + /// Collection Id + /// + public string CollectionId { get; set; } + + /// + /// Default schema + /// + public string DefaultSchema { get; set; } + + /// + /// Translation schema + /// + public string TranslationSchema { get; set; } + + /// + /// History schema + /// + public string HistorySchema { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Models/MigrationEntry.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Models/MigrationEntry.cs new file mode 100644 index 00000000..1b5ecb60 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Models/MigrationEntry.cs @@ -0,0 +1,37 @@ +namespace Altinn.Authorization.AccessPackages.DbAccess.Migrate.Models; + +/// +/// MigrationEntry +/// +internal class MigrationEntry +{ + /// + /// ObjectName + /// + public string ObjectName { get; set; } + + /// + /// Key + /// + public string Key { get; set; } + + /// + /// Script + /// + public string Script { get; set; } + + /// + /// Status + /// + public string Status { get; set; } + + /// + /// At + /// + public DateTimeOffset At { get; set; } + + /// + /// Migration Collection Identity + /// + public string CollectionId { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Services/PostgresMigrationFactory.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Services/PostgresMigrationFactory.cs new file mode 100644 index 00000000..3eff940a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Services/PostgresMigrationFactory.cs @@ -0,0 +1,403 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Altinn.Authorization.AccessPackages.DbAccess.Migrate.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Migrate.Models; +using Dapper; +using Microsoft.Extensions.Options; +using Npgsql; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Migrate.Services; + +/// +/// Postgres Database Migration Factory +/// +public class PostgresMigrationFactory : IDbMigrationFactory +{ + private readonly NpgsqlConnection _connection; + + private readonly string defaultSchema = ""; + + /// + public bool UseTranslation { get; set; } + + private readonly string translationPrefix = ""; + private readonly string translationSchema = ""; + + /// + public bool UseHistory { get; set; } + + private readonly string historyPrefix = ""; + private readonly string historySchema = ""; + + /// + /// Migrations executed + /// + private List Migrations { get; set; } + + private readonly string _migrationId; + + /// + /// Initializes a new instance of the class. + /// + /// DbMigrationConfig + public PostgresMigrationFactory(IOptions options) + { + var config = options.Value; + + if (!string.IsNullOrEmpty(config.TranslationSchema)) + { + UseTranslation = true; + } + + if (!string.IsNullOrEmpty(config.HistorySchema)) + { + Console.WriteLine("History not supported ..."); + + // UseHistory = true; + } + + _connection = new NpgsqlConnection(config.ConnectionString); + + defaultSchema = config.DefaultSchema ?? "dbo"; + translationSchema = config.TranslationSchema ?? defaultSchema; + historySchema = config.HistorySchema ?? defaultSchema; + + _migrationId = config.CollectionId; + Migrations = new List(); + } + + /// + /// List of types that has history enabled + /// + public Dictionary HasHistory { get; set; } = new Dictionary(); + + /// + /// List of types that has translations enabled + /// + public Dictionary HasTranslation { get; set; } = new Dictionary(); + + /// + public async Task Init() + { + try + { + await InitMigration(); + await GetMigrations(); + } + catch (Exception ex) + { + LogError("Failed to load Migrations. " + ex.Message); + } + } + + private async Task InitMigration() + { + var checkQuery = "SELECT TABLE_NAME AS Name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = '_migration'"; + _connection.Open(); + var res = await _connection.ExecuteScalarAsync(checkQuery); + if (res?.ToString() == "_migration") + { + return; + } + + _connection.Close(); + + try + { + var query = "CREATE TABLE dbo._migration (" + + "ObjectName text NOT NULL," + + "Key text NOT NULL," + + "At timestamp NOT NULL," + + "Status text NOT NULL," + + "Script text NOT NULL," + + "CollectionId text NOT NULL" + + ")"; + await _connection.ExecuteAsync(query); + await LogMigration($"CREATE TABLE {TableName()}", query); + } + catch (Exception ex) + { + LogError(ex.Message); + } + finally + { + _connection.Close(); + } + } + + private async Task GetMigrations() + { + Migrations = new List(); + try + { + Migrations.AddRange(await _connection.QueryAsync("SELECT * FROM dbo._migration WHERE collectionid = @CollectionId", new { CollectionId = _migrationId })); + } + catch (Exception ex) + { + if (Migrations.Count == 0) + { + await InitMigration(); + } + + LogWarning(ex.Message); + return; + } + finally + { + _connection.Close(); + } + } + + private bool NeedMigration(string key) + { + return NeedMigration(key: key, objectName: typeof(T).Name); + } + + private bool NeedMigration(string key, string objectName) + { + if (Migrations == null || Migrations.Count == 0) + { + throw new Exception("No migrations to check"); + } + + return !Migrations.Exists(t => t.ObjectName == objectName && t.Key == key); + } + + private async Task LogMigration(string key, string script) + { + await LogMigration(key: key, script: script, objectName: typeof(T).Name); + } + + private async Task LogMigration(string key, string script, string objectName) + { + var migrationEntry = new MigrationEntry(); + migrationEntry.Key = key; + migrationEntry.At = DateTimeOffset.UtcNow; + migrationEntry.Status = "Executed"; + migrationEntry.ObjectName = objectName; + migrationEntry.Script = script; + migrationEntry.CollectionId = _migrationId; + LogInfo(key); + await _connection.ExecuteAsync("INSERT INTO dbo._migration (ObjectName, Key, At, Status, Script, CollectionId) VALUES(@ObjectName, @Key, @At, @Status, @Script, @CollectionId)", migrationEntry); + Migrations.Add(migrationEntry); + } + + /// + public async Task CreateFunction(string name, string query) + { + string migrationKey = $"CREATE FUNCTION {defaultSchema}.{name}"; + if (NeedMigration(migrationKey, "_common")) + { + await ExecuteQuery(query); + await LogMigration(migrationKey, query, "_common"); + } + } + + /// + public async Task CreateSchema(string name) + { + string migrationKey = $"CREATE SCHEMA {name}"; + if (NeedMigration(migrationKey, "Schema")) + { + string query = $"CREATE SCHEMA {name}"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query, "Schema"); + } + } + + /// + public async Task CreateTable(bool withHistory = false, bool withTranslation = false, Dictionary? primaryKeyColumns = null) + { + if (withHistory) + { + withHistory = false; + LogWarning($"History is not supported on postgres for '{TableName()}'"); + } + + string name = typeof(T).Name; + string migrationKey = $"CREATE TABLE {TableName()}"; + HasHistory.Add(typeof(T), withHistory); + HasTranslation.Add(typeof(T), withTranslation); + + primaryKeyColumns = primaryKeyColumns ?? new Dictionary() { { "Id", DataTypes.Guid } }; + var properties = typeof(T).GetProperties().ToList(); + foreach (var property in primaryKeyColumns) + { + if (!properties.Exists(t => t.Name == property.Key)) + { + // TODO: Check datatype + LogError($"PK: {typeof(T).Name} does not contain the property '{property.Key}'"); + return; + } + } + + string primaryKeyDefinition = string.Join(',', primaryKeyColumns.Select(t => $"{t.Key} {t.Value.Postgres} NOT NULL ")); + string primaryKeyConstraint = $"CONSTRAINT PK_{name} PRIMARY KEY ({string.Join(',', primaryKeyColumns.Select(t => $"{t.Key}"))})"; + + if (NeedMigration(migrationKey)) + { + string query = $"CREATE TABLE {TableName()} (" + primaryKeyDefinition + " , " + primaryKeyConstraint + ")"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query); + } + + if (withTranslation) + { + string translationKey = $"CREATE TABLE {TranslationTableName()}"; + if (NeedMigration(translationKey)) + { + primaryKeyColumns.Add("Language", DataTypes.String(10)); + primaryKeyConstraint = $"CONSTRAINT PK_{name} PRIMARY KEY ({string.Join(',', primaryKeyColumns.Select(t => $"{t.Key}"))})"; + + string query = $"CREATE TABLE {TranslationTableName()} (" + primaryKeyDefinition + " , " + + $"Language text NOT NULL," + + primaryKeyConstraint + ")"; + await ExecuteQuery(query); + await LogMigration(translationKey, query); + } + } + + /* + if (withHistory) + { + string query = $"CREATE TABLE {TableName()}(" + primaryKeyDefinition + "," + + $"ValidFrom DATETIME2(7) GENERATED ALWAYS AS ROW START HIDDEN NOT NULL," + + $"ValidTo DATETIME2(7) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL," + + $"PERIOD FOR SYSTEM_TIME(ValidFrom, ValidTo)," + + primaryKeyConstraint + ")" + + $"WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = {HistoryTableName()}, DATA_CONSISTENCY_CHECK = ON))"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query); + if (withTranslation) + { + primaryKeyColumns.Add("Language", DbType.String); + primaryKeyConstraint = $"CONSTRAINT PK_{name} PRIMARY KEY ({string.Join(',', primaryKeyColumns.Select(t => $"{t.Key}"))})"; + query = $"CREATE TABLE {TranslationTableName()}(" + primaryKeyDefinition + "," + + $"Language NVARCHAR(10) NOT NULL," + + $"ValidFrom DATETIME2(7) GENERATED ALWAYS AS ROW START HIDDEN NOT NULL," + + $"ValidTo DATETIME2(7) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL," + + $"PERIOD FOR SYSTEM_TIME(ValidFrom, ValidTo)," + + primaryKeyConstraint + ")" + + $"WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = {HistoryTableName("T_")}, DATA_CONSISTENCY_CHECK = ON))"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query); + } + } + */ + } + + /// + public async Task CreateColumn(string name, CommonDataType dbType, bool nullable = false, string? defaultValue = null) + { + string dbTypeString = dbType.Postgres; + string migrationKey = $"ADD COLUMN {TableName()}.{name}"; + if (NeedMigration(migrationKey)) + { + if (nullable && string.IsNullOrEmpty(defaultValue)) + { + LogWarning("A nullable column with no default value will fail if table is not empty."); + } + + // If default not text... + string query = $"ALTER TABLE {TableName()} ADD {name} {dbTypeString} {(nullable ? "NULL" : "NOT NULL")} {(string.IsNullOrEmpty(defaultValue) ? "" : $"DEFAULT '{defaultValue}'")};"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query); + } + + if (HasTranslation[typeof(T)]) + { + string translationKey = $"ADD COLUMN {TranslationTableName()}.{name}"; + if (NeedMigration(translationKey)) + { + var query = $"ALTER TABLE {TranslationTableName()} ADD {name} {dbTypeString} NULL {(string.IsNullOrEmpty(defaultValue) ? "" : $"DEFAULT '{defaultValue}'")};"; + await ExecuteQuery(query); + await LogMigration(translationKey, query); + } + } + } + + /// + public async Task CreateUniqueConstraint(string[] propertyNames) + { + foreach (var property in propertyNames) + { + if (!typeof(T).GetProperties().ToList().Exists(t => t.Name == property)) + { + LogError($"{typeof(T).Name} does not contain the property '{property}'"); + return; + } + } + + var migrationKey = $"ADD CONSTRAINT {TableName()}.UC_{typeof(T).Name}"; + if (NeedMigration(migrationKey)) + { + var query = $"ALTER TABLE {TableName()} ADD CONSTRAINT UC_{typeof(T).Name} UNIQUE ({string.Join(',', propertyNames.Select(t => $"{t}"))})"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query); + } + } + + /// + public async Task CreateForeignKeyConstraint(string sourceProperty, string targetProperty = "Id") + { + if (!typeof(TSource).GetProperties().ToList().Exists(t => t.Name == sourceProperty)) + { + LogError($"{typeof(TSource).Name} does not contain the property '{sourceProperty}'"); + } + + if (!typeof(TTarget).GetProperties().ToList().Exists(t => t.Name == targetProperty)) + { + LogError($"{typeof(TSource).Name} does not contain the property '{targetProperty}'"); + } + + var migrationKey = $"ADD CONSTRAINT {TableName()}.FK_{typeof(TSource).Name}_{sourceProperty}"; + if (NeedMigration(migrationKey)) + { + var query = $"ALTER TABLE {TableName()} ADD CONSTRAINT FK_{typeof(TSource).Name}_{sourceProperty} FOREIGN KEY ({sourceProperty}) REFERENCES {TableName()} ({targetProperty})"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query); + } + } + + private string TableName() => $"{defaultSchema}.{typeof(T).Name}"; + + private string TranslationTableName() => $"{translationSchema}.{translationPrefix}{typeof(T).Name}"; + + private string HistoryTableName(string prefix = "") => $"{historySchema}.{historyPrefix}{prefix}{typeof(T).Name}"; + + private async Task ExecuteQuery(string query) + { + try + { + await _connection.ExecuteAsync(query); + } + catch (Exception ex) + { + LogInfo(query); + LogWarning(query); + LogError(ex.Message); + throw; + } + } + + private void LogError(string message) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine("ERROR: " + message); + Console.ForegroundColor = ConsoleColor.White; + } + + private void LogWarning(string message) + { + Console.ForegroundColor = ConsoleColor.Yellow; + Console.WriteLine("WARN: " + message); + Console.ForegroundColor = ConsoleColor.White; + } + + private void LogInfo(string message) + { + Console.ForegroundColor = ConsoleColor.Blue; + Console.WriteLine("INFO: " + message); + Console.ForegroundColor = ConsoleColor.White; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Services/SqlMigrationFactory.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Services/SqlMigrationFactory.cs new file mode 100644 index 00000000..4bb59d32 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Migrate/Services/SqlMigrationFactory.cs @@ -0,0 +1,384 @@ +using System.Data; +using System.Data.SqlClient; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Altinn.Authorization.AccessPackages.DbAccess.Migrate.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Migrate.Models; +using Dapper; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.DbAccess.Migrate.Services; + +/// +/// Sql Database Migration Factory +/// +public class SqlMigrationFactory : IDbMigrationFactory +{ + private readonly IDbConnection _connection; + + /// + /// Default schema + /// + private readonly string defaultSchema = ""; + + /// + public bool UseTranslation { get; set; } + private readonly string translationPrefix = ""; + private readonly string translationSchema = ""; + + /// + public bool UseHistory { get; set; } + private readonly string historyPrefix = ""; + private readonly string historySchema = ""; + + /// + /// List of migrations executed + /// + private List Migrations { get; set; } + private readonly string _migrationId; + + /// + /// Initializes a new instance of the class. + /// + /// DbMigrationConfig + public SqlMigrationFactory(IOptions options) + { + var config = options.Value; + + if (!string.IsNullOrEmpty(translationSchema)) + { + UseTranslation = true; + } + + if (!string.IsNullOrEmpty(historySchema)) + { + UseHistory = true; + } + + _connection = new SqlConnection(config.ConnectionString); + + defaultSchema = config.DefaultSchema ?? "dbo"; + translationSchema = config.TranslationSchema ?? defaultSchema; + historySchema = config.HistorySchema ?? defaultSchema; + + _migrationId = config.CollectionId; + Migrations = new List(); + } + + /// + /// List of types that has history enabled + /// + public Dictionary HasHistory { get; set; } = new Dictionary(); + + /// + /// List of types that has translations enabled + /// + public Dictionary HasTranslation { get; set; } = new Dictionary(); + + /// + public async Task Init() + { + try + { + await InitMigration(); + await GetMigrations(); + } + catch (Exception ex) + { + LogError("Failed to load Migrations. " + ex.Message); + } + } + + private async Task InitMigration() + { + var checkQuery = "SELECT [TABLE_NAME] AS [Name] FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = '_Migration'"; + _connection.Open(); + var res = await _connection.ExecuteScalarAsync(checkQuery); + if (res?.ToString() == "_Migration") + { + return; + } + + _connection.Close(); + + try + { + var query = "CREATE TABLE [dbo].[_Migration] (" + + "[ObjectName] NVARCHAR(250) NOT NULL," + + "[Key] NVARCHAR(500) NOT NULL," + + "[At] DATETIMEOFFSET(7) NOT NULL," + + "[Status] NVARCHAR(50) NOT NULL," + + "[Script] NVARCHAR(MAX) NOT NULL," + + "[CollectionId] NVARCHAR(64) NOT NULL" + + ")"; + await _connection.ExecuteAsync(query); + await LogMigration($"CREATE TABLE {TableName()}", query); + } + catch (Exception ex) + { + LogError(ex.Message); + } + finally + { + _connection.Close(); + } + } + + private async Task GetMigrations() + { + Migrations = new List(); + try + { + Migrations.AddRange(await _connection.QueryAsync("SELECT * FROM [dbo].[_Migration] WHERE [CollectionId] = @CollectionId", new { CollectionId = _migrationId })); + } + catch (Exception ex) + { + if (Migrations.Count == 0) + { + await InitMigration(); + } + + LogWarning(ex.Message); + return; + } + finally + { + _connection.Close(); + } + } + + private bool NeedMigration(string key) + { + return NeedMigration(key: key, objectName: typeof(T).Name); + } + + private bool NeedMigration(string key, string objectName) + { + if (Migrations == null || Migrations.Count == 0) + { + throw new Exception("No migrations to check"); + } + + return !Migrations.Exists(t => t.ObjectName == objectName && t.Key == key); + } + + private async Task LogMigration(string key, string script) + { + await LogMigration(key: key, script: script, objectName: typeof(T).Name); + } + + private async Task LogMigration(string key, string script, string objectName) + { + var m = new MigrationEntry(); + m.Key = key; + m.At = DateTimeOffset.UtcNow; + m.Status = "Executed"; + m.ObjectName = objectName; + m.Script = script; + m.CollectionId = _migrationId; + LogInfo(key); + await _connection.ExecuteAsync("INSERT [dbo].[_Migration] ([ObjectName], [Key], [At], [Status], [Script], [CollectionId]) VALUES(@ObjectName, @Key, @At, @Status, @Script, @CollectionId)", m); + Migrations.Add(m); + } + + /// + public async Task CreateFunction(string name, string query) + { + string migrationKey = $"CREATE FUNCTION [{defaultSchema}].[{name}]"; + if (NeedMigration(migrationKey, "_common")) + { + await ExecuteQuery(query); + await LogMigration(migrationKey, query, "_common"); + } + } + + /// + public async Task CreateSchema(string name) + { + string migrationKey = $"CREATE SCHEMA [{name}]"; + if (NeedMigration(migrationKey, "Schema")) + { + string query = $"CREATE SCHEMA [{name}]"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query, "Schema"); + } + } + + /// + public async Task CreateTable(bool withHistory = false, bool withTranslation = false, Dictionary? primaryKeyColumns = null) + { + string name = typeof(T).Name; + string migrationKey = $"CREATE TABLE {TableName()}"; + HasHistory.Add(typeof(T), withHistory); + HasTranslation.Add(typeof(T), withTranslation); + + if (NeedMigration(migrationKey)) + { + primaryKeyColumns = primaryKeyColumns ?? new Dictionary() { { "Id", DataTypes.Guid } }; + foreach (var property in primaryKeyColumns) + { + if (!typeof(T).GetProperties().ToList().Exists(t => t.Name == property.Key)) + { + // TODO: Check datatype + LogError($"{typeof(T).Name} does not contain the property '{property.Key}'"); + return; + } + } + + string primaryKeyDefinition = string.Join(',', primaryKeyColumns.Select(t => $"[{t.Key}] [{t.Value.MsSql}] NOT NULL")); + string primaryKeyConstraint = $"CONSTRAINT [PK_{name}] PRIMARY KEY ({string.Join(',', primaryKeyColumns.Select(t => $"[{t.Key}]"))})"; + + if (!withHistory) + { + string query = $"CREATE TABLE {TableName()} (" + primaryKeyDefinition + " " + primaryKeyConstraint + ")"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query); + + if (withTranslation) + { + primaryKeyColumns.Add("Language", DataTypes.String(10)); + primaryKeyConstraint = $"CONSTRAINT [PK_{name}] PRIMARY KEY ({string.Join(',', primaryKeyColumns.Select(t => $"[{t.Key}]"))})"; + + query = $"CREATE TABLE {TranslationTableName()} (" + primaryKeyDefinition + + $"[Language] NVARCHAR(10) NOT NULL," + + primaryKeyConstraint + ")"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query); + } + } + + if (withHistory) + { + string query = $"CREATE TABLE {TableName()}(" + primaryKeyDefinition + "," + + $"[ValidFrom] DATETIME2(7) GENERATED ALWAYS AS ROW START HIDDEN NOT NULL," + + $"[ValidTo] DATETIME2(7) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL," + + $"PERIOD FOR SYSTEM_TIME([ValidFrom], [ValidTo])," + + primaryKeyConstraint + ")" + + $"WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = {HistoryTableName()}, DATA_CONSISTENCY_CHECK = ON))"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query); + + if (withTranslation) + { + primaryKeyColumns.Add("Language", DataTypes.String(10)); + primaryKeyConstraint = $"CONSTRAINT [PK_{name}] PRIMARY KEY ({string.Join(',', primaryKeyColumns.Select(t => $"[{t.Key}]"))})"; + + query = $"CREATE TABLE {TranslationTableName()}(" + primaryKeyDefinition + "," + + $"[Language] NVARCHAR(10) NOT NULL," + + $"[ValidFrom] DATETIME2(7) GENERATED ALWAYS AS ROW START HIDDEN NOT NULL," + + $"[ValidTo] DATETIME2(7) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL," + + $"PERIOD FOR SYSTEM_TIME([ValidFrom], [ValidTo])," + + primaryKeyConstraint + ")" + + $"WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = {HistoryTableName("T_")}, DATA_CONSISTENCY_CHECK = ON))"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query); + } + } + } + } + + /// + public async Task CreateColumn(string name, CommonDataType dbType, bool nullable = false, string? defaultValue = null) + { + string dbTypeString = dbType.MsSql; + string migrationKey = $"ADD COLUMN {TableName()}.[{name}]"; + if (NeedMigration(migrationKey)) + { + if (nullable && string.IsNullOrEmpty(defaultValue)) + { + LogWarning("A nullable column with no default value will fail if table is not empty."); + } + + string query = $"ALTER TABLE {TableName()} ADD [{name}] {dbTypeString} {(nullable ? "NULL" : "NOT NULL")} {(string.IsNullOrEmpty(defaultValue) ? "" : $"DEFAULT('{defaultValue}')")};"; + await ExecuteQuery(query); + await LogMigration($"ADD COLUMN [{defaultSchema}].[{typeof(T).Name}].[{name}]", query); + + if (HasTranslation[typeof(T)]) + { + query = $"ALTER TABLE {TranslationTableName()} ADD [{name}] {dbTypeString} NULL {(string.IsNullOrEmpty(defaultValue) ? "" : $"DEFAULT('{defaultValue}')")};"; + await ExecuteQuery(query); + await LogMigration($"ADD COLUMN {TableName()} [{defaultSchema}].[{typeof(T).Name}].[{name}]", query); + } + } + } + + /// + public async Task CreateUniqueConstraint(string[] propertyNames) + { + foreach (var property in propertyNames) + { + if (!typeof(T).GetProperties().ToList().Exists(t => t.Name == property)) + { + LogError($"{typeof(T).Name} does not contain the property '{property}'"); + return; + } + } + + var migrationKey = $"ADD CONSTRAINT {TableName()}.[UC_{typeof(T).Name}]"; + if (NeedMigration(migrationKey)) + { + var query = $"ALTER TABLE {TableName()} ADD CONSTRAINT [UC_{typeof(T).Name}] UNIQUE ({string.Join(',', propertyNames.Select(t => $"[{t}]"))})"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query); + } + } + + /// + public async Task CreateForeignKeyConstraint(string sourceProperty, string targetProperty = "Id") + { + if (!typeof(TSource).GetProperties().ToList().Exists(t => t.Name == sourceProperty)) + { + LogError($"{typeof(TSource).Name} does not contain the property '{sourceProperty}'"); + } + + if (!typeof(TTarget).GetProperties().ToList().Exists(t => t.Name == targetProperty)) + { + LogError($"{typeof(TSource).Name} does not contain the property '{targetProperty}'"); + } + + var migrationKey = $"ADD CONSTRAINT {TableName()}.[FK_{typeof(TSource).Name}_{sourceProperty}]"; + if (NeedMigration(migrationKey)) + { + var query = $"ALTER TABLE {TableName()} ADD CONSTRAINT [FK_{typeof(TSource).Name}_{sourceProperty}] FOREIGN KEY ([{sourceProperty}]) REFERENCES {TableName()}([{targetProperty}])"; + await ExecuteQuery(query); + await LogMigration(migrationKey, query); + } + } + + private string TableName() => $"[{defaultSchema}].[{typeof(T).Name}]"; + private string TranslationTableName() => $"[{translationSchema}].[{translationPrefix}{typeof(T).Name}]"; + private string HistoryTableName(string prefix = "") => $"[{historySchema}].[{historyPrefix}{prefix}{typeof(T).Name}]"; + private async Task ExecuteQuery(string query) + { + try + { + await _connection.ExecuteAsync(query); + } + catch (Exception ex) + { + LogWarning(query); + LogError(ex.Message); + throw; + } + } + + private void LogError(string message) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine("ERROR: " + message); + Console.ForegroundColor = ConsoleColor.White; + } + + private void LogWarning(string message) + { + Console.ForegroundColor = ConsoleColor.Yellow; + Console.WriteLine("WARN: " + message); + Console.ForegroundColor = ConsoleColor.White; + } + + private void LogInfo(string message) + { + Console.ForegroundColor = ConsoleColor.Blue; + Console.WriteLine("INFO: " + message); + Console.ForegroundColor = ConsoleColor.White; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/README.md b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/README.md new file mode 100644 index 00000000..a0232ff0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/README.md @@ -0,0 +1,291 @@ +# AccessPackages - DbAccess + +## Concepts +The datamodel is closely coupled with the database. There are three core concepts Basic, Extended and Cross. **Basic** has a one-to-one mapping from class properties to table columns. While **Extended** extend the Basic classes with related objects using foreign keys to join data together. **Cross** enables queries on many-to-many relationship tables to return one side based on the other. + +## Contracts +There are two main sets of contracts in DbAccess; **Data** and **Repo**. The **Repo Services** connects to the database while **Data Service** contains a repo service to keep the database implementation seperate from the data service implementation. Doing this helps seperate object implementation to the diffrent database implementations. + +### Data Services + +#### IBasicDataService +``` +public interface IBasicDataService +{ + IDbBasicRepo Repo { get; } +} +``` + +#### IExtendedDataService +``` +public interface IExtendedDataService : IBasicDataService +{ + IDbExtendedRepo ExtendedRepo { get; } +} +``` + +#### ICrossDataService +``` +public interface ICrossDataService : IBasicDataService +{ + IDbCrossRepo CrossRepo { get; } +} +``` + +### Repo Services + +#### IDbBasicRepo +``` +public interface IDbBasicRepo +{ + Task> Get(RequestOptions? options = null, CancellationToken cancellationToken = default); + Task Get(Guid id, RequestOptions? options = null, CancellationToken cancellationToken = default); + + Task<(IEnumerable Data, PagedResult PageInfo)> Search(SearchOptions term, RequestOptions options, CancellationToken cancellationToken = default); + Task> Search(string term, RequestOptions? options = null, CancellationToken cancellationToken = default); + + Task> Get(string property, Guid value, RequestOptions? options = null, CancellationToken cancellationToken = default); + Task> Get(string property, int value, RequestOptions? options = null, CancellationToken cancellationToken = default); + Task> Get(string property, string value, RequestOptions? options = null, CancellationToken cancellationToken = default); + Task> Get(Dictionary parameters, RequestOptions? options = null, CancellationToken cancellationToken = default); + + Task Create(T entity, CancellationToken cancellationToken = default); + Task Create(List entity, CancellationToken cancellationToken = default); + + Task Update(Guid id, T entity, CancellationToken cancellationToken = default); + Task Update(Guid id, string property, string value, CancellationToken cancellationToken = default); + Task Update(Guid id, string property, int value, CancellationToken cancellationToken = default); + Task Update(Guid id, string property, Guid value, CancellationToken cancellationToken = default); + + Task Delete(Guid id, CancellationToken cancellationToken = default); + + Task CreateTranslation(T entity, string language, CancellationToken cancellationToken = default); + Task UpdateTranslation(Guid id, T entity, string language, CancellationToken cancellationToken = default); +} +``` + +#### IDbExtendedRepo +``` +public interface IDbExtendedRepo : IDbBasicRepo +{ + Task<(IEnumerable Data, PagedResult PageInfo)> SearchExt(SearchOptions term, RequestOptions options); + + Task> GetExtended(RequestOptions? options = null); + Task> GetExtended(string property, Guid value, RequestOptions? options = null); + Task> GetExtended(string property, int value, RequestOptions? options = null); + Task> GetExtended(string property, string value, RequestOptions? options = null); + Task GetExtended(Guid id, RequestOptions? options = null); + + void Join(string alias = "", string baseJoinProperty = "", string joinProperty = "Id", bool optional = false); +} +``` + +#### IDbCrossRepo +``` +public interface IDbCrossRepo : IDbBasicRepo +{ + Task> GetX(Guid id, RequestOptions? options = null); + Task> GetA(Guid BId, RequestOptions? options = null); + Task> GetB(Guid AId, RequestOptions? options = null); + + void SetCrossColumns(string xAColumn, string xBColumn); +} + +``` + +## Services +Using Base implementations for generic DataServices and Base implementations of RepoServices for mssql and postgres the implementation for each new table/object is minimal and standerdized. + +#### BaseDataService\ : IBasicDataService\ +``` +public class BaseDataService : IBasicDataService +{ + public IDbBasicRepo Repo { get; } + public BaseDataService(IDbBasicRepo repo) + { + Repo = repo; + } +} +``` + +#### BaseExtendedDataService : BaseDataService, IExtendedDataService +``` +public class BaseExtendedDataService : BaseDataService, IExtendedDataService +{ + public IDbExtendedRepo ExtendedRepo { get; } + public BaseExtendedDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo = repo; + } +} +``` + +#### BaseCrossDataService : BaseDataService, ICrossDataService +``` +public class BaseCrossDataService : BaseDataService, ICrossDataService +{ + public IDbCrossRepo CrossRepo { get; } + public BaseCrossDataService(IDbCrossRepo repo) : base(repo) + { + CrossRepo = repo; + } +} +``` + +### Postgres + +``` +PostgresBasicRepo : IDbBasicRepo +{ + ... +} +``` +``` +PostgresExtendedRepo : PostgresBasicRepo, IDbExtendedRepo +{ + ... +} +``` +``` +PostgresCrossRepo : PostgresBasicRepo, IDbCrossRepo +{ + ... +} +``` + +### Mssql + +``` +SqlBasicRepo : IDbBasicRepo +{ + ... +} +``` +``` +SqlExtendedRepo : SqlBasicRepo, IDbExtendedRepo +{ + ... +} +``` +``` +SqlCrossRepo : SqlBasicRepo, IDbCrossRepo +{ + ... +} +``` + +## Example +Here is an example of how to implement Tags in this system. + +### Model + +``` +public class Tag +{ + public Guid Id { get; set; } + public Guid? GroupId { get; set; } + public Guid? ParentId { get; set; } + public string Name { get; set; } +} +public class ExtTag : Tag +{ + public TagGroup? Group { get; set; } + public Tag? Parent { get; set; } +} +``` + +### Migration +``` +public class DatabaseMigration : IDatabaseMigration +{ + ... + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("Name", DataTypes.String(50)); + await _factory.CreateColumn("GroupId", DataTypes.Guid, nullable: true); + await _factory.CreateColumn("ParentId", DataTypes.Guid, nullable: true); + await _factory.CreateUniqueConstraint(["Name"]); + await _factory.CreateForeignKeyConstraint("GroupId"); + await _factory.CreateForeignKeyConstraint("ParentId"); + ... +} +``` + +### Ingestion +``` +public class TagJsonIngestService : BaseJsonIngestService, IIngestService +{ + public TagJsonIngestService(ITagService service, IOptions config) : base(service, config) { } +} +``` + +### Converter +``` +public partial class DbConverter : IDbConverter +{ + private List ConvertTagFromDataReader(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtTag() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + GroupId = (Guid)reader["groupid"], + ParentId = (Guid?)reader["parentid"], + Group = ConvertSingleTagGroup(reader, "group_"), + Parent = ConvertSingleTag(reader, "parent_") + }); + } + + return result; + } +} +``` + +### Contract +``` +public interface ITagService : IExtendedDataService { } +``` + +### Service +```csharp +public class TagDataService : BaseExtendedDataService, ITagService +{ + public TagDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join("Group", optional: true); + ExtendedRepo.Join("Parent", optional: true); + } +} +``` + +### DI +``` +Program.cs +... +/* Migrate database schema */ +builder.Services.Configure(builder.Configuration.GetSection("DbMigration")); +builder.Services.AddSingleton(); +builder.Services.AddSingleton(); + +/* Ingest data */ +builder.Services.Configure(builder.Configuration.GetSection("JsonIngest")); +builder.Services.AddSingleton(); + +/*Converters*/ +builder.Services.AddSingleton(); +... +builder.Services.AddSingleton, PostgresExtendedRepo>(); +builder.Services.AddSingleton(); +... +var host = builder.Build(); +... +/* Migrate database schema */ +var dbMigration = host.Services.GetRequiredService(); +await dbMigration.Init(); + +/* Ingest data */ +var dbIngest = host.Services.GetRequiredService(); +await dbIngest.IngestAll(); +``` \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Telemetry.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Telemetry.cs new file mode 100644 index 00000000..020f1c20 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.DbAccess/Telemetry.cs @@ -0,0 +1,14 @@ +using System.Diagnostics; + +namespace Altinn.Authorization.AccessPackages.DbAccess; +public static class Telemetry +{ + public static ActivitySource Source = new ActivitySource("Altinn.Authorization.DbAccess", "1.0.0"); + + public static Activity? StartActivity(string name, ActivityKind kind = ActivityKind.Internal) + { + var a = Source.StartActivity(name + $"<{typeof(T).Name}>", kind); + a?.SetCustomProperty("Type", typeof(T)); + return a; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Altinn.Authorization.FFB.csproj b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Altinn.Authorization.FFB.csproj new file mode 100644 index 00000000..e8e688e1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Altinn.Authorization.FFB.csproj @@ -0,0 +1,22 @@ + + + + net8.0 + enable + enable + CS8601;CS8602;CS8604;CS8618;CA1822;IDE0051 + + + + + + + + + + + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/App.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/App.razor new file mode 100644 index 00000000..5b64b218 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/App.razor @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Layout/MainLayout.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Layout/MainLayout.razor new file mode 100644 index 00000000..633f2d4e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Layout/MainLayout.razor @@ -0,0 +1,12 @@ +@inherits LayoutComponentBase +
+ +
+ @Body +
+
+ +@code +{ + +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Layout/MainLayout.razor.css b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Layout/MainLayout.razor.css new file mode 100644 index 00000000..038baf17 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Layout/MainLayout.razor.css @@ -0,0 +1,96 @@ +.page { + position: relative; + display: flex; + flex-direction: column; +} + +main { + flex: 1; +} + +.sidebar { + background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); +} + +.top-row { + background-color: #f7f7f7; + border-bottom: 1px solid #d6d5d5; + justify-content: flex-end; + height: 3.5rem; + display: flex; + align-items: center; +} + + .top-row ::deep a, .top-row ::deep .btn-link { + white-space: nowrap; + margin-left: 1.5rem; + text-decoration: none; + } + + .top-row ::deep a:hover, .top-row ::deep .btn-link:hover { + text-decoration: underline; + } + + .top-row ::deep a:first-child { + overflow: hidden; + text-overflow: ellipsis; + } + +@media (max-width: 640.98px) { + .top-row { + justify-content: space-between; + } + + .top-row ::deep a, .top-row ::deep .btn-link { + margin-left: 0; + } +} + +@media (min-width: 641px) { + .page { + flex-direction: row; + } + + .sidebar { + width: 250px; + height: 100vh; + position: sticky; + top: 0; + } + + .top-row { + position: sticky; + top: 0; + z-index: 1; + } + + .top-row.auth ::deep a:first-child { + flex: 1; + text-align: right; + width: 0; + } + + .top-row, article { + padding-left: 2rem !important; + padding-right: 1.5rem !important; + } +} + +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + + #blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; + } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Layout/NavMenu.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Layout/NavMenu.razor new file mode 100644 index 00000000..036da837 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Layout/NavMenu.razor @@ -0,0 +1,44 @@ +@using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage +@inject ProtectedSessionStorage ProtectedSessionStore + + + + +
+ + +
+
+ + + Bokmål + Nynorsk + English + + + + +
+ +
+
+
+ + Home + Tilgangspakker + Områder + Roller + Tags + + Providers + Policies + Resources + EntityTypes + Entities + + +
+ +@code +{ +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Layout/NavMenu.razor.css b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Layout/NavMenu.razor.css new file mode 100644 index 00000000..4e15395e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Layout/NavMenu.razor.css @@ -0,0 +1,105 @@ +.navbar-toggler { + appearance: none; + cursor: pointer; + width: 3.5rem; + height: 2.5rem; + color: white; + position: absolute; + top: 0.5rem; + right: 1rem; + border: 1px solid rgba(255, 255, 255, 0.1); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1); +} + +.navbar-toggler:checked { + background-color: rgba(255, 255, 255, 0.5); +} + +.top-row { + height: 3.5rem; + background-color: rgba(0,0,0,0.4); +} + +.navbar-brand { + font-size: 1.1rem; +} + +.bi { + display: inline-block; + position: relative; + width: 1.25rem; + height: 1.25rem; + margin-right: 0.75rem; + top: -1px; + background-size: cover; +} + +.bi-house-door-fill-nav-menu { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E"); +} + +.bi-plus-square-fill-nav-menu { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E"); +} + +.bi-list-nested-nav-menu { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E"); +} + +.nav-item { + font-size: 0.9rem; + padding-bottom: 0.5rem; +} + + .nav-item:first-of-type { + padding-top: 1rem; + } + + .nav-item:last-of-type { + padding-bottom: 1rem; + } + + .nav-item ::deep .nav-link { + color: #d7d7d7; + background: none; + border: none; + border-radius: 4px; + height: 3rem; + display: flex; + align-items: center; + line-height: 3rem; + width: 100%; + } + +.nav-item ::deep a.active { + background-color: rgba(255,255,255,0.37); + color: white; +} + +.nav-item ::deep .nav-link:hover { + background-color: rgba(255,255,255,0.1); + color: white; +} + +.nav-scrollable { + display: none; +} + +.navbar-toggler:checked ~ .nav-scrollable { + display: block; +} + +@media (min-width: 641px) { + .navbar-toggler { + display: none; + } + + .nav-scrollable { + /* Never collapse the sidebar for wide screens */ + display: block; + + /* Allow sidebar to scroll for tall menus */ + height: calc(100vh - 3.5rem); + overflow-y: auto; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/AreaGroup_Details.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/AreaGroup_Details.razor new file mode 100644 index 00000000..d495b8b7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/AreaGroup_Details.razor @@ -0,0 +1,67 @@ +@page "/areagroup/{id:guid}" +@inject IAreaGroupService areaGroupService +@inject IAreaService areaService + + +@if(AreaGroup != null) +{ + Områdegruppe - @AreaGroup.Name + + + + Areas + @AreaGroup.Name + +

@AreaGroup.Name

+ @AreaGroup.Description +
+ + + +
+ +
+

Områder

+ + + + + + + + + + @foreach (var area in Areas.OrderBy(t => t.Name)) + { + + + + + + } + +
 NameDescription
+ + + @area.Name + @area.Description
+
+} + +@code { + + [Parameter] public Guid id { get; set; } + public AreaGroup? AreaGroup { get; set; } + public List Areas { get; set; } + + protected async override Task OnParametersSetAsync() + { + var opt = UserData.GetRequestOptions(); + AreaGroup = await areaGroupService.Get(id, options: opt); + if (AreaGroup != null) + { + Areas = [.. await areaService.GetExtended("groupid", AreaGroup.Id, options: opt)]; + } + } + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Area_Details.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Area_Details.razor new file mode 100644 index 00000000..0b0f14c7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Area_Details.razor @@ -0,0 +1,87 @@ +@page "/area/{id:guid}" +@inject IAreaService areaService +@inject IPackageService packageService + +@if (Area != null) +{ + @Area.Name + + + + + Områder + @Area.Group.Name + @Area.Name + +

+
+ +
+ @Area.Name +

+

@Area.Description

+
+ + +
+ + + + +
+

Tilgangspakker

+ + + + + + + + + + + + @foreach(var package in Packages) + { + + + + + + + + } + +
NameDescriptionDelegableProviderEntityType
@package.Name@package.Description + @if (package.IsDelegable) + { + + } + else + { + + } + @package.Provider.Name@package.EntityType.Name
+
+ +
+ +} + +@code { + + [Parameter] public Guid id { get; set; } + public ExtArea? Area { get; set; } + public List Packages { get; set; } + + + protected async override Task OnParametersSetAsync() + { + var opt = UserData.GetRequestOptions(); + Area = await areaService.GetExtended(id, options: opt); + if(Area != null) + { + Packages = [.. await packageService.GetExtended("areaid", Area.Id, options: opt)]; + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Area_Index.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Area_Index.razor new file mode 100644 index 00000000..abd6dd8d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Area_Index.razor @@ -0,0 +1,102 @@ +@page "/areas" +@inject IAreaService areaService + +Områder + + + + + Areas + +

Fullmaktsområder

+
+ + Fordel i grupper + +
+ +@if(Areas != null) +{ + @if (GroupByGroups) + { + @foreach(var grp in Groups.OrderBy(t=>t.Name)) + { +
+

@grp.Name

+ @grp.Description + + + + + + + + + + @foreach (var area in Areas.Where(t=>t.GroupId == grp.Id).OrderBy(t => t.Name)) + { + + + + + + } + +
 NameDescription
+ + + @area.Name + @area.Description
+
+ } + } + else + { +
+ + + + + + + + + + + @foreach(var area in Areas.OrderBy(t=>t.Group.Name).ThenBy(t=>t.Name)) + { + + + + + + + } + +
IconNameDescriptionGroup
+ + + @area.Name + @area.Description + @area.Group.Name +
+
+ } +} + + +@code { + + public List Groups { get; set; } + public List Areas { get; set; } + + public bool GroupByGroups { get; set; } = false; + + protected async override Task OnParametersSetAsync() + { + var opt = UserData.GetRequestOptions(); + Areas = [.. await areaService.ExtendedRepo.GetExtended(options: opt)]; + Groups = Areas.Select(t => t.Group).DistinctBy(t=>t.Id).ToList(); + } + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/EntityType_Details.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/EntityType_Details.razor new file mode 100644 index 00000000..fdef0a41 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/EntityType_Details.razor @@ -0,0 +1,109 @@ +@page "/entitytype/{Id:guid}" +@inject IEntityTypeService entityTypeData +@inject IEntityVariantService variantData +@inject IRoleService roleData + + +@if(EntityType != null) +{ + EntityType - @EntityType.Name + + + + + Entity Types + @EntityType.Name + +

@EntityType.Name

+
+ + @* + + + *@ + +
+ + + + @if(Variants != null && Variants.Any()) + { +
+

Variants

+ + + + + + + + + @foreach (var variant in Variants.OrderBy(t => t.Name)) + { + + + + + } + +
NameDescription
@variant.Name@variant.Description
+
+ } + + + + @if (Roles != null && Roles.Any()) + { +
+

Roles

+ + + + + + + + + + + @foreach (var role in Roles.OrderByDescending(t => t.Provider.Name).ThenBy(t => t.Name)) + { + + + + + + + } + +
CodeNameEierDescription
@role.Code@role.Name@role.Provider.Name@role.Description
+
+ } + + + +
+ +} +@code { + + [Parameter] public Guid Id { get; set; } + public ExtEntityType EntityType { get; set; } + public List Variants { get; set; } + + public List Roles { get; set; } + + protected async override Task OnParametersSetAsync() + { + var opt = UserData.GetRequestOptions(); + + EntityType = await entityTypeData.GetExtended(Id, options: opt); + if(EntityType != null) + { + Variants = [.. await variantData.GetExtended("TypeId", EntityType.Id, options: opt)]; + Roles = [.. await roleData.GetExtended("EntityTypeId", EntityType.Id, options: opt)]; + } + } + + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/EntityType_Index.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/EntityType_Index.razor new file mode 100644 index 00000000..81134d45 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/EntityType_Index.razor @@ -0,0 +1,54 @@ +@page "/entitytype" +@inject IEntityTypeService typeData + +Entity Types + +@if(EntityTypes != null) +{ + + + + Entity Types + +

Entity Types

+
+ + +
+ + +
+

EntityTypes

+ + + + + + + + + @foreach (var type in EntityTypes.OrderBy(t => t.Name)) + { + + + + + } + +
NameProvider
@type.Name@type.Provider.Name
+
+ +} + +@code { + + public List EntityTypes { get; set; } + + protected async override Task OnParametersSetAsync() + { + var opt = UserData.GetRequestOptions(); + EntityTypes = [.. await typeData.ExtendedRepo.GetExtended(options: opt) ?? new List()]; + } + + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/EntityVariant_Details.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/EntityVariant_Details.razor new file mode 100644 index 00000000..61aa2421 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/EntityVariant_Details.razor @@ -0,0 +1,69 @@ +@page "/entityvariant/{id:guid}" +@inject IEntityVariantService variantData +@inject IEntityVariantRoleService variantRoleData + +@if(Variant != null) +{ + + +Variant - @Variant.Name + + + + + Entity Types + @Variant.Type.Name + @Variant.Name + +

@Variant.Name | @Variant.Description

+
+ + @* + + + *@ + +
+ +
+

Roller

+ @if (Roles != null) + { + + + + + + + + + @foreach (var r in Roles.OrderBy(t => t.Code)) + { + + + + @* *@ + + } + +
NameDescription
@r.Name (@r.Code)@r.Description Flyouts.ToggleFlyout("editRolePackage"))>✎
+ + } +
+} + +@code { + + [Parameter] public Guid Id { get; set; } + public ExtEntityVariant Variant { get; set; } + public List Roles { get; set; } + + protected async override Task OnParametersSetAsync() + { + var opt = UserData.GetRequestOptions(); + + Variant = await variantData.GetExtended(Id, options: opt); + Roles = [.. await variantRoleData.GetB(Variant.Id, options: opt) ?? new List()]; + } + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Entity_Details.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Entity_Details.razor new file mode 100644 index 00000000..638e16fc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Entity_Details.razor @@ -0,0 +1,134 @@ +@page "/entity/{Id:guid}" +@inject IEntityService entityData +@inject IRoleAssignmentService roleAssignmentData + +@if(Entity != null) +{ + + Entity - @Entity.Name + + + +

@Entity.Name

+
+ + @* + + + *@ + +
+ + + + + + + + + + + + + + + + +
Type@Entity.Type.Name
Variant@Entity.Variant.Name
RefId@Entity.RefId
+ + + @if(ForRoleAssignments != null && ForRoleAssignments.Any()) + { +
+

Roller (for)

+ + + + + + + + + + + @foreach (var toId in ForRoleAssignments.Select(t=>t.ToId).Distinct()) + { + var assignment = ForRoleAssignments.First(t => t.ToId == toId); + + + + + + } + +
ForRoleTo
@assignment.For.Name +
+ @foreach (var assignmentRole in ForRoleAssignments.Where(t=>t.ToId == toId).OrderBy(t=>t.Role.Name)) + { + @assignmentRole.Role.Code + } +
+
@assignment.To.Name
+ +
+ } + + @if (ToRoleAssignments != null && ToRoleAssignments.Any()) + { +
+

Roller (to)

+ + + + + + + + + + + + @foreach (var forId in ToRoleAssignments.Select(t => t.ForId).Distinct()) + { + var assignment = ToRoleAssignments.First(t => t.ForId == forId); + + + + + + } + +
ForRoleTo
@assignment.For.Name +
+ @foreach (var assignmentRole in ToRoleAssignments.Where(t => t.ForId == forId).OrderBy(t => t.Role.Name)) + { + @assignmentRole.Role.Code + } +
+
@assignment.To.Name
+ +
+ } +} + + +@code { + + [Parameter] public Guid Id { get; set; } + public ExtEntity Entity { get; set; } + public List ForRoleAssignments { get; set; } + public List ToRoleAssignments { get; set; } + + protected async override Task OnParametersSetAsync() + { + var opt = UserData.GetRequestOptions(); + + Entity = await entityData.GetExtended(Id, options: opt); + if(Entity != null) + { + ForRoleAssignments = [.. await roleAssignmentData.GetExtended("ForId", Entity.Id, options: opt) ?? new List()]; + ToRoleAssignments = [.. await roleAssignmentData.GetExtended("ToId", Entity.Id, options: opt) ?? new List()]; + } + } + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Entity_Index.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Entity_Index.razor new file mode 100644 index 00000000..ddf22b00 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Entity_Index.razor @@ -0,0 +1,84 @@ +@page "/entities/" +@inject IEntityService entityData + + +Entities + + + +

Entities

+
+ + @* + + + *@ + + + +
+ + + + + @if(Entities != null && Entities.Any()) + { +

Result : @PagedResult.ItemCount

+ + @foreach(var entity in Entities) + { + + } + + + + + } + + +@code { + public string SearchTerm { get; set; } = ""; + + + public PagedResult PagedResult { get; set; } = new PagedResult(); + public List Entities { get; set; } = new List(); + + private async Task HandleInputTextInput(ChangeEventArgs e) + { + SearchTerm = e.Value?.ToString() ?? ""; + await LoadData(1); + } + + private async Task LoadData(int page) + { + if(SearchTerm.Length < 2) + { + return; + } + var opt = UserData.GetRequestOptions(); + + opt.UsePaging = true; + opt.PageNumber = page; + opt.PageSize = 20; + + var res = await entityData.ExtendedRepo.SearchExtended(SearchTerm, opt, true); + if(res.Data == null) + { + Entities = new List(); + PagedResult = new PagedResult(); + return; + } + else + { + PagedResult = res.PageInfo; + Entities = res.Data.ToList(); + } + } + + protected async override Task OnParametersSetAsync() + { + await LoadData(1); + + } + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Error.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Error.razor new file mode 100644 index 00000000..576cc2d2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Error.razor @@ -0,0 +1,36 @@ +@page "/Error" +@using System.Diagnostics + +Error + +

Error.

+

An error occurred while processing your request.

+ +@if (ShowRequestId) +{ +

+ Request ID: @RequestId +

+} + +

Development Mode

+

+ Swapping to Development environment will display more detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

+ +@code{ + [CascadingParameter] + private HttpContext? HttpContext { get; set; } + + private string? RequestId { get; set; } + private bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + + protected override void OnInitialized() => + RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier; +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Home.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Home.razor new file mode 100644 index 00000000..419581b7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Home.razor @@ -0,0 +1,7 @@ +@page "/" + +Home + +

Hello, world!

+ +Welcome to your new app. diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Options_Details.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Options_Details.razor new file mode 100644 index 00000000..59c0564f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Options_Details.razor @@ -0,0 +1,43 @@ +@page "/options" +@inject Blazored.LocalStorage.ILocalStorageService localStorage + +@if(Options != null) +{ +

Options

+ + + + + +} +else +{ + +} + +@code { + protected RequestOptions Options { get; set; } + + protected async override Task OnAfterRenderAsync(bool firstRender) + { + if (Options == null) + { + await LoadOptions(); + } + } + + protected async Task LoadOptions() + { + if (await localStorage.ContainKeyAsync("RequestOptions")) + { + Options = await localStorage.GetItemAsync("RequestOptions") ?? new RequestOptions(); + } + else + { + Options = new RequestOptions(); + } + } + + protected async Task SaveOptions() => await localStorage.SetItemAsync("RequestOptions", Options); + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Package_Details.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Package_Details.razor new file mode 100644 index 00000000..2c6c5a5c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Package_Details.razor @@ -0,0 +1,178 @@ +@page "/package/{id:guid}" +@inject IPackageService packageData +@inject IPackageResourceService packageResourceService +@inject IPackageTagService packagetagService +@inject IRolePackageService rolePackageService +@inject IPackageTagService packageTagData +@inject IAreaGroupService areaGroupData + +@if(Package != null) +{ + Package - @Package.Name + + + + + Tilgangspakker + @(GetAreaGroup(Package.Area.GroupId).Name) + @Package.Area.Name + @Package.Name + +

@Package.Name

+

@Package.Description

+ @if (Tags != null) + { +
+ @foreach (var t in Tags) + { + @t.Name + } +
+ } +
+ + + + + + + + +
+ + + + + + @if (RolePolicies != null) + { +
+

Roller

+

Denne tilgangspakken blir tildelt følgende rolle automatisk

+ + + + + + + + + + + @foreach (var r in RolePolicies.OrderBy(t => t.Role.Code)) + { + + + + + + + } + +
RolleKan delegereHar tilgang 
@r.Role.Name (@r.Role.Code) + @if (r.IsAdmin) + { + + } + else + { + + } + + @if (r.IsActor) + { + + } + else + { + + } +
+
+ } + + @if (Resources != null) + { +
+

Ressurser

+

Ressurser koblet til denne tilgangspakken

+ + + + + + + + + @foreach (var r in Resources.OrderBy(t => t.Resource.Name)) + { + + + + } + +
Name
+ @r.Resource.Name +
+
+ } + +
+ @* + + + + +
Provider@Package.Provider.Name
*@ + + + + + + + + + + + + + + + + + + + + +} + +@code { + + [Parameter] public Guid Id { get; set; } + public ExtPackage Package { get; set; } + public IEnumerable Resources { get; set; } + public IEnumerable RolePolicies { get; set; } + public List Tags { get; set; } + public List AreaGroups { get; set; } + + public bool IsAddResourceOpen { get; set; } + public bool IsEditPackageOpen { get; set; } + + protected override async Task OnInitializedAsync() + { + var opt = UserData.GetRequestOptions(); + Package = await packageData.GetExtended(Id, options: opt); + Resources = await packageResourceService.GetExtended("PackageId", Package.Id, options: opt); + RolePolicies = await rolePackageService.GetExtended("PackageId", Package.Id, options: opt); + AreaGroups = [.. await areaGroupData.Get(options: opt) ?? new List()]; + Tags = [.. await packageTagData.GetB(Package.Id, options: opt) ?? new List()]; + + } + + private AreaGroup? GetAreaGroup(Guid id) + { + return AreaGroups.First(t => t.Id == id) ?? null; + } + +} + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Package_Index.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Package_Index.razor new file mode 100644 index 00000000..7141bbd9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Package_Index.razor @@ -0,0 +1,122 @@ +@page "/packages" +@inject IPackageService packageData +@inject IPackageTagService packageTagData +@inject ITagService tagData +@inject ITagGroupService tagGroupData +@inject IPackageResourceService packageResourceData +@inject IResourceService resourceData + +Tilgangspakker + + + + + Tilgangspakker + +

Tilgangspakker

+
+ + + Fordel i grupper + +
+ +@if (Packages != null) +{ + if (GroupByGroups) + { + foreach(var area in Packages.Select(t => t.Area).DistinctBy(t => t.Id)) + { +
+ +
+ @area.Name +
+ + + + + + + + + + + + @foreach (var package in Filtered.Where(t=>t.AreaId == area.Id).OrderBy(t => t.Name)) + { + + + + + + + } + +
NavnBeskrivelseDelegerbarType
@package.Name@package.Description + @if (package.IsDelegable) + { + + } + else + { + + } + @package.EntityType.Name
+
+ } + } + else + { +
+ + + + + + + + + + + + @foreach (var package in Filtered.OrderBy(t => t.Name)) + { + + + + + + + + } + +
OmrådeNavnBeskrivelseDelegerbarType
@package.Name@package.Description + @if (package.IsDelegable) + { + + } + else + { + + } + @package.EntityType.Name
+
+ } +} + + +@code { + + public List Packages { get; set; } + public string SearchTerm { get; set; } = ""; + public bool GroupByGroups { get; set; } = false; + + protected override async Task OnInitializedAsync() + { + var opt = UserData.GetRequestOptions(); + Packages = [.. await packageData.ExtendedRepo.GetExtended(options: opt) ?? new List()]; + } + + List Filtered => Packages.Where(i => i.Name.ToLower().Contains(SearchTerm.ToLower()) || i.Description.ToLower().Contains(SearchTerm.ToLower())).ToList(); +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Provider_Details.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Provider_Details.razor new file mode 100644 index 00000000..67106c00 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Provider_Details.razor @@ -0,0 +1,129 @@ +@page "/provider/{Id:guid}" +@inject IProviderService providerData +@inject IResourceGroupService resourceGroupData +@inject IResourceService resourceData +@inject IRoleService roleData + +@if(Provider != null) +{ + + Provider - @Provider.Name + + + + + Providers + @Provider.Name + +

@Provider.Name

+
+ + + +
+ + + + @if(Roles != null && Roles.Any()) + { +
+
+

Roller

+ +
+
+ + + + + + + + + + + + + @foreach (var role in RolesFiltered.OrderBy(t => t.Name)) + { + + + + + + + + + } + +
NameProviderTypeURNDescriptionCode
@role.Name@role.Provider.Name@role.EntityType.Name@role.Urn@role.Description@role.Code
+
+ } + + @if(Resources != null && Resources.Any()) + { +
+
+

Ressurser

+ +
+
+ + + + + + + + + + @foreach (var resource in ResourceFiltered.OrderBy(t => t.Name)) + { + + + + + + } + +
NameGroupType
@resource.Name@resource.Group.Name@resource.Type.Name
+
+ } + +
+} +@code { + + [Parameter] public Guid Id { get; set; } + + public Provider Provider { get; set; } + + public List Roles { get; set; } + //public List ResourceGroups { get; set; } = new List(); + public List Resources { get; set; } = new List(); + + public string RoleSearchTerm { get; set; } = ""; + public string ResourceSearchTerm { get; set; } = ""; + + List ResourceFiltered => Resources.Where(i => i.Name.ToLower().Contains(ResourceSearchTerm.ToLower())).ToList(); + List RolesFiltered => Roles.Where(i => i.Name.ToLower().Contains(RoleSearchTerm.ToLower()) || i.Description.ToLower().Contains(RoleSearchTerm.ToLower())).ToList(); + + + protected override async Task OnInitializedAsync() + { + var opt = UserData.GetRequestOptions(); + + Provider = await providerData.Get(Id, options: opt); + Roles = [.. await roleData.GetExtended("ProviderId", Id, options: opt)]; + // ResourceGroups = [.. await resourceGroupData.Get("ProviderId", Provider.Id) ?? new List()]; + // if(ResourceGroups != null) + // { + // Resources = new List(); + // foreach(var rg in ResourceGroups) + // { + // Resources.AddRange(await resourceData.GetExtended("GroupId", rg.Id) ?? new List()); + // } + // } + } + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Provider_Index.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Provider_Index.razor new file mode 100644 index 00000000..8a4e68d6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Provider_Index.razor @@ -0,0 +1,47 @@ +@page "/providers" +@inject IProviderService providerData + +Providers + +@if(Providers != null) +{ + + + + Providers + +

Providers

+
+ + + +
+ +
+ + + @foreach (var provider in FilteredProviders) + { + + } + +} + + + +@code { + + public List Providers { get; set; } + public string SearchTerm { get; set; } = ""; + + List FilteredProviders => Providers.Where(i => i.Name.ToLower().Contains(SearchTerm.ToLower())).ToList(); + + + protected override async Task OnInitializedAsync() + { + using var a = Telemetry.StartActivity("Index"); + var opt = UserData.GetRequestOptions(); + + Providers = [.. await providerData.Get(options: opt) ?? new List()]; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Resource_Details.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Resource_Details.razor new file mode 100644 index 00000000..ed6cd455 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Resource_Details.razor @@ -0,0 +1,83 @@ +@page "/resource/{Id:guid}" +@inject IResourceService resourceData +@inject IProviderService providerData +@inject IPackageResourceService packageResourceService + +@if(Resource != null) +{ + Package - @Resource.Name + + + + + + Providers + @Resource.Provider.Name + +

@Resource.Name

+
+ + @* + *@ + +
+ + + + +

Egenskaper

+ + + + + + + + + + + + + + + +
Provider@Provider.Name
Group@Resource.Group.Name
Type@Resource.Type.Name
+
+ + +

Tilgangspakker

+ + @if (Resources != null) + { + + @foreach (var r in Resources) + { + + } + + } + +
+ +
+} + +@code { + + [Parameter] public Guid Id { get; set; } + public ExtResource Resource { get; set; } + public Provider Provider { get; set; } + public IEnumerable Resources { get; set; } + + protected override async Task OnInitializedAsync() + { + var opt = UserData.GetRequestOptions(); + + Resource = await resourceData.GetExtended(Id, options: opt); + if(Resource != null) + { + Provider = await providerData.Get(Resource.Group.ProviderId, options: opt); + Resources = await packageResourceService.GetExtended("ResourceId", Resource.Id, options: opt); + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Resource_Index.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Resource_Index.razor new file mode 100644 index 00000000..88ea8ce6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Resource_Index.razor @@ -0,0 +1,212 @@ +@page "/resources" +@inject IResourceService resourceData +@inject ITagService tagData +@inject ITagGroupService tagGroupData + +Ressurser + +@if(Resources != null) +{ + + +

Ressurser (@GetResources().Count())

+
+ + + +
+ +
+ +
+

Gruppering

+
+ +
ToggleGroupBy("Category"))> + + Kategori +
+ +
ToggleGroupBy("Industry"))> + + Bransje +
+ +
ToggleGroupBy("Provider"))> + + Tilbyder +
+ +
+ + +

Filtrering

+ +
+

Tag

+ + @foreach (var tag in SimpleTags.Where(t=>t.GroupId.HasValue == false)) + { +
+ + @tag.Name +
+ } +
+
+ + @foreach(var tagGroup in Tags.Where(t=>t.Group != null).Select(t => t.Group).DistinctBy(t => t.Id)) + { +
+

@tagGroup.Name

+ + @foreach(var tag in Tags.Where(t=>t.GroupId == tagGroup.Id)) + { + +
+ + @tag.Name +
+ + } +
+
+ } + +
+

Tilbyder

+ + @foreach(var p in Providers) + { +
+ + @p.Name +
+ } + +
+ +
+
+ + @foreach (var gr in GetGroupedResources()) + { +

@gr.Key

+
+ @foreach(var r in gr.Value) + { +
+ @r.Name + @r.Provider.Name +
+ } +
+ } +
+ +
+} +@code { + + public List Resources { get; set; } + + public string SearchTerm { get; set; } = ""; + protected override async Task OnParametersSetAsync() + { + Resources = [.. await resourceData.ExtendedRepo.GetExtended()]; + Providers = Resources.Select(t => t.Provider).DistinctBy(t => t.Id).ToList(); + Tags = [.. await tagData.ExtendedRepo.GetExtended()]; + SimpleTags = [.. await tagData.Get()]; + SelectedProviders = new List(); + SelectedTags = new List(); + } + + #region Providers + public List Providers { get; set; } + public List SelectedProviders { get; set; } + List PossibleProviders => GetResources().Select(t => t.Provider).DistinctBy(t=>t.Id).ToList(); + private void ToggleProvider(Guid id) + { + if (SelectedProviders.Contains(id)) + { + SelectedProviders.Remove(id); + } + else + { + SelectedProviders.Add(id); + } + } + #endregion + + /*Need ResourceTag data ... */ + public List SimpleTags { get; set; } + public List Tags { get; set; } + public List SelectedTags { get; set; } + private void ToggleTag(Guid id) + { + if(SelectedTags.Contains(id)) + { + SelectedTags.Remove(id); + } + else + { + SelectedTags.Add(id); + } + } + + private string SelectedGroupBy { get; set; } = ""; + private void ToggleGroupBy(string name) + { + if(SelectedGroupBy == name) + { + SelectedGroupBy = ""; + } + else + { + SelectedGroupBy = name; + } + } + + private Dictionary> GetGroupedResources() + { + var result = new Dictionary>(); + var filteredResources = GetResources(); + + if (string.IsNullOrEmpty(SelectedGroupBy)) + { + result.Add("", filteredResources); + } + + if(SelectedGroupBy == "Provider") + { + foreach(var p in filteredResources.Select(t => t.Provider).DistinctBy(t => t.Id)) + { + result.Add(p.Name, filteredResources.Where(t => t.ProviderId == p.Id).ToList()); + } + } + this.ShouldRender(); + return result; + } + private List GetResources() + { + List result = new List(); + foreach(var r in Resources) + { + if (!r.Name.ToLower().Contains(SearchTerm.ToLower())) + { + continue; + } + if(SelectedProviders != null && SelectedProviders.Any()) + { + if (!SelectedProviders.Contains(r.ProviderId)) + { + continue; + } + } + + result.Add(r); + } + + return result; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Role_Details.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Role_Details.razor new file mode 100644 index 00000000..7bf5fb7b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Role_Details.razor @@ -0,0 +1,273 @@ +@page "/role/{Id:guid}" +@inject IRoleService roleData +@inject IProviderService providerData +@inject IPackageService packageData +@inject IRolePackageService rolePackageData +@inject IPackageTagService packageTagData +@inject ITagService tagData +@inject IEntityTypeService entityTypeData +@inject IEntityVariantRoleService variantRoleData +@inject IRoleMapService roleMapData +@inject IAreaService areaData + +@if(Role != null) +{ + Role - @Role.Name + + + + + + + + Roller + @Role.Name + +

@Role.Name

+ @Role.Description +
+ + + + +
+
+ +
+

Egenskaper

+ + + + + + + + + + + + + + + + + + + +
Provider@Provider.Name
Type + @Role.EntityType.Name +
Code@Role.Code
Urn@Role.Urn
+
+ +
+

Rolle til rolle

+ + + + + + + + + @foreach (var roleMap in RoleMaps) + { + + + + + } + +
HarGir
@roleMap.HasRole.Name (@roleMap.HasRole.Code)@roleMap.GetRole.Name (@roleMap.GetRole.Code)
+
+ + + +

Tilgangspakker

+ @if (RolePackages != null) + { + + + + + + + + + + + + + + @foreach (var r in RolePackages.OrderBy(t=>t.Package.AreaId).ThenBy(t=>t.Package.Name)) + { + + + + + + + + + + } + +
OmrådePackTagsKan delegereHar tilgangVariant 
+ @GetArea(r.Package.AreaId).Name + @r.Package.Name + @foreach (var t in GetPackageTags(r.Package.Id)) + { + @t.Name + } + + @if (r.IsAdmin) + { + + } + else + { + + } + + @if (r.IsActor) + { + + } + else + { + + } + @r.EntityVariant?.Name 
+ } +
+ + +

Variants

+ + + + + + + + + + @foreach (var variant in RoleVariants.OrderBy(t => t.Name)) + { + + + + + + } + +
NameTypeDescription
@variant.Name@variant.Type.Name@variant.Description
+
+ +
+ + +
Select package
+ + + @foreach(var p in NewFilteredPackage) + { + @p.Name + } +
+ +
+ + + +
+ +
+ + + +} + +@code { + + [Parameter] public Guid Id { get; set; } + public ExtRole Role { get; set; } + public Provider Provider { get; set; } + public IEnumerable RolePackages { get; set; } + public List RoleVariants { get; set; } + + public List PackageTags { get; set; } + public List Tags { get; set; } + public List RoleMaps { get; set; } + + protected override async Task OnParametersSetAsync() + { + var opt = UserData.GetRequestOptions(); + + Role = await roleData.GetExtended(Id, options: opt); + if(Role != null) + { + Provider = await providerData.Get(Role.EntityType.ProviderId, options: opt); + Policies = [.. await packageData.Get(options: opt)]; + RolePackages = await rolePackageData.GetExtended("RoleId", Role.Id, options: opt); + + var hasRoleMaps = await roleMapData.GetExtended("HasRoleId", Role.Id, options: opt); + var getRoleMaps = await roleMapData.GetExtended("GetRoleId", Role.Id, options: opt); + RoleMaps = new List(); + RoleMaps.AddRange(hasRoleMaps); + RoleMaps.AddRange(getRoleMaps); + + var entityTypes = await entityTypeData.Get(options: opt); + var variants = await variantRoleData.GetA(Role.Id, options: opt); + RoleVariants = new List(); + foreach(var variant in variants) + { + var extVariant = new ExtEntityVariant() + { + Id = variant.Id, + Name = variant.Name, + Description = variant.Description, + TypeId = variant.TypeId, + Type = entityTypes.First(t => t.Id == variant.TypeId) + }; + RoleVariants.Add(extVariant); + } + + Areas = [.. await areaData.GetExtended(options: opt)]; + PackageTags = [.. await packageTagData.Get(options: opt) ?? new List()]; + Tags = [.. await tagData.Get(options: opt) ?? new List()]; + } + } + + public List Areas { get; set; } + private ExtArea GetArea(Guid areaId) + { + + if(Areas == null || !Areas.Any()) + { + var opt = UserData.GetRequestOptions(); + Areas = [.. areaData.GetExtended(options: opt).Result]; + } + + return Areas.FirstOrDefault(t => t.Id == areaId) ?? new ExtArea(); + } + + protected IEnumerable GetPackageTags(Guid packageId) + { + var pt = PackageTags.Where(t => t.PackageId == packageId).Select(t => t.TagId); + if (pt.Any()) + { + return Tags.Where(t => pt.Contains(t.Id)); + } + return new List(); + } + + protected void ToggleEditRolePackage(RolePackage rolePackage) + { + + } + + public List Policies { get; set; } + public Package SelectedPackage { get; set; } + public string NewSerchTerm { get; set; } = ""; + public List NewFilteredPackage => Policies.Where(t => t.Name.ToLower().Contains(NewSerchTerm.ToLower())).ToList(); +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Role_Index.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Role_Index.razor new file mode 100644 index 00000000..098a0eff --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Role_Index.razor @@ -0,0 +1,93 @@ +@page "/roles" +@inject IRoleService roleData +@inject IRoleMapService roleMapData + +Roles + +@if(Roles != null) +{ + + + + Roller + +

Roller

+
+ + + +
+ + @if (Roles != null) + { +
+ + + + + + + + + + + + + @foreach (var role in Filtered.OrderBy(t=>t.Urn)) + { + + + + + + + + + } + +
KodeNavnKildeTypeUrnBeskrivelse
@role.Code@role.Name@role.Provider.Name@role.EntityType.Name@role.Urn@role.Description
+
+ } + + @if(RoleMaps != null) + { +
+

Rolle til rolle koblinger

+ + + + + + + + + + @foreach (var role in RoleMaps.OrderBy(t => t.HasRole.Code)) + { + + + + + } + +
HarGir
@role.HasRole.Name@role.GetRole.Name
+
+ } +} + +@code { + public List Roles { get; set; } + public List RoleMaps { get; set; } + + public string SearchTerm { get; set; } = ""; + + protected override async Task OnInitializedAsync() + { + var opt = UserData.GetRequestOptions(); + Roles = [.. await roleData.ExtendedRepo.GetExtended(options: opt) ?? new List()]; + RoleMaps = [.. await roleMapData.ExtendedRepo.GetExtended(options: opt) ?? new List()]; + } + + List Filtered => Roles.Where(i => i.Name.ToLower().Contains(SearchTerm.ToLower()) || i.Description.ToLower().Contains(SearchTerm.ToLower())).ToList(); + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/TagGroup_Details.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/TagGroup_Details.razor new file mode 100644 index 00000000..9f822403 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/TagGroup_Details.razor @@ -0,0 +1,157 @@ +@page "/taggroup/{Id:guid}" +@inject ITagGroupService tagGroupData +@inject ITagService tagData + +@if(TagGroup != null) +{ + Tag Group - @TagGroup.Name + + + + + + +

@TagGroup.Name

+
+ + + +
+
+ +
+

Tags

+ + + @foreach(var tag in Tags) + { + + } + +
+ + @if(Translations != null) + { +
+

Oversettelser

+ + + + + + + + + + @foreach (var translation in Translations) + { + + + + + + } + +
SpråkNavn 
@translation.Key@translation.Value.Name
+
+ } +
+ + + + + +
+ +
+
+
+ + + + + +
+ + +
+ + @if(!string.IsNullOrEmpty(NewTagFeedback.msg)) + { + + @NewTagFeedback.details + + } + +
+
+ +} + +@code { + + [Parameter] public Guid Id { get; set; } + public TagGroup TagGroup { get; set; } + public List Tags { get; set; } + + public bool TranslateIsOpen { get; set; } + public string TranslateLanguage { get; set; } + public string TranslateName { get; set; } + + public bool NewTagIsOpen { get; set; } + public Tag NewTag { get; set; } = new Tag(); + public (string msg, Styx.Message.MsgState state, string details) NewTagFeedback { get; set; } + + public Dictionary Translations { get; set; } = new Dictionary(); + + protected async override Task OnParametersSetAsync() + { + await LoadData(); + } + + private async Task LoadData() + { + var opt = UserData.GetRequestOptions(); + + TagGroup = await tagGroupData.Get(Id, options: opt); + Tags = [.. await tagData.Get("GroupId", Id, options: opt) ?? new List()]; + + List languages = ["nob", "nno", "eng"]; + Translations = new Dictionary(); + foreach(var lang in languages) + { + Translations.Add(lang, await tagGroupData.Get(Id, options: new RequestOptions() { Language = lang })); + } + } + + private void ToggleTranslate(string lang) + { + TranslateLanguage = lang; + TranslateName = Translations[lang].Name; + TranslateIsOpen = !TranslateIsOpen; + } + + private async Task CreateTag() + { + if (!string.IsNullOrEmpty(NewTag.Name)) + { + NewTag.Id = Guid.NewGuid(); + NewTag.GroupId = TagGroup.Id; + try + { + var res = await tagData.Create(NewTag); + if(res != 1) + { + throw new Exception("Unable to create..."); + } + NewTagFeedback = ("Vellykket!", Message.MsgState.Success, ""); + NewTag = new Tag(); + } + catch (Exception ex) + { + NewTagFeedback = ("Feil oppstod!", Message.MsgState.Alert, ex.Message); + } + } + } + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Tag_Details.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Tag_Details.razor new file mode 100644 index 00000000..103bd3cb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Tag_Details.razor @@ -0,0 +1,116 @@ +@page "/tag/{id:guid}" +@inject ITagService tagData +@inject IPackageTagService packageTagData + +@if(Tag != null) +{ + + Tag - @Tag.Name + + + + + + + +
@Tag.Group?.Name
+

@Tag.Name

+
+ + @* + *@ + +
+ +
+ + @if(Policies != null) + { +
+

Tilgangspakker

+ + @foreach (var package in Policies) + { + + } + +
+ } + + @if (Translations != null) + { +
+

Oversettelser

+ + + + + + + + + + @foreach (var translation in Translations) + { + + + + + + } + +
SpråkNavn 
@translation.Key@translation.Value.Name
+
+ } + + +
+ + + + + + + + +
+ +
+ +
+
+ +} +@code { + + [Parameter] public Guid Id { get; set; } + public ExtTag Tag { get; set; } + public Dictionary Translations { get; set; } = new Dictionary(); + + public bool TranslateIsOpen { get; set; } = false; + public string SelectedLanguage { get; set; } = "eng"; + public string TranslatedName { get; set; } + + public List Policies { get; set; } + + protected async override Task OnParametersSetAsync() + { + var opt = UserData.GetRequestOptions(); + Tag = await tagData.GetExtended(Id, options: opt); + List languages = ["nob", "nno", "eng"]; + Translations = new Dictionary(); + foreach (var lang in languages) + { + Translations.Add(lang, await tagData.GetExtended(Id, options: new RequestOptions() { Language = lang })); + } + + Policies = [.. await packageTagData.GetA(Id)]; + } + + private void ToggleTranslate(string lang) + { + SelectedLanguage = lang; + TranslatedName = Translations[lang].Name; + TranslateIsOpen = !TranslateIsOpen; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Tag_Index.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Tag_Index.razor new file mode 100644 index 00000000..09395cc2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Pages/Tag_Index.razor @@ -0,0 +1,98 @@ +@page "/tags" +@inject ITagGroupService tagGroupData +@inject ITagService tagData + +Tags + + + +

Tags

+
+ + + + + + Fordel i grupper + +
+ +@if (Tags != null) +{ + @foreach (var tag in Tags.OrderBy(t=>t.GroupId).ThenBy(t=>t.Name)) + { + if (tag.Group != null) + { + + } + else + { + @tag.Name + } + } +} + + + + + +
+ +
+
+
+ + + + +
+ +
+
+
+ +@code { + + public List Groups { get; set; } + public List Tags { get; set; } + public bool GroupByGroups { get; set; } = false; + + protected override async Task OnParametersSetAsync() + { + await LoadData(); + } + private async Task LoadData() + { + var opt = UserData.GetRequestOptions(); + Groups = [.. await tagGroupData.Repo.Get(options: opt)]; + Tags = [.. await tagData.ExtendedRepo.GetExtended(options: opt)]; + } + + #region NewTag + public bool IsCreateTagOpen { get; set; } + public TagGroup? SelectedGroup { get; set; } + public string NewName { get; set; } + + private async Task CreateNewTag() + { + await tagData.Create(new Tag() { Id = Guid.NewGuid(), GroupId = SelectedGroup?.Id, Name = NewName, ParentId = null }); + SelectedGroup = null; + NewName = ""; + IsCreateTagOpen = false; + await LoadData(); + } + #endregion + + #region NewTagGroup + public bool IsCreateTagGroupOpen { get; set; } + public string NewGroupName { get; set; } + private async Task CreateNewTagGroup() + { + await tagGroupData.Create(new TagGroup() { Id = Guid.NewGuid(), Name = NewGroupName }); + NewGroupName = ""; + IsCreateTagGroupOpen = false; + await LoadData(); + } + #endregion + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Routes.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Routes.razor new file mode 100644 index 00000000..281c73f6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Routes.razor @@ -0,0 +1,5 @@ + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/EntityTypeIcon.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/EntityTypeIcon.razor new file mode 100644 index 00000000..bef25f2c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/EntityTypeIcon.razor @@ -0,0 +1,7 @@ +@icon + +@code { + [Parameter] public Guid Id { get; set; } + + public string icon => Id.ToString().ToUpper() == "8C216E2F-AFDD-4234-9BA2-691C727BB33D" ? "🏢" : "👤"; +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/PageHeader.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/PageHeader.razor new file mode 100644 index 00000000..7f2be3c2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/PageHeader.razor @@ -0,0 +1,15 @@ + +@code { + + [Parameter] public RenderFragment LeftContent { get; set; } + [Parameter] public RenderFragment RightContent { get; set; } + + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/PaginationBar.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/PaginationBar.razor new file mode 100644 index 00000000..8b26efba --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/PaginationBar.razor @@ -0,0 +1,75 @@ + + + + +@code { + + [Parameter] public int PageCount { get; set; } + [Parameter] public int CurrentPage { get; set; } + [Parameter] public EventCallback CurrentPageChanged { get; set; } + [Parameter] public int VisiblePageCount { get; set; } = 5; + + [Parameter] public EventCallback PageChanged { get; set; } + + private async Task SetCurrentPage(int value) + { + CurrentPage = value; + await CurrentPageChanged.InvokeAsync(value); + await PageChanged.InvokeAsync(value); + this.ShouldRender(); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/SelectResource.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/SelectResource.razor new file mode 100644 index 00000000..1e0650f9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/SelectResource.razor @@ -0,0 +1,58 @@ +@inject IResourceService data + + + @if (ShowSearch && Objects != null && Objects.Any()) + { +
+ @foreach (var obj in Objects) + { +
+
+ +
+
+ } +
+ } +
+@code { + [Parameter] public string Title { get; set; } = "Velg ressurs"; + [Parameter] public string Description { get; set; } + [Parameter] public int ResultSize { get; set; } = 10; + + [Parameter] public Resource Selected { get; set; } + [Parameter] public EventCallback SelectedChanged { get; set; } + + public bool ShowSearch { get; set; } + + public IEnumerable Objects { get; set; } + public string SearchTerm { get; set; } + + private async Task ToggleSelected(Resource id) + { + if (Selected != null && Selected.Equals(id)) + { + await SelectedChanged.InvokeAsync(null); + SearchTerm = ""; + } + else + { + await SelectedChanged.InvokeAsync(id); + SearchTerm = id.Name; + ShowSearch = false; + } + } + private async Task HandleInputTextInput(ChangeEventArgs e) + { + SearchTerm = e.Value?.ToString() ?? ""; + await SearchData(); + } + private async Task SearchData() + { + await SelectedChanged.InvokeAsync(null); + ShowSearch = true; + var res = await data.SearchPaged(SearchTerm, new RequestOptions() { OrderBy = "Name", PageNumber = 1, PageSize = ResultSize, UsePaging = true }); + Objects = res.Data; + } + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/SelectTagGroup.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/SelectTagGroup.razor new file mode 100644 index 00000000..22c68f72 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/SelectTagGroup.razor @@ -0,0 +1,58 @@ +@inject ITagGroupService data + + + @if (ShowSearch && Objects != null && Objects.Any()) + { +
+ @foreach (var obj in Objects) + { +
+
+ +
+
+ } +
+ } +
+@code { + [Parameter] public string Title { get; set; } = "Velg tag gruppe"; + [Parameter] public string Description { get; set; } + [Parameter] public int ResultSize { get; set; } = 10; + + [Parameter] public TagGroup Selected { get; set; } + [Parameter] public EventCallback SelectedChanged { get; set; } + + public bool ShowSearch { get; set; } + + public IEnumerable Objects { get; set; } + public string SearchTerm { get; set; } + + private async Task ToggleSelected(TagGroup id) + { + if (Selected != null && Selected.Equals(id)) + { + await SelectedChanged.InvokeAsync(null); + SearchTerm = ""; + } + else + { + await SelectedChanged.InvokeAsync(id); + SearchTerm = id.Name; + ShowSearch = false; + } + } + private async Task HandleInputTextInput(ChangeEventArgs e) + { + SearchTerm = e.Value?.ToString() ?? ""; + await SearchData(); + } + private async Task SearchData() + { + await SelectedChanged.InvokeAsync(null); + ShowSearch = true; + var res = await data.SearchPaged(SearchTerm, new RequestOptions() { OrderBy = "Name", PageNumber = 1, PageSize = ResultSize, UsePaging = true }); + Objects = res.Data; + } + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/SwitchButton.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/SwitchButton.razor new file mode 100644 index 00000000..9d1b3960 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/SwitchButton.razor @@ -0,0 +1,13 @@ +
@ChildContent
+ +@code { + + [Parameter] public RenderFragment ChildContent { get; set; } + [Parameter] public bool Selected { get; set; } + [Parameter] public EventCallback SelectedChanged { get; set; } + + void Select() + { + Selected = !Selected; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/SwitchContainer.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/SwitchContainer.razor new file mode 100644 index 00000000..71e6c98a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/Shared/SwitchContainer.razor @@ -0,0 +1,7 @@ +
@ChildContent
+ +@code { + + [Parameter] public RenderFragment ChildContent { get; set; } + +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/_Imports.razor b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/_Imports.razor new file mode 100644 index 00000000..822b5146 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Components/_Imports.razor @@ -0,0 +1,19 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using static Microsoft.AspNetCore.Components.Web.RenderMode +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using Altinn.Authorization.AccessPackages.Models +@using Altinn.Authorization.FFB.Components +@using Altinn.Authorization.AccessPackages.FFB +@using Altinn.Authorization.AccessPackages.FFB.Models +@using Altinn.Authorization.AccessPackages.Repo.Data.Contracts +@using Altinn.Authorization.AccessPackages.DbAccess.Data.Models +@using Altinn.Authorization.FFB.Components.Shared +@using Styx +@using Styx.Text +@using Styx.Active +@using Styx.Interactive \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Models/UserData.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Models/UserData.cs new file mode 100644 index 00000000..e548835f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Models/UserData.cs @@ -0,0 +1,40 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage; + +namespace Altinn.Authorization.AccessPackages.FFB.Models; + +/// +/// User data +/// +public static class UserData +{ + /// + /// User Language + /// + public static string Language { get; set; } + + /// + /// AsOf + /// + public static DateTimeOffset? AsOf { get; set; } + + /// + /// Generate RequestOptions + /// + /// + public static RequestOptions GetRequestOptions() + { + var res = new RequestOptions(); + if (!string.IsNullOrEmpty(Language)) + { + res.Language = Language; + } + + if (AsOf.HasValue) + { + res.AsOf = AsOf.Value; + } + + return res; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Program.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Program.cs new file mode 100644 index 00000000..2c24280b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Program.cs @@ -0,0 +1,71 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.DbAccess.Migrate.Models; +using Altinn.Authorization.AccessPackages.Repo.Extensions; +using Altinn.Authorization.FFB.Components; +using Blazored.LocalStorage; +using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage; +using OpenTelemetry.Resources; +using OpenTelemetry; +using OpenTelemetry.Trace; + +var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddRazorComponents().AddInteractiveServerComponents(); +builder.Configuration.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); + +builder.Services.Configure(builder.Configuration.GetRequiredSection("DbObjDefConfig")); +builder.Services.AddSingleton(); + +builder.Services.Configure(builder.Configuration.GetRequiredSection("DbMigration")); +builder.Services.AddDbAccessMigrations(); + +builder.Services.Configure(builder.Configuration.GetRequiredSection("JsonIngest")); +builder.Services.AddDbAccessIngests(); + +builder.Services.AddDbAccessData(); + +builder.Services.AddScoped(); +builder.Services.AddBlazoredLocalStorage(); +builder.Services.AddLocalization(options => options.ResourcesPath = "Resources"); + +var app = builder.Build(); + +using var tracerProvider = Sdk.CreateTracerProviderBuilder() + .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("AccessPackages", serviceInstanceId: "web")) + .AddSource("Altinn.Authorization.AccessPackages.Repo") + .AddOtlpExporter() + .Build(); + +using var tracerProvider2 = Sdk.CreateTracerProviderBuilder() + .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("DbAccess", serviceInstanceId: "web")) + .AddSource("Altinn.Authorization.DbAccess") + .AddOtlpExporter() + .Build(); + +using var tracerProvider3 = Sdk.CreateTracerProviderBuilder() + .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("FFB", serviceInstanceId: "web")) + .AddSource("Altinn.Authorization.FFB") + .AddOtlpExporter() + .Build(); + +var dbDef = app.Services.GetRequiredService(); +dbDef.SetDatabaseDefinitions(); + +await app.Services.UseDbAccessMigrations(); +//await app.Services.UseDbAccessIngests(); + +if (!app.Environment.IsDevelopment()) +{ + app.UseExceptionHandler("/Error", createScopeForErrors: true); + app.UseHsts(); +} + +app.UseHttpsRedirection(); + +app.UseStaticFiles(); +app.UseAntiforgery(); + +app.MapRazorComponents().AddInteractiveServerRenderMode(); + +app.Run(); diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Properties/launchSettings.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Properties/launchSettings.json new file mode 100644 index 00000000..6677bbb0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:61950", + "sslPort": 44358 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5266", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7149;http://localhost:5266", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } + } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Resources/App.resx b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Resources/App.resx new file mode 100644 index 00000000..7da042ba --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Resources/App.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Description + + + Name + + \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Telemetry.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Telemetry.cs new file mode 100644 index 00000000..2f10d199 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/Telemetry.cs @@ -0,0 +1,14 @@ +using System.Diagnostics; + +namespace Altinn.Authorization.FFB; +public static class Telemetry +{ + public static ActivitySource Source = new ActivitySource("Altinn.Authorization.FFB", "1.0.0"); + + public static Activity? StartActivity(string name, ActivityKind kind = ActivityKind.Internal) + { + var a = Source.StartActivity(name + $"<{typeof(T).Name}>", kind); + a?.SetCustomProperty("Type", typeof(T)); + return a; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/appsettings.Development.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/appsettings.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/appsettings.json new file mode 100644 index 00000000..b1ac855f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/appsettings.json @@ -0,0 +1,41 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "DbObjDefConfig": { + "BaseSchema": "dbo", + "TranslationSchema": "translation", + "HistorySchema": "history", + "TranslateObjects": [ + "Area", + "AreaGroup", + "EntityType", + "Package", + "Role", + "Tag", + "TagGroup" + ], + "HistoryObjects": [""] + }, + "DataService": { + "ConnectionString": "Database=wiggin02;Host=localhost;Username=wigg;Password=jw8s0F4" + }, + "DbMigration": { + "ConnectionString": "Database=wiggin02;Host=localhost;Username=wigg;Password=jw8s0F4", + "CollectionId": "AccessPackages", + "DefaultSchema": "dbo", + "TranslationSchema": "translation", + "HistorySchema": "history" + }, + "JsonIngest": { + "BasePath": "..\\Altinn.Authorization.AccessPackages.Repo\\Ingest\\JsonData\\", + "Languages": [ + "nno", + "eng" + ] + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/app.css b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/app.css new file mode 100644 index 00000000..60b95211 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/app.css @@ -0,0 +1,342 @@ +@font-face { + font-family: 'AltInn'; + src: url('fonts/dinweb.woff2') format('woff2'), url('fonts/dinweb-medium.woff2') format('woff'), url('fonts/dinweb.bold.woff2') format('woff'); +} + +html, body { + font-family: 'AltInn', 'Helvetica Neue', Helvetica, Arial, sans-serif; +} +.bf-h1 { + display: flex; + align-items: center; + gap: .5rem; +} +h1, h2, h3, h4, h5, h6 { + font-family: 'AltInn', 'Helvetica Neue', Helvetica, Arial, sans-serif; + margin-bottom:8px !important; +} +.svgicon-box { + width: 56px; + height: 56px; + background-color: #D3EAFD; + text-align: center; + margin-top: 1rem; + border-radius: 5px; + box-shadow: grey 1px 1px 2px; +} + .svgicon-box img { + margin: 8px; + } +.svgicon-box-small { + width: 24px; + height: 24px; + background-color: #D3EAFD; + text-align: center; + border-radius: 5px; + border-radius: 2px; + box-shadow: grey 1px 1px 2px; +} + + .svgicon-box-small img { + margin: 2px; + } +.pageHeader { + display: flex; + justify-content: space-between; + padding-bottom: .5rem; + align-items: center; +} +.bf-switch-checked { + background-color: var(--bfc-theme); +} +.bf-table-row:hover > * { + background-color: var(--bfc-base-2); +} +.bf-badge-compact { + font-size: var(--bf-font-size-s); +} +.bf-table-vertical-header > * > tr.bf-table-row-compact > th, +.bf-table > * > tr.bf-table-row-compact > td { + padding: 9px var(--bf-table-cell-padding, 12px) 9px var(--bf-table-cell-padding-tight, 4px); +} +.bf-table > * > tr.bf-table-row-compact > :first-child { + padding-left: var(--bf-table-cell-padding, 24px); +} +.bf-nav-group-dropout-content, .bf-nav-group-content { + background-color: var(--bfc-base-3); +} +.bf-table-row-compact > td > .bf-button { + padding: 0 16px; +} +.bf-accordion-item.selected { + background-color: var(--bfc-base-c-dimmed); +} +.bf-accordion-item:hover { + background-color: var(--bfc-base-2); +} + +.box { + background-color: #1eaef7; + border: solid 1px #c0c0c0; + border-bottom: none; + margin: .25rem; + width: 100%; +} + + .box:hover { + background-color: #008fd6; + } + +.grey { + background-color: #efefef; +} + + .grey:hover { + background-color: #f5f5f5; + } + +.box-element { + padding: 6px 12px; + border-bottom: solid 1px #c0c0c0; + display: flex; + justify-content: space-between; + align-items: center; +} + .box-element > * { + margin: 0; + } + +/*a, .btn-link { + color: #006bb7; +} + +.btn-primary { + color: #fff; + background-color: #1b6ec2; + border-color: #1861ac; +} +.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 { + margin-top: .5rem; +} +th { + padding-right: 1rem; +} +tbody tr:nth-child(odd) { + background: #efefef; +} + tbody tr:nth-child(odd):hover { + background: #cff0ff; + } +tbody tr:nth-child(even):hover { + background: #cff0ff; +} +tbody tr td{ + padding: .5rem .5rem; +} + +input { + font-size: 1.4rem; + line-height: 1.5; + min-height: 45px; + padding: 2px 8px 0 8px; + font-weight: 400; + border: 2px solid #008fd6; + width: 100%; +} + +.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus { + box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb; +} +.pageHeader { + display: flex; + justify-content: space-between; + padding-bottom: 1rem; +} +.switchContainer { + width: fit-content; + min-height: 36px; + border: 3px solid #1eaef7; + display: flex; + flex-direction: row; +} +.switchButton { + padding: .5rem; + text-align: center; + cursor: pointer; + width: fit-content; + font-size: 1.25rem; + line-height: 2.25rem; +} + .switchButton.selected { + background-color: #1eaef7; + } + +.tag { + background-color: #84d5ff;*/ /* #1eaef7;*/ + /*padding: 2px 8px; + margin: .25rem; + font-weight: 600; + font-style: normal; + cursor: pointer; + border-radius: 6px; + height: fit-content; +} + +.box { + background-color: #1eaef7; + border: solid 1px #c0c0c0; + border-bottom: none; + margin: .25rem; + width:100%; +} + .box:hover { + background-color: #008fd6; + } + +.grey { + background-color: #efefef; +} + .grey:hover { + background-color: #f5f5f5; + } + +.box-element { + padding: 6px 12px;*/ /*.5rem;*/ + /*border-bottom: solid 1px #c0c0c0; + display: flex; + justify-content: space-between; + align-items: center; +} + .box-element > * { + margin: 0; + } + +.infoTable td.key { + text-align: right; + color: grey; + padding-right: .25rem; +} + +.infoTable td.value { + font-weight: 600; + padding-left: .25rem; +} + +.toggleButton{ + cursor:pointer; + padding:.5rem; +} + .toggleButton .icon { + padding: .5rem; + background-color: #eee; + color: #eee; + } + .toggleButton:hover .icon { + background-color: #ccc; + color: #ccc; + } + .toggleButton.selected .icon { + background-color: #2196F3; + color: white; + + } + .toggleButton.selected:hover .icon { + background-color: #008fd6; + } + +.flyout { + transition: right 0.5s ease-in-out; + position: fixed; + background-color: #ebebeb; + top: 56px; + height: 96vh; + margin: 0; + padding: 1rem; +} + + .flyout.small { + width: 25%; + right: -25%; + } + + .flyout.medium { + width: 50%; + right: -50%; + } + + .flyout.large { + width: 75%; + right: -75%; + } + + .flyout.show { + transition: right 0.5s ease-in-out; + right: 0px; + } +.flyout-header { + display: flex; + justify-content: space-between; +} + +.closeButton { + background-color: darkgray; + color: white; + display: inline-block; + width: 42px; + height: 42px; + text-align: center; + border-radius: 32px; + font-size: 32px; + font-weight: 800; + cursor: pointer; +} + +button { + display: block; + text-align: center; + background-color: #fff; + border: solid 3px #1eaef7; + height: 42px; + padding: 4px 16px; + margin:2px; +} + button:hover { + background-color: #cff0ff; + } + button.selected { + background-color: #1eaef7; + } + +.content { + padding-top: 1.1rem; +} + +h1:focus { + outline: none; +} + +.valid.modified:not([type=checkbox]) { + outline: 1px solid #26b050; +} + +.invalid { + outline: 1px solid #e50000; +} + +.validation-message { + color: #e50000; +} + + .blazor-error-boundary { + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + padding: 1rem 1rem 1rem 3.7rem; + color: white; + } + + .blazor-error-boundary::after { + content: "An error has occurred." + } + +.darker-border-checkbox.form-check-input { + border-color: #929292; +}*/ diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/favicon.png b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/favicon.png new file mode 100644 index 00000000..8422b596 Binary files /dev/null and b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/favicon.png differ diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/fonts/dinweb-bold.woff2 b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/fonts/dinweb-bold.woff2 new file mode 100644 index 00000000..4218e837 Binary files /dev/null and b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/fonts/dinweb-bold.woff2 differ diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/fonts/dinweb-medium.woff2 b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/fonts/dinweb-medium.woff2 new file mode 100644 index 00000000..1392842e Binary files /dev/null and b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/fonts/dinweb-medium.woff2 differ diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/fonts/dinweb.woff2 b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/fonts/dinweb.woff2 new file mode 100644 index 00000000..95db0fc1 Binary files /dev/null and b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/fonts/dinweb.woff2 differ diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Braille.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Braille.svg new file mode 100644 index 00000000..d86e8a0b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Braille.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/BrailleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/BrailleFill.svg new file mode 100644 index 00000000..487e8581 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/BrailleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/DogHarness.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/DogHarness.svg new file mode 100644 index 00000000..08fd603a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/DogHarness.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/DogHarnessFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/DogHarnessFill.svg new file mode 100644 index 00000000..7f827cc3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/DogHarnessFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Escalator.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Escalator.svg new file mode 100644 index 00000000..3150e434 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Escalator.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Figure.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Figure.svg new file mode 100644 index 00000000..ff1abd80 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Figure.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/FigureFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/FigureFill.svg new file mode 100644 index 00000000..7e8b2f64 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/FigureFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Glasses.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Glasses.svg new file mode 100644 index 00000000..0f5e49dc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Glasses.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/GlassesFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/GlassesFill.svg new file mode 100644 index 00000000..90c0ef95 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/GlassesFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HeadCloud.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HeadCloud.svg new file mode 100644 index 00000000..72769f63 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HeadCloud.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HeadCloudFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HeadCloudFill.svg new file mode 100644 index 00000000..70d7a23e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HeadCloudFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HearingLoop.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HearingLoop.svg new file mode 100644 index 00000000..6029175c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HearingLoop.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HearingLoopFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HearingLoopFill.svg new file mode 100644 index 00000000..102a990d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HearingLoopFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HearingLoopRadio.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HearingLoopRadio.svg new file mode 100644 index 00000000..1ba40785 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HearingLoopRadio.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HearingLoopRadioFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HearingLoopRadioFill.svg new file mode 100644 index 00000000..10f3cdeb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/HearingLoopRadioFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/SignLanguageSingleHand.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/SignLanguageSingleHand.svg new file mode 100644 index 00000000..37650392 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/SignLanguageSingleHand.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/SignLanguageSingleHandFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/SignLanguageSingleHandFill.svg new file mode 100644 index 00000000..39958e56 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/SignLanguageSingleHandFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/SignLanguageTwoHands.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/SignLanguageTwoHands.svg new file mode 100644 index 00000000..547768de --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/SignLanguageTwoHands.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/SignLanguageTwoHandsFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/SignLanguageTwoHandsFill.svg new file mode 100644 index 00000000..4a1455f8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/SignLanguageTwoHandsFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Staircase.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Staircase.svg new file mode 100644 index 00000000..e8f9bdf3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Staircase.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Wheelchair.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Wheelchair.svg new file mode 100644 index 00000000..688771c5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/Wheelchair.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/WheelchairFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/WheelchairFill.svg new file mode 100644 index 00000000..705c83d0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Accessibility/WheelchairFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowCirclepath.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowCirclepath.svg new file mode 100644 index 00000000..3588a903 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowCirclepath.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowDown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowDown.svg new file mode 100644 index 00000000..f8cd8843 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowDownRight.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowDownRight.svg new file mode 100644 index 00000000..a1604a45 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowDownRight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowForward.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowForward.svg new file mode 100644 index 00000000..b34fb383 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowForward.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowForwardFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowForwardFill.svg new file mode 100644 index 00000000..dc87a7e1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowForwardFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowLeft.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowLeft.svg new file mode 100644 index 00000000..3383530c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowLeft.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowRedo.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowRedo.svg new file mode 100644 index 00000000..3cb79f38 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowRedo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowRight.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowRight.svg new file mode 100644 index 00000000..495f9cc2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowRight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowRightLeft.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowRightLeft.svg new file mode 100644 index 00000000..d3fec42a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowRightLeft.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowUndo.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowUndo.svg new file mode 100644 index 00000000..57522390 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowUndo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowUp.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowUp.svg new file mode 100644 index 00000000..755be833 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowUp.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowsCirclepath.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowsCirclepath.svg new file mode 100644 index 00000000..43a5b483 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowsCirclepath.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowsSquarepath.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowsSquarepath.svg new file mode 100644 index 00000000..bc264a45 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowsSquarepath.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowsUpDown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowsUpDown.svg new file mode 100644 index 00000000..dfaa974f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ArrowsUpDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretDown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretDown.svg new file mode 100644 index 00000000..2d2ab0c9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretDownCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretDownCircle.svg new file mode 100644 index 00000000..3c620d69 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretDownCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretDownCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretDownCircleFill.svg new file mode 100644 index 00000000..c843028f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretDownCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretDownFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretDownFill.svg new file mode 100644 index 00000000..fcc530dd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretDownFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeft.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeft.svg new file mode 100644 index 00000000..6eb32e45 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeft.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftCircle.svg new file mode 100644 index 00000000..f504bc26 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftCircleFill.svg new file mode 100644 index 00000000..17f041d9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftFill.svg new file mode 100644 index 00000000..40c58077 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftRight.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftRight.svg new file mode 100644 index 00000000..0b2bbb5b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftRight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftRightFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftRightFill.svg new file mode 100644 index 00000000..72ee7b20 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretLeftRightFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretRight.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretRight.svg new file mode 100644 index 00000000..94a0f3ef --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretRight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretRightCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretRightCircle.svg new file mode 100644 index 00000000..81180190 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretRightCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretRightCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretRightCircleFill.svg new file mode 100644 index 00000000..1e38f812 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretRightCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretRightFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretRightFill.svg new file mode 100644 index 00000000..a4e87d30 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretRightFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUp.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUp.svg new file mode 100644 index 00000000..212136f5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUp.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpCircle.svg new file mode 100644 index 00000000..66f47b73 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpCircleFill.svg new file mode 100644 index 00000000..c7d70585 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpDown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpDown.svg new file mode 100644 index 00000000..3f0a12b6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpDownFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpDownFill.svg new file mode 100644 index 00000000..3d42e6fb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpDownFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpDownFilledDown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpDownFilledDown.svg new file mode 100644 index 00000000..92815e65 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpDownFilledDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpDownFilledUp.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpDownFilledUp.svg new file mode 100644 index 00000000..a5b36b8c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpDownFilledUp.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpFill.svg new file mode 100644 index 00000000..196a7b2d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/CaretUpFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDown.svg new file mode 100644 index 00000000..977d48b5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownCircle.svg new file mode 100644 index 00000000..16a6a36e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownCircleFill.svg new file mode 100644 index 00000000..33c478da --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownDouble.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownDouble.svg new file mode 100644 index 00000000..26d4ba1e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownDouble.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownDoubleCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownDoubleCircle.svg new file mode 100644 index 00000000..810a63de --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownDoubleCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownDoubleCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownDoubleCircleFill.svg new file mode 100644 index 00000000..734b44e1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownDoubleCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownUp.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownUp.svg new file mode 100644 index 00000000..4ebc6641 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronDownUp.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeft.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeft.svg new file mode 100644 index 00000000..c277799b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeft.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftCircle.svg new file mode 100644 index 00000000..72ac9d27 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftCircleFill.svg new file mode 100644 index 00000000..c4e32926 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftDouble.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftDouble.svg new file mode 100644 index 00000000..1731b7fc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftDouble.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftDoubleCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftDoubleCircle.svg new file mode 100644 index 00000000..80933244 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftDoubleCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftDoubleCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftDoubleCircleFill.svg new file mode 100644 index 00000000..51dd5729 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftDoubleCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftFirst.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftFirst.svg new file mode 100644 index 00000000..55e1b76b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftFirst.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftFirstCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftFirstCircle.svg new file mode 100644 index 00000000..768cf3f0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftFirstCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftFirstCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftFirstCircleFill.svg new file mode 100644 index 00000000..3fad81a1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronLeftFirstCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRight.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRight.svg new file mode 100644 index 00000000..f510e2aa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightCircle.svg new file mode 100644 index 00000000..8258b61e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightCircleFill.svg new file mode 100644 index 00000000..e4783977 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightDouble.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightDouble.svg new file mode 100644 index 00000000..f1c93f6f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightDouble.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightDoubleCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightDoubleCircle.svg new file mode 100644 index 00000000..aea67b19 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightDoubleCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightDoubleCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightDoubleCircleFill.svg new file mode 100644 index 00000000..fbfddb70 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightDoubleCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightLast.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightLast.svg new file mode 100644 index 00000000..db911cc3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightLast.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightLastCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightLastCircle.svg new file mode 100644 index 00000000..49348873 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightLastCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightLastCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightLastCircleFill.svg new file mode 100644 index 00000000..ad567928 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronRightLastCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUp.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUp.svg new file mode 100644 index 00000000..325ce566 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUp.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpCircle.svg new file mode 100644 index 00000000..d8fb9bb8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpCircleFill.svg new file mode 100644 index 00000000..906508c1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpDouble.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpDouble.svg new file mode 100644 index 00000000..6ea5f444 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpDouble.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpDoubleCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpDoubleCircle.svg new file mode 100644 index 00000000..3224c016 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpDoubleCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpDoubleCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpDoubleCircleFill.svg new file mode 100644 index 00000000..fe64f578 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpDoubleCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpDown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpDown.svg new file mode 100644 index 00000000..4ff9d7b7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/ChevronUpDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/Expand.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/Expand.svg new file mode 100644 index 00000000..b4774ee6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/Expand.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/Shrink.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/Shrink.svg new file mode 100644 index 00000000..3059a75e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Arrows/Shrink.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Branching.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Branching.svg new file mode 100644 index 00000000..1ec58747 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Branching.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Broadcast.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Broadcast.svg new file mode 100644 index 00000000..16770058 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Broadcast.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/BroadcastMinusCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/BroadcastMinusCircle.svg new file mode 100644 index 00000000..127a0a2e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/BroadcastMinusCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/BroadcastMinusCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/BroadcastMinusCircleFill.svg new file mode 100644 index 00000000..1be696b3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/BroadcastMinusCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/BroadcastPlusCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/BroadcastPlusCircle.svg new file mode 100644 index 00000000..74c0dbeb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/BroadcastPlusCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/BroadcastPlusCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/BroadcastPlusCircleFill.svg new file mode 100644 index 00000000..3ab55e57 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/BroadcastPlusCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Cloud.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Cloud.svg new file mode 100644 index 00000000..cbb951ba --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Cloud.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/CloudFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/CloudFill.svg new file mode 100644 index 00000000..9b016b6e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/CloudFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/CloudSlash.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/CloudSlash.svg new file mode 100644 index 00000000..ceb5aaba --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/CloudSlash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/CloudSlashFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/CloudSlashFill.svg new file mode 100644 index 00000000..edc47ab2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/CloudSlashFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Code.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Code.svg new file mode 100644 index 00000000..62344524 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Code.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Component.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Component.svg new file mode 100644 index 00000000..6e220126 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Component.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/ComponentFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/ComponentFill.svg new file mode 100644 index 00000000..d8044a23 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/ComponentFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Database.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Database.svg new file mode 100644 index 00000000..3407ace3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Database.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/DatabaseFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/DatabaseFill.svg new file mode 100644 index 00000000..deeaa299 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/DatabaseFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Ethernet.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Ethernet.svg new file mode 100644 index 00000000..e900f796 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Ethernet.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Migration.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Migration.svg new file mode 100644 index 00000000..1f1d2001 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Migration.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/OpenSource.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/OpenSource.svg new file mode 100644 index 00000000..1f9ed4e2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/OpenSource.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/OpenSourceFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/OpenSourceFill.svg new file mode 100644 index 00000000..b91c73a6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/OpenSourceFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Package.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Package.svg new file mode 100644 index 00000000..3a936d0d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Package.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/PackageFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/PackageFill.svg new file mode 100644 index 00000000..e4a3a494 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/PackageFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Portal.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Portal.svg new file mode 100644 index 00000000..055b551e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Portal.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/PortalFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/PortalFill.svg new file mode 100644 index 00000000..351d2734 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/PortalFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/QrCode.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/QrCode.svg new file mode 100644 index 00000000..06be9e0b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/QrCode.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/QrCodeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/QrCodeFill.svg new file mode 100644 index 00000000..d91e6a9a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/QrCodeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/QrCodeScanning.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/QrCodeScanning.svg new file mode 100644 index 00000000..15a55368 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/QrCodeScanning.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/QrCodeScanningFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/QrCodeScanningFill.svg new file mode 100644 index 00000000..89534642 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/QrCodeScanningFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Router.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Router.svg new file mode 100644 index 00000000..0d9525e7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Router.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Sandbox.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Sandbox.svg new file mode 100644 index 00000000..92383d0f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Sandbox.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/SandboxFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/SandboxFill.svg new file mode 100644 index 00000000..3566298f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/SandboxFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Tenancy.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Tenancy.svg new file mode 100644 index 00000000..e1daffb5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Tenancy.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/TenancyFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/TenancyFill.svg new file mode 100644 index 00000000..9466a7cc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/TenancyFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Terminal.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Terminal.svg new file mode 100644 index 00000000..c5b3fb35 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Terminal.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/TerminalFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/TerminalFill.svg new file mode 100644 index 00000000..7d83b045 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/TerminalFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Token.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Token.svg new file mode 100644 index 00000000..52615064 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/Token.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/TokenFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/TokenFill.svg new file mode 100644 index 00000000..4a1150b6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Development/TokenFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Clock.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Clock.svg new file mode 100644 index 00000000..ddb2f795 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Clock.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/ClockDashed.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/ClockDashed.svg new file mode 100644 index 00000000..2b96bfd1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/ClockDashed.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/ClockFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/ClockFill.svg new file mode 100644 index 00000000..c61f4fe3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/ClockFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/CloudDown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/CloudDown.svg new file mode 100644 index 00000000..f06a2b35 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/CloudDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/CloudDownFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/CloudDownFill.svg new file mode 100644 index 00000000..fab2c224 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/CloudDownFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/CloudUp.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/CloudUp.svg new file mode 100644 index 00000000..90d9d484 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/CloudUp.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/CloudUpFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/CloudUpFill.svg new file mode 100644 index 00000000..647b4ce4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/CloudUpFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Download.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Download.svg new file mode 100644 index 00000000..2c8565ef --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Download.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/File.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/File.svg new file mode 100644 index 00000000..8edbe098 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/File.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCheckmark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCheckmark.svg new file mode 100644 index 00000000..16594a98 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCheckmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCheckmarkFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCheckmarkFill.svg new file mode 100644 index 00000000..5d234dbe --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCheckmarkFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCode.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCode.svg new file mode 100644 index 00000000..97b7bd1f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCode.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCodeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCodeFill.svg new file mode 100644 index 00000000..6195d894 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCodeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCsv.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCsv.svg new file mode 100644 index 00000000..70077bfa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCsv.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCsvFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCsvFill.svg new file mode 100644 index 00000000..aa7f5fc9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileCsvFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileExcel.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileExcel.svg new file mode 100644 index 00000000..ae2a16a9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileExcel.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileExcelFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileExcelFill.svg new file mode 100644 index 00000000..5aa62faf --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileExcelFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileExport.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileExport.svg new file mode 100644 index 00000000..27b41d0d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileExport.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileExportFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileExportFill.svg new file mode 100644 index 00000000..70faef56 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileExportFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileFill.svg new file mode 100644 index 00000000..53a39766 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileImage.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileImage.svg new file mode 100644 index 00000000..7a536903 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileImage.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileImageFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileImageFill.svg new file mode 100644 index 00000000..e77fccaf --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileImageFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileImport.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileImport.svg new file mode 100644 index 00000000..6aaa3f0a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileImport.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileImportFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileImportFill.svg new file mode 100644 index 00000000..58e9c6d3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileImportFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileJson.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileJson.svg new file mode 100644 index 00000000..c677d9fd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileJson.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileJsonFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileJsonFill.svg new file mode 100644 index 00000000..f7ed517f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileJsonFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileLoading.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileLoading.svg new file mode 100644 index 00000000..54c88e42 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileLoading.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileLoadingFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileLoadingFill.svg new file mode 100644 index 00000000..203e659d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileLoadingFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileParagraph.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileParagraph.svg new file mode 100644 index 00000000..803dd382 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileParagraph.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileParagraphFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileParagraphFill.svg new file mode 100644 index 00000000..917c56fd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileParagraphFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilePdf.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilePdf.svg new file mode 100644 index 00000000..daac79a2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilePdf.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilePdfFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilePdfFill.svg new file mode 100644 index 00000000..9501fc00 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilePdfFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilePlus.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilePlus.svg new file mode 100644 index 00000000..2bb630f4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilePlus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilePlusFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilePlusFill.svg new file mode 100644 index 00000000..d015c19f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilePlusFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileReset.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileReset.svg new file mode 100644 index 00000000..2d9319a3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileReset.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileResetFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileResetFill.svg new file mode 100644 index 00000000..b076f984 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileResetFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileSearch.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileSearch.svg new file mode 100644 index 00000000..1996cf3b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileSearch.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileSearchFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileSearchFill.svg new file mode 100644 index 00000000..99b7d27e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileSearchFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileShredder.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileShredder.svg new file mode 100644 index 00000000..5d2ab1b8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileShredder.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileShredderFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileShredderFill.svg new file mode 100644 index 00000000..0cabb359 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileShredderFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileText.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileText.svg new file mode 100644 index 00000000..1a91ac89 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileText.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileTextFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileTextFill.svg new file mode 100644 index 00000000..c0983a01 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileTextFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileWord.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileWord.svg new file mode 100644 index 00000000..6c70fcf2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileWord.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileWordFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileWordFill.svg new file mode 100644 index 00000000..408899ea --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileWordFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileXMark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileXMark.svg new file mode 100644 index 00000000..783b2e5c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileXMark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileXMarkFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileXMarkFill.svg new file mode 100644 index 00000000..cb1345dc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FileXMarkFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Files.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Files.svg new file mode 100644 index 00000000..4969ece0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Files.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilesFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilesFill.svg new file mode 100644 index 00000000..ac2aaf17 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FilesFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Folder.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Folder.svg new file mode 100644 index 00000000..c8104a2a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Folder.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderFile.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderFile.svg new file mode 100644 index 00000000..ee263106 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderFile.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderFileFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderFileFill.svg new file mode 100644 index 00000000..b016b114 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderFileFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderFill.svg new file mode 100644 index 00000000..d775503c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderMinus.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderMinus.svg new file mode 100644 index 00000000..5e02228c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderMinus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderMinusFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderMinusFill.svg new file mode 100644 index 00000000..21275a2b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderMinusFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderPlus.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderPlus.svg new file mode 100644 index 00000000..c9d3780d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderPlus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderPlusFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderPlusFill.svg new file mode 100644 index 00000000..bbff4707 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/FolderPlusFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HddDown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HddDown.svg new file mode 100644 index 00000000..99f67333 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HddDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HddDownFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HddDownFill.svg new file mode 100644 index 00000000..33114f21 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HddDownFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HddUp.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HddUp.svg new file mode 100644 index 00000000..d17bfa55 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HddUp.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HddUpFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HddUpFill.svg new file mode 100644 index 00000000..7d1a038c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HddUpFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Hourglass.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Hourglass.svg new file mode 100644 index 00000000..41075a54 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Hourglass.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HourglassBottomFilled.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HourglassBottomFilled.svg new file mode 100644 index 00000000..b7c26ccb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HourglassBottomFilled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HourglassTopFilled.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HourglassTopFilled.svg new file mode 100644 index 00000000..d9d33ccc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/HourglassTopFilled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Tasklist.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Tasklist.svg new file mode 100644 index 00000000..fb1e8177 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Tasklist.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistFill.svg new file mode 100644 index 00000000..56b11f60 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistSave.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistSave.svg new file mode 100644 index 00000000..6fb71ee2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistSave.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistSaveFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistSaveFill.svg new file mode 100644 index 00000000..bbfeb095 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistSaveFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistSend.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistSend.svg new file mode 100644 index 00000000..e546f149 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistSend.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistSendFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistSendFill.svg new file mode 100644 index 00000000..f6d15a04 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistSendFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistStart.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistStart.svg new file mode 100644 index 00000000..92d9a872 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistStart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistStartFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistStartFill.svg new file mode 100644 index 00000000..16c8d798 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TasklistStartFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Timer.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Timer.svg new file mode 100644 index 00000000..0b9105b6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Timer.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerFill.svg new file mode 100644 index 00000000..a0c6c55b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerPause.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerPause.svg new file mode 100644 index 00000000..f10c16bd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerPause.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerPauseFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerPauseFill.svg new file mode 100644 index 00000000..143529fa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerPauseFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerStart.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerStart.svg new file mode 100644 index 00000000..716bbfdb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerStart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerStartFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerStartFill.svg new file mode 100644 index 00000000..31410789 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/TimerStartFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Upload.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Upload.svg new file mode 100644 index 00000000..30c52309 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Files and application/Upload.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/AngleRulerCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/AngleRulerCircle.svg new file mode 100644 index 00000000..106bb16f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/AngleRulerCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/AngleRulerCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/AngleRulerCircleFill.svg new file mode 100644 index 00000000..5fb914bd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/AngleRulerCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/AngleRulerTriangle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/AngleRulerTriangle.svg new file mode 100644 index 00000000..32c01929 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/AngleRulerTriangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/AngleRulerTriangleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/AngleRulerTriangleFill.svg new file mode 100644 index 00000000..ef0db4d1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/AngleRulerTriangleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Bed.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Bed.svg new file mode 100644 index 00000000..f982c7f4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Bed.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BedFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BedFill.svg new file mode 100644 index 00000000..7222f4be --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BedFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Book.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Book.svg new file mode 100644 index 00000000..7cd8539b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Book.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BookFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BookFill.svg new file mode 100644 index 00000000..b4b091f4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BookFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Books.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Books.svg new file mode 100644 index 00000000..6ceab377 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Books.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BooksFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BooksFill.svg new file mode 100644 index 00000000..851a73e6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BooksFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Bowl.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Bowl.svg new file mode 100644 index 00000000..53535a3e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Bowl.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BowlFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BowlFill.svg new file mode 100644 index 00000000..1b6a9ca2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BowlFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Bucket.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Bucket.svg new file mode 100644 index 00000000..dd6b65c3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Bucket.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BucketFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BucketFill.svg new file mode 100644 index 00000000..155455a7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BucketFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BucketMop.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BucketMop.svg new file mode 100644 index 00000000..0ba82d2d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BucketMop.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BucketMopFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BucketMopFill.svg new file mode 100644 index 00000000..ca87db65 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/BucketMopFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Calculator.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Calculator.svg new file mode 100644 index 00000000..fd4744d9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Calculator.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/CalculatorFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/CalculatorFill.svg new file mode 100644 index 00000000..6d5becbe --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/CalculatorFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Calendar.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Calendar.svg new file mode 100644 index 00000000..b4d51751 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Calendar.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/CalendarFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/CalendarFill.svg new file mode 100644 index 00000000..652e7910 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/CalendarFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Candle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Candle.svg new file mode 100644 index 00000000..c214bb20 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Candle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/CandleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/CandleFill.svg new file mode 100644 index 00000000..58ff2af4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/CandleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ClothingHanger.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ClothingHanger.svg new file mode 100644 index 00000000..a8e54359 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ClothingHanger.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ClothingHangerFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ClothingHangerFill.svg new file mode 100644 index 00000000..0f9b6301 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ClothingHangerFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Combifridge1.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Combifridge1.svg new file mode 100644 index 00000000..c90f38ab --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Combifridge1.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Combifridge1Fill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Combifridge1Fill.svg new file mode 100644 index 00000000..30c62891 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Combifridge1Fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Combifridge2.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Combifridge2.svg new file mode 100644 index 00000000..b3489a42 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Combifridge2.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Combifridge2Fill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Combifridge2Fill.svg new file mode 100644 index 00000000..a82a5dde --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Combifridge2Fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Cutlery.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Cutlery.svg new file mode 100644 index 00000000..2e914e9c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Cutlery.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/CutleryFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/CutleryFill.svg new file mode 100644 index 00000000..4b35bdd3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/CutleryFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Dishwasher.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Dishwasher.svg new file mode 100644 index 00000000..e3654907 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Dishwasher.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/DishwasherFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/DishwasherFill.svg new file mode 100644 index 00000000..bdc659db --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/DishwasherFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Fork.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Fork.svg new file mode 100644 index 00000000..1850367f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Fork.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ForkFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ForkFill.svg new file mode 100644 index 00000000..e37ff214 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ForkFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Freezer.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Freezer.svg new file mode 100644 index 00000000..900b24d9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Freezer.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/FreezerFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/FreezerFill.svg new file mode 100644 index 00000000..e7cb618d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/FreezerFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Glass.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Glass.svg new file mode 100644 index 00000000..2db9a449 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Glass.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/GlassFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/GlassFill.svg new file mode 100644 index 00000000..51293822 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/GlassFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Hanger.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Hanger.svg new file mode 100644 index 00000000..27b1ba0b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Hanger.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HatSchool.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HatSchool.svg new file mode 100644 index 00000000..cec7321c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HatSchool.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HatSchoolFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HatSchoolFill.svg new file mode 100644 index 00000000..b035f0d5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HatSchoolFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/House.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/House.svg new file mode 100644 index 00000000..f4146de1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/House.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HouseFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HouseFill.svg new file mode 100644 index 00000000..7c5588b1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HouseFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HouseHeart.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HouseHeart.svg new file mode 100644 index 00000000..c0adf937 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HouseHeart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HouseHeartFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HouseHeartFill.svg new file mode 100644 index 00000000..bdff203a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/HouseHeartFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Knife.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Knife.svg new file mode 100644 index 00000000..b9a26e3f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Knife.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/KnifeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/KnifeFill.svg new file mode 100644 index 00000000..38a011eb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/KnifeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/LightBulb.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/LightBulb.svg new file mode 100644 index 00000000..eb4f4c6e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/LightBulb.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/LightBulbFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/LightBulbFill.svg new file mode 100644 index 00000000..324399c5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/LightBulbFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/MeasuringTape.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/MeasuringTape.svg new file mode 100644 index 00000000..16ab7340 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/MeasuringTape.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/MeasuringTapeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/MeasuringTapeFill.svg new file mode 100644 index 00000000..bb148241 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/MeasuringTapeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Mug.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Mug.svg new file mode 100644 index 00000000..59cf38ed --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Mug.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/MugFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/MugFill.svg new file mode 100644 index 00000000..eae55346 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/MugFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Paperclip.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Paperclip.svg new file mode 100644 index 00000000..20939c5c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Paperclip.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Plate.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Plate.svg new file mode 100644 index 00000000..7833794e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Plate.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PlateFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PlateFill.svg new file mode 100644 index 00000000..9be5d4cb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PlateFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PushPin.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PushPin.svg new file mode 100644 index 00000000..884748b0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PushPin.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PushPinFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PushPinFill.svg new file mode 100644 index 00000000..c2397ece --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PushPinFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PuzzlePiece.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PuzzlePiece.svg new file mode 100644 index 00000000..8a8f87b1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PuzzlePiece.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PuzzlePieceFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PuzzlePieceFill.svg new file mode 100644 index 00000000..babc55a2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/PuzzlePieceFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Refrigerator.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Refrigerator.svg new file mode 100644 index 00000000..8b8fdc39 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Refrigerator.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RefrigeratorFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RefrigeratorFill.svg new file mode 100644 index 00000000..aa87ede0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RefrigeratorFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RockingHorse.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RockingHorse.svg new file mode 100644 index 00000000..85b95901 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RockingHorse.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RockingHorseFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RockingHorseFill.svg new file mode 100644 index 00000000..fed66355 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RockingHorseFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Ruler.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Ruler.svg new file mode 100644 index 00000000..ca29a489 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Ruler.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RulerFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RulerFill.svg new file mode 100644 index 00000000..68ae285f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RulerFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Rulers.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Rulers.svg new file mode 100644 index 00000000..eaf300a5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Rulers.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RulersFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RulersFill.svg new file mode 100644 index 00000000..3a589d99 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/RulersFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Scissors.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Scissors.svg new file mode 100644 index 00000000..45fbf641 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Scissors.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ScissorsFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ScissorsFill.svg new file mode 100644 index 00000000..ed726ce4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ScissorsFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Spoon.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Spoon.svg new file mode 100644 index 00000000..61a88ca5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Spoon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/SpoonFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/SpoonFill.svg new file mode 100644 index 00000000..04fec518 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/SpoonFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/TeddyBear.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/TeddyBear.svg new file mode 100644 index 00000000..0721093e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/TeddyBear.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/TeddyBearFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/TeddyBearFill.svg new file mode 100644 index 00000000..330572a8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/TeddyBearFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Toilet.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Toilet.svg new file mode 100644 index 00000000..3e594b86 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Toilet.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ToiletFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ToiletFill.svg new file mode 100644 index 00000000..567add67 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/ToiletFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Umbrella.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Umbrella.svg new file mode 100644 index 00000000..17218123 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Umbrella.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/UmbrellaFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/UmbrellaFill.svg new file mode 100644 index 00000000..185a635e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/UmbrellaFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/WateringCan.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/WateringCan.svg new file mode 100644 index 00000000..ba930f6b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/WateringCan.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/WateringCanFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/WateringCanFill.svg new file mode 100644 index 00000000..1ec9c2cf --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/WateringCanFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Weight.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Weight.svg new file mode 100644 index 00000000..e5c7aa3c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Weight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Wrench.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Wrench.svg new file mode 100644 index 00000000..abcfb2d6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/Wrench.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/WrenchFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/WrenchFill.svg new file mode 100644 index 00000000..c65df148 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Home/WrenchFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignBottom.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignBottom.svg new file mode 100644 index 00000000..adeac2cc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignBottom.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignBottomFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignBottomFill.svg new file mode 100644 index 00000000..84d5eb23 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignBottomFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignCenter.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignCenter.svg new file mode 100644 index 00000000..d75d187a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignCenter.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignCenterFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignCenterFill.svg new file mode 100644 index 00000000..c468925f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignCenterFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignLeft.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignLeft.svg new file mode 100644 index 00000000..0cf54694 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignLeft.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignLeftFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignLeftFill.svg new file mode 100644 index 00000000..cb301b44 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignLeftFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignMiddle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignMiddle.svg new file mode 100644 index 00000000..4211649a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignMiddle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignMiddleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignMiddleFill.svg new file mode 100644 index 00000000..aa3b9dfd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignMiddleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignRight.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignRight.svg new file mode 100644 index 00000000..d95dfff9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignRight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignRightFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignRightFill.svg new file mode 100644 index 00000000..e7af3253 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignRightFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignTop.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignTop.svg new file mode 100644 index 00000000..294e9497 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignTop.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignTopFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignTopFill.svg new file mode 100644 index 00000000..0d60301c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/AlignTopFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Archive.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Archive.svg new file mode 100644 index 00000000..d117e39a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Archive.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ArchiveFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ArchiveFill.svg new file mode 100644 index 00000000..6680559f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ArchiveFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Bookmark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Bookmark.svg new file mode 100644 index 00000000..5c2a5754 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Bookmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/BookmarkDash.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/BookmarkDash.svg new file mode 100644 index 00000000..dbed32a8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/BookmarkDash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/BookmarkFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/BookmarkFill.svg new file mode 100644 index 00000000..f1dbb064 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/BookmarkFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Camera.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Camera.svg new file mode 100644 index 00000000..032c3506 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Camera.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/CameraFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/CameraFill.svg new file mode 100644 index 00000000..e90cb83c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/CameraFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Chat.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Chat.svg new file mode 100644 index 00000000..3e8ac8d3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Chat.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Chat2.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Chat2.svg new file mode 100644 index 00000000..8c386228 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Chat2.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Chat2Fill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Chat2Fill.svg new file mode 100644 index 00000000..f1f03cc7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Chat2Fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatCheckmark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatCheckmark.svg new file mode 100644 index 00000000..89d47430 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatCheckmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatCheckmarkFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatCheckmarkFill.svg new file mode 100644 index 00000000..fc6801d2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatCheckmarkFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatElipsis.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatElipsis.svg new file mode 100644 index 00000000..1c68edd8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatElipsis.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatElipsisFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatElipsisFill.svg new file mode 100644 index 00000000..6b1377ad --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatElipsisFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatExclamationmark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatExclamationmark.svg new file mode 100644 index 00000000..03d07365 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatExclamationmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatExclamationmarkFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatExclamationmarkFill.svg new file mode 100644 index 00000000..6cbca068 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatExclamationmarkFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatFill.svg new file mode 100644 index 00000000..531b4b16 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ChatFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Cog.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Cog.svg new file mode 100644 index 00000000..7912330e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Cog.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/CogFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/CogFill.svg new file mode 100644 index 00000000..10f8ea79 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/CogFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density1.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density1.svg new file mode 100644 index 00000000..3b0d49d4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density1.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density1Fill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density1Fill.svg new file mode 100644 index 00000000..035d1ca7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density1Fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density2.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density2.svg new file mode 100644 index 00000000..11dcce97 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density2.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density2Fill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density2Fill.svg new file mode 100644 index 00000000..dd3554d3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density2Fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density3.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density3.svg new file mode 100644 index 00000000..db5f7269 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Density3.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/DocPencil.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/DocPencil.svg new file mode 100644 index 00000000..77042f11 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/DocPencil.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/DocPencilFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/DocPencilFill.svg new file mode 100644 index 00000000..5e1e77be --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/DocPencilFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/DragHorizontal.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/DragHorizontal.svg new file mode 100644 index 00000000..e132ad8f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/DragHorizontal.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/DragVertical.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/DragVertical.svg new file mode 100644 index 00000000..aafe4252 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/DragVertical.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EnvelopeClosed.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EnvelopeClosed.svg new file mode 100644 index 00000000..3212d875 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EnvelopeClosed.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EnvelopeClosedFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EnvelopeClosedFill.svg new file mode 100644 index 00000000..72f3f8a6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EnvelopeClosedFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EnvelopeOpen.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EnvelopeOpen.svg new file mode 100644 index 00000000..fe3142aa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EnvelopeOpen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EnvelopeOpenFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EnvelopeOpenFill.svg new file mode 100644 index 00000000..2cc8cba1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EnvelopeOpenFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Eraser.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Eraser.svg new file mode 100644 index 00000000..96572117 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Eraser.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EraserFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EraserFill.svg new file mode 100644 index 00000000..145bbcc7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/EraserFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ExternalLink.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ExternalLink.svg new file mode 100644 index 00000000..9ea1beed --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ExternalLink.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ExternalLinkFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ExternalLinkFill.svg new file mode 100644 index 00000000..f3cfef5e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ExternalLinkFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Face.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Face.svg new file mode 100644 index 00000000..f6119204 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Face.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceCry.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceCry.svg new file mode 100644 index 00000000..7a2a8f22 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceCry.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceCryFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceCryFill.svg new file mode 100644 index 00000000..e8eceaa0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceCryFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceFill.svg new file mode 100644 index 00000000..912d42da --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceFrown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceFrown.svg new file mode 100644 index 00000000..240f0d9a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceFrown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceFrownFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceFrownFill.svg new file mode 100644 index 00000000..4e8ff4f7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceFrownFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceLaugh.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceLaugh.svg new file mode 100644 index 00000000..375897de --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceLaugh.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceLaughFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceLaughFill.svg new file mode 100644 index 00000000..56614939 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceLaughFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceSmile.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceSmile.svg new file mode 100644 index 00000000..67196c8a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceSmile.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceSmileFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceSmileFill.svg new file mode 100644 index 00000000..4a7ccd05 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FaceSmileFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Filter.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Filter.svg new file mode 100644 index 00000000..4a06af5d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Filter.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Floppydisk.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Floppydisk.svg new file mode 100644 index 00000000..ae994ab9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Floppydisk.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FloppydiskFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FloppydiskFill.svg new file mode 100644 index 00000000..fb8ef544 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FloppydiskFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Funnel.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Funnel.svg new file mode 100644 index 00000000..90deaac0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Funnel.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FunnelFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FunnelFill.svg new file mode 100644 index 00000000..916924c2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/FunnelFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Globe.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Globe.svg new file mode 100644 index 00000000..87a720e6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Globe.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/GlobeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/GlobeFill.svg new file mode 100644 index 00000000..16dabdef --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/GlobeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/GlobeSlash.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/GlobeSlash.svg new file mode 100644 index 00000000..bbc10fb7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/GlobeSlash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/GlobeSlashFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/GlobeSlashFill.svg new file mode 100644 index 00000000..06113a38 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/GlobeSlashFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Heart.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Heart.svg new file mode 100644 index 00000000..a5ec3427 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Heart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/HeartBroken.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/HeartBroken.svg new file mode 100644 index 00000000..5677bfb0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/HeartBroken.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/HeartBrokenFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/HeartBrokenFill.svg new file mode 100644 index 00000000..f6fb03fc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/HeartBrokenFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/HeartFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/HeartFill.svg new file mode 100644 index 00000000..b5c640ee --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/HeartFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Inbox.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Inbox.svg new file mode 100644 index 00000000..b68999f4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Inbox.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxDown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxDown.svg new file mode 100644 index 00000000..3193ad7e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxDownFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxDownFill.svg new file mode 100644 index 00000000..ec98249f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxDownFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxFill.svg new file mode 100644 index 00000000..5b9cb8e1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxUp.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxUp.svg new file mode 100644 index 00000000..fc6c7f36 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxUp.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxUpFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxUpFill.svg new file mode 100644 index 00000000..5879fe9c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/InboxUpFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Language.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Language.svg new file mode 100644 index 00000000..3a418c22 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Language.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Laptop.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Laptop.svg new file mode 100644 index 00000000..9709e682 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Laptop.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LaptopFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LaptopFill.svg new file mode 100644 index 00000000..9b2cbeec --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LaptopFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayerMinus.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayerMinus.svg new file mode 100644 index 00000000..9ba3fa52 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayerMinus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayerMinusFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayerMinusFill.svg new file mode 100644 index 00000000..f80be90c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayerMinusFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Layers.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Layers.svg new file mode 100644 index 00000000..2fc9b4bf --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Layers.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayersFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayersFill.svg new file mode 100644 index 00000000..2d70843a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayersFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayersPlus.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayersPlus.svg new file mode 100644 index 00000000..ba5dc2a9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayersPlus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayersPlusFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayersPlusFill.svg new file mode 100644 index 00000000..77606501 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LayersPlusFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Link.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Link.svg new file mode 100644 index 00000000..863853e1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Link.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LinkBroken.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LinkBroken.svg new file mode 100644 index 00000000..1971c310 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/LinkBroken.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MagnifyingGlass.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MagnifyingGlass.svg new file mode 100644 index 00000000..0df64db1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MagnifyingGlass.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MagnifyingGlassFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MagnifyingGlassFill.svg new file mode 100644 index 00000000..c55e7829 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MagnifyingGlassFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontal.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontal.svg new file mode 100644 index 00000000..2777ea20 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontal.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontalCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontalCircle.svg new file mode 100644 index 00000000..3ceba0da --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontalCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontalCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontalCircleFill.svg new file mode 100644 index 00000000..ecebda5b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontalCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontalSquare.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontalSquare.svg new file mode 100644 index 00000000..35a13f99 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontalSquare.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontalSquareFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontalSquareFill.svg new file mode 100644 index 00000000..67f69d0a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisHorizontalSquareFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVertical.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVertical.svg new file mode 100644 index 00000000..4d6a0081 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVertical.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVerticalCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVerticalCircle.svg new file mode 100644 index 00000000..7321eace --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVerticalCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVerticalCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVerticalCircleFill.svg new file mode 100644 index 00000000..08535cb6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVerticalCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVerticalSquare.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVerticalSquare.svg new file mode 100644 index 00000000..d48660fd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVerticalSquare.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVerticalSquareFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVerticalSquareFill.svg new file mode 100644 index 00000000..0121816d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuElipsisVerticalSquareFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuGrid.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuGrid.svg new file mode 100644 index 00000000..8724b741 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuGrid.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuHamburger.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuHamburger.svg new file mode 100644 index 00000000..c3f70b6f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MenuHamburger.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Mobile.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Mobile.svg new file mode 100644 index 00000000..c3cc2fdb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Mobile.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MobileFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MobileFill.svg new file mode 100644 index 00000000..8bdb8e89 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MobileFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MobileSmall.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MobileSmall.svg new file mode 100644 index 00000000..cfe3d427 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MobileSmall.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MobileSmallFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MobileSmallFill.svg new file mode 100644 index 00000000..262bc7d9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MobileSmallFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Monitor.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Monitor.svg new file mode 100644 index 00000000..38769c00 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Monitor.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MonitorFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MonitorFill.svg new file mode 100644 index 00000000..eb5bfefa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/MonitorFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/NotePencil.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/NotePencil.svg new file mode 100644 index 00000000..81b878ac --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/NotePencil.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/NotePencilDash.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/NotePencilDash.svg new file mode 100644 index 00000000..e93c2c00 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/NotePencilDash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/NotePencilFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/NotePencilFill.svg new file mode 100644 index 00000000..98d6a2e9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/NotePencilFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Palette.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Palette.svg new file mode 100644 index 00000000..6a835bf7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Palette.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PaletteFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PaletteFill.svg new file mode 100644 index 00000000..015b9857 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PaletteFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Paperplane.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Paperplane.svg new file mode 100644 index 00000000..69e21bef --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Paperplane.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PaperplaneFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PaperplaneFill.svg new file mode 100644 index 00000000..df9c369e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PaperplaneFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Pencil.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Pencil.svg new file mode 100644 index 00000000..1365c45f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Pencil.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilBoard.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilBoard.svg new file mode 100644 index 00000000..dddad04b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilBoard.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilBoardFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilBoardFill.svg new file mode 100644 index 00000000..1f1b59ec --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilBoardFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilFill.svg new file mode 100644 index 00000000..f671b75c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilLine.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilLine.svg new file mode 100644 index 00000000..6498545d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilLine.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilLineFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilLineFill.svg new file mode 100644 index 00000000..37beee5e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilLineFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilWriting.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilWriting.svg new file mode 100644 index 00000000..2e21c91c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilWriting.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilWritingFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilWritingFill.svg new file mode 100644 index 00000000..33067900 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PencilWritingFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PersonChat.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PersonChat.svg new file mode 100644 index 00000000..e77bd177 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PersonChat.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PersonChatFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PersonChatFill.svg new file mode 100644 index 00000000..1ed9eadf --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PersonChatFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Phone.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Phone.svg new file mode 100644 index 00000000..faa3cc5d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PhoneFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PhoneFill.svg new file mode 100644 index 00000000..ae3fe683 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PhoneFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PrinterLarge.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PrinterLarge.svg new file mode 100644 index 00000000..4dce1d74 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PrinterLarge.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PrinterLargeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PrinterLargeFill.svg new file mode 100644 index 00000000..97ea6150 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PrinterLargeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PrinterSmall.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PrinterSmall.svg new file mode 100644 index 00000000..36d5034f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PrinterSmall.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PrinterSmallFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PrinterSmallFill.svg new file mode 100644 index 00000000..1f77f065 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/PrinterSmallFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RectangleSections.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RectangleSections.svg new file mode 100644 index 00000000..54a53557 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RectangleSections.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RectangleSectionsFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RectangleSectionsFill.svg new file mode 100644 index 00000000..4b2862f2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RectangleSectionsFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RotateLeft.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RotateLeft.svg new file mode 100644 index 00000000..87e22b25 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RotateLeft.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RotateLeftFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RotateLeftFill.svg new file mode 100644 index 00000000..667b3938 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RotateLeftFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RotateRight.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RotateRight.svg new file mode 100644 index 00000000..c26426f0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RotateRight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RotateRightFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RotateRightFill.svg new file mode 100644 index 00000000..dd7adb40 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/RotateRightFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarBoth.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarBoth.svg new file mode 100644 index 00000000..062b830c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarBoth.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarBothFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarBothFill.svg new file mode 100644 index 00000000..013080f3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarBothFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarLeft.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarLeft.svg new file mode 100644 index 00000000..854e039c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarLeft.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarLeftFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarLeftFill.svg new file mode 100644 index 00000000..7e4c2915 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarLeftFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarRight.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarRight.svg new file mode 100644 index 00000000..4dcd9f61 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarRight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarRightFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarRightFill.svg new file mode 100644 index 00000000..fcc07c8e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SidebarRightFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SplitHorizontal.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SplitHorizontal.svg new file mode 100644 index 00000000..7acbfb71 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SplitHorizontal.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SplitHorizontalFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SplitHorizontalFill.svg new file mode 100644 index 00000000..ce3ac6b0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SplitHorizontalFill.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SplitVertical.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SplitVertical.svg new file mode 100644 index 00000000..d2275837 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SplitVertical.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SplitVerticalFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SplitVerticalFill.svg new file mode 100644 index 00000000..c8a67146 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/SplitVerticalFill.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Tablet.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Tablet.svg new file mode 100644 index 00000000..35f3bfb4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Tablet.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabletFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabletFill.svg new file mode 100644 index 00000000..75335d8e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabletFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Tabs.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Tabs.svg new file mode 100644 index 00000000..97833a21 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Tabs.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsAdd.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsAdd.svg new file mode 100644 index 00000000..100eabd5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsAdd.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsAddFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsAddFill.svg new file mode 100644 index 00000000..f8b334df --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsAddFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsFill.svg new file mode 100644 index 00000000..fbcdf2e8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsRemove.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsRemove.svg new file mode 100644 index 00000000..6e50af06 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsRemove.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsRemoveFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsRemoveFill.svg new file mode 100644 index 00000000..6999c5f9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TabsRemoveFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Tag.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Tag.svg new file mode 100644 index 00000000..bf220387 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Tag.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TagFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TagFill.svg new file mode 100644 index 00000000..fe4a3f72 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TagFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ThumbDown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ThumbDown.svg new file mode 100644 index 00000000..b18f891e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ThumbDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ThumbDownFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ThumbDownFill.svg new file mode 100644 index 00000000..aab16e8e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ThumbDownFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ThumbUp.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ThumbUp.svg new file mode 100644 index 00000000..44c2a17d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ThumbUp.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ThumbUpFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ThumbUpFill.svg new file mode 100644 index 00000000..e94d2c78 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ThumbUpFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Trash.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Trash.svg new file mode 100644 index 00000000..5a8a6fd5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/Trash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TrashFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TrashFill.svg new file mode 100644 index 00000000..de0ba00c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/TrashFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ZoomMinus.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ZoomMinus.svg new file mode 100644 index 00000000..678a110b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ZoomMinus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ZoomMinusFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ZoomMinusFill.svg new file mode 100644 index 00000000..291c7659 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ZoomMinusFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ZoomPlus.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ZoomPlus.svg new file mode 100644 index 00000000..1fb251ff --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ZoomPlus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ZoomPlusFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ZoomPlusFill.svg new file mode 100644 index 00000000..4b019aac --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Interface/ZoomPlusFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Bagde.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Bagde.svg new file mode 100644 index 00000000..9baad70d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Bagde.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/BagdeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/BagdeFill.svg new file mode 100644 index 00000000..1ef2741e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/BagdeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Enter.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Enter.svg new file mode 100644 index 00000000..92612596 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Enter.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Gavel.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Gavel.svg new file mode 100644 index 00000000..ad269539 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Gavel.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/GavelFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/GavelFill.svg new file mode 100644 index 00000000..9136746e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/GavelFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/GavelSoundBlock.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/GavelSoundBlock.svg new file mode 100644 index 00000000..828d7752 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/GavelSoundBlock.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/GavelSoundBlockFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/GavelSoundBlockFill.svg new file mode 100644 index 00000000..1250877f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/GavelSoundBlockFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/KeyHorizontal.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/KeyHorizontal.svg new file mode 100644 index 00000000..38ee5cf3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/KeyHorizontal.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/KeyHorizontalFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/KeyHorizontalFill.svg new file mode 100644 index 00000000..32c76eb1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/KeyHorizontalFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/KeyVertical.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/KeyVertical.svg new file mode 100644 index 00000000..6ff44891 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/KeyVertical.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/KeyVerticalFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/KeyVerticalFill.svg new file mode 100644 index 00000000..e80dfd11 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/KeyVerticalFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Leave.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Leave.svg new file mode 100644 index 00000000..d9ddee0e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Leave.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Over18.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Over18.svg new file mode 100644 index 00000000..eb04f749 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Over18.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Over18Fill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Over18Fill.svg new file mode 100644 index 00000000..bba9b035 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Over18Fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PadlockLocked.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PadlockLocked.svg new file mode 100644 index 00000000..8ccdd3dd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PadlockLocked.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PadlockLockedFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PadlockLockedFill.svg new file mode 100644 index 00000000..16d1903b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PadlockLockedFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PadlockUnlocked.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PadlockUnlocked.svg new file mode 100644 index 00000000..78591419 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PadlockUnlocked.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PadlockUnlockedFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PadlockUnlockedFill.svg new file mode 100644 index 00000000..f8ccec8e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PadlockUnlockedFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Paragraph.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Paragraph.svg new file mode 100644 index 00000000..90aaeebd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Paragraph.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Passport.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Passport.svg new file mode 100644 index 00000000..8ba2232a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Passport.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PassportFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PassportFill.svg new file mode 100644 index 00000000..45e93495 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PassportFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PasswordHidden.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PasswordHidden.svg new file mode 100644 index 00000000..c33553d6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PasswordHidden.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Pin.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Pin.svg new file mode 100644 index 00000000..726a23aa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Pin.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PinFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PinFill.svg new file mode 100644 index 00000000..b629f0f6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/PinFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Seal.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Seal.svg new file mode 100644 index 00000000..83ae3f9b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Seal.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealCheckmark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealCheckmark.svg new file mode 100644 index 00000000..50ee9de6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealCheckmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealCheckmarkFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealCheckmarkFill.svg new file mode 100644 index 00000000..bdee56b2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealCheckmarkFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealFill.svg new file mode 100644 index 00000000..658d55f5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealXMark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealXMark.svg new file mode 100644 index 00000000..915ac197 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealXMark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealXMarkFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealXMarkFill.svg new file mode 100644 index 00000000..af4bcb2a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/SealXMarkFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Shield.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Shield.svg new file mode 100644 index 00000000..cde2e697 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/Shield.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/ShieldFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/ShieldFill.svg new file mode 100644 index 00000000..c4dc1838 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/ShieldFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/ShieldLock.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/ShieldLock.svg new file mode 100644 index 00000000..13c07f3d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/ShieldLock.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/ShieldLockFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/ShieldLockFill.svg new file mode 100644 index 00000000..9a03871e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/ShieldLockFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/StarsEu.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/StarsEu.svg new file mode 100644 index 00000000..93e0ef6c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Law and security/StarsEu.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Backward.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Backward.svg new file mode 100644 index 00000000..dd499560 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Backward.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/BackwardFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/BackwardFill.svg new file mode 100644 index 00000000..630844ba --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/BackwardFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Captions.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Captions.svg new file mode 100644 index 00000000..8a124a11 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Captions.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/CaptionsFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/CaptionsFill.svg new file mode 100644 index 00000000..905ce679 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/CaptionsFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Forward.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Forward.svg new file mode 100644 index 00000000..35650d32 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Forward.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/ForwardFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/ForwardFill.svg new file mode 100644 index 00000000..039a9656 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/ForwardFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Image.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Image.svg new file mode 100644 index 00000000..65d53514 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Image.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/ImageFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/ImageFill.svg new file mode 100644 index 00000000..5f01ebc6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/ImageFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Megaphone.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Megaphone.svg new file mode 100644 index 00000000..158abb1e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Megaphone.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MegaphoneFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MegaphoneFill.svg new file mode 100644 index 00000000..5e0a8c18 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MegaphoneFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MegaphoneSpeaking.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MegaphoneSpeaking.svg new file mode 100644 index 00000000..f77ac71a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MegaphoneSpeaking.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MegaphoneSpeakingFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MegaphoneSpeakingFill.svg new file mode 100644 index 00000000..a8f671bf --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MegaphoneSpeakingFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Microphone.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Microphone.svg new file mode 100644 index 00000000..1ce60503 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Microphone.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MicrophoneFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MicrophoneFill.svg new file mode 100644 index 00000000..30164a2d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MicrophoneFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MicrophoneSlash.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MicrophoneSlash.svg new file mode 100644 index 00000000..e755d0bd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MicrophoneSlash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MicrophoneSlashFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MicrophoneSlashFill.svg new file mode 100644 index 00000000..3d8a73ed --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/MicrophoneSlashFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Newspaper.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Newspaper.svg new file mode 100644 index 00000000..cdba382e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Newspaper.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/NewspaperFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/NewspaperFill.svg new file mode 100644 index 00000000..e66adcbc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/NewspaperFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Pause.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Pause.svg new file mode 100644 index 00000000..7d5789e1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Pause.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/PauseFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/PauseFill.svg new file mode 100644 index 00000000..ec5d9b26 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/PauseFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Play.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Play.svg new file mode 100644 index 00000000..86e9e7a9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Play.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/PlayFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/PlayFill.svg new file mode 100644 index 00000000..d69deee9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/PlayFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Presentation.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Presentation.svg new file mode 100644 index 00000000..b94919c4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Presentation.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/PresentationFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/PresentationFill.svg new file mode 100644 index 00000000..b6da3a57 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/PresentationFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Record.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Record.svg new file mode 100644 index 00000000..752bf1f8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Record.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/RecordFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/RecordFill.svg new file mode 100644 index 00000000..6a028f6e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/RecordFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SkipBackward.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SkipBackward.svg new file mode 100644 index 00000000..c0aa0bf6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SkipBackward.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SkipBackwardFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SkipBackwardFill.svg new file mode 100644 index 00000000..e6e49426 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SkipBackwardFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SkipForward.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SkipForward.svg new file mode 100644 index 00000000..bcceb698 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SkipForward.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SkipForwardFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SkipForwardFill.svg new file mode 100644 index 00000000..fe16d4fd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SkipForwardFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Speaker.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Speaker.svg new file mode 100644 index 00000000..189b3771 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Speaker.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerFill.svg new file mode 100644 index 00000000..70318e31 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSlash.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSlash.svg new file mode 100644 index 00000000..35468f29 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSlash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSlashFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSlashFill.svg new file mode 100644 index 00000000..13d415d7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSlashFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave1.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave1.svg new file mode 100644 index 00000000..f04bcd99 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave1.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave1Fill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave1Fill.svg new file mode 100644 index 00000000..18216075 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave1Fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave2.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave2.svg new file mode 100644 index 00000000..7349c73f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave2.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave2Fill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave2Fill.svg new file mode 100644 index 00000000..9671e514 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave2Fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave3.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave3.svg new file mode 100644 index 00000000..08a2eb3c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave3.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave3Fill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave3Fill.svg new file mode 100644 index 00000000..ed01e619 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/SpeakerSoundWave3Fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Stop.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Stop.svg new file mode 100644 index 00000000..1caf6f22 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Stop.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/StopFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/StopFill.svg new file mode 100644 index 00000000..81bcba15 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/StopFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Video.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Video.svg new file mode 100644 index 00000000..f3f62979 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Video.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/VideoFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/VideoFill.svg new file mode 100644 index 00000000..897b533c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/VideoFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/VideoSlash.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/VideoSlash.svg new file mode 100644 index 00000000..9a2269ca --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/VideoSlash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/VideoSlashFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/VideoSlashFill.svg new file mode 100644 index 00000000..1b0093a0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/VideoSlashFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Videoplayer.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Videoplayer.svg new file mode 100644 index 00000000..98da6204 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Videoplayer.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/VideoplayerFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/VideoplayerFill.svg new file mode 100644 index 00000000..3751a016 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/VideoplayerFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Waveform.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Waveform.svg new file mode 100644 index 00000000..a684997f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Media/Waveform.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/BankNote.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/BankNote.svg new file mode 100644 index 00000000..9ce0982e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/BankNote.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/BankNoteFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/BankNoteFill.svg new file mode 100644 index 00000000..6d3094a4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/BankNoteFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Card.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Card.svg new file mode 100644 index 00000000..e03aaee1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Card.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/CardFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/CardFill.svg new file mode 100644 index 00000000..f2f474a0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/CardFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/CurrencyExchange.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/CurrencyExchange.svg new file mode 100644 index 00000000..7ad226fc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/CurrencyExchange.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/FlowerPension.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/FlowerPension.svg new file mode 100644 index 00000000..f1ff300e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/FlowerPension.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/FlowerPensionFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/FlowerPensionFill.svg new file mode 100644 index 00000000..cbd2e65d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/FlowerPensionFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Kroner.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Kroner.svg new file mode 100644 index 00000000..f01c885f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Kroner.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Nok.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Nok.svg new file mode 100644 index 00000000..94c9feee --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Nok.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Piggybank.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Piggybank.svg new file mode 100644 index 00000000..19510657 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Piggybank.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/PiggybankFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/PiggybankFill.svg new file mode 100644 index 00000000..d189dd63 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/PiggybankFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Receipt.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Receipt.svg new file mode 100644 index 00000000..8ba986f2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Receipt.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/ReceiptFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/ReceiptFill.svg new file mode 100644 index 00000000..f3f23e5c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/ReceiptFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/SackKroner.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/SackKroner.svg new file mode 100644 index 00000000..010022de --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/SackKroner.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/SackKronerFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/SackKronerFill.svg new file mode 100644 index 00000000..dabbba13 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/SackKronerFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/SackPension.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/SackPension.svg new file mode 100644 index 00000000..c7ff1dba --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/SackPension.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/SackPensionFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/SackPensionFill.svg new file mode 100644 index 00000000..c7ee0996 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/SackPensionFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/ShoppingBasket.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/ShoppingBasket.svg new file mode 100644 index 00000000..1a983dd5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/ShoppingBasket.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/ShoppingBasketFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/ShoppingBasketFill.svg new file mode 100644 index 00000000..8fc6847b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/ShoppingBasketFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Wallet.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Wallet.svg new file mode 100644 index 00000000..b55eaf82 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/Wallet.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/WalletFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/WalletFill.svg new file mode 100644 index 00000000..573a8326 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Money/WalletFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Allergens.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Allergens.svg new file mode 100644 index 00000000..7b9a9ac4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Allergens.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/AllergensFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/AllergensFill.svg new file mode 100644 index 00000000..09e9b8ee --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/AllergensFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Bacteria.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Bacteria.svg new file mode 100644 index 00000000..da32c01a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Bacteria.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/BacteriaFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/BacteriaFill.svg new file mode 100644 index 00000000..c5f3e8c4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/BacteriaFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Bug.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Bug.svg new file mode 100644 index 00000000..e4411642 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Bug.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/BugFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/BugFill.svg new file mode 100644 index 00000000..e5e92376 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/BugFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Dog.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Dog.svg new file mode 100644 index 00000000..83b64ccb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Dog.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/DogFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/DogFill.svg new file mode 100644 index 00000000..8a77a9ee --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/DogFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Earth.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Earth.svg new file mode 100644 index 00000000..a58cabd8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Earth.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/EarthFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/EarthFill.svg new file mode 100644 index 00000000..fcba4947 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/EarthFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Flower.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Flower.svg new file mode 100644 index 00000000..4b81bfc3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Flower.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerFill.svg new file mode 100644 index 00000000..3dfff16e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerPetalFalling.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerPetalFalling.svg new file mode 100644 index 00000000..3511b6cc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerPetalFalling.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerPetalFallingFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerPetalFallingFill.svg new file mode 100644 index 00000000..e8e5dde6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerPetalFallingFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerPetals.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerPetals.svg new file mode 100644 index 00000000..7339ad0f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerPetals.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerPetalsFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerPetalsFill.svg new file mode 100644 index 00000000..2745efae --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/FlowerPetalsFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/HexagonGrid.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/HexagonGrid.svg new file mode 100644 index 00000000..4b6912f0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/HexagonGrid.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/HexagonGridFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/HexagonGridFill.svg new file mode 100644 index 00000000..5312b98f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/HexagonGridFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Lightning.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Lightning.svg new file mode 100644 index 00000000..50c719e4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Lightning.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/LightningFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/LightningFill.svg new file mode 100644 index 00000000..b59c134e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/LightningFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Microbe.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Microbe.svg new file mode 100644 index 00000000..32dda8de --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Microbe.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/MicrobeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/MicrobeFill.svg new file mode 100644 index 00000000..63e8224b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/MicrobeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Moon.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Moon.svg new file mode 100644 index 00000000..945eddbc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Moon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/MoonFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/MoonFill.svg new file mode 100644 index 00000000..ed78ca68 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/MoonFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Mountain.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Mountain.svg new file mode 100644 index 00000000..ceff3787 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Mountain.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/MountainFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/MountainFill.svg new file mode 100644 index 00000000..308c0f6d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/MountainFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/ParasolBeach.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/ParasolBeach.svg new file mode 100644 index 00000000..03ac87da --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/ParasolBeach.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/ParasolBeachFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/ParasolBeachFill.svg new file mode 100644 index 00000000..3fe32e08 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/ParasolBeachFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Plant.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Plant.svg new file mode 100644 index 00000000..951199b4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Plant.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/PlantFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/PlantFill.svg new file mode 100644 index 00000000..d6c0e625 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/PlantFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Raindrop.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Raindrop.svg new file mode 100644 index 00000000..94482f37 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Raindrop.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/RaindropFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/RaindropFill.svg new file mode 100644 index 00000000..a42c781d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/RaindropFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Snow.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Snow.svg new file mode 100644 index 00000000..ebb91d37 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Snow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/SparkLarge.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/SparkLarge.svg new file mode 100644 index 00000000..e994ea8d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/SparkLarge.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/SparkSmall.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/SparkSmall.svg new file mode 100644 index 00000000..17c714b0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/SparkSmall.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Sparkles.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Sparkles.svg new file mode 100644 index 00000000..d6544be4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Sparkles.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/SparklesFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/SparklesFill.svg new file mode 100644 index 00000000..f6e4159a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/SparklesFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Star.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Star.svg new file mode 100644 index 00000000..0e913f1e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Star.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/StarFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/StarFill.svg new file mode 100644 index 00000000..a3b1c3fd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/StarFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Sun.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Sun.svg new file mode 100644 index 00000000..4994db6d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Sun.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/SunFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/SunFill.svg new file mode 100644 index 00000000..d406321a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/SunFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Thermometer.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Thermometer.svg new file mode 100644 index 00000000..751ce75d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Thermometer.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/ThermometerFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/ThermometerFill.svg new file mode 100644 index 00000000..1756964c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/ThermometerFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Waves.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Waves.svg new file mode 100644 index 00000000..bd8dfc3c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Nature and animals/Waves.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/BabyWrapped.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/BabyWrapped.svg new file mode 100644 index 00000000..52604cf0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/BabyWrapped.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/BabyWrappedFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/BabyWrappedFill.svg new file mode 100644 index 00000000..d5fe2f31 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/BabyWrappedFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Bone.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Bone.svg new file mode 100644 index 00000000..c4b54cc5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Bone.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/BoneFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/BoneFill.svg new file mode 100644 index 00000000..066fa438 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/BoneFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ChildEyes.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ChildEyes.svg new file mode 100644 index 00000000..0d147bd0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ChildEyes.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ChildEyesFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ChildEyesFill.svg new file mode 100644 index 00000000..61f1669a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ChildEyesFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ChildHairEyes.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ChildHairEyes.svg new file mode 100644 index 00000000..9216b2bf --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ChildHairEyes.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ChildHairEyesFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ChildHairEyesFill.svg new file mode 100644 index 00000000..3fa74cec --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ChildHairEyesFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Ear.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Ear.svg new file mode 100644 index 00000000..ee78d08a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Ear.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarFill.svg new file mode 100644 index 00000000..441b825a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarSlash.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarSlash.svg new file mode 100644 index 00000000..4f35ec97 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarSlash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarSlashFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarSlashFill.svg new file mode 100644 index 00000000..801341df --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarSlashFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarSoundwaves.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarSoundwaves.svg new file mode 100644 index 00000000..eb302339 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarSoundwaves.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarSoundwavesFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarSoundwavesFill.svg new file mode 100644 index 00000000..e2f91941 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EarSoundwavesFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Eye.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Eye.svg new file mode 100644 index 00000000..1777c0ce --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Eye.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeClosed.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeClosed.svg new file mode 100644 index 00000000..70d71417 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeClosed.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeFill.svg new file mode 100644 index 00000000..c767f612 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeObfuscated.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeObfuscated.svg new file mode 100644 index 00000000..606a37c8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeObfuscated.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeObfuscatedFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeObfuscatedFill.svg new file mode 100644 index 00000000..c69b1847 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeObfuscatedFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeSlash.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeSlash.svg new file mode 100644 index 00000000..33b6aa83 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeSlash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeSlashFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeSlashFill.svg new file mode 100644 index 00000000..cf261aa7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeSlashFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeWithPupil.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeWithPupil.svg new file mode 100644 index 00000000..ccbd9e49 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeWithPupil.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeWithPupilFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeWithPupilFill.svg new file mode 100644 index 00000000..f06eb3ca --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/EyeWithPupilFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureChild.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureChild.svg new file mode 100644 index 00000000..dc510e49 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureChild.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureChildFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureChildFill.svg new file mode 100644 index 00000000..86117ec6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureChildFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureCombination.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureCombination.svg new file mode 100644 index 00000000..51b4ea87 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureCombination.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureCombinationFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureCombinationFill.svg new file mode 100644 index 00000000..ba824afb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureCombinationFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureInward.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureInward.svg new file mode 100644 index 00000000..af387861 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureInward.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureInwardFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureInwardFill.svg new file mode 100644 index 00000000..70f4654d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureInwardFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureOutward.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureOutward.svg new file mode 100644 index 00000000..efe7309b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureOutward.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureOutwardFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureOutwardFill.svg new file mode 100644 index 00000000..94d5cb0a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FigureOutwardFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FingerButton.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FingerButton.svg new file mode 100644 index 00000000..13d4ad51 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FingerButton.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FingerButtonFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FingerButtonFill.svg new file mode 100644 index 00000000..e0e3cd1a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FingerButtonFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FingerMobile.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FingerMobile.svg new file mode 100644 index 00000000..e495314d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FingerMobile.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FingerMobileFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FingerMobileFill.svg new file mode 100644 index 00000000..cda2385b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/FingerMobileFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandFinger.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandFinger.svg new file mode 100644 index 00000000..4efda019 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandFinger.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandFingerFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandFingerFill.svg new file mode 100644 index 00000000..2c7e9958 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandFingerFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandHeart.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandHeart.svg new file mode 100644 index 00000000..91fba4ca --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandHeart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandHeartFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandHeartFill.svg new file mode 100644 index 00000000..302a5f44 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandHeartFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandKnot.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandKnot.svg new file mode 100644 index 00000000..aeee5b45 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandKnot.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandKnotFilled.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandKnotFilled.svg new file mode 100644 index 00000000..bb6c7a13 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandKnotFilled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandShakeHeart.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandShakeHeart.svg new file mode 100644 index 00000000..46c0dbf6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandShakeHeart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandShakeHeartFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandShakeHeartFill.svg new file mode 100644 index 00000000..bb9ee075 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandShakeHeartFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Handshake.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Handshake.svg new file mode 100644 index 00000000..e5075ca4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Handshake.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandshakeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandshakeFill.svg new file mode 100644 index 00000000..60465cae --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HandshakeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Head.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Head.svg new file mode 100644 index 00000000..04797de6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Head.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HeadFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HeadFill.svg new file mode 100644 index 00000000..11ef56fc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/HeadFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Person.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Person.svg new file mode 100644 index 00000000..5457c0b6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Person.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCheckmark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCheckmark.svg new file mode 100644 index 00000000..4c7699b3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCheckmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCheckmarkFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCheckmarkFill.svg new file mode 100644 index 00000000..aa97fdc8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCheckmarkFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCircle.svg new file mode 100644 index 00000000..396a89ca --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCircleFill.svg new file mode 100644 index 00000000..00b1ea66 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCross.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCross.svg new file mode 100644 index 00000000..8b0f997d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCross.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCrossFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCrossFill.svg new file mode 100644 index 00000000..7b550621 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonCrossFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonEnvelope.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonEnvelope.svg new file mode 100644 index 00000000..9950bf1c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonEnvelope.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonEnvelopeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonEnvelopeFill.svg new file mode 100644 index 00000000..fd505154 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonEnvelopeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonFill.svg new file mode 100644 index 00000000..2d4d5efb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonGavel.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonGavel.svg new file mode 100644 index 00000000..b9fa12b5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonGavel.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonGavelFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonGavelFill.svg new file mode 100644 index 00000000..906a68b4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonGavelFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonGroup.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonGroup.svg new file mode 100644 index 00000000..bd88f53a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonGroup.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonGroupFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonGroupFill.svg new file mode 100644 index 00000000..03cdba0f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonGroupFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonHeadset.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonHeadset.svg new file mode 100644 index 00000000..b2d04f76 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonHeadset.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonHeadsetFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonHeadsetFill.svg new file mode 100644 index 00000000..06508da6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonHeadsetFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonMinus.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonMinus.svg new file mode 100644 index 00000000..07f1e3ea --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonMinus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonMinusFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonMinusFill.svg new file mode 100644 index 00000000..183fc2f5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonMinusFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPencil.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPencil.svg new file mode 100644 index 00000000..4b18fa20 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPencil.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPencilFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPencilFill.svg new file mode 100644 index 00000000..c8b13e85 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPencilFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPlus.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPlus.svg new file mode 100644 index 00000000..4d093f11 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPlus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPlusFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPlusFill.svg new file mode 100644 index 00000000..365df000 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPlusFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPregnant.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPregnant.svg new file mode 100644 index 00000000..113f0da4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPregnant.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPregnantFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPregnantFill.svg new file mode 100644 index 00000000..51d9dcd1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonPregnantFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonRectangle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonRectangle.svg new file mode 100644 index 00000000..07a3ac4c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonRectangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonRectangleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonRectangleFill.svg new file mode 100644 index 00000000..8ce938d1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonRectangleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonSuit.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonSuit.svg new file mode 100644 index 00000000..638b026a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonSuit.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonSuitFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonSuitFill.svg new file mode 100644 index 00000000..a97558cf --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonSuitFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonTallShort.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonTallShort.svg new file mode 100644 index 00000000..20f4420e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonTallShort.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonTallShortFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonTallShortFill.svg new file mode 100644 index 00000000..dd48bc8b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/PersonTallShortFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Silhouette.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Silhouette.svg new file mode 100644 index 00000000..2b2014fb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Silhouette.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/SilhouetteFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/SilhouetteFill.svg new file mode 100644 index 00000000..a6f8ac4e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/SilhouetteFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Tooth.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Tooth.svg new file mode 100644 index 00000000..71545bed --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/Tooth.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ToothFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ToothFill.svg new file mode 100644 index 00000000..08b19768 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/People/ToothFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Angle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Angle.svg new file mode 100644 index 00000000..e460734a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Angle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/AreaChart.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/AreaChart.svg new file mode 100644 index 00000000..5771eff4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/AreaChart.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/AreaChartFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/AreaChartFill.svg new file mode 100644 index 00000000..6274bb26 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/AreaChartFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BarChart.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BarChart.svg new file mode 100644 index 00000000..b91fe01f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BarChart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BarChartFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BarChartFill.svg new file mode 100644 index 00000000..64f73e91 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BarChartFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BubbleChart.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BubbleChart.svg new file mode 100644 index 00000000..0b065dd8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BubbleChart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BubbleChartFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BubbleChartFill.svg new file mode 100644 index 00000000..7e7ae7e3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BubbleChartFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BulletList.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BulletList.svg new file mode 100644 index 00000000..e1c72d06 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/BulletList.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Divide.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Divide.svg new file mode 100644 index 00000000..0a3d4d3e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Divide.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/DonutChart.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/DonutChart.svg new file mode 100644 index 00000000..a8755e4d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/DonutChart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/DonutChartFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/DonutChartFill.svg new file mode 100644 index 00000000..00270e5b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/DonutChartFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Equals.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Equals.svg new file mode 100644 index 00000000..b677c421 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Equals.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Hashtag.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Hashtag.svg new file mode 100644 index 00000000..6f2c5918 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Hashtag.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/LineGraph.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/LineGraph.svg new file mode 100644 index 00000000..9a2e6b9b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/LineGraph.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/LineGraphDot.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/LineGraphDot.svg new file mode 100644 index 00000000..42084085 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/LineGraphDot.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/LineGraphStacked.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/LineGraphStacked.svg new file mode 100644 index 00000000..d8cf97c1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/LineGraphStacked.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Minus.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Minus.svg new file mode 100644 index 00000000..9e33b3de --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Minus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/MinusCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/MinusCircle.svg new file mode 100644 index 00000000..fb3525ba --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/MinusCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/MinusCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/MinusCircleFill.svg new file mode 100644 index 00000000..9452a4d1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/MinusCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Multiply.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Multiply.svg new file mode 100644 index 00000000..77af0f04 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Multiply.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/NumberList.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/NumberList.svg new file mode 100644 index 00000000..f86b0e5c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/NumberList.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Percent.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Percent.svg new file mode 100644 index 00000000..63077474 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Percent.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PieChart.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PieChart.svg new file mode 100644 index 00000000..cc372515 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PieChart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PieChartFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PieChartFill.svg new file mode 100644 index 00000000..581f9de9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PieChartFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Plus.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Plus.svg new file mode 100644 index 00000000..f92faeaa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Plus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PlusCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PlusCircle.svg new file mode 100644 index 00000000..cb4e6b9e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PlusCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PlusCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PlusCircleFill.svg new file mode 100644 index 00000000..28418bd0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PlusCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PlusMinusSlash.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PlusMinusSlash.svg new file mode 100644 index 00000000..a1407a61 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/PlusMinusSlash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/SectorChart.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/SectorChart.svg new file mode 100644 index 00000000..3eb94760 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/SectorChart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/SectorChartFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/SectorChartFill.svg new file mode 100644 index 00000000..ef7b5397 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/SectorChartFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Squareroot.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Squareroot.svg new file mode 100644 index 00000000..1f918dd4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Squareroot.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Table.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Table.svg new file mode 100644 index 00000000..1a986b4f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/Table.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/TableFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/TableFill.svg new file mode 100644 index 00000000..3d9e877e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/TableFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/TrendDown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/TrendDown.svg new file mode 100644 index 00000000..828702e2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/TrendDown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/TrendFlat.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/TrendFlat.svg new file mode 100644 index 00000000..7b1766ba --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/TrendFlat.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/TrendUp.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/TrendUp.svg new file mode 100644 index 00000000..e8114fa6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Statistics and math/TrendUp.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Bell.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Bell.svg new file mode 100644 index 00000000..08d7464a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Bell.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/BellDot.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/BellDot.svg new file mode 100644 index 00000000..758b11d0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/BellDot.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/BellDotFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/BellDotFill.svg new file mode 100644 index 00000000..caee4b8b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/BellDotFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/BellFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/BellFill.svg new file mode 100644 index 00000000..58047cb0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/BellFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CameraTriangle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CameraTriangle.svg new file mode 100644 index 00000000..2b8600ca --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CameraTriangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CameraTriangleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CameraTriangleFill.svg new file mode 100644 index 00000000..3330fbb1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CameraTriangleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Checkmark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Checkmark.svg new file mode 100644 index 00000000..2eab0413 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Checkmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CheckmarkCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CheckmarkCircle.svg new file mode 100644 index 00000000..5ae26528 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CheckmarkCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CheckmarkCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CheckmarkCircleFill.svg new file mode 100644 index 00000000..15d202f4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CheckmarkCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Circle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Circle.svg new file mode 100644 index 00000000..14293775 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CircleBroken.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CircleBroken.svg new file mode 100644 index 00000000..b772a8be --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CircleBroken.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CircleFill.svg new file mode 100644 index 00000000..0f6aaa34 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CircleSlash.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CircleSlash.svg new file mode 100644 index 00000000..6fccfae5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CircleSlash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CircleSlashFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CircleSlashFill.svg new file mode 100644 index 00000000..757f4798 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CircleSlashFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CogRotation.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CogRotation.svg new file mode 100644 index 00000000..6d9fc1bc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CogRotation.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CogRotationFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CogRotationFill.svg new file mode 100644 index 00000000..2e568757 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/CogRotationFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Diamond.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Diamond.svg new file mode 100644 index 00000000..f5d74df5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Diamond.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/DiamondFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/DiamondFill.svg new file mode 100644 index 00000000..c9060ce9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/DiamondFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Exclamationmark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Exclamationmark.svg new file mode 100644 index 00000000..cf878240 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Exclamationmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/ExclamationmarkTriangle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/ExclamationmarkTriangle.svg new file mode 100644 index 00000000..e32a3959 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/ExclamationmarkTriangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/ExclamationmarkTriangleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/ExclamationmarkTriangleFill.svg new file mode 100644 index 00000000..2b70309a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/ExclamationmarkTriangleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Information.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Information.svg new file mode 100644 index 00000000..0aac824e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Information.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/InformationSquare.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/InformationSquare.svg new file mode 100644 index 00000000..2d266ab1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/InformationSquare.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/InformationSquareFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/InformationSquareFill.svg new file mode 100644 index 00000000..61072a6b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/InformationSquareFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/LaptopTriangle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/LaptopTriangle.svg new file mode 100644 index 00000000..b7e98e39 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/LaptopTriangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/LaptopTriangleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/LaptopTriangleFill.svg new file mode 100644 index 00000000..e5a487b0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/LaptopTriangleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/MobileTriangle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/MobileTriangle.svg new file mode 100644 index 00000000..39126804 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/MobileTriangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/MobileTriangleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/MobileTriangleFill.svg new file mode 100644 index 00000000..f123e9c8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/MobileTriangleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/MonitorTriangle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/MonitorTriangle.svg new file mode 100644 index 00000000..8868579f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/MonitorTriangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/MonitorTriangleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/MonitorTriangleFill.svg new file mode 100644 index 00000000..20ec433b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/MonitorTriangleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Pentagon.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Pentagon.svg new file mode 100644 index 00000000..cdf811f0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Pentagon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PentagonFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PentagonFill.svg new file mode 100644 index 00000000..047ddf0b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PentagonFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PrinterLargeTriangle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PrinterLargeTriangle.svg new file mode 100644 index 00000000..c2c990bc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PrinterLargeTriangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PrinterLargeTriangleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PrinterLargeTriangleFill.svg new file mode 100644 index 00000000..94910106 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PrinterLargeTriangleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PrinterSmallTriangle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PrinterSmallTriangle.svg new file mode 100644 index 00000000..3de1740d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PrinterSmallTriangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PrinterSmallTriangleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PrinterSmallTriangleFill.svg new file mode 100644 index 00000000..d5a7050e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/PrinterSmallTriangleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Questionmark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Questionmark.svg new file mode 100644 index 00000000..b25d93e4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Questionmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/QuestionmarkDiamond.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/QuestionmarkDiamond.svg new file mode 100644 index 00000000..87ceb542 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/QuestionmarkDiamond.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/QuestionmarkDiamondFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/QuestionmarkDiamondFill.svg new file mode 100644 index 00000000..9708240d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/QuestionmarkDiamondFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Robot.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Robot.svg new file mode 100644 index 00000000..c6886cfb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Robot.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotFill.svg new file mode 100644 index 00000000..ec24d6c8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotFrown.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotFrown.svg new file mode 100644 index 00000000..115bd014 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotFrown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotFrownFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotFrownFill.svg new file mode 100644 index 00000000..10fc02d4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotFrownFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotSmile.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotSmile.svg new file mode 100644 index 00000000..12a56633 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotSmile.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotSmileFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotSmileFill.svg new file mode 100644 index 00000000..511e6d81 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/RobotSmileFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Square.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Square.svg new file mode 100644 index 00000000..d5c9e1aa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Square.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/SquareFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/SquareFill.svg new file mode 100644 index 00000000..0b94b5df --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/SquareFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Triangle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Triangle.svg new file mode 100644 index 00000000..c61cb663 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/Triangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/TriangleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/TriangleFill.svg new file mode 100644 index 00000000..93ff4c6a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/TriangleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/XMark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/XMark.svg new file mode 100644 index 00000000..30d66bd5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/XMark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/XMarkOctagon.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/XMarkOctagon.svg new file mode 100644 index 00000000..50c94fee --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/XMarkOctagon.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/XMarkOctagonFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/XMarkOctagonFill.svg new file mode 100644 index 00000000..4623b9ea --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Status/XMarkOctagonFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Airplane.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Airplane.svg new file mode 100644 index 00000000..eb7faff6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Airplane.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/AirplaneFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/AirplaneFill.svg new file mode 100644 index 00000000..1e0a4e95 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/AirplaneFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Backpack.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Backpack.svg new file mode 100644 index 00000000..ada53da4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Backpack.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/BackpackFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/BackpackFill.svg new file mode 100644 index 00000000..7bde6c2e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/BackpackFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Baggage.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Baggage.svg new file mode 100644 index 00000000..52bff04d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Baggage.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/BaggageFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/BaggageFill.svg new file mode 100644 index 00000000..02cb0589 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/BaggageFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Bicycle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Bicycle.svg new file mode 100644 index 00000000..070a3301 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Bicycle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Boat.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Boat.svg new file mode 100644 index 00000000..9ed40ae9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Boat.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/BoatFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/BoatFill.svg new file mode 100644 index 00000000..3d5733b0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/BoatFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Bus.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Bus.svg new file mode 100644 index 00000000..7cd53476 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Bus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/BusFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/BusFill.svg new file mode 100644 index 00000000..992c9d52 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/BusFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Car.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Car.svg new file mode 100644 index 00000000..2b5b0d32 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Car.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/CarFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/CarFill.svg new file mode 100644 index 00000000..97231f7b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/CarFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Compass.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Compass.svg new file mode 100644 index 00000000..9fe575a3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Compass.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/CompassFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/CompassFill.svg new file mode 100644 index 00000000..7cd1fbdd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/CompassFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/FlagCross.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/FlagCross.svg new file mode 100644 index 00000000..5c505219 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/FlagCross.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/FlagCrossFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/FlagCrossFill.svg new file mode 100644 index 00000000..ea01801d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/FlagCrossFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/HikingTrailSign.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/HikingTrailSign.svg new file mode 100644 index 00000000..26d13562 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/HikingTrailSign.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/HikingTrailSignFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/HikingTrailSignFill.svg new file mode 100644 index 00000000..dd75541a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/HikingTrailSignFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/LocationPin.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/LocationPin.svg new file mode 100644 index 00000000..ee7e562a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/LocationPin.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/LocationPinFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/LocationPinFill.svg new file mode 100644 index 00000000..1c7de839 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/LocationPinFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Motorcycle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Motorcycle.svg new file mode 100644 index 00000000..ce8b0106 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Motorcycle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/MotorcycleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/MotorcycleFill.svg new file mode 100644 index 00000000..8edd82ad --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/MotorcycleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Roadblock.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Roadblock.svg new file mode 100644 index 00000000..dda54f4d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Roadblock.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/RoadblockFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/RoadblockFill.svg new file mode 100644 index 00000000..7fb1901a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/RoadblockFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Rocket.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Rocket.svg new file mode 100644 index 00000000..2cc133b4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Rocket.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/RocketFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/RocketFill.svg new file mode 100644 index 00000000..bd1171bb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/RocketFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Sack.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Sack.svg new file mode 100644 index 00000000..ce779dcf --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Sack.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/SackFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/SackFill.svg new file mode 100644 index 00000000..e9edd718 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/SackFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Stroller.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Stroller.svg new file mode 100644 index 00000000..035f8c20 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Stroller.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/StrollerFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/StrollerFill.svg new file mode 100644 index 00000000..95a8596f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/StrollerFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Train.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Train.svg new file mode 100644 index 00000000..92bfb738 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Train.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/TrainFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/TrainFill.svg new file mode 100644 index 00000000..ebe0f787 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/TrainFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Tram.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Tram.svg new file mode 100644 index 00000000..9cf80f25 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Tram.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/TramFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/TramFill.svg new file mode 100644 index 00000000..e8641f8b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/TramFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Truck.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Truck.svg new file mode 100644 index 00000000..15112931 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/Truck.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/TruckFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/TruckFill.svg new file mode 100644 index 00000000..3caac824 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Transportation/TruckFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Bandage.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Bandage.svg new file mode 100644 index 00000000..75d03c58 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Bandage.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/BandageFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/BandageFill.svg new file mode 100644 index 00000000..14cbf98b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/BandageFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/BoneBroken.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/BoneBroken.svg new file mode 100644 index 00000000..c343c733 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/BoneBroken.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Cigarette.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Cigarette.svg new file mode 100644 index 00000000..c0521910 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Cigarette.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/CigaretteFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/CigaretteFill.svg new file mode 100644 index 00000000..e259a98d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/CigaretteFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Coffee.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Coffee.svg new file mode 100644 index 00000000..dcba07d6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Coffee.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/CoffeeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/CoffeeFill.svg new file mode 100644 index 00000000..6630d96d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/CoffeeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Donuts.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Donuts.svg new file mode 100644 index 00000000..2a2ffb65 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Donuts.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/DonutsFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/DonutsFill.svg new file mode 100644 index 00000000..3c0a6907 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/DonutsFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FeedingBottle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FeedingBottle.svg new file mode 100644 index 00000000..7c95dc8c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FeedingBottle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FeedingBottleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FeedingBottleFill.svg new file mode 100644 index 00000000..19da0201 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FeedingBottleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FirstAid.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FirstAid.svg new file mode 100644 index 00000000..92947a3f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FirstAid.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FirstAidFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FirstAidFill.svg new file mode 100644 index 00000000..e592012a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FirstAidFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FirstAidKit.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FirstAidKit.svg new file mode 100644 index 00000000..7eca603c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FirstAidKit.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FirstAidKitFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FirstAidKitFill.svg new file mode 100644 index 00000000..ab6114bd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/FirstAidKitFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HandBandage.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HandBandage.svg new file mode 100644 index 00000000..7181f6ee --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HandBandage.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HandBandageFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HandBandageFill.svg new file mode 100644 index 00000000..8a9c9f35 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HandBandageFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HeadHeart.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HeadHeart.svg new file mode 100644 index 00000000..de4f3097 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HeadHeart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HeadHeartFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HeadHeartFill.svg new file mode 100644 index 00000000..9a3e39bf --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HeadHeartFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Hospital.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Hospital.svg new file mode 100644 index 00000000..f82b3bb0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Hospital.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HospitalFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HospitalFill.svg new file mode 100644 index 00000000..d83aa06a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/HospitalFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/IvFluidBag.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/IvFluidBag.svg new file mode 100644 index 00000000..24a231c2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/IvFluidBag.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/IvFluidBagFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/IvFluidBagFill.svg new file mode 100644 index 00000000..ba74717c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/IvFluidBagFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/MedicineBottle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/MedicineBottle.svg new file mode 100644 index 00000000..6c99c46a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/MedicineBottle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/MedicineBottleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/MedicineBottleFill.svg new file mode 100644 index 00000000..28e2195b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/MedicineBottleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillCircle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillCircle.svg new file mode 100644 index 00000000..b1c973e6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillCircle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillCircleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillCircleFill.svg new file mode 100644 index 00000000..7b484f57 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillCircleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillCircleRectangle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillCircleRectangle.svg new file mode 100644 index 00000000..75d5a8ca --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillCircleRectangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillCircleRectangleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillCircleRectangleFill.svg new file mode 100644 index 00000000..242446e2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillCircleRectangleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillRectangle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillRectangle.svg new file mode 100644 index 00000000..4dbcf57f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillRectangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillRectangleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillRectangleFill.svg new file mode 100644 index 00000000..ac882e3b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/PillRectangleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/StarOfLife.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/StarOfLife.svg new file mode 100644 index 00000000..4ca287eb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/StarOfLife.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/StarOfLifeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/StarOfLifeFill.svg new file mode 100644 index 00000000..6d7efc12 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/StarOfLifeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Stethoscope.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Stethoscope.svg new file mode 100644 index 00000000..c946dd84 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Stethoscope.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/TrayFood.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/TrayFood.svg new file mode 100644 index 00000000..61d261bf --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/TrayFood.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/TrayFoodFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/TrayFoodFill.svg new file mode 100644 index 00000000..67377d41 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/TrayFoodFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Virus.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Virus.svg new file mode 100644 index 00000000..6dce45fa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Virus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/VirusFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/VirusFill.svg new file mode 100644 index 00000000..b3799046 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/VirusFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Vitals.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Vitals.svg new file mode 100644 index 00000000..9bad5efc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Wellness/Vitals.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Briefcase.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Briefcase.svg new file mode 100644 index 00000000..9f001d15 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Briefcase.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/BriefcaseClock.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/BriefcaseClock.svg new file mode 100644 index 00000000..cb8fee72 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/BriefcaseClock.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/BriefcaseClockFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/BriefcaseClockFill.svg new file mode 100644 index 00000000..65d20595 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/BriefcaseClockFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/BriefcaseFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/BriefcaseFill.svg new file mode 100644 index 00000000..7c2b3418 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/BriefcaseFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Buildings2.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Buildings2.svg new file mode 100644 index 00000000..dae75670 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Buildings2.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Buildings2Fill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Buildings2Fill.svg new file mode 100644 index 00000000..5547e9c0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Buildings2Fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Buildings3.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Buildings3.svg new file mode 100644 index 00000000..321975b4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Buildings3.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Buildings3Fill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Buildings3Fill.svg new file mode 100644 index 00000000..55925a3f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Buildings3Fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ChangingRoom.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ChangingRoom.svg new file mode 100644 index 00000000..42bf0e8b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ChangingRoom.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ChangingRoomFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ChangingRoomFill.svg new file mode 100644 index 00000000..b4cec228 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ChangingRoomFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ChefHat.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ChefHat.svg new file mode 100644 index 00000000..794b3267 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ChefHat.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ChefHatFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ChefHatFill.svg new file mode 100644 index 00000000..cbe1dad0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ChefHatFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Clipboard.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Clipboard.svg new file mode 100644 index 00000000..ce4aa601 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Clipboard.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardCheckmark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardCheckmark.svg new file mode 100644 index 00000000..2c28432b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardCheckmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardCheckmarkFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardCheckmarkFill.svg new file mode 100644 index 00000000..49af4c87 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardCheckmarkFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardFill.svg new file mode 100644 index 00000000..a4f6f3cb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardLink.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardLink.svg new file mode 100644 index 00000000..b58d38ad --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardLink.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardLinkFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardLinkFill.svg new file mode 100644 index 00000000..6bfe2314 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardLinkFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardXMark.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardXMark.svg new file mode 100644 index 00000000..6599fb7a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardXMark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardXMarkFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardXMarkFill.svg new file mode 100644 index 00000000..015079ac --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ClipboardXMarkFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Door.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Door.svg new file mode 100644 index 00000000..fa39f586 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Door.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/DoorFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/DoorFill.svg new file mode 100644 index 00000000..02ba8c53 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/DoorFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/DoorOpen.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/DoorOpen.svg new file mode 100644 index 00000000..ce50fbbe --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/DoorOpen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/DoorOpenFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/DoorOpenFill.svg new file mode 100644 index 00000000..897fef3e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/DoorOpenFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Elevator.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Elevator.svg new file mode 100644 index 00000000..ea107dd6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Elevator.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ElevatorFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ElevatorFill.svg new file mode 100644 index 00000000..7e085dde --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ElevatorFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/HardHat.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/HardHat.svg new file mode 100644 index 00000000..ae065873 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/HardHat.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/HardHatFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/HardHatFill.svg new file mode 100644 index 00000000..bef57862 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/HardHatFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/MeetingLarge.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/MeetingLarge.svg new file mode 100644 index 00000000..72a62e99 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/MeetingLarge.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/MeetingLargeFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/MeetingLargeFill.svg new file mode 100644 index 00000000..a95f7cd5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/MeetingLargeFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/MeetingSmall.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/MeetingSmall.svg new file mode 100644 index 00000000..2df5029e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/MeetingSmall.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/MeetingSmallFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/MeetingSmallFill.svg new file mode 100644 index 00000000..1aaf4c3c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/MeetingSmallFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/NoSmoking.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/NoSmoking.svg new file mode 100644 index 00000000..2d601eed --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/NoSmoking.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/NoSmokingFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/NoSmokingFill.svg new file mode 100644 index 00000000..01450772 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/NoSmokingFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Parking.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Parking.svg new file mode 100644 index 00000000..a0aaf1ac --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Parking.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ParkingFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ParkingFill.svg new file mode 100644 index 00000000..71944b0f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ParkingFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/QuietZone.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/QuietZone.svg new file mode 100644 index 00000000..717827c2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/QuietZone.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/QuietZoneFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/QuietZoneFill.svg new file mode 100644 index 00000000..55c2b2bc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/QuietZoneFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Reception.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Reception.svg new file mode 100644 index 00000000..0c1e98df --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Reception.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ReceptionFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ReceptionFill.svg new file mode 100644 index 00000000..da061d48 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ReceptionFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Recycle.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Recycle.svg new file mode 100644 index 00000000..9b079103 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Recycle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/RecycleFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/RecycleFill.svg new file mode 100644 index 00000000..5955d8a7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/RecycleFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Shower.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Shower.svg new file mode 100644 index 00000000..31525e0f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/Shower.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ShowerFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ShowerFill.svg new file mode 100644 index 00000000..cfda336e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/ShowerFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/TapWater.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/TapWater.svg new file mode 100644 index 00000000..9015271a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/TapWater.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/TapWaterFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/TapWaterFill.svg new file mode 100644 index 00000000..45eb3fad --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/TapWaterFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/TestFlask.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/TestFlask.svg new file mode 100644 index 00000000..7ba4e723 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/TestFlask.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/TestFlaskFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/TestFlaskFill.svg new file mode 100644 index 00000000..184656e6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/TestFlaskFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/WaitingRoom.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/WaitingRoom.svg new file mode 100644 index 00000000..1d31dddd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/WaitingRoom.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/WaitingRoomFill.svg b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/WaitingRoomFill.svg new file mode 100644 index 00000000..f6f8db94 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.FFB/wwwroot/resources/aksel-icons/Workplace/WaitingRoomFill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Models/AccessPackageMetadataModel.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Models/AccessPackageMetadataModel.cs deleted file mode 100644 index d5a5879b..00000000 --- a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Models/AccessPackageMetadataModel.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Text.Json.Serialization; - -namespace Altinn.Authorization.AccessPackages.Models; - -/// -/// Access Package Metadata -/// -public class AccessPackageMetadataModel -{ - /// - /// Name of Access Package - /// - [JsonPropertyName("name")] - public string Name { get; set; } -} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Models/Altinn.Authorization.AccessPackages.Models.csproj b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Models/Altinn.Authorization.AccessPackages.Models.csproj deleted file mode 100644 index 36b964f5..00000000 --- a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Models/Altinn.Authorization.AccessPackages.Models.csproj +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Altinn.Authorization.AccessPackages.Repo.csproj b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Altinn.Authorization.AccessPackages.Repo.csproj new file mode 100644 index 00000000..94ca7a76 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Altinn.Authorization.AccessPackages.Repo.csproj @@ -0,0 +1,19 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IAreaGroupService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IAreaGroupService.cs new file mode 100644 index 00000000..d3e91f2e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IAreaGroupService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IAreaGroupService : IDbBasicDataService { } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IAreaService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IAreaService.cs new file mode 100644 index 00000000..6a84f87e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IAreaService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IAreaService : IDbExtendedDataService { } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IEntityService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IEntityService.cs new file mode 100644 index 00000000..0f6a6803 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IEntityService.cs @@ -0,0 +1,16 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IEntityService : IDbExtendedDataService +{ + /// + /// Get entity based on ref and type + /// + /// Refrence + /// EntityType + /// + Task GetByRefId(string refId, Guid typeId); +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IEntityTypeService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IEntityTypeService.cs new file mode 100644 index 00000000..1b58c317 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IEntityTypeService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IEntityTypeService : IDbExtendedDataService { } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IEntityVariantRoleService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IEntityVariantRoleService.cs new file mode 100644 index 00000000..6b1d2436 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IEntityVariantRoleService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IEntityVariantRoleService : IDbCrossDataService { } \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IEntityVariantService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IEntityVariantService.cs new file mode 100644 index 00000000..7d58296a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IEntityVariantService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IEntityVariantService : IDbExtendedDataService { } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IPackageDelegationService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IPackageDelegationService.cs new file mode 100644 index 00000000..6a3a4ca4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IPackageDelegationService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IPackageDelegationService : IDbExtendedRepo { } \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IPackageResourceService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IPackageResourceService.cs new file mode 100644 index 00000000..0952cc3f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IPackageResourceService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IPackageResourceService : IDbExtendedDataService { } \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IPackageService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IPackageService.cs new file mode 100644 index 00000000..99255555 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IPackageService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IPackageService : IDbExtendedDataService { } \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IPackageTagService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IPackageTagService.cs new file mode 100644 index 00000000..240936af --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IPackageTagService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IPackageTagService : IDbCrossDataService { } \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IProviderService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IProviderService.cs new file mode 100644 index 00000000..4ff03f8e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IProviderService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IProviderService : IDbBasicDataService { } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IResourceGroupService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IResourceGroupService.cs new file mode 100644 index 00000000..f2b7b5ba --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IResourceGroupService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IResourceGroupService : IDbExtendedDataService { } \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IResourceService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IResourceService.cs new file mode 100644 index 00000000..358aa440 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IResourceService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IResourceService : IDbExtendedDataService { } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IResourceTypeService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IResourceTypeService.cs new file mode 100644 index 00000000..d178e4b7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IResourceTypeService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IResourceTypeService : IDbBasicDataService { } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IRoleAssignmentService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IRoleAssignmentService.cs new file mode 100644 index 00000000..def6d0d8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IRoleAssignmentService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IRoleAssignmentService : IDbExtendedDataService { } \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IRoleMapService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IRoleMapService.cs new file mode 100644 index 00000000..a29c05cd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IRoleMapService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IRoleMapService : IDbExtendedDataService { } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IRolePackageService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IRolePackageService.cs new file mode 100644 index 00000000..4b57b730 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IRolePackageService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IRolePackageService : IDbExtendedDataService { } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IRoleService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IRoleService.cs new file mode 100644 index 00000000..89f6bab0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/IRoleService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface IRoleService : IDbExtendedDataService { } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/ITagGroupService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/ITagGroupService.cs new file mode 100644 index 00000000..9bb48b6f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/ITagGroupService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface ITagGroupService : IDbBasicDataService { } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/ITagService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/ITagService.cs new file mode 100644 index 00000000..710448cf --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Contracts/ITagService.cs @@ -0,0 +1,7 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +/// +public interface ITagService : IDbExtendedDataService { } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/AreaDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/AreaDbConverter.cs new file mode 100644 index 00000000..aed6a380 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/AreaDbConverter.cs @@ -0,0 +1,78 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class AreaDbConverter : IDbExtendedConverter +{ + private readonly IDbBasicConverter areaGroupConverter; + + /// + /// AreaDbConverter Constructor + /// + public AreaDbConverter(IDbBasicConverter areaGroupConverter) + { + this.areaGroupConverter = areaGroupConverter; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new Area() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + Description = (string)reader["description"], + IconName = (string)reader["iconname"], + GroupId = (Guid)reader["groupid"] + }); + } + + return result; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtArea() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + Description = (string)reader["description"], + IconName = (string)reader["iconname"], + GroupId = (Guid)reader["groupid"], + Group = areaGroupConverter.ConvertSingleBasic(reader, "group_") ?? new AreaGroup() + }); + } + + return result; + } + + /// + public Area? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new Area() + { + Id = (Guid)reader[$"{prefix}id"], + Name = (string)reader[$"{prefix}name"], + Description = (string)reader[$"{prefix}description"], + IconName = (string)reader[$"{prefix}iconname"], + GroupId = (Guid)reader[$"{prefix}groupid"], + }; + } + catch + { + return null; + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/AreaGroupDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/AreaGroupDbConverter.cs new file mode 100644 index 00000000..a92564b4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/AreaGroupDbConverter.cs @@ -0,0 +1,44 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class AreaGroupDbConverter : IDbBasicConverter +{ + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new AreaGroup() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + Description = (string)reader["description"], + }); + } + + return result; + } + + /// + public AreaGroup? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new AreaGroup() + { + Id = (Guid)reader[$"{prefix}id"], + Name = (string)reader[$"{prefix}name"], + Description = (string)reader[$"{prefix}description"], + }; + } + catch + { + return null; + } + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/EntityDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/EntityDbConverter.cs new file mode 100644 index 00000000..2ccf1429 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/EntityDbConverter.cs @@ -0,0 +1,86 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class EntityDbConverter : IDbExtendedConverter +{ + private readonly IDbExtendedConverter entityTypeConverter; + private readonly IDbExtendedConverter entityVariantConverter; + + /// + /// EntityDbConverter Constructor + /// + /// Converter EntityType + /// Converter EntityVariant + public EntityDbConverter( + IDbExtendedConverter entityTypeConverter, + IDbExtendedConverter entityVariantConverter + ) + { + this.entityTypeConverter = entityTypeConverter; + this.entityVariantConverter = entityVariantConverter; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtEntity() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + RefId = (string)reader["refid"], + TypeId = (Guid)reader["typeid"], + VariantId = (Guid)reader["variantid"], + Type = entityTypeConverter.ConvertSingleBasic(reader, "type_") ?? new EntityType(), + Variant = entityVariantConverter.ConvertSingleBasic(reader, "variant_") ?? new EntityVariant() + }); + } + + return result; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new Entity() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + RefId = (string)reader["refid"], + TypeId = (Guid)reader["typeid"], + VariantId = (Guid)reader["variantid"], + }); + } + + return result; + } + + /// + public Entity? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new Entity() + { + Id = (Guid)reader[$"{prefix}id"], + Name = (string)reader[$"{prefix}name"], + RefId = (string)reader[$"{prefix}refid"], + TypeId = (Guid)reader[$"{prefix}typeid"], + VariantId = (Guid)reader[$"{prefix}variantid"] + }; + } + catch + { + return null; + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/EntityTypeDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/EntityTypeDbConverter.cs new file mode 100644 index 00000000..8bdbab3e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/EntityTypeDbConverter.cs @@ -0,0 +1,73 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class EntityTypeDbConverter : IDbExtendedConverter +{ + private readonly IDbBasicConverter providerConverter; + + /// + /// EntityTypeDbConverter Constructor + /// + /// Provider converter + public EntityTypeDbConverter(IDbBasicConverter providerConverter) + { + this.providerConverter = providerConverter; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtEntityType() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + ProviderId = (Guid)reader["providerid"], + Provider = providerConverter.ConvertSingleBasic(reader, "provider_") ?? new Provider() + }); + } + + return result; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new EntityType() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + ProviderId = (Guid)reader["providerid"] + }); + } + + return result; + } + + /// + public EntityType? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new EntityType() + { + Id = (Guid)reader[$"{prefix}id"], + Name = (string)reader[$"{prefix}name"], + ProviderId = (Guid)reader[$"{prefix}providerid"] + }; + } + catch + { + return null; + } + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/EntityVariantDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/EntityVariantDbConverter.cs new file mode 100644 index 00000000..ae41b4ac --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/EntityVariantDbConverter.cs @@ -0,0 +1,76 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class EntityVariantDbConverter : IDbExtendedConverter +{ + private readonly IDbExtendedConverter entityTypeConverter; + + /// + /// EntityVariantDbConverter Constructor + /// + /// Provider converter + public EntityVariantDbConverter(IDbExtendedConverter entityTypeConverter) + { + this.entityTypeConverter = entityTypeConverter; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtEntityVariant() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + Description = (string)reader["description"], + TypeId = (Guid)reader["typeid"], + Type = entityTypeConverter.ConvertSingleBasic(reader, "type_") ?? new EntityType() + }); + } + + return result; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new EntityVariant() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + Description = (string)reader["description"], + TypeId = (Guid)reader["typeid"], + }); + } + + return result; + } + + /// + public EntityVariant? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new EntityVariant() + { + Id = (Guid)reader[$"{prefix}id"], + Name = (string)reader[$"{prefix}name"], + Description = (string)reader[$"{prefix}description"], + TypeId = (Guid)reader[$"{prefix}typeid"], + }; + } + catch + { + return null; + } + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/EntityVariantRoleDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/EntityVariantRoleDbConverter.cs new file mode 100644 index 00000000..d1809add --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/EntityVariantRoleDbConverter.cs @@ -0,0 +1,71 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; +using Npgsql.Internal; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class EntityVariantRoleDbConverter : IDbCrossConverter +{ + private readonly IDbExtendedConverter entityVariantConverter; + private readonly IDbExtendedConverter roleConverter; + + /// + /// EntityVariantRoleDbConverter Constructor + /// + public EntityVariantRoleDbConverter( + IDbExtendedConverter entityVariantConverter, + IDbExtendedConverter roleConverter) + { + this.entityVariantConverter = entityVariantConverter; + this.roleConverter = roleConverter; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new EntityVariantRole() + { + Id = (Guid)reader["id"], + RoleId = (Guid)reader["roleid"], + VariantId = (Guid)reader["variantid"], + }); + } + + return result; + } + + /// + public EntityVariantRole? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new EntityVariantRole() + { + Id = (Guid)reader[$"{prefix}id"], + RoleId = (Guid)reader[$"{prefix}roleid"], + VariantId = (Guid)reader[$"{prefix}variantid"], + }; + } + catch + { + return null; + } + } + + /// + public List ConvertA(IDataReader reader) + { + return entityVariantConverter.ConvertBasic(reader); + } + + /// + public List ConvertB(IDataReader reader) + { + return roleConverter.ConvertBasic(reader); + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/PackageDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/PackageDbConverter.cs new file mode 100644 index 00000000..027936a2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/PackageDbConverter.cs @@ -0,0 +1,94 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class PackageDbConverter : IDbExtendedConverter +{ + private readonly IDbBasicConverter providerConverter; + private readonly IDbExtendedConverter areaConverter; + private readonly IDbExtendedConverter entityTypeConverter; + + /// + /// PackageDbConverter Constructor + /// + public PackageDbConverter( + IDbBasicConverter providerConverter, + IDbExtendedConverter areaConverter, + IDbExtendedConverter entityTypeConverter + ) + { + this.providerConverter = providerConverter; + this.areaConverter = areaConverter; + this.entityTypeConverter = entityTypeConverter; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtPackage() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + Description = (string)reader["description"], + IsDelegable = (bool)reader["isdelegable"], + ProviderId = (Guid)reader["providerid"], + AreaId = (Guid)reader["areaid"], + EntityTypeId = (Guid)reader["entitytypeid"], + Provider = providerConverter.ConvertSingleBasic(reader, "provider_") ?? new Provider(), + Area = areaConverter.ConvertSingleBasic(reader, "area_") ?? new Area(), + EntityType = entityTypeConverter.ConvertSingleBasic(reader, "entitytype_") ?? new EntityType() + }); + } + + return result; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new Package() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + Description = (string)reader["description"], + IsDelegable = (bool)reader["isdelegable"], + ProviderId = (Guid)reader["providerid"], + AreaId = (Guid)reader["areaid"], + EntityTypeId = (Guid)reader["entitytypeid"], + }); + } + + return result; + } + + /// + public Package? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new Package() + { + Id = (Guid)reader[$"{prefix}id"], + Name = (string)reader[$"{prefix}name"], + Description = (string)reader[$"{prefix}description"], + IsDelegable = (bool)reader[$"{prefix}isdelegable"], + ProviderId = (Guid)reader[$"{prefix}providerid"], + AreaId = (Guid)reader[$"{prefix}areaid"], + EntityTypeId = (Guid)reader[$"{prefix}entitytypeid"], + }; + } + catch + { + return null; + } + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/PackageDelegationDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/PackageDelegationDbConverter.cs new file mode 100644 index 00000000..347d0ddd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/PackageDelegationDbConverter.cs @@ -0,0 +1,86 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class PackageDelegationDbConverter : IDbExtendedConverter +{ + private readonly IDbBasicConverter entityConverter; + private readonly IDbBasicConverter packageConverter; + + /// + /// PackageDelegationDbConverter Constructor + /// + public PackageDelegationDbConverter( + IDbBasicConverter entityConverter, + IDbBasicConverter packageConverter + ) + { + this.entityConverter = entityConverter; + this.packageConverter = packageConverter; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtPackageDelegation() + { + Id = (Guid)reader["id"], + ById = (Guid)reader["byid"], + ForId = (Guid)reader["forid"], + ToId = (Guid)reader["toid"], + PackageId = (Guid)reader["packageid"], + By = entityConverter.ConvertSingleBasic(reader, "by_") ?? new Entity(), + For = entityConverter.ConvertSingleBasic(reader, "for_") ?? new Entity(), + To = entityConverter.ConvertSingleBasic(reader, "to_") ?? new Entity(), + Package = packageConverter.ConvertSingleBasic(reader, "package_") ?? new Package() + }); + } + + return result; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new PackageDelegation() + { + Id = (Guid)reader["id"], + ById = (Guid)reader["byid"], + ForId = (Guid)reader["forid"], + ToId = (Guid)reader["toid"], + PackageId = (Guid)reader["packageid"], + }); + } + + return result; + } + + /// + public PackageDelegation? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new PackageDelegation() + { + Id = (Guid)reader[$"{prefix}id"], + ById = (Guid)reader[$"{prefix}byid"], + ForId = (Guid)reader[$"{prefix}forid"], + ToId = (Guid)reader[$"{prefix}toid"], + PackageId = (Guid)reader[$"{prefix}packageid"], + }; + } + catch + { + return null; + } + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/PackageResourceDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/PackageResourceDbConverter.cs new file mode 100644 index 00000000..8840d419 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/PackageResourceDbConverter.cs @@ -0,0 +1,87 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class PackageResourceDbConverter : IDbExtendedConverter +{ + private readonly IDbExtendedConverter packageConverter; + private readonly IDbExtendedConverter resourceConverter; + + /// + /// PackageResourceDbConverter Constructor + /// + public PackageResourceDbConverter( + IDbExtendedConverter packageConverter, + IDbExtendedConverter resourceConverter + ) + { + this.packageConverter = packageConverter; + this.resourceConverter = resourceConverter; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtPackageResource() + { + Id = (Guid)reader["id"], + PackageId = (Guid)reader["packageid"], + ResourceId = (Guid)reader["resourceid"], + Read = (bool)reader["read"], + Write = (bool)reader["write"], + Sign = (bool)reader["sign"], + Package = packageConverter.ConvertSingleBasic(reader, "package_") ?? new Package(), + Resource = resourceConverter.ConvertSingleBasic(reader, "resource_") ?? new Resource() + }); + } + + return result; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new PackageResource() + { + Id = (Guid)reader["id"], + PackageId = (Guid)reader["packageid"], + ResourceId = (Guid)reader["resourceid"], + Read = (bool)reader["read"], + Write = (bool)reader["write"], + Sign = (bool)reader["sign"], + }); + } + + return result; + } + + /// + public PackageResource? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new PackageResource() + { + Id = (Guid)reader[$"{prefix}id"], + PackageId = (Guid)reader[$"{prefix}packageid"], + ResourceId = (Guid)reader[$"{prefix}resourceid"], + Read = (bool)reader[$"{prefix}read"], + Write = (bool)reader[$"{prefix}write"], + Sign = (bool)reader[$"{prefix}sign"], + }; + } + catch + { + return null; + } + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/PackageTagDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/PackageTagDbConverter.cs new file mode 100644 index 00000000..3ad5381f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/PackageTagDbConverter.cs @@ -0,0 +1,71 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class PackageTagDbConverter : IDbCrossConverter +{ + private readonly IDbExtendedConverter packageConverter; + private readonly IDbExtendedConverter tagConverter; + + /// + /// PackageTagDbConverter Constructor + /// + public PackageTagDbConverter( + IDbExtendedConverter packageConverter, + IDbExtendedConverter tagConverter + ) + { + this.packageConverter = packageConverter; + this.tagConverter = tagConverter; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new PackageTag() + { + Id = (Guid)reader["id"], + PackageId = (Guid)reader["packageid"], + TagId = (Guid)reader["tagid"], + }); + } + + return result; + } + + /// + public PackageTag? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new PackageTag() + { + Id = (Guid)reader[$"{prefix}id"], + PackageId = (Guid)reader[$"{prefix}packageid"], + TagId = (Guid)reader[$"{prefix}tagid"], + }; + } + catch + { + return null; + } + } + + /// + public List ConvertA(IDataReader reader) + { + return packageConverter.ConvertBasic(reader); + } + + /// + public List ConvertB(IDataReader reader) + { + return tagConverter.ConvertBasic(reader); + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/ProviderDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/ProviderDbConverter.cs new file mode 100644 index 00000000..612e7c55 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/ProviderDbConverter.cs @@ -0,0 +1,47 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class ProviderDbConverter : IDbBasicConverter +{ + /// + /// ProviderDbConverter Constructor + /// + public ProviderDbConverter() { } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new Provider() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + }); + } + + return result; + } + + /// + public Provider? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new Provider() + { + Id = (Guid)reader[$"{prefix}id"], + Name = (string)reader[$"{prefix}name"], + }; + } + catch + { + return null; + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/ResourceDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/ResourceDbConverter.cs new file mode 100644 index 00000000..35147a70 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/ResourceDbConverter.cs @@ -0,0 +1,88 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class ResourceDbConverter : IDbExtendedConverter +{ + private readonly IDbExtendedConverter resourceGroupConverter; + private readonly IDbBasicConverter resourceTypeConverter; + private readonly IDbBasicConverter providerConverter; + + /// + /// ResourceDbConverter Constructor + /// + public ResourceDbConverter( + IDbExtendedConverter resourceGroupConverter, + IDbBasicConverter resourceTypeConverter, + IDbBasicConverter providerConverter + ) + { + this.resourceGroupConverter = resourceGroupConverter; + this.resourceTypeConverter = resourceTypeConverter; + this.providerConverter = providerConverter; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtResource() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + GroupId = (Guid)reader["groupid"], + TypeId = (Guid)reader["typeid"], + ProviderId = (Guid)reader["providerid"], + Group = resourceGroupConverter.ConvertSingleBasic(reader, "group_") ?? new ResourceGroup(), + Type = resourceTypeConverter.ConvertSingleBasic(reader, "type_") ?? new ResourceType(), + Provider = providerConverter.ConvertSingleBasic(reader, "provider_") ?? new Provider() + }); + } + + return result; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new Resource() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + GroupId = (Guid)reader["groupid"], + TypeId = (Guid)reader["typeid"], + ProviderId = (Guid)reader["providerid"], + }); + } + + return result; + } + + /// + public Resource? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new Resource() + { + Id = (Guid)reader[$"{prefix}id"], + Name = (string)reader[$"{prefix}name"], + GroupId = (Guid)reader[$"{prefix}groupid"], + TypeId = (Guid)reader[$"{prefix}typeid"], + ProviderId = (Guid)reader[$"{prefix}providerid"], + }; + } + catch + { + return null; + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/ResourceGroupDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/ResourceGroupDbConverter.cs new file mode 100644 index 00000000..9dade9fd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/ResourceGroupDbConverter.cs @@ -0,0 +1,72 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class ResourceGroupDbConverter : IDbExtendedConverter +{ + private readonly IDbBasicConverter providerConverter; + + /// + /// ResourceGroupDbConverter Constructor + /// + public ResourceGroupDbConverter(IDbBasicConverter providerConverter) + { + this.providerConverter = providerConverter; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtResourceGroup() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + ProviderId = (Guid)reader["providerid"], + Provider = providerConverter.ConvertSingleBasic(reader, "provider_") ?? new Provider(), + }); + } + + return result; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ResourceGroup() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + ProviderId = (Guid)reader["providerid"], + }); + } + + return result; + } + + /// + public ResourceGroup? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new ResourceGroup() + { + Id = (Guid)reader[$"{prefix}id"], + Name = (string)reader[$"{prefix}name"], + ProviderId = (Guid)reader[$"{prefix}providerid"], + }; + } + catch + { + return null; + } + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/ResourceTypeDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/ResourceTypeDbConverter.cs new file mode 100644 index 00000000..27048ff5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/ResourceTypeDbConverter.cs @@ -0,0 +1,47 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class ResourceTypeDbConverter : IDbBasicConverter +{ + /// + /// ResourceTypeDbConverter Constructor + /// + public ResourceTypeDbConverter() { } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ResourceType() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + }); + } + + return result; + } + + /// + public ResourceType? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new ResourceType() + { + Id = (Guid)reader[$"{prefix}id"], + Name = (string)reader[$"{prefix}name"], + }; + } + catch + { + return null; + } + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/RoleAssignmentDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/RoleAssignmentDbConverter.cs new file mode 100644 index 00000000..2d6ebe8a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/RoleAssignmentDbConverter.cs @@ -0,0 +1,82 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class RoleAssignmentDbConverter : IDbExtendedConverter +{ + private readonly IDbExtendedConverter entityConverter; + private readonly IDbExtendedConverter roleConverter; + + /// + /// RoleAssignmentDbConverter Constructor + /// + public RoleAssignmentDbConverter( + IDbExtendedConverter entityConverter, + IDbExtendedConverter roleConverter + ) + { + this.entityConverter = entityConverter; + this.roleConverter = roleConverter; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtRoleAssignment() + { + Id = (Guid)reader["id"], + ForId = (Guid)reader["forid"], + RoleId = (Guid)reader["roleid"], + ToId = (Guid)reader["toid"], + For = entityConverter.ConvertSingleBasic(reader, "for_") ?? new Entity(), + Role = roleConverter.ConvertSingleBasic(reader, "role_") ?? new Role(), + To = entityConverter.ConvertSingleBasic(reader, "to_") ?? new Entity() + }); + } + + return result; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new RoleAssignment() + { + Id = (Guid)reader["id"], + ForId = (Guid)reader["forid"], + RoleId = (Guid)reader["roleid"], + ToId = (Guid)reader["toid"], + }); + } + + return result; + } + + /// + public RoleAssignment? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new RoleAssignment() + { + Id = (Guid)reader[$"{prefix}id"], + ForId = (Guid)reader[$"{prefix}forid"], + RoleId = (Guid)reader[$"{prefix}roleid"], + ToId = (Guid)reader[$"{prefix}toid"], + }; + } + catch + { + return null; + } + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/RoleDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/RoleDbConverter.cs new file mode 100644 index 00000000..496eab89 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/RoleDbConverter.cs @@ -0,0 +1,91 @@ +using System.Data; +using System.Text.Json; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; +using Dapper; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class RoleDbConverter : IDbExtendedConverter +{ + private readonly IDbBasicConverter providerConverter; + private readonly IDbBasicConverter entityTypeConverter; + + /// + /// RoleDbConverter Constructor + /// + public RoleDbConverter( + IDbBasicConverter providerConverter, + IDbExtendedConverter entityTypeConverter) + { + this.providerConverter = providerConverter; + this.entityTypeConverter = entityTypeConverter; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtRole() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + Code = (string)reader["code"], + Description = (string)reader["description"], + Urn = (string)reader["urn"], + EntityTypeId = (Guid)reader["entitytypeid"], + ProviderId = (Guid)reader["providerid"], + EntityType = entityTypeConverter.ConvertSingleBasic(reader, "entitytype_") ?? new EntityType(), + Provider = providerConverter.ConvertSingleBasic(reader, "provider_") ?? new Provider() + }); + } + + return result; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new Role() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + Code = (string)reader["code"], + Description = (string)reader["description"], + Urn = (string)reader["urn"], + EntityTypeId = (Guid)reader["entitytypeid"], + ProviderId = (Guid)reader["providerid"], + }); + } + + return result; + } + + /// + public Role? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new Role() + { + Id = (Guid)reader[$"{prefix}id"], + Name = (string)reader[$"{prefix}name"], + Code = (string)reader[$"{prefix}code"], + Description = (string)reader[$"{prefix}description"], + Urn = (string)reader[$"{prefix}urn"], + EntityTypeId = (Guid)reader[$"{prefix}entitytypeid"], + ProviderId = (Guid)reader[$"{prefix}providerid"], + }; + } + catch + { + return null; + } + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/RoleMapDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/RoleMapDbConverter.cs new file mode 100644 index 00000000..dd3c06dc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/RoleMapDbConverter.cs @@ -0,0 +1,73 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class RoleMapDbConverter : IDbExtendedConverter +{ + private readonly IDbExtendedConverter roleConverter; + + /// + /// RoleMapDbConverter Constructor + /// + public RoleMapDbConverter(IDbExtendedConverter roleConverter) + { + this.roleConverter = roleConverter; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtRoleMap() + { + Id = (Guid)reader["id"], + HasRoleId = (Guid)reader["hasroleid"], + GetRoleId = (Guid)reader["getroleid"], + HasRole = roleConverter.ConvertSingleBasic(reader, "hasrole_") ?? new Role(), + GetRole = roleConverter.ConvertSingleBasic(reader, "getrole_") ?? new Role() + }); + } + + return result; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new RoleMap() + { + Id = (Guid)reader["id"], + HasRoleId = (Guid)reader["hasroleid"], + GetRoleId = (Guid)reader["getroleid"], + }); + } + + return result; + } + + /// + public RoleMap? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new RoleMap() + { + Id = (Guid)reader[$"{prefix}id"], + HasRoleId = (Guid)reader[$"{prefix}hasroleid"], + GetRoleId = (Guid)reader[$"{prefix}getroleid"], + }; + } + catch + { + return null; + } + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/RolePackageDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/RolePackageDbConverter.cs new file mode 100644 index 00000000..c3f8e363 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/RolePackageDbConverter.cs @@ -0,0 +1,115 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class RolePackageDbConverter : IDbExtendedConverter +{ + private readonly IDbExtendedConverter roleConverter; + private readonly IDbExtendedConverter packageConverter; + private readonly IDbExtendedConverter entityVariantConverter; + + /// + /// RolePackageDbConverter Constructor + /// + public RolePackageDbConverter( + IDbExtendedConverter roleConverter, + IDbExtendedConverter packageConverter, + IDbExtendedConverter entityVariantConverter + ) + { + this.roleConverter = roleConverter; + this.packageConverter = packageConverter; + this.entityVariantConverter = entityVariantConverter; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtRolePackage() + { + Id = (Guid)reader["id"], + RoleId = (Guid)reader["roleid"], + PackageId = (Guid)reader["packageid"], + EntityVariantId = DbUtil.ConvertDbValue(reader["entityvariantid"]), + IsActor = (bool)reader["isactor"], + IsAdmin = (bool)reader["isadmin"], + Role = roleConverter.ConvertSingleBasic(reader, "role_") ?? new Role(), + Package = packageConverter.ConvertSingleBasic(reader, "package_") ?? new Package(), + EntityVariant = entityVariantConverter.ConvertSingleBasic(reader, "entityvariant_") + }); + } + + return result; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new RolePackage() + { + Id = (Guid)reader["id"], + RoleId = (Guid)reader["roleid"], + PackageId = (Guid)reader["packageid"], + EntityVariantId = DbUtil.ConvertDbValue(reader["entityvariantid"]), + IsActor = (bool)reader["isactor"], + IsAdmin = (bool)reader["isadmin"], + }); + } + + return result; + } + + /// + public RolePackage? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new RolePackage() + { + Id = (Guid)reader[$"{prefix}id"], + RoleId = (Guid)reader[$"{prefix}roleid"], + PackageId = (Guid)reader[$"{prefix}packageid"], + EntityVariantId = DbUtil.ConvertDbValue(reader[$"{prefix}entityvariantid"]), + IsActor = (bool)reader[$"{prefix}isactor"], + IsAdmin = (bool)reader[$"{prefix}isadmin"], + }; + } + catch + { + return null; + } + } +} + +/// +/// Utilities +/// +public static class DbUtil +{ + /// + /// Convert nullable columns + /// + /// ValueType + /// Value + /// + public static T? ConvertDbValue(object obj) + { + if (obj == null || obj == DBNull.Value) + { + return default; + } + else + { + return (T)obj; + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/TagDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/TagDbConverter.cs new file mode 100644 index 00000000..c3e1387a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/TagDbConverter.cs @@ -0,0 +1,76 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class TagDbConverter : IDbExtendedConverter +{ + private readonly IDbBasicConverter tagGroupConverter; + + /// + /// TagDbConverter Constructor + /// + public TagDbConverter(IDbBasicConverter tagGroupConverter) + { + this.tagGroupConverter = tagGroupConverter; + } + + /// + public List ConvertExtended(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new ExtTag() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + GroupId = DbUtil.ConvertDbValue(reader["groupid"]), + ParentId = DbUtil.ConvertDbValue(reader["parentid"]), + Group = tagGroupConverter.ConvertSingleBasic(reader, "group_") ?? null, + Parent = ConvertSingleBasic(reader, "parent_") ?? null + }); + } + + return result; + } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new Tag() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + GroupId = DbUtil.ConvertDbValue(reader["groupid"]), + ParentId = DbUtil.ConvertDbValue(reader["parentid"]), + }); + } + + return result; + } + + /// + public Tag? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new Tag() + { + Id = (Guid)reader[$"{prefix}id"], + Name = (string)reader[$"{prefix}name"], + GroupId = DbUtil.ConvertDbValue(reader[$"{prefix}groupid"]), + ParentId = DbUtil.ConvertDbValue(reader[$"{prefix}parentid"]), + }; + } + catch + { + return null; + } + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/TagGroupDbConverter.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/TagGroupDbConverter.cs new file mode 100644 index 00000000..d380a2a1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Converters/TagGroupDbConverter.cs @@ -0,0 +1,47 @@ +using System.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Converters; + +/// +public class TagGroupDbConverter : IDbBasicConverter +{ + /// + /// TagGroupDbConverter Constructor + /// + public TagGroupDbConverter() { } + + /// + public List ConvertBasic(IDataReader reader) + { + var result = new List(); + while (reader.Read()) + { + result.Add(new TagGroup() + { + Id = (Guid)reader["id"], + Name = (string)reader["name"], + }); + } + + return result; + } + + /// + public TagGroup? ConvertSingleBasic(IDataReader reader, string prefix) + { + try + { + return new TagGroup() + { + Id = (Guid)reader[$"{prefix}id"], + Name = (string)reader[$"{prefix}name"], + }; + } + catch + { + return null; + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/AreaDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/AreaDataService.cs new file mode 100644 index 00000000..2079796d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/AreaDataService.cs @@ -0,0 +1,21 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for Area +/// +public class AreaDataService : BaseExtendedDataService, IAreaService +{ + /// + /// Data service for Area + /// + /// Extended repo + public AreaDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join(alias: "group", baseJoinProperty: "groupid"); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/AreaGroupDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/AreaGroupDataService.cs new file mode 100644 index 00000000..4111395a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/AreaGroupDataService.cs @@ -0,0 +1,19 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.Extensions.Logging; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for AreaGroup +/// +public class AreaGroupDataService : BaseDataService, IAreaGroupService +{ + /// + /// Data service for AreaGroup + /// + /// Extended repo + public AreaGroupDataService(IDbBasicRepo repo) : base(repo) { } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/EntityDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/EntityDataService.cs new file mode 100644 index 00000000..e7f48afa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/EntityDataService.cs @@ -0,0 +1,29 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for Entity +/// +public class EntityDataService : BaseExtendedDataService, IEntityService +{ + /// + /// Data service for Entity + /// + /// Extended repo + public EntityDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join(alias:"type", baseJoinProperty:"typeid"); + ExtendedRepo.Join(alias:"variant", baseJoinProperty: "variantid"); + } + + /// + public async Task GetByRefId(string refId, Guid typeId) + { + var res = await Get(new Dictionary() { { "RefId", refId }, { "TypeId", typeId } }); + return res.FirstOrDefault(); + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/EntityTypeDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/EntityTypeDataService.cs new file mode 100644 index 00000000..caf61caa --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/EntityTypeDataService.cs @@ -0,0 +1,21 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for EntityType +/// +public class EntityTypeDataService : BaseExtendedDataService, IEntityTypeService +{ + /// + /// Data service for EntityType + /// + /// Extended repo + public EntityTypeDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join(); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/EntityVariantDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/EntityVariantDataService.cs new file mode 100644 index 00000000..434fd946 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/EntityVariantDataService.cs @@ -0,0 +1,21 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for EntityVariant +/// +public class EntityVariantDataService : BaseExtendedDataService, IEntityVariantService +{ + /// + /// Data service for EntityVariant + /// + /// Extended repo + public EntityVariantDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join("Type"); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/EntityVariantRoleDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/EntityVariantRoleDataService.cs new file mode 100644 index 00000000..49e3fede --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/EntityVariantRoleDataService.cs @@ -0,0 +1,21 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for EntityVariantRole +/// +public class EntityVariantRoleDataService : BaseCrossDataService, IEntityVariantRoleService +{ + /// + /// Data service for EntityVariantRole + /// + /// Extended repo + public EntityVariantRoleDataService(IDbCrossRepo repo) : base(repo) + { + CrossRepo.SetCrossColumns("variantid", "roleid"); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/PackageDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/PackageDataService.cs new file mode 100644 index 00000000..589aeccb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/PackageDataService.cs @@ -0,0 +1,23 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for Package +/// +public class PackageDataService : BaseExtendedDataService, IPackageService +{ + /// + /// Data service for Package + /// + /// Extended repo + public PackageDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join(); + ExtendedRepo.Join(); + ExtendedRepo.Join(); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/PackageResourceDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/PackageResourceDataService.cs new file mode 100644 index 00000000..c1fc1dcc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/PackageResourceDataService.cs @@ -0,0 +1,22 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for PackageResource +/// +public class PackageResourceDataService : BaseExtendedDataService, IPackageResourceService +{ + /// + /// Data service for PackageResource + /// + /// Extended repo + public PackageResourceDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join(); + ExtendedRepo.Join(); + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/PackageTagDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/PackageTagDataService.cs new file mode 100644 index 00000000..2566137c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/PackageTagDataService.cs @@ -0,0 +1,18 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for PackageTag +/// +public class PackageTagDataService : BaseCrossDataService, IPackageTagService +{ + /// + /// Data service for PackageTag + /// + /// Extended repo + public PackageTagDataService(IDbCrossRepo repo) : base(repo) { } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/ProviderDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/ProviderDataService.cs new file mode 100644 index 00000000..c9e0f202 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/ProviderDataService.cs @@ -0,0 +1,18 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for Provider +/// +public class ProviderDataService : BaseDataService, IProviderService +{ + /// + /// Data service for Provider + /// + /// Extended repo + public ProviderDataService(IDbBasicRepo repo) : base(repo) { } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/ResourceDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/ResourceDataService.cs new file mode 100644 index 00000000..b6f5933a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/ResourceDataService.cs @@ -0,0 +1,23 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for Resource +/// +public class ResourceDataService : BaseExtendedDataService, IResourceService +{ + /// + /// Data service for Resource + /// + /// Extended repo + public ResourceDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join(); + ExtendedRepo.Join("Type"); + ExtendedRepo.Join("Group"); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/ResourceGroupDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/ResourceGroupDataService.cs new file mode 100644 index 00000000..d273855a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/ResourceGroupDataService.cs @@ -0,0 +1,21 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for ResourceGroup +/// +public class ResourceGroupDataService : BaseExtendedDataService, IResourceGroupService +{ + /// + /// Data service for ResourceGroup + /// + /// Extended repo + public ResourceGroupDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join(); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/ResourceTypeDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/ResourceTypeDataService.cs new file mode 100644 index 00000000..895c94dd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/ResourceTypeDataService.cs @@ -0,0 +1,18 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for ResourceType +/// +public class ResourceTypeDataService : BaseDataService, IResourceTypeService +{ + /// + /// Data service for ResourceType + /// + /// Repo + public ResourceTypeDataService(IDbBasicRepo repo) : base(repo) { } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/RoleAssignmentDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/RoleAssignmentDataService.cs new file mode 100644 index 00000000..cc370fa0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/RoleAssignmentDataService.cs @@ -0,0 +1,23 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for RoleAssignment +/// +public class RoleAssignmentDataService : BaseExtendedDataService, IRoleAssignmentService +{ + /// + /// Data service for RoleAssignment + /// + /// Extended repo + public RoleAssignmentDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join("Role"); + ExtendedRepo.Join("For"); + ExtendedRepo.Join("To"); + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/RoleDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/RoleDataService.cs new file mode 100644 index 00000000..691e3de1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/RoleDataService.cs @@ -0,0 +1,22 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for Role +/// +public class RoleDataService : BaseExtendedDataService, IRoleService +{ + /// + /// Data service for Role + /// + /// Extended repo + public RoleDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join(); + ExtendedRepo.Join(); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/RoleMapDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/RoleMapDataService.cs new file mode 100644 index 00000000..a32e49d2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/RoleMapDataService.cs @@ -0,0 +1,22 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for RoleMap +/// +public class RoleMapDataService : BaseExtendedDataService, IRoleMapService +{ + /// + /// Data service for RoleMap + /// + /// Extended repo + public RoleMapDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join("HasRole"); + ExtendedRepo.Join("GetRole"); + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/RolePackageDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/RolePackageDataService.cs new file mode 100644 index 00000000..2088c76a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/RolePackageDataService.cs @@ -0,0 +1,23 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for RolePackage +/// +public class RolePackageDataService : BaseExtendedDataService, IRolePackageService +{ + /// + /// Data service for RolePackage + /// + /// Extended repo + public RolePackageDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join(); + ExtendedRepo.Join(); + ExtendedRepo.Join(optional: true); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/TagDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/TagDataService.cs new file mode 100644 index 00000000..8ca26669 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/TagDataService.cs @@ -0,0 +1,22 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for Tag +/// +public class TagDataService : BaseExtendedDataService, ITagService +{ + /// + /// Data service for Tag + /// + /// Extended repo + public TagDataService(IDbExtendedRepo repo) : base(repo) + { + ExtendedRepo.Join("Group", optional: true); + ExtendedRepo.Join("Parent", optional: true); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/TagGroupDataService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/TagGroupDataService.cs new file mode 100644 index 00000000..05bf4105 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Data/Services/TagGroupDataService.cs @@ -0,0 +1,18 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.AccessPackages.Repo.Data.Services; + +/// +/// Data service for TagGroup +/// +public class TagGroupDataService : BaseDataService, ITagGroupService +{ + /// + /// Data service for TagGroup + /// + /// Extended repo + public TagGroupDataService(IDbBasicRepo repo) : base(repo) { } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Extensions/DbAccessExtensions.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Extensions/DbAccessExtensions.cs new file mode 100644 index 00000000..ce7ca6b9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Extensions/DbAccessExtensions.cs @@ -0,0 +1,241 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services.Mssql; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Services.Postgres; +using Altinn.Authorization.AccessPackages.DbAccess.Migrate.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Migrate.Services; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Altinn.Authorization.AccessPackages.Repo.Data.Converters; +using Altinn.Authorization.AccessPackages.Repo.Data.Services; +using Altinn.Authorization.AccessPackages.Repo.Ingest; +using Altinn.Authorization.AccessPackages.Repo.Migrate; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Extensions; + +/// +/// DbAccess DI Extensions +/// +public static class DbAccessExtensions +{ + /// + /// Adds DbAccess Migrations + /// + /// IServiceCollection + /// Use Mssql or Postgres + /// + public static IServiceCollection AddDbAccessMigrations(this IServiceCollection services, bool useSqlServer = false) + { + if (useSqlServer) + { + services.AddSingleton(); + } + else + { + services.AddSingleton(); + } + + services.AddSingleton(); + return services; + } + + /// + /// Uses DbAccess Migrations + /// + /// IServiceCollection + /// + public async static Task UseDbAccessMigrations(this IServiceProvider services) + { + var dbMigration = services.GetRequiredService(); + await dbMigration.Init(); + return services; + } + + /// + /// Adds DbAccess Ingests + /// + /// IServiceCollection + /// + public static IServiceCollection AddDbAccessIngests(this IServiceCollection services) + { + services.AddSingleton(); + return services; + } + + /// + /// Uses DbAccess Ingests + /// + /// IServiceProvider + /// + public async static Task UseDbAccessIngests(this IServiceProvider services) + { + var dbIngest = services.GetRequiredService(); + await dbIngest.IngestAll(); + return services; + } + + /// + /// Adds DbAccess Data + /// + /// IServiceCollection + /// Use SqlServer or Postgres + /// + public static IServiceCollection AddDbAccessData(this IServiceCollection services, bool useSqlServer = false) + { + #region Register Converters + services.AddSingleton, PackageResourceDbConverter>(); + services.AddSingleton, ResourceDbConverter>(); + services.AddSingleton, ResourceTypeDbConverter>(); + services.AddSingleton, ResourceGroupDbConverter>(); + services.AddSingleton, AreaDbConverter>(); + services.AddSingleton, AreaGroupDbConverter>(); + services.AddSingleton, ProviderDbConverter>(); + services.AddSingleton, EntityTypeDbConverter>(); + services.AddSingleton, EntityVariantDbConverter>(); + services.AddSingleton, PackageDbConverter>(); + services.AddSingleton, RoleDbConverter>(); + services.AddSingleton, RolePackageDbConverter>(); + services.AddSingleton, TagGroupDbConverter>(); + services.AddSingleton, PackageTagDbConverter>(); + services.AddSingleton, TagDbConverter>(); + services.AddSingleton, EntityDbConverter>(); + services.AddSingleton, RoleAssignmentDbConverter>(); + services.AddSingleton, EntityVariantRoleDbConverter>(); + services.AddSingleton, RoleMapDbConverter>(); + #endregion + + #region Register Data + if (useSqlServer) + { + RegisterSqlDataRepo(services); + } + else + { + RegisterPostgresDataRepo(services); + } + #endregion + + #region Register Services + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + #endregion + + return services; + } + + private static void RegisterPostgresDataRepo(IServiceCollection services) + { + services.AddSingleton, PostgresExtendedRepo>(); + services.AddSingleton, PostgresExtendedRepo>(); + services.AddSingleton, PostgresExtendedRepo>(); + services.AddSingleton, PostgresBasicRepo>(); + services.AddSingleton, PostgresExtendedRepo>(); + services.AddSingleton, PostgresBasicRepo>(); + services.AddSingleton, PostgresBasicRepo>(); + services.AddSingleton, PostgresExtendedRepo>(); + services.AddSingleton, PostgresExtendedRepo>(); + services.AddSingleton, PostgresExtendedRepo>(); + services.AddSingleton, PostgresExtendedRepo>(); + services.AddSingleton, PostgresExtendedRepo>(); + services.AddSingleton, PostgresBasicRepo>(); + services.AddSingleton, PostgresCrossRepo>(); + services.AddSingleton, PostgresExtendedRepo>(); + services.AddSingleton, PostgresExtendedRepo>(); + services.AddSingleton, PostgresExtendedRepo>(); + services.AddSingleton, PostgresCrossRepo>(); + services.AddSingleton, PostgresExtendedRepo>(); + } + + private static void RegisterSqlDataRepo(IServiceCollection services) + { + services.AddSingleton, SqlExtendedRepo>(); + services.AddSingleton, SqlExtendedRepo>(); + services.AddSingleton, SqlExtendedRepo>(); + services.AddSingleton, SqlBasicRepo>(); + services.AddSingleton, SqlExtendedRepo>(); + services.AddSingleton, SqlBasicRepo>(); + services.AddSingleton, SqlBasicRepo>(); + services.AddSingleton, SqlExtendedRepo>(); + services.AddSingleton, SqlExtendedRepo>(); + services.AddSingleton, SqlExtendedRepo>(); + services.AddSingleton, SqlExtendedRepo>(); + services.AddSingleton, SqlExtendedRepo>(); + services.AddSingleton, SqlBasicRepo>(); + services.AddSingleton, SqlCrossRepo>(); + services.AddSingleton, SqlExtendedRepo>(); + services.AddSingleton, SqlExtendedRepo>(); + services.AddSingleton, SqlExtendedRepo>(); + services.AddSingleton, SqlCrossRepo>(); + services.AddSingleton, SqlExtendedRepo>(); + } +} + +/// +/// Database Definitions +/// +public class DatabaseDefinitions +{ + private DbObjDefConfig Config { get; set; } + + /// + /// Database Definitions + /// + /// DbObjDefConfig + public DatabaseDefinitions(IOptions options) + { + Config = options.Value; + } + + /// + /// Use Database Definitions + /// + public void SetDatabaseDefinitions() + { + DbDefinitions.Add(Config); + DbDefinitions.Add(Config); + + DbDefinitions.Add(Config); + DbDefinitions.Add(Config); + DbDefinitions.Add(Config); + DbDefinitions.Add(Config); + + DbDefinitions.Add(Config); + DbDefinitions.Add(Config); + DbDefinitions.Add(Config); + DbDefinitions.Add(Config); + + DbDefinitions.Add(Config); + + DbDefinitions.Add(Config); + DbDefinitions.Add(Config); + DbDefinitions.Add(Config); + + DbDefinitions.Add(Config); + DbDefinitions.Add(Config); + DbDefinitions.Add(Config); + DbDefinitions.Add(Config); + + DbDefinitions.Add(Config); + DbDefinitions.Add(Config); + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Extensions/DbAccessTelemetryExtensions.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Extensions/DbAccessTelemetryExtensions.cs new file mode 100644 index 00000000..cd0932e7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Extensions/DbAccessTelemetryExtensions.cs @@ -0,0 +1,35 @@ +using Microsoft.Extensions.DependencyInjection; +using OpenTelemetry; +using OpenTelemetry.Logs; +using OpenTelemetry.Resources; +using OpenTelemetry.Trace; + +namespace Altinn.Authorization.AccessPackages.Repo.Extensions; + +public static class DbAccessTelemetryExtensions +{ + public static void AddDbAccessTelemetry() + { + //services.ConfigureOpenTelemetryTracerProvider(cfg => + //{ + // cfg.ConfigureResource(c => c.AddService("AccessPackages")) + // .AddSource("Altinn.Authorization.AccessPackages.Repo") + // .AddSource("Altinn.Authorization.DbAccess") + // .AddOtlpExporter(); + //}); + + using var tracerProvider = Sdk.CreateTracerProviderBuilder() + .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("AccessPackages")) + .AddSource("Altinn.Authorization.AccessPackages.Repo") + ////.AddConsoleExporter() + .AddOtlpExporter() + .Build(); + + using var tracerProvider2 = Sdk.CreateTracerProviderBuilder() + .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("DbAccess")) + .AddSource("Altinn.Authorization.DbAccess") + ////.AddConsoleExporter() + .AddOtlpExporter() + .Build(); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Area.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Area.json new file mode 100644 index 00000000..1268f23d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Area.json @@ -0,0 +1,156 @@ +[ + { + "id": "7d32591d-34b7-4afc-8afa-013722f8c05d", + "name": "Skatt, avgift, regnskap og toll", + "description": "Dette fullmaktsområdet er relevant for alle virksomheter som betaler eller rapporterer inn informasjon knyttet til skatt, avgift regnskap og toll", + "iconname": "Statistics_and_math:PieChart", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "6f7f3b02-8b5a-4823-9468-0f4646d3a790", + "iconname": "People:PersonTallShort", + "description": "", + "name": "Personale", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "a8834a7c-ed89-4c73-b5d5-19a2347f3b13", + "iconname": "Wellness:HeadHeart", + "description": "", + "name": "Miljø, ulykke og sikkerhet", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "6f938de8-34f2-4bab-a0c6-3a3eb64aad3b", + "iconname": "Files and application:Folder", + "description": "", + "name": "Post og arkiv", + "groupid": "554F0321-53B8-4D97-BE12-6A585C507159" + }, + { + "id": "3f5df819-7aca-49e1-bf6f-3e8f120f20d1", + "iconname": "Statistics_and_math:BubbleChart", + "description": "", + "name": "Forhold ved virksomheten", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "892e98c6-1696-46e7-9bb1-59c08761ec64", + "iconname": "Development:Migration", + "description": "", + "name": "Integrasjoner og API-er", + "groupid": "554F0321-53B8-4D97-BE12-6A585C507159" + }, + { + "id": "536b317c-ef85-45d4-9b48-6511578e1952", + "iconname": "Transportation:Truck", + "description": "", + "name": "Bygg og anlegg", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "6e152c10-0f63-4060-9b14-66808e7ac320", + "iconname": "Workplace:HardHat", + "description": "Dette fullmaktsområdet er relevant for alle virksomheter som betaler eller rapporterer inn informasjon knyttet til energi, olje og gass", + "name": "Energi, olje og gass", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "4deaf3fe-b758-42a1-b6ea-6ce3fc088dd8", + "iconname": "Money:Piggybank", + "description": "", + "name": "Finans og forsikring", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "eab59b26-833f-40ca-9e27-72107e8f1908", + "iconname": "Wellness:Stethoscope", + "description": "", + "name": "Helse og legemiddel", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "e4ae823f-41db-46ed-873f-8a5d1378fff8", + "iconname": "Law_and_security:KeyHorizontal", + "description": "Dette fullmaktsområdet er relevant for alle virksomheter som betaler eller rapporterer inn informasjon knyttet til administrasjon av tilganger", + "name": "Administrere tilganger", + "groupid": "554F0321-53B8-4D97-BE12-6A585C507159" + }, + { + "id": "10c2dd29-5ab3-4a26-900e-8e2326150353", + "iconname": "Nature_and_animals:Mountain", + "description": "", + "name": "Industri og bergverk", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "fc93d25e-80bc-469a-aa43-a6cee80eb3e2", + "iconname": "Nature_and_animals:Plant", + "description": "", + "name": "Jordbruk og skogbruk", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "5996ba37-6db0-4391-8918-b1b0bd4b394b", + "iconname": "Media:Image", + "description": "Dette fullmaktsområdet er relevant for alle virksomheter som betaler eller rapporterer inn informasjon knyttet til kunst og kultur", + "name": "Kunst og kultur", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "803afa14-6acf-497c-8169-c01a7dc40f0e", + "iconname": "Interface:Monitor", + "description": "", + "name": "IT", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "f771057a-4285-4c02-af61-cc4a05042758", + "iconname": "Interface:PersonChat", + "description": "", + "name": "Medier og kommunikasjon", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "4aa23f6c-a25b-4883-be03-dfdb37ab635b", + "iconname": "Nature_and_animals:Waves", + "description": "", + "name": "Næringsmiddel, fisk og akvakultur", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "ed350049-dbb8-4054-b28b-e0c82661e4e4", + "iconname": "Home:Calculator", + "description": "", + "name": "Regnskap og revisjon", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "3797e9f0-dd83-404c-9897-e356c32ef600", + "iconname": "Home:Bed", + "description": "", + "name": "Servering og overnatting", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "6ff90072-566b-4acd-baac-ec477534e712", + "iconname": "Transportation:Train", + "description": "", + "name": "Transport", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "ab90f27a-9b63-4ae6-8ae3-f4d78b915267", + "iconname": "Development:Package", + "description": "", + "name": "Varehandel", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "e31169f6-d4c7-4e45-93c7-f90bc285b639", + "iconname": "Status:Square", + "description": "", + "name": "Øvrige tjenesteytende bransjer", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/AreaGroup.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/AreaGroup.json new file mode 100644 index 00000000..49498228 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/AreaGroup.json @@ -0,0 +1,17 @@ +[ + { + "id":"7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145", + "name":"Allment", + "description": "Standard gruppe" + }, + { + "id":"3757643A-316D-4D0E-A52B-4DC7CDEBC0B4", + "name":"Bransje", + "description": "For bransje grupper" + }, + { + "id":"554F0321-53B8-4D97-BE12-6A585C507159", + "name":"Særskilt", + "description": "For de sære tingene" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/AreaGroup_eng.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/AreaGroup_eng.json new file mode 100644 index 00000000..ce1b5fe4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/AreaGroup_eng.json @@ -0,0 +1,17 @@ +[ + { + "id": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145", + "name": "General", + "description": "Standard group" + }, + { + "id": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4", + "name": "Industry", + "description": "For industry groups" + }, + { + "id": "554F0321-53B8-4D97-BE12-6A585C507159", + "name": "Special", + "description": "For the unique things" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Area_eng.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Area_eng.json new file mode 100644 index 00000000..f7ecf311 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Area_eng.json @@ -0,0 +1,156 @@ +[ + { + "id": "7d32591d-34b7-4afc-8afa-013722f8c05d", + "name": "Tax, duty, accounting, and customs", + "description": "This authorization area is relevant for all businesses that pay or report information related to tax, duty, accounting, and customs", + "iconname": "Statistics_and_math:PieChart", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "6f7f3b02-8b5a-4823-9468-0f4646d3a790", + "iconname": "People:PersonTallShort", + "description": "", + "name": "Personnel", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "a8834a7c-ed89-4c73-b5d5-19a2347f3b13", + "iconname": "Wellness:HeadHeart", + "description": "", + "name": "Environment, accident, and safety", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "6f938de8-34f2-4bab-a0c6-3a3eb64aad3b", + "iconname": "Files and application:Folder", + "description": "", + "name": "Mail and archive", + "groupid": "554F0321-53B8-4D97-BE12-6A585C507159" + }, + { + "id": "3f5df819-7aca-49e1-bf6f-3e8f120f20d1", + "iconname": "Statistics_and_math:BubbleChart", + "description": "", + "name": "Conditions of the business", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "892e98c6-1696-46e7-9bb1-59c08761ec64", + "iconname": "Development:Migration", + "description": "", + "name": "Integrations and APIs", + "groupid": "554F0321-53B8-4D97-BE12-6A585C507159" + }, + { + "id": "536b317c-ef85-45d4-9b48-6511578e1952", + "iconname": "Transportation:Truck", + "description": "", + "name": "Construction", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "6e152c10-0f63-4060-9b14-66808e7ac320", + "iconname": "Workplace:HardHat", + "description": "This authorization area is relevant for all businesses that pay or report information related to energy, oil, and gas", + "name": "Energy, oil, and gas", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "4deaf3fe-b758-42a1-b6ea-6ce3fc088dd8", + "iconname": "Money:Piggybank", + "description": "", + "name": "Finance and insurance", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "eab59b26-833f-40ca-9e27-72107e8f1908", + "iconname": "Wellness:Stethoscope", + "description": "", + "name": "Health and pharmaceuticals", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "e4ae823f-41db-46ed-873f-8a5d1378fff8", + "iconname": "Law_and_security:KeyHorizontal", + "description": "This authorization area is relevant for all businesses that pay or report information related to access management", + "name": "Manage accesses", + "groupid": "554F0321-53B8-4D97-BE12-6A585C507159" + }, + { + "id": "10c2dd29-5ab3-4a26-900e-8e2326150353", + "iconname": "Nature_and_animals:Mountain", + "description": "", + "name": "Industry and mining", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "fc93d25e-80bc-469a-aa43-a6cee80eb3e2", + "iconname": "Nature_and_animals:Plant", + "description": "", + "name": "Agriculture and forestry", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "5996ba37-6db0-4391-8918-b1b0bd4b394b", + "iconname": "Media:Image", + "description": "This authorization area is relevant for all businesses that pay or report information related to art and culture", + "name": "Art and culture", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "803afa14-6acf-497c-8169-c01a7dc40f0e", + "iconname": "Interface:Monitor", + "description": "", + "name": "IT", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "f771057a-4285-4c02-af61-cc4a05042758", + "iconname": "Interface:PersonChat", + "description": "", + "name": "Media and communication", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "4aa23f6c-a25b-4883-be03-dfdb37ab635b", + "iconname": "Nature_and_animals:Waves", + "description": "", + "name": "Food industry, fish, and aquaculture", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "ed350049-dbb8-4054-b28b-e0c82661e4e4", + "iconname": "Home:Calculator", + "description": "", + "name": "Accounting and auditing", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + }, + { + "id": "3797e9f0-dd83-404c-9897-e356c32ef600", + "iconname": "Home:Bed", + "description": "", + "name": "Catering and accommodation", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "6ff90072-566b-4acd-baac-ec477534e712", + "iconname": "Transportation:Train", + "description": "", + "name": "Transport", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "ab90f27a-9b63-4ae6-8ae3-f4d78b915267", + "iconname": "Development:Package", + "description": "", + "name": "Retail trade", + "groupid": "3757643A-316D-4D0E-A52B-4DC7CDEBC0B4" + }, + { + "id": "e31169f6-d4c7-4e45-93c7-f90bc285b639", + "iconname": "Status:Square", + "description": "", + "name": "Other service sectors", + "groupid": "7E2A3AF8-08CB-43A9-BDD7-7D5C7E377145" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityType.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityType.json new file mode 100644 index 00000000..ea54a7a2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityType.json @@ -0,0 +1,12 @@ +[ + { + "Id": "8C216E2F-AFDD-4234-9BA2-691C727BB33D", + "Name": "Organisasjon", + "ProviderId": "323F9FF9-11AD-4AF3-8CCB-0DB7BDB71D75" + }, + { + "Id": "BFE09E70-E868-44B3-8D81-DFE0E13E058A", + "Name": "Person", + "ProviderId": "AC991C6F-E404-4C8A-82AB-94C2F772CD00" + } +] diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityType_eng.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityType_eng.json new file mode 100644 index 00000000..a99eb5e5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityType_eng.json @@ -0,0 +1,10 @@ +[ + { + "Id": "8C216E2F-AFDD-4234-9BA2-691C727BB33D", + "Name": "Organization" + }, + { + "Id": "BFE09E70-E868-44B3-8D81-DFE0E13E058A", + "Name": "Person" + } +] diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityVariant.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityVariant.json new file mode 100644 index 00000000..7e330c27 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityVariant.json @@ -0,0 +1,272 @@ +[ + { + "id": "d786bc0e-8e9e-4116-bfc2-0344207c9127", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "SAM", + "description": "Tingsrettslig sameie" + }, + { + "id": "d0a08401-5ae0-4da9-a79a-1113a7746b60", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "VPFO", + "description": "Verdipapirfond" + }, + { + "id": "c161a605-3c72-40f2-8a5a-15e57e49638c", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "UTLA", + "description": "Utenlandsk enhet" + }, + { + "id": "752f87dc-b04f-42cb-becd-173935ec6164", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "BO", + "description": "Andre bo" + }, + { + "id": "263762ec-54fc-4eae-b7a1-17e92eea9a5c", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "AS", + "description": "Aksjeselskap" + }, + { + "id": "6b2449e7-af5a-4c4e-b475-1b75998ba804", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "PK", + "description": "Pensjonskasse" + }, + { + "id": "ed5d05b6-588c-40fa-8885-2bd36f75ac34", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "PERS", + "description": "Andre enkeltpersoner som registreres i tilknyttet register" + }, + { + "id": "e0444411-a021-4774-854c-2ed876ffd64e", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "EOFG", + "description": "Europeisk økonomisk foretaksgruppe" + }, + { + "id": "441a2876-f15f-4007-9e2e-3d25acbd98ff", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "SE", + "description": "Europeisk selskap" + }, + { + "id": "3d5a890a-51aa-4e8a-b53d-3ec4111fe9e9", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "TVAM", + "description": "Tvangsregistrert for MVA" + }, + { + "id": "b0690e14-7a75-45a4-8c02-437f6705b5ee", + "typeId": "bfe09e70-e868-44b3-8d81-dfe0e13e058a", + "name": "Person", + "description": "Person" + }, + { + "id": "e5d4a90e-948a-4c61-965a-43dbbd0efddb", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "GFS", + "description": "Gjensidig forsikringsselskap" + }, + { + "id": "a581992e-c9dd-4250-8a9e-4e91d9b55424", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "FYLK", + "description": "Fylkeskommune" + }, + { + "id": "ab5013e9-4210-4ab3-9fc2-554fd78a1b03", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "IKJP", + "description": "Andre ikke-juridiske personer" + }, + { + "id": "a90417b4-5fa9-4a01-bfd0-57a1069a000c", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "NUF", + "description": "Norskregistrert utenlandsk foretak" + }, + { + "id": "fca69e4d-453c-4404-b057-5e188c603f4b", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ANS", + "description": "Ansvarlig selskap med solidarisk ansvar" + }, + { + "id": "64b05309-7b6e-40c8-bd29-62d8fa0bd5ec", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "KS", + "description": "Kommandittselskap" + }, + { + "id": "90b3eb3b-87cb-4ec3-bc44-65630cd02a67", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "SÆR", + "description": "Annet foretak iflg. særskilt lov" + }, + { + "id": "d0648c3e-1567-48dc-a7cf-6837653dbc12", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "IKS", + "description": "Interkommunalt selskap" + }, + { + "id": "9d80264a-b968-45f8-b740-6a283cbc06ad", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "STI", + "description": "Stiftelse" + }, + { + "id": "8aa09ac2-dd61-492f-9613-6fc0558ab6fb", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "BBL", + "description": "Boligbyggelag" + }, + { + "id": "e9b021a9-b257-42c0-8460-717a95c883f6", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "KTRF", + "description": "Kontorfellesskap" + }, + { + "id": "2587990f-b036-4a6b-a7d9-815853be1382", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ANNA", + "description": "Annen juridisk person" + }, + { + "id": "7d356f18-2f72-49b5-a6f2-83d7c0871991", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "SA", + "description": "Samvirkeforetak" + }, + { + "id": "e57cac52-e401-4c0f-a1cf-8bb4628fe671", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ADOS", + "description": "Administrativ enhet - offentlig sektor" + }, + { + "id": "3ae468d4-ea92-471d-b7b1-924e49b0d619", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "KF", + "description": "Kommunalt foretak" + }, + { + "id": "0c31bb8f-587a-416b-a3cd-980bb73c5612", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "AAFY", + "description": "Underenhet til ikke-næringsdrivende" + }, + { + "id": "b3433097-38b9-4a47-bd50-a4bb794cab3d", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "DA", + "description": "Ansvarlig selskap med delt ansvar" + }, + { + "id": "4effb14f-8a1f-4272-aefb-b92ee302050f", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "OPMV", + "description": "Særskilt oppdelt enhet, jf. mval. § 2-2" + }, + { + "id": "4f6c04d2-7223-41cc-8135-bb91d79ed311", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ORGL", + "description": "Organisasjonsledd" + }, + { + "id": "28157281-cc8f-46e0-9e2a-c20cb3b72930", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "STAT", + "description": "Staten" + }, + { + "id": "d5b0abc8-22e7-44bb-bb55-c33bd6d7df4d", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "SF", + "description": "Statsforetak" + }, + { + "id": "3aded080-d0d4-4893-8d30-c45dff4d7656", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "PRE", + "description": "Partrederi" + }, + { + "id": "7c0ae1b2-2fa9-4266-8911-c4cb82c1489b", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "BRL", + "description": "Borettslag" + }, + { + "id": "ed82281c-a5a1-4a28-9046-c70d95ce4658", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "KOMM", + "description": "Kommune" + }, + { + "id": "ecd6e878-9121-43e6-aec0-c74b562cd3da", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "FLI", + "description": "Forening/lag/innretning" + }, + { + "id": "80acaf52-3bf5-48c7-ab79-cb6f141a5b6f", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "SPA", + "description": "Sparebank" + }, + { + "id": "ca45ed3a-41b3-4d2b-add9-db0d41a4e42b", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ASA", + "description": "Allmennaksjeselskap" + }, + { + "id": "1e2e44c0-e5e6-4962-8beb-e0ce16760a04", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ESEK", + "description": "Eierseksjonssameie" + }, + { + "id": "d78400f0-27d9-488a-886c-e264cc5c77ba", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ENK", + "description": "Enkeltpersonforetak" + }, + { + "id": "6b798668-a98d-49f2-a6d9-e391bad99fb2", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "FKF", + "description": "Fylkeskommunalt foretak" + }, + { + "id": "7b43c6c2-e8ce-4f63-bb46-e4eb830fa222", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "KIRK", + "description": "Den norske kirke" + }, + { + "id": "1f1e3720-b8a8-490e-8304-e81da21e3d3b", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "BEDR", + "description": "Underenhet til næringsdrivende og offentlig forvaltning" + }, + { + "id": "d7208d54-067d-4b5c-a906-f0da3d3de0f1", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "KBO", + "description": "Konkursbo" + }, + { + "id": "ea460099-515f-4e54-88d8-fbe53a807276", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "BA", + "description": "Selskap med begrenset ansvar" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityVariantRole.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityVariantRole.json new file mode 100644 index 00000000..3242d8af --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityVariantRole.json @@ -0,0 +1,2585 @@ +[ + { + "Id": "A602B705-6824-44ED-A003-004EE7845FD3", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "B3433097-38B9-4A47-BD50-A4BB794CAB3D", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "F9F00551-C25E-4F00-B2D5-00B19DC088CC", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "64B05309-7B6E-40C8-BD29-62D8FA0BD5EC", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "0CC812D3-A869-42A8-BD52-011F5EB8780A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "8AA09AC2-DD61-492F-9613-6FC0558AB6FB", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "5874BF80-B5BB-4049-A788-012D665721D8", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "EA460099-515F-4E54-88D8-FBE53A807276", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "189F7B86-ED13-420C-831C-01D468E8F879", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "80ACAF52-3BF5-48C7-AB79-CB6F141A5B6F", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "6E6DEA46-68C7-45AE-A4CF-02632E4E926A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4EFFB14F-8A1F-4272-AEFB-B92EE302050F", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "9ED87363-113F-47EC-B287-04A00B5565C2", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ECD6E878-9121-43E6-AEC0-C74B562CD3DA", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "94225083-9C0D-43F0-9484-0580956DA009", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ECD6E878-9121-43E6-AEC0-C74B562CD3DA", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "BBB89D3D-B6BA-459C-8479-05CC1E842EA0", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7B43C6C2-E8CE-4F63-BB46-E4EB830FA222", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "C1064173-8EBA-43A8-8B62-06DE54D11BB3", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0A08401-5AE0-4DA9-A79A-1113A7746B60", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "7F677A6D-295F-4B7A-BEF9-070DDD6525D7", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E57CAC52-E401-4C0F-A1CF-8BB4628FE671", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "9862E082-5B39-42D6-998B-072DF283B219", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "FCA69E4D-453C-4404-B057-5E188C603F4B", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "5F03421B-DF32-499E-AF20-077CDFC9D4E2", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3D5A890A-51AA-4E8A-B53D-3EC4111FE9E9", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "D854D6CF-C0AF-4048-B831-088B70D89C20", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0648C3E-1567-48DC-A7CF-6837653DBC12", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "693A7A06-0A73-4457-8270-09D9FEDBFBDC", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4EFFB14F-8A1F-4272-AEFB-B92EE302050F", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "C4CECAD8-F41C-4DB2-8B8F-0AB6357E7D7A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "C161A605-3C72-40F2-8A5A-15E57E49638C", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "32AFB670-0487-4F5E-9816-0BD4B9DBE286", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3AE468D4-EA92-471D-B7B1-924E49B0D619", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "452362AE-4C2C-4F57-A2FA-0C3CACE5A3AC", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0648C3E-1567-48DC-A7CF-6837653DBC12", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "733C7132-7851-40DC-B441-0D20B01F40F1", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "80ACAF52-3BF5-48C7-AB79-CB6F141A5B6F", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "141DFC6A-DFF3-4F78-BB47-0EA275A09E61", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7C0AE1B2-2FA9-4266-8911-C4CB82C1489B", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "D3F6A227-AA41-4E28-97EA-0EACA51B6E61", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B798668-A98D-49F2-A6D9-E391BAD99FB2", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "4AC5A409-BE20-4B2A-9100-107584991C61", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "90B3EB3B-87CB-4EC3-BC44-65630CD02A67", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "5D7CB608-BBA1-4BD2-9D0C-10AC498D745F", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4EFFB14F-8A1F-4272-AEFB-B92EE302050F", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "A000FDE8-4EA1-4FEB-ABB6-110CC66EA532", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4F6C04D2-7223-41CC-8135-BB91D79ED311", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "93213862-8607-474E-9820-1170477B98F7", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3AE468D4-EA92-471D-B7B1-924E49B0D619", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "347E9E80-672B-48AF-A3FA-11F9D8F4E58B", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D5B0ABC8-22E7-44BB-BB55-C33BD6D7DF4D", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "58EB56FF-ED4E-4183-B197-12DCED372988", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7D356F18-2F72-49B5-A6F2-83D7C0871991", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "A3338C5E-A65F-4B0F-9E67-12FECC405915", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "752F87DC-B04F-42CB-BECD-173935EC6164", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "2EB828D8-F347-4E8B-B09C-13705C8C2E0E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7C0AE1B2-2FA9-4266-8911-C4CB82C1489B", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "F3D2352C-CB9E-46A0-B7F0-1417849D1311", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E0444411-A021-4774-854C-2ED876FFD64E", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "21A1EC57-B04E-42F9-B14F-1523896FE8DF", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "28157281-CC8F-46E0-9E2A-C20CB3B72930", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "8AF0DF9A-E07B-4750-9EF4-157C1DF01402", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ED82281C-A5A1-4A28-9046-C70D95CE4658", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "5DC12550-D4AF-4ED0-9082-15BB623FAD83", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3ADED080-D0D4-4893-8D30-C45DFF4D7656", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "9C8EFECE-DE93-4285-8D2E-16B932EC14BD", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "441A2876-F15F-4007-9E2E-3D25ACBD98FF", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "14FBE6FD-A948-4548-AC2E-16BCB3747A92", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3D5A890A-51AA-4E8A-B53D-3EC4111FE9E9", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "B5C0512E-5D71-493A-B09F-16C814856B31", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "1E2E44C0-E5E6-4962-8BEB-E0CE16760A04", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "17CB5EB9-7CC1-4F89-80F7-17A3488B3F3E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4F6C04D2-7223-41CC-8135-BB91D79ED311", + "RoleId": "FFA924C7-45BA-469B-9657-27BBB66002D4" + }, + { + "Id": "A05E26D4-5C8C-44B5-A059-187F6584D078", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3AE468D4-EA92-471D-B7B1-924E49B0D619", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "6FBD440A-B013-455E-8010-18CE0A0BA3A2", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D5B0ABC8-22E7-44BB-BB55-C33BD6D7DF4D", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "F8296D6D-6488-4283-BAA1-198015FE0081", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4EFFB14F-8A1F-4272-AEFB-B92EE302050F", + "RoleId": "792C01DC-29C9-4DEC-AE6D-28CFF0B04678" + }, + { + "Id": "DCFC1FBE-AE18-429D-B636-1A153870D929", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "90B3EB3B-87CB-4EC3-BC44-65630CD02A67", + "RoleId": "E4674211-034A-45F3-99AC-B2356984968A" + }, + { + "Id": "F5E09D28-F25A-4055-ABA0-1A263DFE772B", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D78400F0-27D9-488A-886C-E264CC5C77BA", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "A3719E58-286D-4395-95B0-1A654F2EEAFA", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0A08401-5AE0-4DA9-A79A-1113A7746B60", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "A6B0A73D-D605-4839-B0E1-1A8FDE14DC51", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E57CAC52-E401-4C0F-A1CF-8BB4628FE671", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "FCA451E0-B859-4152-A8D0-1C0832334484", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A90417B4-5FA9-4A01-BFD0-57A1069A000C", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "F7556503-472E-4B2C-9A2C-1C51BF24F9CB", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3D5A890A-51AA-4E8A-B53D-3EC4111FE9E9", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "C921F4D9-D393-41CA-BE21-1C9B761FC421", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "1E2E44C0-E5E6-4962-8BEB-E0CE16760A04", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "42A7E8EB-02C7-4F88-8A1E-1CDE836A4E4A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4F6C04D2-7223-41CC-8135-BB91D79ED311", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "E1286B53-740E-4303-8C9E-1E10C68ACED3", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D78400F0-27D9-488A-886C-E264CC5C77BA", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "3103CDE4-8416-4733-BC0D-1E55D7D31B5C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "90B3EB3B-87CB-4EC3-BC44-65630CD02A67", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "FC92A941-965B-404A-B12D-1E75CFBAD42F", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D5B0ABC8-22E7-44BB-BB55-C33BD6D7DF4D", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "EADC8E91-5083-406C-AF9E-200035B66197", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "752F87DC-B04F-42CB-BECD-173935EC6164", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "3DFB7268-00C5-416A-9EFF-20836AEBE7DE", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3D5A890A-51AA-4E8A-B53D-3EC4111FE9E9", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "C2852F85-7053-4113-BCB0-21240999891C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "B3433097-38B9-4A47-BD50-A4BB794CAB3D", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "00EDE93C-D586-4ABC-B019-2150598D42C6", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E0444411-A021-4774-854C-2ED876FFD64E", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "83393C94-2DCD-4D51-B125-21B244053675", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E5D4A90E-948A-4C61-965A-43DBBD0EFDDB", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "5630A5A9-7545-420B-BF3F-2353E6971472", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0648C3E-1567-48DC-A7CF-6837653DBC12", + "RoleId": "3AF9BB77-9455-44BD-8D93-4D3F2A9FDA33" + }, + { + "Id": "BB871689-69F8-4402-A865-23D790126AF9", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3ADED080-D0D4-4893-8D30-C45DFF4D7656", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "D7B6B26B-290A-4B58-8A23-241224EB1535", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E0444411-A021-4774-854C-2ED876FFD64E", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "68F05FC2-3D47-4ADF-AAF0-2424DD51D324", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4EFFB14F-8A1F-4272-AEFB-B92EE302050F", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "75C8AA69-81DF-4C38-BF52-24335DB22293", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "8AA09AC2-DD61-492F-9613-6FC0558AB6FB", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "7A343A25-F454-4392-84FB-246F813178DC", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E0444411-A021-4774-854C-2ED876FFD64E", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "91D2F5EC-5792-4860-A7BA-24FA10464843", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7C0AE1B2-2FA9-4266-8911-C4CB82C1489B", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "F48CD7E1-3E84-4B5A-BB6B-251B4710609B", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7D356F18-2F72-49B5-A6F2-83D7C0871991", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "FF0CF936-61CE-41F9-915A-2546F0245ED6", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B798668-A98D-49F2-A6D9-E391BAD99FB2", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "4CF85A10-696A-49E3-84C3-26E9D2068725", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E57CAC52-E401-4C0F-A1CF-8BB4628FE671", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "551AF393-175E-445D-853E-2709CDC22D9F", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7B43C6C2-E8CE-4F63-BB46-E4EB830FA222", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "59B45424-BAEE-4A2B-A20F-2817FA91FCBD", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "64B05309-7B6E-40C8-BD29-62D8FA0BD5EC", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "1624A50C-5CA3-480B-9128-29703D2B2038", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E57CAC52-E401-4C0F-A1CF-8BB4628FE671", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "9072AC91-EB21-4B26-BE54-29B69B232A9D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A581992E-C9DD-4250-8A9E-4E91D9B55424", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "D9BF2965-ADB7-485D-A82C-29F772CA7DA5", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D5B0ABC8-22E7-44BB-BB55-C33BD6D7DF4D", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "3B39D830-B0FC-4435-B2ED-2B4DE0F5941D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "28157281-CC8F-46E0-9E2A-C20CB3B72930", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "1F6B0652-CAB1-4992-812F-2B7D2DE99070", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ED82281C-A5A1-4A28-9046-C70D95CE4658", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "84327709-7420-4E48-B228-2BA4123F2DF5", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "FCA69E4D-453C-4404-B057-5E188C603F4B", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "A1051A12-34F9-4FCD-ACBF-2D2B57A09970", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7D356F18-2F72-49B5-A6F2-83D7C0871991", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "918E0EE4-E1EB-42FB-A0A9-2E3A0015983D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "80ACAF52-3BF5-48C7-AB79-CB6F141A5B6F", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "18E96A0A-F6E9-4E31-A1FD-2F615D82DF4F", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D786BC0E-8E9E-4116-BFC2-0344207C9127", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "7C6BCBAF-FB0F-438F-9784-2FB469D6B9E6", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "90B3EB3B-87CB-4EC3-BC44-65630CD02A67", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "62BD7BB2-5637-4695-A95A-304389464641", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ED82281C-A5A1-4A28-9046-C70D95CE4658", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "ACDCAF38-CD81-4DE8-B615-30BA751CB920", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "2587990F-B036-4A6B-A7D9-815853BE1382", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "E5D984A2-76EB-4655-833E-3192DADD8D40", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3ADED080-D0D4-4893-8D30-C45DFF4D7656", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "EC19EAAD-6B51-463E-9F80-326EAD70C26F", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "752F87DC-B04F-42CB-BECD-173935EC6164", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "35A059DB-5B4C-4ECF-801A-327EB301ADA4", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A90417B4-5FA9-4A01-BFD0-57A1069A000C", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "40861223-50C4-4BB7-A094-32C2C0B2C117", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "90B3EB3B-87CB-4EC3-BC44-65630CD02A67", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "D8B22A93-749A-4A74-8354-331F4B7D42AD", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3AE468D4-EA92-471D-B7B1-924E49B0D619", + "RoleId": "D4F78604-DB47-4FF7-8537-A4E7318E8C11" + }, + { + "Id": "8FC346ED-EC68-472C-B532-33A7DE7BD6AA", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "80ACAF52-3BF5-48C7-AB79-CB6F141A5B6F", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "7F454CDD-1A58-45FF-87A7-345F2F11A84B", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "80ACAF52-3BF5-48C7-AB79-CB6F141A5B6F", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "F014D8A4-5E80-4A7A-A508-351E98CD6B73", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3AE468D4-EA92-471D-B7B1-924E49B0D619", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "D5FB7B75-BA30-4BEB-9359-35FCA6C73486", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "CA45ED3A-41B3-4D2B-ADD9-DB0D41A4E42B", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "59A1024C-BD02-42A3-BAB9-3628620446B4", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ECD6E878-9121-43E6-AEC0-C74B562CD3DA", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "9D86BC2A-8BDF-46BF-87DF-3630A05B553C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "441A2876-F15F-4007-9E2E-3D25ACBD98FF", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "B441C5FE-0C7A-4C12-98C1-370DB33A1A6D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3AE468D4-EA92-471D-B7B1-924E49B0D619", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "BCD0DA6B-A8A1-4322-AF8C-3798C2FA41D2", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A90417B4-5FA9-4A01-BFD0-57A1069A000C", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "25F1B5E9-234C-421A-BBA0-388147B93043", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E5D4A90E-948A-4C61-965A-43DBBD0EFDDB", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "5DE175FD-3C65-4DEE-99D6-38A883CA7D28", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4EFFB14F-8A1F-4272-AEFB-B92EE302050F", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "EA5975C8-9C62-43A2-A23D-39E19A2D5877", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D7208D54-067D-4B5C-A906-F0DA3D3DE0F1", + "RoleId": "0610A058-2046-4FB7-8566-A7CEF6515BAF" + }, + { + "Id": "20D1B163-1788-4BF7-8CC7-3A338F684564", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3ADED080-D0D4-4893-8D30-C45DFF4D7656", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "1D3CD64C-F060-4719-95FD-3A4A6D7FA3A1", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "263762EC-54FC-4EAE-B7A1-17E92EEA9A5C", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "5FD06149-5E62-4965-96F8-3AFC2508126E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0648C3E-1567-48DC-A7CF-6837653DBC12", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "0A071F08-389B-445A-B7B7-3C1BC57FF4FF", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "2587990F-B036-4A6B-A7D9-815853BE1382", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "22BEDC49-8A2A-4EA4-ADAF-3E4AF232077D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7B43C6C2-E8CE-4F63-BB46-E4EB830FA222", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "3B859A17-7582-458C-BB41-3ED81D7C716F", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B798668-A98D-49F2-A6D9-E391BAD99FB2", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "CF153441-443E-4622-BD14-3F6B36CCEAA7", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0648C3E-1567-48DC-A7CF-6837653DBC12", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "C2F67257-43EB-44DC-B3F8-40A1E3A372B2", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E0444411-A021-4774-854C-2ED876FFD64E", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "F087189D-04EA-4221-BA80-413DD4568CED", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D786BC0E-8E9E-4116-BFC2-0344207C9127", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "8B478E3F-132E-4E3C-9F14-4164FD8CCD18", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D78400F0-27D9-488A-886C-E264CC5C77BA", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "75C71023-1DA2-4AAD-BC29-41757860AC7B", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D786BC0E-8E9E-4116-BFC2-0344207C9127", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "84EF38F9-6E12-45E8-91D3-41D43155B338", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "2587990F-B036-4A6B-A7D9-815853BE1382", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "C077C4AA-CA93-4B02-A63D-435AA8B67657", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4F6C04D2-7223-41CC-8135-BB91D79ED311", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "FD8C5446-D143-4241-814B-436A4EE30E37", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7B43C6C2-E8CE-4F63-BB46-E4EB830FA222", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "E90BF748-13EB-41FE-B8DE-442D9DFF0D5C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E0444411-A021-4774-854C-2ED876FFD64E", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "E8F35322-84C7-48A9-A487-44761E467DF3", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B798668-A98D-49F2-A6D9-E391BAD99FB2", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "5C992D20-618C-4873-AE06-45AA2D041AD4", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B2449E7-AF5A-4C4E-B475-1B75998BA804", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "34E03820-EE94-4354-B616-469BDD42064A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3ADED080-D0D4-4893-8D30-C45DFF4D7656", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "676BC013-6E93-47AA-AB13-477E1D7C1714", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3D5A890A-51AA-4E8A-B53D-3EC4111FE9E9", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "D9B4B3B8-ABE5-4F7F-8D31-48EFA3D630DD", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7D356F18-2F72-49B5-A6F2-83D7C0871991", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "D898E8DE-9D89-419A-8478-49FFA44EC888", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7C0AE1B2-2FA9-4266-8911-C4CB82C1489B", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "472676E2-F56C-4D3A-8931-4A90EBB1C32C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "EA460099-515F-4E54-88D8-FBE53A807276", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "40AB7BDC-47EE-4E53-A2A6-4A9C5C082AA7", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A581992E-C9DD-4250-8A9E-4E91D9B55424", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "8B39C0AE-7179-44FA-B557-4AD7FC9470AC", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7B43C6C2-E8CE-4F63-BB46-E4EB830FA222", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "56B8FB03-9BEA-4B2D-BCDF-4B34DA736917", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "EA460099-515F-4E54-88D8-FBE53A807276", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "C8DC4C49-EE86-4C09-B123-4C3E891F56E3", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "EA460099-515F-4E54-88D8-FBE53A807276", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "F19BF3C9-D1D2-4C5A-BAEC-4CC6CFBC9973", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0A08401-5AE0-4DA9-A79A-1113A7746B60", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "60537B79-8B9D-4D5F-85D9-4F12C25158CB", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D786BC0E-8E9E-4116-BFC2-0344207C9127", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "2631B13E-4C30-43D9-A661-4FE9153B33E8", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4F6C04D2-7223-41CC-8135-BB91D79ED311", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "983F1257-5ED6-48EA-A4A0-50A46CA07228", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "1E2E44C0-E5E6-4962-8BEB-E0CE16760A04", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "12899373-01D3-4692-8496-5106641F25E1", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E9B021A9-B257-42C0-8460-717A95C883F6", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "5DF3D170-CA31-4809-96D6-523973BBE23D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "EA460099-515F-4E54-88D8-FBE53A807276", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "C9C56BA5-7A37-4CC1-A1DF-537A9D4A42D2", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "8AA09AC2-DD61-492F-9613-6FC0558AB6FB", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "819CB300-90D7-45DB-BACC-545349BF28B3", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "FCA69E4D-453C-4404-B057-5E188C603F4B", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "2D7CCE8A-04AA-4287-859C-54ADEF097701", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "FCA69E4D-453C-4404-B057-5E188C603F4B", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "37DE968B-77A6-44B6-AE03-55B90B67AE86", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4F6C04D2-7223-41CC-8135-BB91D79ED311", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "64523172-39FD-4651-B47E-560FDC2E9988", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "752F87DC-B04F-42CB-BECD-173935EC6164", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "F66FEC3A-296C-43C2-AC6D-568D08D3B895", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7C0AE1B2-2FA9-4266-8911-C4CB82C1489B", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "2569D806-A489-4D20-949A-56DA26FFEF73", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4EFFB14F-8A1F-4272-AEFB-B92EE302050F", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "72EACD4C-9EAF-47A8-8BCB-571495BA27B2", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "FCA69E4D-453C-4404-B057-5E188C603F4B", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "4B169D67-7472-4120-BE0C-57D2E233757A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "64B05309-7B6E-40C8-BD29-62D8FA0BD5EC", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "904404F0-1517-46C8-95AA-581F2ECD68EB", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ED82281C-A5A1-4A28-9046-C70D95CE4658", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "24CE90EB-3BAC-4141-AB47-59AEF9CE362E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7D356F18-2F72-49B5-A6F2-83D7C0871991", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "1C911D5B-B1DE-4884-96D4-5C07D312BB45", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "263762EC-54FC-4EAE-B7A1-17E92EEA9A5C", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "3726A2AE-4E1A-4A19-9D29-5C3AF4329407", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "CA45ED3A-41B3-4D2B-ADD9-DB0D41A4E42B", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "1ED68071-A0EF-4A4F-848A-5C90AD18D1BA", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A581992E-C9DD-4250-8A9E-4E91D9B55424", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "EBD639FF-08F6-484F-90C5-5C99EA8DD10C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "CA45ED3A-41B3-4D2B-ADD9-DB0D41A4E42B", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "2CC95E38-2C26-4C0D-B5A0-5E02E27A5694", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ED5D05B6-588C-40FA-8885-2BD36F75AC34", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "2F813D2A-A203-40AC-88F5-5F488B12ADF9", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D78400F0-27D9-488A-886C-E264CC5C77BA", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "4095F4D7-19AE-4B93-A2BD-5F84BAB7F23B", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "64B05309-7B6E-40C8-BD29-62D8FA0BD5EC", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "62A184ED-95F3-4B29-8C5E-5FEAB8A0E2B9", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A581992E-C9DD-4250-8A9E-4E91D9B55424", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "6932FF2C-BFCA-4853-9E6D-60668040808D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D5B0ABC8-22E7-44BB-BB55-C33BD6D7DF4D", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "452C7E46-1EC1-4306-AD32-60DCB1893418", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7D356F18-2F72-49B5-A6F2-83D7C0871991", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "8AFC00C9-2BFF-483A-84A4-60F15D555C09", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "2587990F-B036-4A6B-A7D9-815853BE1382", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "EE0005ED-A654-4002-B4DB-61DA3067F7EB", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "64B05309-7B6E-40C8-BD29-62D8FA0BD5EC", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "8939E9BB-35F3-4FA0-BD48-6299831A4FB6", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "2587990F-B036-4A6B-A7D9-815853BE1382", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "ACA50F25-4D2A-4CBA-9F84-63DF232D4BDE", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "B3433097-38B9-4A47-BD50-A4BB794CAB3D", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "70D2E1FF-3234-46CA-B737-64586AA8B29B", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "441A2876-F15F-4007-9E2E-3D25ACBD98FF", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "965B9833-B73E-4F69-902E-648878C26B9A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7B43C6C2-E8CE-4F63-BB46-E4EB830FA222", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "5C97B266-E081-4C50-B175-651728200F75", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "9D80264A-B968-45F8-B740-6A283CBC06AD", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "F6B188DE-14CF-4E05-B171-654021EEBF74", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "CA45ED3A-41B3-4D2B-ADD9-DB0D41A4E42B", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "C13119B7-E17F-4CAC-92A8-66FE8DBCBB3F", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "1E2E44C0-E5E6-4962-8BEB-E0CE16760A04", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "48AA9279-E5D4-4662-9544-671584FD5723", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E5D4A90E-948A-4C61-965A-43DBBD0EFDDB", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "380614A6-831C-4DEC-A9A1-688E813D5902", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "FCA69E4D-453C-4404-B057-5E188C603F4B", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "EBA7E829-D459-4991-8E06-693928AFB71E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E9B021A9-B257-42C0-8460-717A95C883F6", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "5D168EAD-8DE0-40EB-BC63-69CC4C75AC62", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D786BC0E-8E9E-4116-BFC2-0344207C9127", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "1F0A3F0C-C258-4FC8-8B16-6A91397C9C52", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E0444411-A021-4774-854C-2ED876FFD64E", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "634B9934-C7BF-4ED9-B7F8-6BA6366757ED", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4EFFB14F-8A1F-4272-AEFB-B92EE302050F", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "F31B6012-D100-479C-B3FA-6BCB8F0BEEAD", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3AE468D4-EA92-471D-B7B1-924E49B0D619", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "5A2CC156-AA89-4984-9843-6BDEF16C5696", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E0444411-A021-4774-854C-2ED876FFD64E", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "4239583E-0331-4BB6-9422-6CD5243688B6", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "CA45ED3A-41B3-4D2B-ADD9-DB0D41A4E42B", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "DB2B19FC-7B1C-4F73-8720-6D2F12D4E8F4", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "28157281-CC8F-46E0-9E2A-C20CB3B72930", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "CD0467EB-7D67-4C83-8D0D-6D6D32A3220A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ED82281C-A5A1-4A28-9046-C70D95CE4658", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "A04B63F1-641C-4A1E-AEE6-6E4C73864847", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "80ACAF52-3BF5-48C7-AB79-CB6F141A5B6F", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "0EC258F0-F5E2-4FA3-B841-6EF2453CD3E8", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A90417B4-5FA9-4A01-BFD0-57A1069A000C", + "RoleId": "6ADAD370-5524-4438-A811-932D27F655B9" + }, + { + "Id": "14EF8844-C43A-480E-8959-704B898B824C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D78400F0-27D9-488A-886C-E264CC5C77BA", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "AE49835A-6012-46C5-919E-70A233B8D7CE", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "8AA09AC2-DD61-492F-9613-6FC0558AB6FB", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "E12C7A34-D0BA-492E-9849-726AA913EC4D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B2449E7-AF5A-4C4E-B475-1B75998BA804", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "D79DB533-A2EA-4C37-A69A-730AD3945B8A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4EFFB14F-8A1F-4272-AEFB-B92EE302050F", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "FE2A37AA-EA40-4344-8662-73139FD43F89", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "64B05309-7B6E-40C8-BD29-62D8FA0BD5EC", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "1729DC99-564D-4B46-B32F-742FEE31D599", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "9D80264A-B968-45F8-B740-6A283CBC06AD", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "07A21DE2-9667-4642-9B0E-756B6E411259", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "CA45ED3A-41B3-4D2B-ADD9-DB0D41A4E42B", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "10125FFB-3B9E-4DF8-A2B7-7594C9767780", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7C0AE1B2-2FA9-4266-8911-C4CB82C1489B", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "E37DFFBE-C738-4B4E-AAE3-75EEE6E8EE40", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "80ACAF52-3BF5-48C7-AB79-CB6F141A5B6F", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "98A9B7E6-5B7C-4053-86D2-764F29D38BB9", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E5D4A90E-948A-4C61-965A-43DBBD0EFDDB", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "87D6E70E-4DEF-4D66-B124-771E3B316BA3", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D5B0ABC8-22E7-44BB-BB55-C33BD6D7DF4D", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "D5677001-181A-4806-9A92-77273BA954FB", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D78400F0-27D9-488A-886C-E264CC5C77BA", + "RoleId": "F96756F4-415A-45DD-8D10-4EBEE0E6DB84" + }, + { + "Id": "9EC86A6E-11FD-435F-A57B-7A4442B98ACB", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "CA45ED3A-41B3-4D2B-ADD9-DB0D41A4E42B", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "910AED15-6CC4-45CB-A23B-7A8E9C3C2DF0", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0648C3E-1567-48DC-A7CF-6837653DBC12", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "84C4F117-96AC-49DC-8656-7AD145D2917C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "64B05309-7B6E-40C8-BD29-62D8FA0BD5EC", + "RoleId": "1005E523-9423-4037-92E7-D23DEE6A9813" + }, + { + "Id": "FC803EFD-80AC-4151-9413-7ADD63D2B0E5", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4EFFB14F-8A1F-4272-AEFB-B92EE302050F", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "AAAE639F-64FD-496E-B50D-7AECD8FFCF93", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "EA460099-515F-4E54-88D8-FBE53A807276", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "7D0D9734-5815-420F-AAA0-7C4675190B04", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E5D4A90E-948A-4C61-965A-43DBBD0EFDDB", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "82C239FC-EFD8-4167-99AF-7C993309A4CC", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0648C3E-1567-48DC-A7CF-6837653DBC12", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "714A128C-737F-4CB0-AA8C-7E9D4A6C6F19", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0A08401-5AE0-4DA9-A79A-1113A7746B60", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "24AB35FE-0B59-4A7D-BB86-7EC1D861A12B", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E5D4A90E-948A-4C61-965A-43DBBD0EFDDB", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "E4B26C29-241E-488B-B4E4-7F29BE48CFB4", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0648C3E-1567-48DC-A7CF-6837653DBC12", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "10A17B0E-5639-4D3F-906E-7FDB51258C78", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "9D80264A-B968-45F8-B740-6A283CBC06AD", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "43CDDF4E-509E-4C9F-BE01-803E6B801A83", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B798668-A98D-49F2-A6D9-E391BAD99FB2", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "359977C3-5BED-45A7-8279-80EF4A90D914", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B2449E7-AF5A-4C4E-B475-1B75998BA804", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "9579B6ED-5ADC-4B33-9523-813044EE52FD", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "C161A605-3C72-40F2-8A5A-15E57E49638C", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "6AAC69EF-9FC4-43B9-AE38-82412E99AE2D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "9D80264A-B968-45F8-B740-6A283CBC06AD", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "DE59E34D-8ACD-422B-B6BA-835FF0F2F516", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "80ACAF52-3BF5-48C7-AB79-CB6F141A5B6F", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "9DF80469-B333-430E-A501-838F9966439E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "8AA09AC2-DD61-492F-9613-6FC0558AB6FB", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "193BDA2C-E40C-4D57-8E50-83F020BD3D67", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "64B05309-7B6E-40C8-BD29-62D8FA0BD5EC", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "AAC5F1AD-AA7E-44D0-90AD-84C76910FDA5", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B798668-A98D-49F2-A6D9-E391BAD99FB2", + "RoleId": "D4F78604-DB47-4FF7-8537-A4E7318E8C11" + }, + { + "Id": "94EC68E4-2B81-4EF8-9F82-85D3857F9A4B", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ECD6E878-9121-43E6-AEC0-C74B562CD3DA", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "DC43840E-F8C8-4D99-B4FA-85D8E37E13F6", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "9D80264A-B968-45F8-B740-6A283CBC06AD", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "A73CF154-AD85-4425-B462-861FB8789AF4", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A90417B4-5FA9-4A01-BFD0-57A1069A000C", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "1B3FA2C2-4C85-4F75-ACF2-868FDAC47B61", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7C0AE1B2-2FA9-4266-8911-C4CB82C1489B", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "6D8FC483-9382-40E7-A70F-86FF5109949A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "441A2876-F15F-4007-9E2E-3D25ACBD98FF", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "E650306F-4BFA-4D18-84D6-87069A3F0833", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A90417B4-5FA9-4A01-BFD0-57A1069A000C", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "70324F68-E677-4D5E-ABDB-87A2E51A58EB", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "263762EC-54FC-4EAE-B7A1-17E92EEA9A5C", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "3403DFA7-AD72-4B92-976B-897815A2BAD3", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "1E2E44C0-E5E6-4962-8BEB-E0CE16760A04", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "652C872E-A1DE-4020-8834-8A0BBB4DD03D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "2587990F-B036-4A6B-A7D9-815853BE1382", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "8314429C-B887-4E83-BCCC-8A563D40FBB2", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E57CAC52-E401-4C0F-A1CF-8BB4628FE671", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "B0059B9B-7D1F-43DB-8E5A-8B4F9BDA9D19", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0648C3E-1567-48DC-A7CF-6837653DBC12", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "1718ACE4-1211-44AB-B6FC-8B8428CD7D6D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E9B021A9-B257-42C0-8460-717A95C883F6", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "693D0182-9875-46C5-B06D-8C553EDFF687", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3ADED080-D0D4-4893-8D30-C45DFF4D7656", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "85934293-4A32-47E5-A311-8C9ED1D19D05", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4F6C04D2-7223-41CC-8135-BB91D79ED311", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "85AC1DD8-64E2-41D3-A192-8D625CFFD589", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7B43C6C2-E8CE-4F63-BB46-E4EB830FA222", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "99221674-66A2-4BB6-A93D-8D9DDCB630C0", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "EA460099-515F-4E54-88D8-FBE53A807276", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "50ECF708-DC98-4515-B913-8E1D668B03EF", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3AE468D4-EA92-471D-B7B1-924E49B0D619", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "6FF7668C-758B-44A3-953E-8ECD51698666", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E5D4A90E-948A-4C61-965A-43DBBD0EFDDB", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "23B98C90-4A96-4933-8A93-8F494B2CC6B4", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "B3433097-38B9-4A47-BD50-A4BB794CAB3D", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "0D651F64-F4A6-4D49-87E7-9067DA8DC00C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B2449E7-AF5A-4C4E-B475-1B75998BA804", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "1EB73CD2-4595-4D32-BE2A-91A1DBBD2031", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ECD6E878-9121-43E6-AEC0-C74B562CD3DA", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "5F0F462A-986B-4A1A-B988-91C9751A87B1", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "752F87DC-B04F-42CB-BECD-173935EC6164", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "E37B5C34-C4E2-47F6-844D-9232796F95E1", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A581992E-C9DD-4250-8A9E-4E91D9B55424", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "3FF09437-C00F-44C5-AAA8-923C6C666FD8", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "9D80264A-B968-45F8-B740-6A283CBC06AD", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "CF5F6B0A-3EEA-498A-91FA-9250638EEE5E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3ADED080-D0D4-4893-8D30-C45DFF4D7656", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "7A4F593B-1002-4D33-B90A-95385BA1B815", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "752F87DC-B04F-42CB-BECD-173935EC6164", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "FF51AAE9-4A13-42C3-900C-95FD8B13C5C1", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "B3433097-38B9-4A47-BD50-A4BB794CAB3D", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "0D9BA2E7-472A-4B56-B736-9639C3B358F4", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B798668-A98D-49F2-A6D9-E391BAD99FB2", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "60C14788-6001-4A0F-95B6-9712CD817A88", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3AE468D4-EA92-471D-B7B1-924E49B0D619", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "342BF0D7-8E9D-409B-ACB9-9742148A67DA", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D7208D54-067D-4B5C-A906-F0DA3D3DE0F1", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "62D8E7B5-8B6D-4867-AF4D-97E7F9A5A4A7", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "8AA09AC2-DD61-492F-9613-6FC0558AB6FB", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "AA1308D7-D17D-4012-B07A-97EB2EB2088F", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7B43C6C2-E8CE-4F63-BB46-E4EB830FA222", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "DE000C99-5185-4830-A47B-985385C13C24", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D786BC0E-8E9E-4116-BFC2-0344207C9127", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "02C21949-D94F-4963-A684-992907DFF320", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D78400F0-27D9-488A-886C-E264CC5C77BA", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "C4A1075B-531F-41C7-A47E-9A3072A9245C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ECD6E878-9121-43E6-AEC0-C74B562CD3DA", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "98256531-4B49-4BB0-9313-9AE0EB308A59", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7D356F18-2F72-49B5-A6F2-83D7C0871991", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "F98A63E7-53F2-4831-BD35-9C15B98482DD", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "FCA69E4D-453C-4404-B057-5E188C603F4B", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "A512C157-DAC4-4010-B6E4-9E7369691465", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4F6C04D2-7223-41CC-8135-BB91D79ED311", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "DF02D99E-A7D4-4EC2-B8CB-9EEF2C6CA934", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ECD6E878-9121-43E6-AEC0-C74B562CD3DA", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "38001503-9484-4E37-8137-9F5B5D43394D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3ADED080-D0D4-4893-8D30-C45DFF4D7656", + "RoleId": "D7AB8FD4-DE81-4C82-8B0E-9CB6470A274E" + }, + { + "Id": "FA21390E-2EE2-4EBD-9178-A10B576CE05F", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B798668-A98D-49F2-A6D9-E391BAD99FB2", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "AE84A673-D0F3-4C84-9A11-A255DD8A4085", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "752F87DC-B04F-42CB-BECD-173935EC6164", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "AC08A007-97BA-427E-9B8E-A26F355C90D4", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "9D80264A-B968-45F8-B740-6A283CBC06AD", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "ECE6AE97-2952-436D-988B-A2981FED6F80", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ECD6E878-9121-43E6-AEC0-C74B562CD3DA", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "766A8FFF-DC73-4ACD-9D44-A378B848DC9E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "263762EC-54FC-4EAE-B7A1-17E92EEA9A5C", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "B314ABFD-B770-41F9-94AA-A4B23C147075", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7B43C6C2-E8CE-4F63-BB46-E4EB830FA222", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "6DF34034-58B5-4235-A084-A4FCB1CE2321", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "8AA09AC2-DD61-492F-9613-6FC0558AB6FB", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "EFD38F56-907C-4E76-9B3D-A59090D05ACD", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3AE468D4-EA92-471D-B7B1-924E49B0D619", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "BC3AB3BA-1D7C-42B9-A98F-A5F64B37ADBB", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "B3433097-38B9-4A47-BD50-A4BB794CAB3D", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "3555050C-1D40-4792-8C17-A632AA79CF68", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4F6C04D2-7223-41CC-8135-BB91D79ED311", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "A3B38AC0-F0E9-40EF-BADA-A6F5AC0A1053", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7D356F18-2F72-49B5-A6F2-83D7C0871991", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "4A9D73DE-45F5-4BA5-A534-A7B0EF56286B", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "752F87DC-B04F-42CB-BECD-173935EC6164", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "9183902D-8A1A-46ED-A02B-A81729CC146A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "B3433097-38B9-4A47-BD50-A4BB794CAB3D", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "14720C1D-CC77-4B9A-AF4C-A841111CED95", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ED5D05B6-588C-40FA-8885-2BD36F75AC34", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "0A30B3F3-AD9E-4015-BB3C-A842ABE6FF87", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B798668-A98D-49F2-A6D9-E391BAD99FB2", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "6305F07B-A7D0-4593-88C7-A934D9AC73A8", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "B3433097-38B9-4A47-BD50-A4BB794CAB3D", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "3F8F731F-A16C-4721-A92D-A9757043BFB6", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4EFFB14F-8A1F-4272-AEFB-B92EE302050F", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "E1700447-FA5C-4C69-BE9F-A994C69958C0", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "90B3EB3B-87CB-4EC3-BC44-65630CD02A67", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "E1D2AEDD-6F33-49A5-A0DD-AA22FB432902", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0A08401-5AE0-4DA9-A79A-1113A7746B60", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "4D9F0774-FB2C-487A-AB28-AA85B56FD41E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E57CAC52-E401-4C0F-A1CF-8BB4628FE671", + "RoleId": "66AD5542-4F4A-4606-996F-18690129CE00" + }, + { + "Id": "D8BA21BA-EF38-4C33-811C-ABCAA1D31909", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3ADED080-D0D4-4893-8D30-C45DFF4D7656", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "C6D8A6D0-8A22-4E65-B981-AD2EC25ADE9C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D5B0ABC8-22E7-44BB-BB55-C33BD6D7DF4D", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "5D1C511F-79EC-4E29-A4FA-ADC5D18670CF", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "90B3EB3B-87CB-4EC3-BC44-65630CD02A67", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "4EA69E8A-8D54-474B-9630-ADDA4B012862", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3AE468D4-EA92-471D-B7B1-924E49B0D619", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "43C84FD1-99A1-4213-8861-AE6DC73E6AA4", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3D5A890A-51AA-4E8A-B53D-3EC4111FE9E9", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "9A372655-7CCD-4E2E-8C8C-AF4CD564F9AC", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "263762EC-54FC-4EAE-B7A1-17E92EEA9A5C", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "6B12A751-D7B1-4987-BFA8-AF6C1219F3B1", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "28157281-CC8F-46E0-9E2A-C20CB3B72930", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "D851B5FC-43AA-4354-B909-AFB9FFBE64EB", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E5D4A90E-948A-4C61-965A-43DBBD0EFDDB", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "23B0008A-041C-4E64-A043-B04AB0C5FC66", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "9D80264A-B968-45F8-B740-6A283CBC06AD", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "110DC50E-0C24-4769-B6B9-B0B4EAD1EADC", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "8AA09AC2-DD61-492F-9613-6FC0558AB6FB", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "746E8DC8-748D-4563-B259-B1E31701B414", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3ADED080-D0D4-4893-8D30-C45DFF4D7656", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "9B94D2DF-2D86-4E0D-A5E5-B24940D3F08B", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0648C3E-1567-48DC-A7CF-6837653DBC12", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "43C82543-AE85-44B2-8303-B2B4F5A7D956", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7D356F18-2F72-49B5-A6F2-83D7C0871991", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "5AF0D3B1-6D37-4566-AB0E-B2C5C07D57FC", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "EA460099-515F-4E54-88D8-FBE53A807276", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "1919F3C0-5B33-4AEA-B555-B477E5D5D898", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4F6C04D2-7223-41CC-8135-BB91D79ED311", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "124D6D13-7C08-466D-A246-B4AC581DA775", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "2587990F-B036-4A6B-A7D9-815853BE1382", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "1106D839-5344-419C-8739-B5F7400CCC96", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "1E2E44C0-E5E6-4962-8BEB-E0CE16760A04", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "2295A4AC-A3FE-4AB2-97D3-B92B70656F95", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A90417B4-5FA9-4A01-BFD0-57A1069A000C", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "CEFDDDA9-FC8A-4A5B-B281-B9B48C258274", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B2449E7-AF5A-4C4E-B475-1B75998BA804", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "9B130560-451D-4B19-8FFA-B9FD8B378F3E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ECD6E878-9121-43E6-AEC0-C74B562CD3DA", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "CAACBD5A-ACC8-48DA-82A2-BADD60F2EB60", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "263762EC-54FC-4EAE-B7A1-17E92EEA9A5C", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "98F88E4C-DDD0-4A80-A377-BB4F84F4D2F4", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "EA460099-515F-4E54-88D8-FBE53A807276", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "456099CA-7FF5-47E4-B641-BC9D5174B7BD", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B798668-A98D-49F2-A6D9-E391BAD99FB2", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "66484AE9-FE50-4649-B227-BE5561FC60D0", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "64B05309-7B6E-40C8-BD29-62D8FA0BD5EC", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "2B064F21-8230-494E-B87C-BEC1B6600115", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D786BC0E-8E9E-4116-BFC2-0344207C9127", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "8870D327-C57A-4F64-B61E-BECAB801CD64", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3D5A890A-51AA-4E8A-B53D-3EC4111FE9E9", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "DD13FFCA-516C-4F5A-A925-BFF963DD63DD", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "441A2876-F15F-4007-9E2E-3D25ACBD98FF", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "C958DA45-3F25-4E2A-ADCA-C12E730183AE", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "1E2E44C0-E5E6-4962-8BEB-E0CE16760A04", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "98C9A5D2-801E-4B25-B7C1-C14DBDC61A87", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B2449E7-AF5A-4C4E-B475-1B75998BA804", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "173F33CA-8F76-4592-BA21-C2E533EE175E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E57CAC52-E401-4C0F-A1CF-8BB4628FE671", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "5BC5C51F-2E30-404B-A013-C36AFE33F327", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3D5A890A-51AA-4E8A-B53D-3EC4111FE9E9", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "1448BE40-44CA-4184-94C3-C4ADC95CB88D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B2449E7-AF5A-4C4E-B475-1B75998BA804", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "3EEAD88D-E5DE-4D7A-A193-C4E10D8581DC", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B2449E7-AF5A-4C4E-B475-1B75998BA804", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "B88F1346-78D0-46E8-ABC4-C55730254405", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "64B05309-7B6E-40C8-BD29-62D8FA0BD5EC", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "EE80C35D-92C6-4845-B492-C9215DE78F17", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A90417B4-5FA9-4A01-BFD0-57A1069A000C", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "AA494BBA-ABFA-48D4-B247-C93232679470", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "2587990F-B036-4A6B-A7D9-815853BE1382", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "384DF41A-D761-4DAC-BA7A-CA409B170C29", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "9D80264A-B968-45F8-B740-6A283CBC06AD", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "DC7E38F3-B2AA-4A2D-B8BA-CB896ECE02C6", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D0648C3E-1567-48DC-A7CF-6837653DBC12", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "2AD1F891-4846-4574-AB4D-CCCBE5B31D9C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "8AA09AC2-DD61-492F-9613-6FC0558AB6FB", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "0F2A7F9E-B399-42B1-8DFC-CE33F758F63E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "441A2876-F15F-4007-9E2E-3D25ACBD98FF", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "5F1FAE53-880C-430C-9AB6-CE378972782E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7D356F18-2F72-49B5-A6F2-83D7C0871991", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "27FE9114-B8CC-4411-8586-CF2C850DCDF7", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D5B0ABC8-22E7-44BB-BB55-C33BD6D7DF4D", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "434F59C8-DEA2-46BA-8BD4-CFA79C443B8D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7B43C6C2-E8CE-4F63-BB46-E4EB830FA222", + "RoleId": "3BDD603A-DBE0-4CAA-BC97-F0B6A1675B15" + }, + { + "Id": "D9D7EA20-8CB0-4AF9-BA7F-D1083EA0188E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E0444411-A021-4774-854C-2ED876FFD64E", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "7E2F9FB7-F15E-49C7-B93A-D1377F5F5F8D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "90B3EB3B-87CB-4EC3-BC44-65630CD02A67", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "7BE38437-0491-4733-9EEB-D1565463FDCE", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "CA45ED3A-41B3-4D2B-ADD9-DB0D41A4E42B", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "6327F44D-C77D-4F14-BCDA-D18BFE75CD2C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D786BC0E-8E9E-4116-BFC2-0344207C9127", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "BAF63BE2-A091-4621-8ADB-D69141C0E331", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "B3433097-38B9-4A47-BD50-A4BB794CAB3D", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "9214C70A-A7B4-418D-BD19-D7BA0F0FF811", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "90B3EB3B-87CB-4EC3-BC44-65630CD02A67", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "1859AAC6-3517-4E8D-B46A-D7EA6C16D884", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "28157281-CC8F-46E0-9E2A-C20CB3B72930", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "52BA12CD-47D7-4340-8FCF-D8832187CD71", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "FCA69E4D-453C-4404-B057-5E188C603F4B", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "7F58E6CD-32B9-4954-9AC1-D9141D2E0898", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B2449E7-AF5A-4C4E-B475-1B75998BA804", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "098D394E-2FAF-4995-B27D-DA91152084CD", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E5D4A90E-948A-4C61-965A-43DBBD0EFDDB", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "2522A5F2-E188-4BDF-B6EC-DABEE7A5ED6D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3D5A890A-51AA-4E8A-B53D-3EC4111FE9E9", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "52708ECF-40CD-4243-A531-DB5163D9CEFB", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "CA45ED3A-41B3-4D2B-ADD9-DB0D41A4E42B", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "25929489-67E6-41A3-9475-DBC855F99B11", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "9D80264A-B968-45F8-B740-6A283CBC06AD", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "E890697C-47D9-4747-A824-DD1D1351BC13", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D5B0ABC8-22E7-44BB-BB55-C33BD6D7DF4D", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "84CAF74A-0646-4FFA-A170-DD295F270156", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "8AA09AC2-DD61-492F-9613-6FC0558AB6FB", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "F6C5D815-C2CE-4187-818E-DD315FFE47D8", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "C161A605-3C72-40F2-8A5A-15E57E49638C", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "4BFD5FE7-33C5-451A-B8FA-DD7951614B3A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "FCA69E4D-453C-4404-B057-5E188C603F4B", + "RoleId": "77778386-D57F-4378-AC31-5F260B407079" + }, + { + "Id": "A0854D98-C95A-4D59-A68B-DD7F9CE3DE0E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "80ACAF52-3BF5-48C7-AB79-CB6F141A5B6F", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "5BD8527B-8D7A-41B9-8EC6-DE57F552C7B0", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "263762EC-54FC-4EAE-B7A1-17E92EEA9A5C", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "37168A3B-E7C5-4233-AE0C-DE5A09CE658A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3D5A890A-51AA-4E8A-B53D-3EC4111FE9E9", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "94749862-E9E1-41C5-BF82-DEB94F066B4F", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "2587990F-B036-4A6B-A7D9-815853BE1382", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "9533AF22-DE5E-4070-A256-DEEC95DA997F", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "B3433097-38B9-4A47-BD50-A4BB794CAB3D", + "RoleId": "3AF9BB77-9455-44BD-8D93-4D3F2A9FDA33" + }, + { + "Id": "E2EBD0FA-AF89-46C4-BABB-DF301DCA3909", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A90417B4-5FA9-4A01-BFD0-57A1069A000C", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "F941EC03-F76C-4F2B-823D-DF47323AA2CD", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A90417B4-5FA9-4A01-BFD0-57A1069A000C", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "607AEE39-C29F-4950-A772-DF8EBB995C18", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "1E2E44C0-E5E6-4962-8BEB-E0CE16760A04", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "B085C806-F191-472D-9CCD-E0820CEB4EED", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "441A2876-F15F-4007-9E2E-3D25ACBD98FF", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "43B64020-DFD9-4F7D-B26C-E0F24312EE4F", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "EA460099-515F-4E54-88D8-FBE53A807276", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "17DEC074-F0FE-4822-A5E7-E1221B316E63", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "B3433097-38B9-4A47-BD50-A4BB794CAB3D", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "837878C9-082C-4596-8FD1-E15A925CEC9F", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "4F6C04D2-7223-41CC-8135-BB91D79ED311", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "BB1AE4F8-09AA-41A7-B1F0-E5DC9E1C1D4A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "1E2E44C0-E5E6-4962-8BEB-E0CE16760A04", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "980FBABE-2518-43D7-AB47-E6F02673BE97", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "752F87DC-B04F-42CB-BECD-173935EC6164", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "ED2B0746-6F50-4E38-87B7-E939B27BB743", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D786BC0E-8E9E-4116-BFC2-0344207C9127", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "634DB16E-3F8E-4845-AC41-E97BD62ED049", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D78400F0-27D9-488A-886C-E264CC5C77BA", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "7D3BB310-5A6C-409E-8582-E9960858FC23", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D7208D54-067D-4B5C-A906-F0DA3D3DE0F1", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "B13F3D8C-5720-4CD8-AB6A-EB94F68A13E6", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "441A2876-F15F-4007-9E2E-3D25ACBD98FF", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "6C71CDC7-CCB2-4EA9-BC70-ED359E6AB77D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ED5D05B6-588C-40FA-8885-2BD36F75AC34", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "E7CC1167-7984-48FC-8911-ED738DB1A18A", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E0444411-A021-4774-854C-2ED876FFD64E", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "BDC4CCD6-02C8-46A5-ADAA-EF9A15BD1899", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E57CAC52-E401-4C0F-A1CF-8BB4628FE671", + "RoleId": "63B5255D-4776-4BA1-BED2-C950BB5B04AB" + }, + { + "Id": "C3D28A99-9C52-44A2-AC76-EFAE6D31A80E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E57CAC52-E401-4C0F-A1CF-8BB4628FE671", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "39933535-9108-47F0-877D-EFE06AAFD96E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D786BC0E-8E9E-4116-BFC2-0344207C9127", + "RoleId": "197FBFBB-D867-4C0F-8D4A-62E9287E340D" + }, + { + "Id": "291DCF6D-23D3-4E79-83A2-F02BB576438D", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "441A2876-F15F-4007-9E2E-3D25ACBD98FF", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "65543295-6D0D-4B79-B845-F0483ABB0DC3", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "64B05309-7B6E-40C8-BD29-62D8FA0BD5EC", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "5C254060-311B-4E6D-9F77-F19456B3AC57", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "6B798668-A98D-49F2-A6D9-E391BAD99FB2", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "A637F1F2-BF6E-46A1-A8D1-F34EDFB8E343", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "263762EC-54FC-4EAE-B7A1-17E92EEA9A5C", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "3480F2F6-A7C9-4BDD-8D0B-F3586B4C4773", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D78400F0-27D9-488A-886C-E264CC5C77BA", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "12470C12-E190-4AE0-B9CC-F38153A80858", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "263762EC-54FC-4EAE-B7A1-17E92EEA9A5C", + "RoleId": "72C336A2-1705-4AEF-B220-7F4AA6C0E69D" + }, + { + "Id": "1B22445F-1C10-47EA-BD3F-F662058A2B0E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7C0AE1B2-2FA9-4266-8911-C4CB82C1489B", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "CAFEEA2B-9743-4907-AAEE-F699B433A3E2", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D78400F0-27D9-488A-886C-E264CC5C77BA", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "0BD3E5EA-AF73-4E4F-B898-F7158C612373", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7B43C6C2-E8CE-4F63-BB46-E4EB830FA222", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "D3697561-5FED-409A-8353-F725B3728FDA", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "90B3EB3B-87CB-4EC3-BC44-65630CD02A67", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "236E4744-8A22-43A3-AD77-F8B4BB9332CB", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "3D5A890A-51AA-4E8A-B53D-3EC4111FE9E9", + "RoleId": "F96756F4-415A-45DD-8D10-4EBEE0E6DB84" + }, + { + "Id": "95FE3ED8-13B6-4129-99F6-F950D0B68683", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "263762EC-54FC-4EAE-B7A1-17E92EEA9A5C", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + }, + { + "Id": "81C782EA-EC2B-4EFC-A76E-F9715C5F5AF3", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7C0AE1B2-2FA9-4266-8911-C4CB82C1489B", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "15279523-371B-4BA3-B084-F9D7BC91AE9C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "A90417B4-5FA9-4A01-BFD0-57A1069A000C", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "10B386AA-D8CE-456A-9D41-FA468B0589F1", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "441A2876-F15F-4007-9E2E-3D25ACBD98FF", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "8C3AD8F2-E064-42F3-B814-FC39E3CE50CC", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "CA45ED3A-41B3-4D2B-ADD9-DB0D41A4E42B", + "RoleId": "DE42AE15-C265-42B3-8060-64C779684902" + }, + { + "Id": "91A6286C-7AE5-42C2-B0CD-FC6B45AD4CAF", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "ECD6E878-9121-43E6-AEC0-C74B562CD3DA", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "3A6E064E-A4A9-41E5-AFC1-FC93DDA29F97", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "2587990F-B036-4A6B-A7D9-815853BE1382", + "RoleId": "857BB1FB-FCAA-4A3C-859D-319032626539" + }, + { + "Id": "CDECB843-9B8A-4D88-AF52-FD0C76554213", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "D78400F0-27D9-488A-886C-E264CC5C77BA", + "RoleId": "303D78E8-A658-454D-88AE-F836596982C7" + }, + { + "Id": "1D9C9949-B635-4060-AEEA-FDBA35A3FC3C", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "E9B021A9-B257-42C0-8460-717A95C883F6", + "RoleId": "A715F610-4096-49BF-9B59-1C9EC81966F5" + }, + { + "Id": "8A3CE252-FE03-4077-B222-FEAF3680CC67", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "7C0AE1B2-2FA9-4266-8911-C4CB82C1489B", + "RoleId": "585AC6F7-AEF0-47CA-8597-1AC7E63A58CE" + }, + { + "Id": "D0BB506C-58F4-4E78-84E3-FF1539C341CC", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "FCA69E4D-453C-4404-B057-5E188C603F4B", + "RoleId": "748EC709-78D6-4B13-A3F9-5FB8E783E679" + }, + { + "Id": "6FD44A23-5C62-47FE-9C39-FF6695AAC005", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "FCA69E4D-453C-4404-B057-5E188C603F4B", + "RoleId": "49DEF9E7-9EA4-4F78-9013-98C9AF5918D4" + }, + { + "Id": "26313D93-2534-4CC3-89AF-FFB6E53D410E", + "ValidFrom": "2024-08-31T19:54:18.4955203", + "ValidTo": "9999-12-31T23:59:59.9999999", + "VariantId": "90B3EB3B-87CB-4EC3-BC44-65630CD02A67", + "RoleId": "E207EAF7-AFDE-452C-A1BA-CE7BA9305BCC" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityVariant_eng.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityVariant_eng.json new file mode 100644 index 00000000..6b6034cb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/EntityVariant_eng.json @@ -0,0 +1,272 @@ +[ + { + "id": "d786bc0e-8e9e-4116-bfc2-0344207c9127", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "SAM", + "description": "Legal co-ownership" + }, + { + "id": "d0a08401-5ae0-4da9-a79a-1113a7746b60", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "VPFO", + "description": "Securities fund" + }, + { + "id": "c161a605-3c72-40f2-8a5a-15e57e49638c", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "UTLA", + "description": "Foreign entity" + }, + { + "id": "752f87dc-b04f-42cb-becd-173935ec6164", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "BO", + "description": "Other estate" + }, + { + "id": "263762ec-54fc-4eae-b7a1-17e92eea9a5c", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "AS", + "description": "Limited company" + }, + { + "id": "6b2449e7-af5a-4c4e-b475-1b75998ba804", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "PK", + "description": "Pension fund" + }, + { + "id": "ed5d05b6-588c-40fa-8885-2bd36f75ac34", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "PERS", + "description": "Other individuals registered in the associated register" + }, + { + "id": "e0444411-a021-4774-854c-2ed876ffd64e", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "EOFG", + "description": "European Economic Interest Grouping" + }, + { + "id": "441a2876-f15f-4007-9e2e-3d25acbd98ff", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "SE", + "description": "European company" + }, + { + "id": "3d5a890a-51aa-4e8a-b53d-3ec4111fe9e9", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "TVAM", + "description": "Compulsory VAT registration" + }, + { + "id": "b0690e14-7a75-45a4-8c02-437f6705b5ee", + "typeId": "bfe09e70-e868-44b3-8d81-dfe0e13e058a", + "name": "Person", + "description": "Person" + }, + { + "id": "e5d4a90e-948a-4c61-965a-43dbbd0efddb", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "GFS", + "description": "Mutual insurance company" + }, + { + "id": "a581992e-c9dd-4250-8a9e-4e91d9b55424", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "FYLK", + "description": "County municipality" + }, + { + "id": "ab5013e9-4210-4ab3-9fc2-554fd78a1b03", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "IKJP", + "description": "Other non-legal persons" + }, + { + "id": "a90417b4-5fa9-4a01-bfd0-57a1069a000c", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "NUF", + "description": "Norwegian-registered foreign company" + }, + { + "id": "fca69e4d-453c-4404-b057-5e188c603f4b", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ANS", + "description": "Partnership with joint liability" + }, + { + "id": "64b05309-7b6e-40c8-bd29-62d8fa0bd5ec", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "KS", + "description": "Limited partnership" + }, + { + "id": "90b3eb3b-87cb-4ec3-bc44-65630cd02a67", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "SÆR", + "description": "Other company according to special law" + }, + { + "id": "d0648c3e-1567-48dc-a7cf-6837653dbc12", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "IKS", + "description": "Inter-municipal company" + }, + { + "id": "9d80264a-b968-45f8-b740-6a283cbc06ad", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "STI", + "description": "Foundation" + }, + { + "id": "8aa09ac2-dd61-492f-9613-6fc0558ab6fb", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "BBL", + "description": "Housing cooperative" + }, + { + "id": "e9b021a9-b257-42c0-8460-717a95c883f6", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "KTRF", + "description": "Shared office" + }, + { + "id": "2587990f-b036-4a6b-a7d9-815853be1382", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ANNA", + "description": "Other legal entity" + }, + { + "id": "7d356f18-2f72-49b5-a6f2-83d7c0871991", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "SA", + "description": "Cooperative enterprise" + }, + { + "id": "e57cac52-e401-4c0f-a1cf-8bb4628fe671", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ADOS", + "description": "Administrative unit - public sector" + }, + { + "id": "3ae468d4-ea92-471d-b7b1-924e49b0d619", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "KF", + "description": "Municipal enterprise" + }, + { + "id": "0c31bb8f-587a-416b-a3cd-980bb73c5612", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "AAFY", + "description": "Subunit of non-commercial entity" + }, + { + "id": "b3433097-38b9-4a47-bd50-a4bb794cab3d", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "DA", + "description": "Partnership with divided liability" + }, + { + "id": "4effb14f-8a1f-4272-aefb-b92ee302050f", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "OPMV", + "description": "Specially divided unit, cf. VAT Act § 2-2" + }, + { + "id": "4f6c04d2-7223-41cc-8135-bb91d79ed311", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ORGL", + "description": "Organizational unit" + }, + { + "id": "28157281-cc8f-46e0-9e2a-c20cb3b72930", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "STAT", + "description": "The State" + }, + { + "id": "d5b0abc8-22e7-44bb-bb55-c33bd6d7df4d", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "SF", + "description": "State enterprise" + }, + { + "id": "3aded080-d0d4-4893-8d30-c45dff4d7656", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "PRE", + "description": "Partnership for ship ownership" + }, + { + "id": "7c0ae1b2-2fa9-4266-8911-c4cb82c1489b", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "BRL", + "description": "Housing association" + }, + { + "id": "ed82281c-a5a1-4a28-9046-c70d95ce4658", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "KOMM", + "description": "Municipality" + }, + { + "id": "ecd6e878-9121-43e6-aec0-c74b562cd3da", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "FLI", + "description": "Association/club/institution" + }, + { + "id": "80acaf52-3bf5-48c7-ab79-cb6f141a5b6f", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "SPA", + "description": "Savings bank" + }, + { + "id": "ca45ed3a-41b3-4d2b-add9-db0d41a4e42b", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ASA", + "description": "Public limited company" + }, + { + "id": "1e2e44c0-e5e6-4962-8beb-e0ce16760a04", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ESEK", + "description": "Condominium" + }, + { + "id": "d78400f0-27d9-488a-886c-e264cc5c77ba", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "ENK", + "description": "Sole proprietorship" + }, + { + "id": "6b798668-a98d-49f2-a6d9-e391bad99fb2", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "FKF", + "description": "County municipal enterprise" + }, + { + "id": "7b43c6c2-e8ce-4f63-bb46-e4eb830fa222", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "KIRK", + "description": "The Church of Norway" + }, + { + "id": "1f1e3720-b8a8-490e-8304-e81da21e3d3b", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "BEDR", + "description": "Subunit of commercial and public administration" + }, + { + "id": "d7208d54-067d-4b5c-a906-f0da3d3de0f1", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "KBO", + "description": "Bankruptcy estate" + }, + { + "id": "ea460099-515f-4e54-88d8-fbe53a807276", + "typeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "name": "BA", + "description": "Limited liability company" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Package.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Package.json new file mode 100644 index 00000000..76d1433e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Package.json @@ -0,0 +1,326 @@ +[ + { + "id": "25be54f6-370b-40ec-8c13-0d41a2f61e1d", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Miljørydding, miljørensing og lignende", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til miljørydding, miljørensing og lignende.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "A8834A7C-ED89-4C73-B5D5-19A2347F3B13", + "isDelegable": false + }, + { + "id": "b188e64c-93d4-4d2d-aa4e-0e84069eacf0", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Generelle helfotjenester", + "description": "Denne fullmakten gir tilgang til ordinære tjenester knyttet til virksomhetens dialog med Helfo der bruker kan få tilgang til personopplysninger om personer det rapporteres om.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "5a1601c7-8d5d-4a4b-a185-19a35cf08e54", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Rapportering av statistikk", + "description": "Denne fullmakten gir tilgang til alle pålagte rapportering av statistikk.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "e7dc823f-1b4c-4e66-bcaa-1a94f17364b3", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Dokumentbasert tilsyn", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til dokumentbaserte tilsyn.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "f9420288-3ff4-47b1-b5c3-1e230f70229e", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Merverdiavgift", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til merverdiavgift.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "7D32591D-34B7-4AFC-8AFA-013722F8C05D", + "isDelegable": false + }, + { + "id": "e6d35dae-c9a6-42af-875e-201667767526", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Politi og domstol", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til virksomhetens dialog om juridiske forhold med politi og jusitsmyndigheter. ", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "15981458-26da-4098-8eca-27fa02ff39cc", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Kundeadministrator", + "description": "Denne tilgangspakken gir bruker mulighet til å administrere tilganger man har mottatt for sine kunder til ansatte i egen virksomheten.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "E4AE823F-41DB-46ED-873F-8A5D1378FFF8", + "isDelegable": false + }, + { + "id": "7ec10749-ec63-473f-b8f3-329f9b984bf7", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Ulykke og yrkesskade", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til ulykke og yrkesskade.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "A8834A7C-ED89-4C73-B5D5-19A2347F3B13", + "isDelegable": false + }, + { + "id": "d55263a6-2839-4207-abad-3813baad0ec5", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Starte, drive, endre og avvikle virksomhet", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til å starte, endre og avvikle en virksomhet.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "65358653-2639-499d-ae11-4053bf55d094", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Tilgangsstyring", + "description": "Denne tilgangspakken gir bruker mulighet til å gi videre tilganger for virksomheten som man selv har mottatt.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "E4AE823F-41DB-46ED-873F-8A5D1378FFF8", + "isDelegable": false + }, + { + "id": "932501b0-7a7b-4bca-b761-4b705e3e5268", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Forskning", + "description": "Denne fullmakten gir tilgang til tjenester knyttet til forskning. Ved regelverksendringer eller innføring av nye digitale tjenester kan det bli endringer i tilganger som fullmakten gir.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "4edc0b48-ed79-46a4-9dc7-5158eaf3cd0f", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Opptre for virksomhetens kunder", + "description": "Denne tilgangspakken gir fullmakter til når en leverandørvirksomhet skal utføre tjenester på vegne av sine kunder via et programmeringsgrensesnitt (API). Fullmakten kan gis til til virksomhetsbruker som er knyttet til leverandørens organisasjonsnummer. Men denne fullmakten vil virksomhetsbrukeren kunne utføre alle tjenester som leverandøren har tilgang til å utføre på vegne av alle sine kunder/klienter. Fullmakten gir ikke virksomhetsbruker tilgang til å utføre tjenester på vegne av leverandøren selv, bare kunder av leverandøren. Denne fullmakten har tidligere hatt navnet “ECKEYROLE”, behovet for denne må vurderes opp mot ny løsning for systembruker.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "892E98C6-1696-46E7-9BB1-59C08761EC64", + "isDelegable": false + }, + { + "id": "90dff34b-6a01-438c-ab62-51d9640a9b2f", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Patent, varmerke og design", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til patent, varemerke og design.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "5ee1f6a5-8056-481f-91b4-56892ccaf2a0", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Skattegrunnlag", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til innhenting av skattegrunnlag.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "7D32591D-34B7-4AFC-8AFA-013722F8C05D", + "isDelegable": false + }, + { + "id": "536170c8-2f32-474b-bda8-6c3dafbdfaf1", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Attester", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til attestering av virksomhet.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "8878ca8a-bf87-4f9a-9174-845a78397257", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Pensjon", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til pensjon.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "6F7F3B02-8B5A-4823-9468-0F4646D3A790", + "isDelegable": false + }, + { + "id": "f01bab66-ce19-432f-9d8f-85544281cbb5", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Tilskudd, støtte og erstatning", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til å søke tilskudd, støtte og erstatning.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "05b53fd5-5841-443c-829d-a2c1f0906546", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Foretaksskatt", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til skatt for foretak.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "7D32591D-34B7-4AFC-8AFA-013722F8C05D", + "isDelegable": false + }, + { + "id": "ca600de4-5c14-4fe2-a055-a7daffc87dcb", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Mine sider hos kommunen", + "description": "Denne fullmakten gir generell tilgang til tjenester av typen “mine side” tjenester hos kommuner.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "5295051b-aac7-4ded-a9fd-aabdba35fa67", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Lønn", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til lønn og honorar.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "6F7F3B02-8B5A-4823-9468-0F4646D3A790", + "isDelegable": false + }, + { + "id": "4e61ea85-73ac-4ff3-ba90-ac40e0b038c6", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Bærekraft", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til tiltak og rapportering på bærekraft.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "A8834A7C-ED89-4C73-B5D5-19A2347F3B13", + "isDelegable": false + }, + { + "id": "24f6639a-10f4-4caf-863c-adc619895f91", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Regnskap og øknomirapportering", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til regnskap og øknomirapportering som ikke tilhører skatt og merverdiavgift.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "7D32591D-34B7-4AFC-8AFA-013722F8C05D", + "isDelegable": false + }, + { + "id": "00629157-9374-4ed4-9e39-b12d9e57c2a7", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Helfotjenester med personopplysninger av særlig kategori", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til virksomhetens dialog med Helfo der bruker kan få tilgang til personopplysninger av særlig kategori.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "51d259c5-4149-4000-84fe-bd58062529d8", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Hovedadministrator", + "description": "Denne tilgangspakken gir bruker mulighet til å administrere alle tilganger for virksomheten.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "E4AE823F-41DB-46ED-873F-8A5D1378FFF8", + "isDelegable": false + }, + { + "id": "7ce979be-c686-43bf-be8c-c8ffac2bc552", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Ansettelsesforhold", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til ansettelsesforhold.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "6F7F3B02-8B5A-4823-9468-0F4646D3A790", + "isDelegable": false + }, + { + "id": "58763f4b-1519-49f2-af45-cd5ba22254a9", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Reviorattesterer", + "description": "Denne fullmakten gir tilgang til alle tjenester som krever revisorattestering.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "7D32591D-34B7-4AFC-8AFA-013722F8C05D", + "isDelegable": false + }, + { + "id": "06c781d4-6e9b-42d2-b231-d022bd0192c7", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Aksjer og eierforhold", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til aksjer og eierforhold.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "05ebb198-4dc2-4b4c-83d8-d7a036c95519", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Toll", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til toll og fortolling.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "7D32591D-34B7-4AFC-8AFA-013722F8C05D", + "isDelegable": false + }, + { + "id": "2ce97f2a-679f-488c-afec-dbd291e8a55b", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Renovasjon", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til renovasjon.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "A8834A7C-ED89-4C73-B5D5-19A2347F3B13", + "isDelegable": false + }, + { + "id": "a61c6bfa-a99c-4cdf-8bc9-de56cf0be69b", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Maskinlesbare hendelser", + "description": "Denne tilgangspakken gir fullmakter til å administrere tilgang til maskinlesbare hendelser.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "892E98C6-1696-46E7-9BB1-59C08761EC64", + "isDelegable": false + }, + { + "id": "c80e12d9-b755-4e0a-81a1-e08fd40dc489", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Ordinær post til virksomheten", + "description": "Denne fullmakten gir tilgang til all mottatt post som ikke innholder sensitiv/taushetsbelagt informasjon som sendes virksomheten. Fullmakten gis normalt til de i virksomheten som håndterer mottak av post.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "6F938DE8-34F2-4BAB-A0C6-3A3EB64AAD3B", + "isDelegable": false + }, + { + "id": "2a87bd18-4f3e-41ef-987e-e26d3cfc9cfd", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Permisjon og sykefravær", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til permisjon og sykefravær.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "6F7F3B02-8B5A-4823-9468-0F4646D3A790", + "isDelegable": false + }, + { + "id": "7266f6c3-b82b-4675-89e1-e80fdec5cb99", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Klientadminstrasjon for Regnskapsfører og Revisor", + "description": "Denne tilgangspakken gir bruker mulighet til å administrere tilgang til tjenester det er naturlig at regnskapsfører eller revisor utfører. Bruker kan administrere tilgang til tjenestene til ansatte hos regnskapsfører eller revisor på vegne av deres kunder.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "E4AE823F-41DB-46ED-873F-8A5D1378FFF8", + "isDelegable": false + }, + { + "id": "b0e7ffe2-d2d5-431b-96c7-e86deae98156", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Programmeringsgrensesnitt (API)", + "description": "Denne tilgangspakken gir fullmakter til å administrere tilgang til data og programmeringsgrensenitt (API) som benytter Maskinporten eller tilsvarende løsninger for APIsikring. ", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "892E98C6-1696-46E7-9BB1-59C08761EC64", + "isDelegable": false + }, + { + "id": "5ec8ac1b-6265-48fb-aa5d-fd1024d4d438", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Infrastruktur", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til virksomhetens infrastruktur.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "33b16201-4a65-4142-8d47-fee48680c4ab", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Post til virksomheten med taushetsbelagt innhold", + "description": "Denne fullmakten gir tilgang til all mottatt post som innholder sensitiv/taushetsbelagt informasjon som sendes virksomheten. Fullmakten gis normalt til de i virksomheten som håndterer mottak av post som har taushetsbelagt innhold.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "6F938DE8-34F2-4BAB-A0C6-3A3EB64AAD3B", + "isDelegable": false + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Package_eng.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Package_eng.json new file mode 100644 index 00000000..a84fc74f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Package_eng.json @@ -0,0 +1,326 @@ +[ + { + "id": "25be54f6-370b-40ec-8c13-0d41a2f61e1d", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Environmental cleanup, environmental remediation, and similar", + "description": "This access package provides authorizations for services related to environmental cleanup, environmental remediation, and similar.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "A8834A7C-ED89-4C73-B5D5-19A2347F3B13", + "isDelegable": false + }, + { + "id": "b188e64c-93d4-4d2d-aa4e-0e84069eacf0", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "General health services", + "description": "This authorization grants access to standard services related to the organization’s dialogue with Helfo, where users can access personal data about individuals reported.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "5a1601c7-8d5d-4a4b-a185-19a35cf08e54", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Statistical reporting", + "description": "This authorization grants access to all mandatory statistical reporting.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "e7dc823f-1b4c-4e66-bcaa-1a94f17364b3", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Document-based supervision", + "description": "This access package provides authorizations for services related to document-based supervision.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "f9420288-3ff4-47b1-b5c3-1e230f70229e", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Value-added tax", + "description": "This access package provides authorizations for services related to value-added tax.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "7D32591D-34B7-4AFC-8AFA-013722F8C05D", + "isDelegable": false + }, + { + "id": "e6d35dae-c9a6-42af-875e-201667767526", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Police and judiciary", + "description": "Denne tilgangspakken gir fullmakter til tjenester knyttet til virksomhetens dialog om juridiske forhold med politi og jusitsmyndigheter. ", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "15981458-26da-4098-8eca-27fa02ff39cc", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Customer administrator", + "description": "This access package allows the user to manage access received for their clients to employees within their own organization.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "E4AE823F-41DB-46ED-873F-8A5D1378FFF8", + "isDelegable": false + }, + { + "id": "7ec10749-ec63-473f-b8f3-329f9b984bf7", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Accident and occupational injury", + "description": "This access package provides authorizations for services related to accidents and occupational injuries.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "A8834A7C-ED89-4C73-B5D5-19A2347F3B13", + "isDelegable": false + }, + { + "id": "d55263a6-2839-4207-abad-3813baad0ec5", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Start, operate, change, and liquidate business", + "description": "This access package provides authorizations for services related to starting, changing, and liquidating a business.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "65358653-2639-499d-ae11-4053bf55d094", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Access control", + "description": "This access package allows the user to forward access they have received to others within the organization.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "E4AE823F-41DB-46ED-873F-8A5D1378FFF8", + "isDelegable": false + }, + { + "id": "932501b0-7a7b-4bca-b761-4b705e3e5268", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Research", + "description": "This authorization grants access to services related to research. Changes in regulations or new digital services may affect the permissions granted by this authorization.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "4edc0b48-ed79-46a4-9dc7-5158eaf3cd0f", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Act on behalf of the company's clients", + "description": "This access package grants permissions for a supplier company to perform services on behalf of its clients via an API. The authorization can be given to a business user associated with the supplier's organization number. With this authorization, the business user can perform all services that the supplier has access to perform on behalf of all its clients. The authorization does not give the business user access to perform services on behalf of the supplier itself, only the clients of the supplier. This authorization was previously named 'ECKEYROLE', and its necessity must be assessed against new solutions for system users.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "892E98C6-1696-46E7-9BB1-59C08761EC64", + "isDelegable": false + }, + { + "id": "90dff34b-6a01-438c-ab62-51d9640a9b2f", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Patent, trademark, and design", + "description": "This access package provides authorizations for services related to patents, trademarks, and design.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "5ee1f6a5-8056-481f-91b4-56892ccaf2a0", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Tax base", + "description": "This access package provides authorizations for services related to the collection of tax base information.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "7D32591D-34B7-4AFC-8AFA-013722F8C05D", + "isDelegable": false + }, + { + "id": "536170c8-2f32-474b-bda8-6c3dafbdfaf1", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Certificates", + "description": "This access package provides authorizations for services related to business certification.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "8878ca8a-bf87-4f9a-9174-845a78397257", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Pension", + "description": "This access package provides authorizations for services related to pensions.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "6F7F3B02-8B5A-4823-9468-0F4646D3A790", + "isDelegable": false + }, + { + "id": "f01bab66-ce19-432f-9d8f-85544281cbb5", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Grants, subsidies, and compensation", + "description": "This access package provides authorizations for services related to applying for grants, subsidies, and compensation.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "05b53fd5-5841-443c-829d-a2c1f0906546", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Corporate tax", + "description": "This access package provides authorizations for services related to corporate tax.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "7D32591D-34B7-4AFC-8AFA-013722F8C05D", + "isDelegable": false + }, + { + "id": "ca600de4-5c14-4fe2-a055-a7daffc87dcb", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "My pages at the municipality", + "description": "This authorization provides general access to 'my page' type services at municipalities.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "5295051b-aac7-4ded-a9fd-aabdba35fa67", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Salary", + "description": "This access package provides authorizations for services related to salaries and fees.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "6F7F3B02-8B5A-4823-9468-0F4646D3A790", + "isDelegable": false + }, + { + "id": "4e61ea85-73ac-4ff3-ba90-ac40e0b038c6", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Sustainability", + "description": "This access package provides authorizations for services related to sustainability measures and reporting.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "A8834A7C-ED89-4C73-B5D5-19A2347F3B13", + "isDelegable": false + }, + { + "id": "24f6639a-10f4-4caf-863c-adc619895f91", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Accounting and financial reporting", + "description": "This access package provides authorizations for services related to accounting and financial reporting not related to taxes and VAT.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "7D32591D-34B7-4AFC-8AFA-013722F8C05D", + "isDelegable": false + }, + { + "id": "00629157-9374-4ed4-9e39-b12d9e57c2a7", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Health services with special category personal data", + "description": "This access package provides authorizations for services related to the organization's dialogue with Helfo, where users can access special category personal data.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "51d259c5-4149-4000-84fe-bd58062529d8", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Main administrator", + "description": "This access package allows the user to manage all access permissions for the organization.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "E4AE823F-41DB-46ED-873F-8A5D1378FFF8", + "isDelegable": false + }, + { + "id": "7ce979be-c686-43bf-be8c-c8ffac2bc552", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Employment relationship", + "description": "This access package provides authorizations for services related to employment relationships.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "6F7F3B02-8B5A-4823-9468-0F4646D3A790", + "isDelegable": false + }, + { + "id": "58763f4b-1519-49f2-af45-cd5ba22254a9", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Auditor certification", + "description": "This authorization provides access to all services that require auditor certification.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "7D32591D-34B7-4AFC-8AFA-013722F8C05D", + "isDelegable": false + }, + { + "id": "06c781d4-6e9b-42d2-b231-d022bd0192c7", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Shares and ownership", + "description": "This access package provides authorizations for services related to shares and ownership.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "05ebb198-4dc2-4b4c-83d8-d7a036c95519", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Customs", + "description": "This access package provides authorizations for services related to customs and clearance.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "7D32591D-34B7-4AFC-8AFA-013722F8C05D", + "isDelegable": false + }, + { + "id": "2ce97f2a-679f-488c-afec-dbd291e8a55b", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Waste management", + "description": "This access package provides authorizations for services related to waste management.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "A8834A7C-ED89-4C73-B5D5-19A2347F3B13", + "isDelegable": false + }, + { + "id": "a61c6bfa-a99c-4cdf-8bc9-de56cf0be69b", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Machine-readable events", + "description": "This access package provides authorizations to manage access to machine-readable events.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "892E98C6-1696-46E7-9BB1-59C08761EC64", + "isDelegable": false + }, + { + "id": "c80e12d9-b755-4e0a-81a1-e08fd40dc489", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Regular mail to the company", + "description": "This authorization provides access to all received mail that does not contain sensitive or confidential information sent to the company. The authorization is typically granted to those in the organization responsible for handling incoming mail.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "6F938DE8-34F2-4BAB-A0C6-3A3EB64AAD3B", + "isDelegable": false + }, + { + "id": "2a87bd18-4f3e-41ef-987e-e26d3cfc9cfd", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Leave and sick leave", + "description": "This access package provides authorizations for services related to leave and sick leave.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "6F7F3B02-8B5A-4823-9468-0F4646D3A790", + "isDelegable": false + }, + { + "id": "7266f6c3-b82b-4675-89e1-e80fdec5cb99", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Client management for Accountant and Auditor", + "description": "This access package allows the user to manage access to services that accountants or auditors typically perform. The user can manage access to these services for employees at accounting or auditing firms on behalf of their clients.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "E4AE823F-41DB-46ED-873F-8A5D1378FFF8", + "isDelegable": false + }, + { + "id": "b0e7ffe2-d2d5-431b-96c7-e86deae98156", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Application Programming Interface (API)", + "description": "Denne tilgangspakken gir fullmakter til å administrere tilgang til data og programmeringsgrensenitt (API) som benytter Maskinporten eller tilsvarende løsninger for APIsikring. ", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "892E98C6-1696-46E7-9BB1-59C08761EC64", + "isDelegable": false + }, + { + "id": "5ec8ac1b-6265-48fb-aa5d-fd1024d4d438", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Infrastructure", + "description": "This access package provides authorizations for services related to the organization's infrastructure.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "3F5DF819-7ACA-49E1-BF6F-3E8F120F20D1", + "isDelegable": false + }, + { + "id": "33b16201-4a65-4142-8d47-fee48680c4ab", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Mail to the company with confidential content", + "description": "This authorization provides access to all received mail containing sensitive or confidential information sent to the company. The authorization is typically granted to those in the organization responsible for handling mail with confidential content.", + "entitytypeid": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "areaid": "6F938DE8-34F2-4BAB-A0C6-3A3EB64AAD3B", + "isDelegable": false + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Provider.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Provider.json new file mode 100644 index 00000000..b94f33b9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Provider.json @@ -0,0 +1,318 @@ +[ + { + "id": "9baceae9-d600-41f0-952a-9e367e032fc8", + "name": "Arbeids- og velferdsetaten (NAV)" + }, + { + "id": "aa802807-6355-4767-930a-4ee22d02d1c4", + "name": "Arbeidstilsynet" + }, + { + "id": "901a46e3-99ce-43bb-bdda-352fad45078f", + "name": "Avinor AS" + }, + { + "id": "2f41c948-1da8-4784-802c-534dc3a2906b", + "name": "Barne-, ungdoms- og familiedirektoratet" + }, + { + "id": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Brønnøysundregistrene" + }, + { + "id": "9f3a7511-a578-4a40-beb7-eab69beb55a3", + "name": "Datatilsynet" + }, + { + "id": "dac9eaf4-d5b9-4c14-a6f2-ab0c5698c930", + "name": "Det norske veritas certification AS" + }, + { + "id": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Digdir" + }, + { + "id": "50b5e2c3-840c-4462-b140-8865740c0121", + "name": "Direktoratet for byggkvalitet" + }, + { + "id": "20e58977-d65b-40a6-9b14-53152b829f01", + "name": "Direktoratet for e-helse" + }, + { + "id": "b2199137-b758-4e14-ae17-a685d3c357fe", + "name": "Direktoratet for høyere utdanning og kompetanse" + }, + { + "id": "416a2343-5f3e-4623-9ef7-5c691d86e60e", + "name": "Direktoratet for medisinske produkter" + }, + { + "id": "a3cb52af-03ce-4091-a165-b1fad19e3c61", + "name": "Direktoratet for mineralforvaltning med Bergmesteren for Svalbard" + }, + { + "id": "d1841fa8-94f3-4e29-a9a6-d4f62c309f69", + "name": "Direktoratet for samfunnssikkerhet og beredskap (DSB)" + }, + { + "id": "81750d91-e798-4821-b6a2-eac307462f0e", + "name": "Direktoratet for strålevern og atomsikkerhet" + }, + { + "id": "73a50496-111b-4aab-8888-a41089c400c3", + "name": "Domstolene" + }, + { + "id": "7e640f81-25d4-44ad-af1c-3e24ba603d49", + "name": "Energidepartementet" + }, + { + "id": "2e7c7cfc-4c60-4588-a1d0-a9df5b0b7671", + "name": "Enova" + }, + { + "id": "f3919d0d-d0bc-4938-ae82-24b3bcc1843d", + "name": "Fellesordningen for AFP" + }, + { + "id": "5a11460c-815a-4754-ae72-4fd09d04e378", + "name": "Finanstilsynet" + }, + { + "id": "2f91e952-3b21-4891-a011-07d466e7fe4f", + "name": "Fiskeridirektoratet" + }, + { + "id": "e2ae1015-fd67-4275-96f9-462d63d20f4f", + "name": "Folkehelseinstituttet" + }, + { + "id": "66af2a9f-bf34-4337-8dc0-a6163736d18b", + "name": "Forsvaret" + }, + { + "id": "9a3cbf4b-ce72-4448-a4cb-403ed6366e81", + "name": "Fylkeskommunene" + }, + { + "id": "1fc49704-648d-4727-a68b-eb7216a989ce", + "name": "Garantikassen for fiskere" + }, + { + "id": "0d14ff8c-ebda-4852-9cd3-e300b93e3a08", + "name": "Helsedirektoratet" + }, + { + "id": "e60a0cf3-0f49-4fa4-8f0d-7280ed83b25c", + "name": "Helsedirektoratet (godkjenning av utenlandske yrkeskvalifikasjoner)" + }, + { + "id": "253d92ef-46df-47fb-990b-3a7595c0d593", + "name": "Høgskolen i Bergen" + }, + { + "id": "25a5a805-739a-4ae2-9c3d-98b4d0455210", + "name": "Høyesterett" + }, + { + "id": "6716a265-2fee-452b-b5d3-efaea823e9f5", + "name": "Husbanken" + }, + { + "id": "64d8279b-9d94-44d9-a533-e759db58f8e0", + "name": "Kartverket" + }, + { + "id": "6ea6ba38-ec86-45d8-825c-918116e89789", + "name": "Klima- og miljødepartementet" + }, + { + "id": "7e17dc9d-7f28-45f7-a086-402f677e699b", + "name": "Kommunene" + }, + { + "id": "0ec9ee75-a959-4b2a-b25a-4c9b263b7f1d", + "name": "Konkurransetilsynet" + }, + { + "id": "03d8a31a-558e-4f3b-8e4c-849650e609c3", + "name": "Kultur- og likestillingsdepartementet" + }, + { + "id": "a2c94798-0ebc-43f9-8ebf-98e58d55e0df", + "name": "Kulturdirektoratet" + }, + { + "id": "42d702cd-a3e4-496a-8187-660ae77428de", + "name": "Kystverket" + }, + { + "id": "ac9d20f5-57b2-4845-9286-141c81e01985", + "name": "Landbruks- og matdepartementet" + }, + { + "id": "d78d7fe0-c354-412a-9914-35b4543549b0", + "name": "Landbruksdirektoratet" + }, + { + "id": "5612ca66-e5b1-4972-8e91-b8722c8408c5", + "name": "Lotteri- og stiftelsestilsynet" + }, + { + "id": "b26127f4-2689-4b75-be84-490c5b9dc8ea", + "name": "Luftfartstilsynet" + }, + { + "id": "76920c46-3137-4e1f-854d-c639aebdc05b", + "name": "Mattilsynet" + }, + { + "id": "93d981ec-60ed-4e57-8ec3-dc73cb99e233", + "name": "Medietilsynet" + }, + { + "id": "ab721d0e-3587-4354-a1e2-93eefe788c80", + "name": "Mesterbrevnemnda " + }, + { + "id": "ccc4cd1b-335e-4987-8b50-af2b04a83c42", + "name": "Miljødirektoratet" + }, + { + "id": "3fcf54c3-91ed-4b9b-935b-ec5751f34cb6", + "name": "Nærings- og fiskeridepartementet" + }, + { + "id": "8f38238d-1f77-4c67-a1e4-032bdde81013", + "name": "Nasjonal kommunikasjons­myndighet (Nkom)" + }, + { + "id": "0b1ac5d5-83d1-4c41-9414-6fee4d4327b6", + "name": "Nasjonal sikkerhetsmyndighet (NSM)" + }, + { + "id": "11bc7d28-84e2-4860-9a90-d5f3671f15e4", + "name": "Nasjonalbiblioteket" + }, + { + "id": "15c8b665-22ec-411b-844e-b9289aec5360", + "name": "Norges geologiske undersøkelse" + }, + { + "id": "2718b5d2-20be-4065-8015-ebb6c75bd23e", + "name": "Norges Handelshøyskole" + }, + { + "id": "dc792dcd-89ca-4a48-9f44-b44e80eab4c3", + "name": "Norges sjømatråd" + }, + { + "id": "8c998624-390a-4651-830c-13acea6141cf", + "name": "Norges vassdrags- og energidirektorat (NVE)" + }, + { + "id": "0ddf8040-b602-494a-a9ad-820e9472fa8f", + "name": "Norsk pasientskadeerstatning" + }, + { + "id": "e2badfb8-090f-4baf-a550-eacd09bcb043", + "name": "Norsk rikskringkasting AS" + }, + { + "id": "9f3bf332-2c9e-45b3-9b3a-1cea795dfca0", + "name": "Oljedirektoratet" + }, + { + "id": "f6e701a1-cfaf-4c3f-9829-7fa8d30ae78b", + "name": "Patentstyret" + }, + { + "id": "34cc0a83-b9f7-42d0-ae1a-7417430113ad", + "name": "Pensjonstrygden for sjømenn" + }, + { + "id": "6bf70088-4dd4-48c2-8157-8b5b1b0fadbb", + "name": "Petroleumstilsynet" + }, + { + "id": "3fa85269-37f8-42d6-992c-b8fd4f6319e5", + "name": "Politiet" + }, + { + "id": "fda4dda1-cfff-42e9-bb77-115dee49c057", + "name": "Reisegarantifondet" + }, + { + "id": "b89f7e5d-d447-4c42-9709-e1cc23d4fc36", + "name": "REK - Regionale komiteer for medisinsk og helsefaglig forskningsetikk" + }, + { + "id": "ebb9f8a2-60c9-4c5d-81bc-0b945d039079", + "name": "Samferdselsdepartementet" + }, + { + "id": "9810c69f-3b3e-4fdb-9753-fed8d10eab01", + "name": "Sjøfartsdirektoratet" + }, + { + "id": "ac991c6f-e404-4c8a-82ab-94c2f772cd00", + "name": "Skatteetaten" + }, + { + "id": "a5bf45da-e870-49dc-adde-65ce208063b5", + "name": "Skipsregistrene" + }, + { + "id": "4853dd4a-8d67-4621-97df-d27753094076", + "name": "Statens arbeidsmiljøinstitutt" + }, + { + "id": "84350c52-76e6-47f4-bb57-47d16c6dd0ff", + "name": "Statens jernbanetilsyn" + }, + { + "id": "8d92eda2-e2a9-4ad0-b55d-9dd86b0e155c", + "name": "Statens pensjonskasse" + }, + { + "id": "f52835a4-61a6-4088-8992-3d84216c52bf", + "name": "Statens sivilrettsforvaltning" + }, + { + "id": "d1e85a31-38c3-45a4-bbb3-f5ab42af32f6", + "name": "Statens vegvesen" + }, + { + "id": "c719140a-9066-47af-95b3-cdaf160a0024", + "name": "Statistisk sentralbyrå" + }, + { + "id": "5e8b8e4c-21e8-4fbb-bedd-944e1ee3620f", + "name": "Statsforvalteren" + }, + { + "id": "a4fcc22c-a2f6-48c6-8653-9c238f012965", + "name": "Sysselmannen på Svalbard" + }, + { + "id": "5db877e5-71ee-48d1-a978-c38c4d9ee93d", + "name": "Tilsynsrådet for advokatvirksomhet" + }, + { + "id": "f0092d49-87f8-4f9e-a381-b4d0cdf968da", + "name": "Tolletaten" + }, + { + "id": "0dd397c3-1755-4551-8498-a94e6eae311f", + "name": "Utdanningsdirektoratet" + }, + { + "id": "fe0a796d-a63d-462d-b45c-b7e9b0f90d0c", + "name": "Utenriksdepartementet" + }, + { + "id": "3cadedcb-d412-47b7-b9d4-77d8fcd6bbb6", + "name": "Utlendingsdirektoratet" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Role.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Role.json new file mode 100644 index 00000000..91b02696 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Role.json @@ -0,0 +1,281 @@ +[ + { + "id": "66ad5542-4f4a-4606-996f-18690129ce00", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Administrativ enhet - offentlig sektor", + "code": "ADOS", + "description": "Administrativ enhet - offentlig sektor", + "urn": "brreg:role:ados" + }, + { + "id": "585ac6f7-aef0-47ca-8597-1ac7e63a58ce", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Nestleder", + "code": "NEST", + "description": "Styremedlem som opptrer som styreleder ved leders fravær", + "urn": "brreg:role:nest" + }, + { + "id": "a715f610-4096-49bf-9b59-1c9ec81966f5", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Inngår i kontorfellesskap", + "code": "KTRF", + "description": "Inngår i kontorfellesskap", + "urn": "brreg:role:ktrf" + }, + { + "id": "ffa924c7-45ba-469b-9657-27bbb66002d4", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Organisasjonsledd i offentlig sektor", + "code": "ORGL", + "description": "Organisasjonsledd i offentlig sektor", + "urn": "brreg:role:orgl" + }, + { + "id": "792c01dc-29c9-4dec-ae6d-28cff0b04678", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Særskilt oppdelt enhet", + "code": "OPMV", + "description": "Særskilt oppdelt enhet", + "urn": "brreg:role:opmv" + }, + { + "id": "6795081e-e69c-4efd-8d42-2bfccd346777", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Klientadministrator", + "code": "KLA", + "description": "Gir mulighet til å administrere tilgang til tjenester videre til ansatte på vegne av deres kunder", + "urn": "digdir:role:kla" + }, + { + "id": "857bb1fb-fcaa-4a3c-859d-319032626539", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Daglig leder", + "code": "DAGL", + "description": "Fysisk- eller juridisk person som har ansvaret for den daglige driften i en virksomhet", + "urn": "brreg:role:dagl" + }, + { + "id": "6c1fbcb9-609c-4ab8-a048-3be8d7da5a82", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Tilgangsstyrer", + "code": "TS", + "description": "Gir mulighet til å gi videre tilganger for virksomheten som man selv har mottatt", + "urn": "digdir:role:ts" + }, + { + "id": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Deltaker med proratarisk ansvar (delt ansvar)", + "code": "DTPR", + "description": "Fysisk- eller juridisk person som har personlig ansvar for deler av selskapets forpliktelser", + "urn": "brreg:role:dtpr" + }, + { + "id": "ba1c261c-20ec-44e2-9e0b-4e7cfe9f36e7", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Hovedadministrator", + "code": "HA", + "description": "Gir mulighet til å administrere alle tilganger for virksomheten", + "urn": "digdir:role:ha" + }, + { + "id": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Innehaver", + "code": "INNH", + "description": "Fysisk person som er eier av et enkeltpersonforetak", + "urn": "brreg:role:innh" + }, + { + "id": "5ba618b1-e6a8-4d84-bc93-5623cf680bc0", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Kundeadministrator", + "code": "KUA", + "description": " Gir mulighet til å administrere tilganger man har mottatt for sine kunder til ansatte i egen virksomheten", + "urn": "digdir:role:kua" + }, + { + "id": "77778386-d57f-4378-ac31-5f260b407079", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Deltaker med solidarisk ansvar (fullt ansvarlig)", + "code": "DTSO", + "description": "Fysisk- eller juridisk person som har ubegrenset, personlig ansvar for selskapets forpliktelser", + "urn": "brreg:role:dtso" + }, + { + "id": "748ec709-78d6-4b13-a3f9-5fb8e783e679", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Varamedlem", + "code": "VARA", + "description": "Fysisk- eller juridisk person som er stedfortreder for et styremedlem", + "urn": "brreg:role:vara" + }, + { + "id": "197fbfbb-d867-4c0f-8d4a-62e9287e340d", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Observatør", + "code": "OBS", + "description": "Fysisk person som deltar i styremøter i en virksomhet, men uten stemmerett", + "urn": "brreg:role:obs" + }, + { + "id": "de42ae15-c265-42b3-8060-64c779684902", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Styremedlem", + "code": "MEDL", + "description": "Fysisk- eller juridisk person som inngår i et styre", + "urn": "brreg:role:medl" + }, + { + "id": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Styrets leder", + "code": "LEDE", + "description": "Fysisk- eller juridisk person som er styremedlem og leder et styre", + "urn": "brreg:role:lede" + }, + { + "id": "38453a5d-ff7d-44eb-ba9a-92b1cd7fc98c", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Den personlige konkursen angår", + "code": "KENK", + "description": "Den personlige konkursen angår", + "urn": "brreg:role:kenk" + }, + { + "id": "6adad370-5524-4438-a811-932d27f655b9", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Norsk representant for utenlandsk enhet", + "code": "REPR", + "description": "Fysisk- eller juridisk person som har ansvaret for den daglige driften i Norge", + "urn": "brreg:role:repr" + }, + { + "id": "49def9e7-9ea4-4f78-9013-98c9af5918d4", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Kontaktperson", + "code": "KONT", + "description": "Fysisk person som representerer en virksomhet", + "urn": "brreg:role:kont" + }, + { + "id": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Bestyrende reder", + "code": "BEST", + "description": "Bestyrende reder", + "urn": "brreg:role:best" + }, + { + "id": "d4f78604-db47-4ff7-8537-a4e7318e8c11", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Eierkommune", + "code": "EIKM", + "description": "Eierkommune", + "urn": "brreg:role:eikm" + }, + { + "id": "0610a058-2046-4fb7-8566-a7cef6515baf", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Bostyrer", + "code": "BOBE", + "description": "Bestyrer av et konkursbo eller dødsbo som er under offentlig skiftebehandling", + "urn": "brreg:role:bobe" + }, + { + "id": "e4674211-034a-45f3-99ac-b2356984968a", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Helseforetak", + "code": "HLSE", + "description": "Helseforetak", + "urn": "brreg:role:hlse" + }, + { + "id": "63b5255d-4776-4ba1-bed2-c950bb5b04ab", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Revisor", + "code": "REVI", + "description": "Revisor", + "urn": "brreg:role:revi" + }, + { + "id": "e207eaf7-afde-452c-a1ba-ce7ba9305bcc", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Forretningsfører", + "code": "FFØR", + "description": "Forretningsfører", + "urn": "brreg:role:ffør" + }, + { + "id": "1005e523-9423-4037-92e7-d23dee6a9813", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Komplementar", + "code": "KOMP", + "description": "Komplementar", + "urn": "brreg:role:komp" + }, + { + "id": "e4df5308-56ed-4301-ae53-ef67da3a57e9", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Konkursdebitor", + "code": "KDEB", + "description": "Konkursdebitor", + "urn": "brreg:role:kdeb" + }, + { + "id": "3bdd603a-dbe0-4caa-bc97-f0b6a1675b15", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Inngår i kirkelig fellesråd", + "code": "KIRK", + "description": "Inngår i kirkelig fellesråd", + "urn": "brreg:role:kirk" + }, + { + "id": "38c368c1-c9f4-4b01-a296-f1ef7e466c13", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Opplysninger om foretaket i hjemlandet", + "code": "HFOR", + "description": "Opplysninger om foretaket i hjemlandet", + "urn": "brreg:role:hfor" + }, + { + "id": "303d78e8-a658-454d-88ae-f836596982c7", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Regnskapsfører", + "code": "REGN", + "description": "Regnskapsfører", + "urn": "brreg:role:regn" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/RoleMap.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/RoleMap.json new file mode 100644 index 00000000..f0d6d5a2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/RoleMap.json @@ -0,0 +1,17 @@ +[ + { + "id":"402A562A-C18C-4833-A5E5-0E5752991E49", + "hasroleid":"857bb1fb-fcaa-4a3c-859d-319032626539", + "getroleid":"ba1c261c-20ec-44e2-9e0b-4e7cfe9f36e7" + }, + { + "id":"644BE38D-DC44-4522-A00A-1DA147DA7691", + "hasroleid":"857bb1fb-fcaa-4a3c-859d-319032626539", + "getroleid":"6c1fbcb9-609c-4ab8-a048-3be8d7da5a82" + }, + { + "id":"45922659-CE77-4D53-9F28-A9CAC3531F3C", + "hasroleid":"72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "getroleid":"6c1fbcb9-609c-4ab8-a048-3be8d7da5a82" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/RolePackage.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/RolePackage.json new file mode 100644 index 00000000..c7b3e03e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/RolePackage.json @@ -0,0 +1,2530 @@ +[ + { + "id": "12e254b9-3dd7-485a-9044-002a9a4ca236", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "5ec8ac1b-6265-48fb-aa5d-fd1024d4d438", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "ce8a6e0b-947e-4559-b360-00930935ace4", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "06c781d4-6e9b-42d2-b231-d022bd0192c7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "7161beda-9593-4909-a261-00b1b6a5e9b8", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "90dff34b-6a01-438c-ab62-51d9640a9b2f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "9a24f02f-c430-445d-b6eb-0171deb50cd8", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "25be54f6-370b-40ec-8c13-0d41a2f61e1d", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "bb7a09e6-e6f2-4101-8147-01b8d2536201", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "90dff34b-6a01-438c-ab62-51d9640a9b2f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "e76bbbca-19ec-49f1-91a6-02699da53dd1", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "7266f6c3-b82b-4675-89e1-e80fdec5cb99", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "377dc2ff-3a8a-4705-b413-045fd3b56027", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "05ebb198-4dc2-4b4c-83d8-d7a036c95519", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "658393d5-a219-4133-bc59-04701b4a2548", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "2a87bd18-4f3e-41ef-987e-e26d3cfc9cfd", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "c00ed31d-c877-45f4-8aef-04bad0017377", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "ca600de4-5c14-4fe2-a055-a7daffc87dcb", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "5350190c-ab5a-478f-853f-05381fc15654", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "58763f4b-1519-49f2-af45-cd5ba22254a9", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "733c7094-d1b1-415b-8159-059d3a642b41", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "d55263a6-2839-4207-abad-3813baad0ec5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "263d03bf-df31-40cb-a208-05f0a3ca10af", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "b0e7ffe2-d2d5-431b-96c7-e86deae98156", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "55a755b5-2ebd-4770-b7f1-0614277f784a", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "536170c8-2f32-474b-bda8-6c3dafbdfaf1", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "6b1b1041-30b7-4bd5-90b8-068c8b8c2f45", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "00629157-9374-4ed4-9e39-b12d9e57c2a7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "18628b74-c052-47f0-9ce6-077bfcfd2db0", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "51d259c5-4149-4000-84fe-bd58062529d8", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "2d9688c4-dbad-4b13-9f29-084407dadfc3", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "c80e12d9-b755-4e0a-81a1-e08fd40dc489", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "b9d8bd86-1805-4971-982e-08e97b8b6dbd", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "4e61ea85-73ac-4ff3-ba90-ac40e0b038c6", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "a4312800-8047-4b88-b456-0a6b918ec62b", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "536170c8-2f32-474b-bda8-6c3dafbdfaf1", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "48e2923a-efc4-454d-8e10-0b7c35942546", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "15981458-26da-4098-8eca-27fa02ff39cc", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "3e87a996-5d7c-422d-bb43-0bac00aa87fc", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "15981458-26da-4098-8eca-27fa02ff39cc", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "cee4a305-912e-4078-bbad-0bb5d50a13a8", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "932501b0-7a7b-4bca-b761-4b705e3e5268", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "d45c8fd2-2002-44b2-be92-0c1fc5235969", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "90dff34b-6a01-438c-ab62-51d9640a9b2f", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "8bb66eca-d62c-4043-98b0-0d91c927056c", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "7266f6c3-b82b-4675-89e1-e80fdec5cb99", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "c87774ab-6770-49c9-baad-0e0d2bafdb0b", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "c80e12d9-b755-4e0a-81a1-e08fd40dc489", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "099fdc6f-8a25-44c1-9968-0e885363aad3", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "51d259c5-4149-4000-84fe-bd58062529d8", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "df5a253a-7eb5-4194-85e8-0f4610dfc9a5", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "536170c8-2f32-474b-bda8-6c3dafbdfaf1", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "ab08db68-96b6-47a3-866b-0f5d23466be9", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "ca600de4-5c14-4fe2-a055-a7daffc87dcb", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "fe26088d-ec1c-45ad-aabf-0fbcb8db4779", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "b0e7ffe2-d2d5-431b-96c7-e86deae98156", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "61b83c8e-8b02-436a-b588-10086b630835", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "4edc0b48-ed79-46a4-9dc7-5158eaf3cd0f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "9d5c92d1-5c34-41f4-8634-1136568e0dd1", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "00629157-9374-4ed4-9e39-b12d9e57c2a7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "b1d96ded-5783-4810-aa2e-1225889c09b6", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "f01bab66-ce19-432f-9d8f-85544281cbb5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "bcd57d8e-986b-4107-9a7a-12eed650bb4e", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "7ec10749-ec63-473f-b8f3-329f9b984bf7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "15922974-a203-4fc0-957a-14dc1c0bc9b7", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "7ce979be-c686-43bf-be8c-c8ffac2bc552", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "03744f55-b80f-47e0-8b21-14e76d4385dc", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "90dff34b-6a01-438c-ab62-51d9640a9b2f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "061853c8-4d2f-4d7d-b469-1617edcb3448", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "15981458-26da-4098-8eca-27fa02ff39cc", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "d64cae4b-75aa-4cac-9a3f-162d538b4cf6", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "51d259c5-4149-4000-84fe-bd58062529d8", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "6a514112-305c-4adc-a4fb-1647e525c193", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "15981458-26da-4098-8eca-27fa02ff39cc", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f9ee0672-39ad-40cf-a30b-17335f79979a", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "4edc0b48-ed79-46a4-9dc7-5158eaf3cd0f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "a561f9de-a292-413f-b93b-175779bf5935", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "5ee1f6a5-8056-481f-91b4-56892ccaf2a0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "ef867164-0fd7-4b38-9a3c-1850f4f232c5", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "06c781d4-6e9b-42d2-b231-d022bd0192c7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "df167cef-9ecf-40c1-9b8f-18e22af8a268", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "536170c8-2f32-474b-bda8-6c3dafbdfaf1", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "caf9e1a6-aeb5-4fd0-9c6c-194d3db83c18", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "7ce979be-c686-43bf-be8c-c8ffac2bc552", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "747ed2a6-e954-4f28-995a-1a53867c3b94", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "2a87bd18-4f3e-41ef-987e-e26d3cfc9cfd", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "bf2d6493-cce9-4922-abee-1a8c7413455e", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "58763f4b-1519-49f2-af45-cd5ba22254a9", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "83fbf3cd-5475-4cb1-8d45-1b6c38255282", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "7ec10749-ec63-473f-b8f3-329f9b984bf7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "a352f8b0-5307-429e-91bc-1b9d71732840", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "51d259c5-4149-4000-84fe-bd58062529d8", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "eecca6ae-184b-462e-b99a-1be29338494a", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "536170c8-2f32-474b-bda8-6c3dafbdfaf1", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "58f617b7-4d49-425d-9361-1eb41a09bb5d", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "7ce979be-c686-43bf-be8c-c8ffac2bc552", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "5b9d3d22-a85f-4df9-ad25-1eead8c8dd3a", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "65358653-2639-499d-ae11-4053bf55d094", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "ecd24734-471e-4abf-a766-2079d0a9b784", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "05ebb198-4dc2-4b4c-83d8-d7a036c95519", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "023c424d-751c-450f-aa8f-209e204fd25e", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "5ee1f6a5-8056-481f-91b4-56892ccaf2a0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "ecbc6e76-a02c-4826-8977-22debc469df2", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "e6d35dae-c9a6-42af-875e-201667767526", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "108dc74b-2d15-4aa5-b142-2442cafbd233", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "b188e64c-93d4-4d2d-aa4e-0e84069eacf0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "68e3f2a1-0f84-49bc-b190-25e049430805", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "5295051b-aac7-4ded-a9fd-aabdba35fa67", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "5f45f4c7-4337-4170-bd03-260b1194f1eb", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "e7dc823f-1b4c-4e66-bcaa-1a94f17364b3", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "3052cb7c-b2bd-4b99-ae07-261d2a5da1ff", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "d55263a6-2839-4207-abad-3813baad0ec5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "8fcfb49c-954d-4adc-a68e-264989cc8d4f", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "7ce979be-c686-43bf-be8c-c8ffac2bc552", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "1d77a27d-13e1-4382-829b-26a4bdaf4650", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "b0e7ffe2-d2d5-431b-96c7-e86deae98156", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "50453693-08b4-47be-a595-270d13ebd1b4", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "90dff34b-6a01-438c-ab62-51d9640a9b2f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "542de7d0-2a4c-467c-995d-278231e22414", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "2ce97f2a-679f-488c-afec-dbd291e8a55b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "9f18459d-72d2-4fea-ba62-2838ade1a746", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "5a1601c7-8d5d-4a4b-a185-19a35cf08e54", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "18520b04-8849-46db-a79a-292a4e9104aa", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "8878ca8a-bf87-4f9a-9174-845a78397257", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "700afdf6-6342-46c5-993d-2a383d1169f4", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "2a87bd18-4f3e-41ef-987e-e26d3cfc9cfd", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "95b87b44-a82e-4e39-8cb2-2c2a40d46801", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "b0e7ffe2-d2d5-431b-96c7-e86deae98156", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "d949d63f-69bc-4ec7-88d1-2d79ca14d6fb", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "51d259c5-4149-4000-84fe-bd58062529d8", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "dbcb0f58-1af7-4aba-b0a4-2e1673bf9a18", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "4edc0b48-ed79-46a4-9dc7-5158eaf3cd0f", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "8afe073d-7cbf-407e-9a61-2f92b9c66c59", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "05b53fd5-5841-443c-829d-a2c1f0906546", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "e5e2df62-11b5-4714-a3c8-304b3be7e68b", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "f01bab66-ce19-432f-9d8f-85544281cbb5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "55419236-de8e-49a2-8805-307d53ed5f02", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "25be54f6-370b-40ec-8c13-0d41a2f61e1d", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "98d3cb18-aed1-4c71-a94d-32520f3f0a76", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "2a87bd18-4f3e-41ef-987e-e26d3cfc9cfd", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "35f929c1-dbb9-4681-9859-32b5fe9c8f93", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "4e61ea85-73ac-4ff3-ba90-ac40e0b038c6", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "1624fb55-a4a2-48e0-bea3-346721ea44da", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "2ce97f2a-679f-488c-afec-dbd291e8a55b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f27d73d8-1a02-4eb3-92b6-352837b941b8", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "4e61ea85-73ac-4ff3-ba90-ac40e0b038c6", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "2640ed20-3bf9-4360-94cc-3644ec6e1320", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "00629157-9374-4ed4-9e39-b12d9e57c2a7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "a98f935e-2cc8-4022-9cb1-364f5b6774ac", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "24f6639a-10f4-4caf-863c-adc619895f91", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "4660ac61-8f71-4036-a40e-3731d005a302", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "e7dc823f-1b4c-4e66-bcaa-1a94f17364b3", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "4c5d5cd4-5297-4c65-884e-374624879561", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "58763f4b-1519-49f2-af45-cd5ba22254a9", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "2474071e-a3af-4539-b794-37a16ed5a72d", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "ca600de4-5c14-4fe2-a055-a7daffc87dcb", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "10dcf648-79ce-4341-808c-37ba36ec23cc", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "05ebb198-4dc2-4b4c-83d8-d7a036c95519", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "0bcdf218-7fdc-4b11-8965-37e5630f49dd", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "5295051b-aac7-4ded-a9fd-aabdba35fa67", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f2409983-eb71-40aa-b13c-38ad93b77bee", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "06c781d4-6e9b-42d2-b231-d022bd0192c7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "0d0345ab-a4c1-460a-be62-38de0867ac07", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "15981458-26da-4098-8eca-27fa02ff39cc", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "c46a0e01-d819-4d78-9226-3901bb1d166c", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "c80e12d9-b755-4e0a-81a1-e08fd40dc489", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "60f687c7-b3a7-4a5d-9e4b-398a0286439e", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "f9420288-3ff4-47b1-b5c3-1e230f70229e", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "13164a45-23c9-48b7-9440-3a632f02f0f9", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "f01bab66-ce19-432f-9d8f-85544281cbb5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "5c802f5a-1447-4bf5-9529-3a86616e884d", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "e6d35dae-c9a6-42af-875e-201667767526", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "96a46505-a2d8-4f3d-9c98-3a99a883a9d3", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "7ec10749-ec63-473f-b8f3-329f9b984bf7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "aefdfaba-4517-4496-beb4-3adadc2fa627", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "a61c6bfa-a99c-4cdf-8bc9-de56cf0be69b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "6a9a9efc-04ac-44e1-b12c-3ae9d29f4328", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "8878ca8a-bf87-4f9a-9174-845a78397257", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "96d55432-6e3f-4eb8-8297-3af4ddf59076", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "5ee1f6a5-8056-481f-91b4-56892ccaf2a0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "54330e1e-4076-41f4-9d45-3b64ec84beb8", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "24f6639a-10f4-4caf-863c-adc619895f91", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "d541a4e9-1016-44f4-8a83-3bac733d7334", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "05b53fd5-5841-443c-829d-a2c1f0906546", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f90927c5-b747-4417-98e3-3e3b5dcca12d", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "7266f6c3-b82b-4675-89e1-e80fdec5cb99", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f66584d8-e6ab-42f5-87ca-3e7d86ee20e9", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "f9420288-3ff4-47b1-b5c3-1e230f70229e", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "56bdfeb0-72e1-4107-8d0d-3eb2c0bb83ac", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "58763f4b-1519-49f2-af45-cd5ba22254a9", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "a85ee78c-aa3e-4ef6-bc40-408ad8f0a5e2", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "05ebb198-4dc2-4b4c-83d8-d7a036c95519", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "10a35f0e-6a21-402a-a696-41b2190834d3", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "b188e64c-93d4-4d2d-aa4e-0e84069eacf0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "84f0fa25-6983-40ff-84da-42f8faf5f41a", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "5a1601c7-8d5d-4a4b-a185-19a35cf08e54", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "6c623ebc-0da2-4372-8a61-44e0178bbfac", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "7ec10749-ec63-473f-b8f3-329f9b984bf7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "6ba9fe9f-5fb8-4343-b500-44e887248051", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "d55263a6-2839-4207-abad-3813baad0ec5", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "072e98ee-342e-4281-943c-4571262bcda8", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "65358653-2639-499d-ae11-4053bf55d094", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f68ccbef-48fa-45f0-9b36-463979b0a89d", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "4e61ea85-73ac-4ff3-ba90-ac40e0b038c6", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "acbc0528-a5ba-41a7-844b-4668e1233e99", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "51d259c5-4149-4000-84fe-bd58062529d8", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "d0520f40-2650-4972-b4f0-473d33851d51", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "65358653-2639-499d-ae11-4053bf55d094", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "b5eb08d7-e702-44b1-8db8-4758ee0509f4", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "d55263a6-2839-4207-abad-3813baad0ec5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "6e8d4a47-4393-4029-b565-47f1df86658b", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "7ce979be-c686-43bf-be8c-c8ffac2bc552", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "4f86cf8f-c909-4215-857e-47fed039102d", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "2a87bd18-4f3e-41ef-987e-e26d3cfc9cfd", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "440adb2e-f1e7-4ba8-a2fd-48199e755975", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "b188e64c-93d4-4d2d-aa4e-0e84069eacf0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "a0eaf131-ddcb-4453-b19c-49a250f67073", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "a61c6bfa-a99c-4cdf-8bc9-de56cf0be69b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "22f8c118-b6f2-476f-9f89-4b097bc6fc00", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "7266f6c3-b82b-4675-89e1-e80fdec5cb99", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "c9496ff3-9c37-4087-9b8d-4b269acedf27", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "05b53fd5-5841-443c-829d-a2c1f0906546", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "e3f3655f-821b-4691-8e26-4b6ed5d47710", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "2ce97f2a-679f-488c-afec-dbd291e8a55b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "950a6c23-6acc-455a-8f09-4bdbd5fd51e5", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "7ec10749-ec63-473f-b8f3-329f9b984bf7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "8eb980e1-a340-42b5-bbda-4e84a5cf7cff", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "e6d35dae-c9a6-42af-875e-201667767526", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "73f1b48f-7149-4e30-a0f3-4fc1fcbaecbc", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "b0e7ffe2-d2d5-431b-96c7-e86deae98156", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "7d44b057-37cc-4830-8e45-50b639babe37", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "4edc0b48-ed79-46a4-9dc7-5158eaf3cd0f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "16cf63b5-b231-43f1-ab84-51f023297677", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "5295051b-aac7-4ded-a9fd-aabdba35fa67", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "08b6d4e3-e366-409d-81e4-52ac2764300e", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "f01bab66-ce19-432f-9d8f-85544281cbb5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "20f7dd49-6b4b-4536-b0e1-53d22e3294b4", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "05b53fd5-5841-443c-829d-a2c1f0906546", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "5636c5e4-c134-4c1d-be43-5489c070e6a2", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "15981458-26da-4098-8eca-27fa02ff39cc", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "55b07ebf-a276-48de-90a1-54da8e4055e0", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "7ce979be-c686-43bf-be8c-c8ffac2bc552", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "09ac15a1-3a45-4835-b60a-54ec0ef6f5e2", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "932501b0-7a7b-4bca-b761-4b705e3e5268", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "332c076c-acfe-48ba-9225-578cef8aa9c2", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "00629157-9374-4ed4-9e39-b12d9e57c2a7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "07d2f622-666e-45fc-b0b2-57b76290e2e6", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "536170c8-2f32-474b-bda8-6c3dafbdfaf1", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "1052e8b4-e380-4599-93c6-58493fea97b7", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "f9420288-3ff4-47b1-b5c3-1e230f70229e", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "93e16f96-a477-42a2-a034-5904b756f456", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "932501b0-7a7b-4bca-b761-4b705e3e5268", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "3fc01a65-c67b-4536-a6f9-5a66a768fcd4", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "5ee1f6a5-8056-481f-91b4-56892ccaf2a0", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "709a19d3-b14e-47a1-a5bf-5a756f1633cb", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "b0e7ffe2-d2d5-431b-96c7-e86deae98156", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "7748ea19-a899-45b7-a1da-5c005f611b30", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "a61c6bfa-a99c-4cdf-8bc9-de56cf0be69b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f3575501-220d-4125-80ca-5cd0a621a994", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "e7dc823f-1b4c-4e66-bcaa-1a94f17364b3", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "060168cf-7b11-4cef-ae60-5d7cb7f44e3d", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "7ce979be-c686-43bf-be8c-c8ffac2bc552", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "896efe94-310c-466e-951c-5deabc6ce96e", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "f9420288-3ff4-47b1-b5c3-1e230f70229e", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "88d3f2f9-9cc3-4cec-9dd4-5e0b84c5403b", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "05b53fd5-5841-443c-829d-a2c1f0906546", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "7f9a0261-f95d-46a4-a5eb-5f4a817a5e82", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "f9420288-3ff4-47b1-b5c3-1e230f70229e", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "56f077d3-45bc-4cf1-ad77-60a94dc52f08", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "06c781d4-6e9b-42d2-b231-d022bd0192c7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "0efe167f-67b1-4218-873a-60f4fc517bab", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "f01bab66-ce19-432f-9d8f-85544281cbb5", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "35fe81be-33cc-4e4d-8617-61a5e57238b6", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "a61c6bfa-a99c-4cdf-8bc9-de56cf0be69b", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "d3b9bebd-a365-486c-99c6-62e9844761a5", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "c80e12d9-b755-4e0a-81a1-e08fd40dc489", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "ed1da60d-6960-498a-a775-63995bc207e0", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "90dff34b-6a01-438c-ab62-51d9640a9b2f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "4a641e7e-b25e-482b-8244-6847581316f3", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "33b16201-4a65-4142-8d47-fee48680c4ab", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "44885cc1-09e5-4efb-acbf-684e4468642f", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "4e61ea85-73ac-4ff3-ba90-ac40e0b038c6", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "256e129b-77a6-477a-b142-6857828a894a", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "f01bab66-ce19-432f-9d8f-85544281cbb5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "a4f64494-624b-4536-8d76-68bc5430f6df", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "5ec8ac1b-6265-48fb-aa5d-fd1024d4d438", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "3919b363-c40e-4a76-bb46-6904c456ebff", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "2a87bd18-4f3e-41ef-987e-e26d3cfc9cfd", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "150ba3de-dd6f-4034-af86-694d9ba87009", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "f9420288-3ff4-47b1-b5c3-1e230f70229e", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "06cee842-0650-4240-bd74-6966ae7600bd", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "2ce97f2a-679f-488c-afec-dbd291e8a55b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "59b8e92d-4d42-4708-b523-6b373f0f367f", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "00629157-9374-4ed4-9e39-b12d9e57c2a7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "d1ce52e6-53a7-4f10-9d7f-6bc75e1d80fc", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "e6d35dae-c9a6-42af-875e-201667767526", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "dd5945d5-2d25-4277-b100-6c37f3e308f6", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "4e61ea85-73ac-4ff3-ba90-ac40e0b038c6", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "86d5ebc7-d14c-42f1-8e16-6cfce47e43b5", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "5ec8ac1b-6265-48fb-aa5d-fd1024d4d438", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "fb8a5fcd-dc07-436e-95ec-6d5387bb6df3", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "e7dc823f-1b4c-4e66-bcaa-1a94f17364b3", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "1b65a5d1-0228-4db1-a529-70761480791b", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "a61c6bfa-a99c-4cdf-8bc9-de56cf0be69b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "89145e52-1b38-464f-bc03-707d7817b34b", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "ca600de4-5c14-4fe2-a055-a7daffc87dcb", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "87311a0e-3e11-4726-8ee9-70e7e4dc14ce", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "2a87bd18-4f3e-41ef-987e-e26d3cfc9cfd", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "90d3c8e5-9f95-463f-abd6-7106bbec354f", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "7ec10749-ec63-473f-b8f3-329f9b984bf7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "57825a08-084c-44ff-a648-72245bbc8d5e", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "d55263a6-2839-4207-abad-3813baad0ec5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "0d28d8d6-0994-4f10-b33d-7364b43d6e77", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "90dff34b-6a01-438c-ab62-51d9640a9b2f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "7f402c2b-7dc2-4b3c-8d4a-739f16240c03", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "00629157-9374-4ed4-9e39-b12d9e57c2a7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "9ed097d4-effb-41cf-8e6a-73b5e1ce1e95", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "2ce97f2a-679f-488c-afec-dbd291e8a55b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "4a80c73f-b7ee-4c7d-a43d-747fb62a3eae", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "25be54f6-370b-40ec-8c13-0d41a2f61e1d", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "ad0c9e4a-d841-4a22-b233-75c0aceedd6a", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "8878ca8a-bf87-4f9a-9174-845a78397257", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "0a952cbf-68b6-4e29-a7a4-7696832788a9", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "51d259c5-4149-4000-84fe-bd58062529d8", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "8b8aa8b5-7b15-49b6-a164-77413eff66bd", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "e7dc823f-1b4c-4e66-bcaa-1a94f17364b3", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "8aaa5114-6afd-4ac9-93a0-774a07e1bea5", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "25be54f6-370b-40ec-8c13-0d41a2f61e1d", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "678dad1d-9af5-4739-8c90-78a51bc4c85d", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "7266f6c3-b82b-4675-89e1-e80fdec5cb99", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "b521bc6c-1e68-4c96-a3b2-78cde66b545e", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "ca600de4-5c14-4fe2-a055-a7daffc87dcb", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "07f54035-2b04-4fa1-8984-7905c8f64ba0", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "b188e64c-93d4-4d2d-aa4e-0e84069eacf0", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "88d6558f-d99e-4b10-a4a9-791dde819d17", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "5a1601c7-8d5d-4a4b-a185-19a35cf08e54", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "8b177e57-1b27-42ab-b8cd-79c994ae6c5e", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "25be54f6-370b-40ec-8c13-0d41a2f61e1d", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "c407a6af-0755-453d-8bf5-7cf1d8ff8f2a", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "ca600de4-5c14-4fe2-a055-a7daffc87dcb", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "4ffa4880-86bd-44fb-a6ca-7d464067601b", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "932501b0-7a7b-4bca-b761-4b705e3e5268", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "64d72e3c-4b8b-404d-8b5c-7d6b01e363d3", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "25be54f6-370b-40ec-8c13-0d41a2f61e1d", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "7561d827-8f5a-40b8-a7bc-7da4affe889e", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "e7dc823f-1b4c-4e66-bcaa-1a94f17364b3", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "8c2ad5e2-ad9d-4be8-abe6-7e388a76ba78", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "24f6639a-10f4-4caf-863c-adc619895f91", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "92ae8906-08ca-491f-b4af-7f6eae899ee8", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "90dff34b-6a01-438c-ab62-51d9640a9b2f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "97ef4c41-19c9-4d9f-9bfe-7f70da92302a", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "5295051b-aac7-4ded-a9fd-aabdba35fa67", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "1f31123b-a9b0-4235-bdb6-809a1bdcfe89", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "5ee1f6a5-8056-481f-91b4-56892ccaf2a0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "463f3bb7-fbe2-4c30-9c88-82bc759d7cbe", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "c80e12d9-b755-4e0a-81a1-e08fd40dc489", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "af1dd997-c818-459a-b704-8484b511ec53", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "5ec8ac1b-6265-48fb-aa5d-fd1024d4d438", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "9a90d9d5-0cba-4ef7-a85d-8544d570dd55", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "b188e64c-93d4-4d2d-aa4e-0e84069eacf0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "068a3b2d-f454-4f9c-9d9d-85c85706f708", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "5a1601c7-8d5d-4a4b-a185-19a35cf08e54", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f2b8ae58-6ed6-4b4f-a2c5-867bed23361b", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "ca600de4-5c14-4fe2-a055-a7daffc87dcb", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "00f17ca5-b694-4ea2-b305-8776c5247f27", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "25be54f6-370b-40ec-8c13-0d41a2f61e1d", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "5b12c28a-2bf6-41be-a588-878f2a45bb3a", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "00629157-9374-4ed4-9e39-b12d9e57c2a7", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "4292b7e9-43d1-44c1-99e8-87aae179ea38", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "c80e12d9-b755-4e0a-81a1-e08fd40dc489", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "1f0cc1fc-3ea4-49e1-b23d-883060b67f5b", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "5295051b-aac7-4ded-a9fd-aabdba35fa67", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "6c19ff3a-1c08-4abf-a39c-8837b332ee2e", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "e6d35dae-c9a6-42af-875e-201667767526", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "190c0332-056b-4bac-a57c-8a719c03913f", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "f01bab66-ce19-432f-9d8f-85544281cbb5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "179cba1f-8f82-4b11-8ea0-8ae1082b45cf", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "4e61ea85-73ac-4ff3-ba90-ac40e0b038c6", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "0fc42894-c86d-4dfd-9cfb-8bf6842b01a1", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "932501b0-7a7b-4bca-b761-4b705e3e5268", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "25eead10-52bc-46b7-be2c-8c247f203151", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "7ec10749-ec63-473f-b8f3-329f9b984bf7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "310b6076-8c23-44ea-bdce-8c9b68b9af2d", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "05b53fd5-5841-443c-829d-a2c1f0906546", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "720d5032-edfc-46fd-a175-8cb45dc921f7", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "5ee1f6a5-8056-481f-91b4-56892ccaf2a0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "44e8dbab-82f4-4228-9e49-8cb6000d4110", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "2ce97f2a-679f-488c-afec-dbd291e8a55b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "3e288770-162e-4d33-8287-8d0458374a64", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "4edc0b48-ed79-46a4-9dc7-5158eaf3cd0f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "560e7100-204b-4868-ac22-8e53dcb97cb7", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "2a87bd18-4f3e-41ef-987e-e26d3cfc9cfd", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "6127866e-4eea-486d-bfbf-8f5488379992", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "5295051b-aac7-4ded-a9fd-aabdba35fa67", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "952edeb2-105d-40c1-b5ca-93246976415a", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "932501b0-7a7b-4bca-b761-4b705e3e5268", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f2c26a9c-e9e2-4b2b-9468-932a5901ceee", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "b188e64c-93d4-4d2d-aa4e-0e84069eacf0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "705996c8-1166-4250-b95d-9423dc665f8a", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "24f6639a-10f4-4caf-863c-adc619895f91", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "db8ad09b-3314-4fe3-8ff9-944ab6b2c6de", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "f9420288-3ff4-47b1-b5c3-1e230f70229e", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "7704546e-cfc0-459a-b4bd-944efd752955", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "24f6639a-10f4-4caf-863c-adc619895f91", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "892dda80-dddb-4230-9b8b-94db0ca02db1", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "8878ca8a-bf87-4f9a-9174-845a78397257", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "77c7936b-64cd-4969-8c93-98a0cf07b6d2", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "536170c8-2f32-474b-bda8-6c3dafbdfaf1", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "ff90bfaf-3c05-4c63-bdc2-9a646b896792", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "4edc0b48-ed79-46a4-9dc7-5158eaf3cd0f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "d79264a4-bb95-49e0-a391-9c6c154a2910", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "4e61ea85-73ac-4ff3-ba90-ac40e0b038c6", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "51c38a47-6f08-4ba2-aa1e-9c73a6c8d3cc", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "24f6639a-10f4-4caf-863c-adc619895f91", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "bbdf8feb-2970-4725-809c-9d35fe831b58", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "65358653-2639-499d-ae11-4053bf55d094", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "a3a92cbd-b271-4d00-a547-9e272629fe1c", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "a61c6bfa-a99c-4cdf-8bc9-de56cf0be69b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "8fb443f9-068e-425c-95af-9e90df91817a", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "d55263a6-2839-4207-abad-3813baad0ec5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "4975ea5b-4cb5-4360-92ae-9f03894f9fa4", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "ca600de4-5c14-4fe2-a055-a7daffc87dcb", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "b2c9879f-89a6-463c-a754-9f69ff71542c", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "7ce979be-c686-43bf-be8c-c8ffac2bc552", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "3897e0ea-9907-4d3d-a2c0-a2957a3d5019", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "2ce97f2a-679f-488c-afec-dbd291e8a55b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "600e81e8-0029-448f-b6ee-a320eb615a63", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "4edc0b48-ed79-46a4-9dc7-5158eaf3cd0f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "9a002c25-43e7-4199-9a86-a33fbb85d031", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "b188e64c-93d4-4d2d-aa4e-0e84069eacf0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "8442c37c-1bdc-46bc-b6e7-a3db72cc2964", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "a61c6bfa-a99c-4cdf-8bc9-de56cf0be69b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "142f4ce8-995e-424b-8e98-a46745c0cee0", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "05ebb198-4dc2-4b4c-83d8-d7a036c95519", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "85b1fe9c-7a55-4b0e-bc61-a4713886438a", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "15981458-26da-4098-8eca-27fa02ff39cc", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "915b5eaf-0d93-4702-9707-a48cf182f4c7", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "d55263a6-2839-4207-abad-3813baad0ec5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "240e2186-a546-4e5c-ad37-a514eb6ddd09", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "5a1601c7-8d5d-4a4b-a185-19a35cf08e54", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "7d20ae7b-78dd-47d0-bccd-a63fed8e9aa7", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "932501b0-7a7b-4bca-b761-4b705e3e5268", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "578fce07-5792-4f6c-82e0-a674529ff694", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "58763f4b-1519-49f2-af45-cd5ba22254a9", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "8cdcb106-e57d-4399-9dd8-a746dda727dc", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "05ebb198-4dc2-4b4c-83d8-d7a036c95519", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "6f538500-c28a-4623-aad8-a7c31243496b", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "5ec8ac1b-6265-48fb-aa5d-fd1024d4d438", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "c9f591bf-1542-4f2a-aa6b-a7e40c7c40d9", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "5ee1f6a5-8056-481f-91b4-56892ccaf2a0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "d5f3b432-3fcb-4e78-a8e3-a895ee1b090f", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "e7dc823f-1b4c-4e66-bcaa-1a94f17364b3", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "1cb52971-56ef-4219-9348-a9285e48ad20", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "d55263a6-2839-4207-abad-3813baad0ec5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "d906d5b5-673b-45f0-820e-aa11a21813eb", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "d55263a6-2839-4207-abad-3813baad0ec5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "0c30f246-02cb-4bb0-add0-aa5b26926343", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "24f6639a-10f4-4caf-863c-adc619895f91", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "eec4bc7e-de0c-4ac6-bc7e-ab3ba850c9f6", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "58763f4b-1519-49f2-af45-cd5ba22254a9", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "6ecb3618-5096-4140-9000-ab9c4c3fa6c4", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "7ec10749-ec63-473f-b8f3-329f9b984bf7", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "5a18414e-a9cb-49ce-b1c7-ac2af20c91e7", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "b0e7ffe2-d2d5-431b-96c7-e86deae98156", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "5f6fd148-2f30-425b-81ec-ac9aea7db8d4", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "00629157-9374-4ed4-9e39-b12d9e57c2a7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "21ee6243-cfb7-47db-9384-ad2b77365009", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "5ec8ac1b-6265-48fb-aa5d-fd1024d4d438", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "b0e85b75-1eff-4915-bb28-ae9c73ca24b9", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "5295051b-aac7-4ded-a9fd-aabdba35fa67", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "09e43e7a-a8e7-45f6-b15f-b022b6eff68f", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "06c781d4-6e9b-42d2-b231-d022bd0192c7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "2e306a7b-da05-4777-9b7e-b1664b6717f6", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "7ec10749-ec63-473f-b8f3-329f9b984bf7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "3197fbf1-2060-4af9-8513-b2b5a31fe93c", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "c80e12d9-b755-4e0a-81a1-e08fd40dc489", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "77479960-d12a-41e5-bb0f-b3586a7afb31", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "2ce97f2a-679f-488c-afec-dbd291e8a55b", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "cd054f5e-1a85-4bee-8010-b3bf07a0f217", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "7266f6c3-b82b-4675-89e1-e80fdec5cb99", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "47c0c070-a0c9-44f2-8a2c-b3e04e792079", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "25be54f6-370b-40ec-8c13-0d41a2f61e1d", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "4d7f3542-d7ef-4c91-b824-b41338fd23d5", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "f9420288-3ff4-47b1-b5c3-1e230f70229e", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "7606c148-a091-4adb-a92d-b4ae2f7e82af", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "05b53fd5-5841-443c-829d-a2c1f0906546", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "4fc09567-8509-494d-9857-b6506d0d3cca", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "932501b0-7a7b-4bca-b761-4b705e3e5268", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "9aa3e6d8-64ec-4184-880d-b69d9e143d4e", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "5a1601c7-8d5d-4a4b-a185-19a35cf08e54", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "a8ac8da8-794e-4ad8-960d-b7e68e695280", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "65358653-2639-499d-ae11-4053bf55d094", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "4169aeb9-4bae-4369-a5e7-b88cdd0751d7", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "15981458-26da-4098-8eca-27fa02ff39cc", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "cae259fe-4aa7-4f2a-a526-b937b47e34ba", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "06c781d4-6e9b-42d2-b231-d022bd0192c7", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "0d18106d-514b-4b4d-80c2-b984f20ce034", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "ca600de4-5c14-4fe2-a055-a7daffc87dcb", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "0bca79d7-a2e3-4918-9e7e-ba8f9c65fe8a", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "5ec8ac1b-6265-48fb-aa5d-fd1024d4d438", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "14fe11c1-c780-461a-8e0d-bc6c18483601", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "f01bab66-ce19-432f-9d8f-85544281cbb5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "5b093970-4160-449d-8565-bd111163c8a2", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "c80e12d9-b755-4e0a-81a1-e08fd40dc489", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "c99e3306-a750-4452-9bb8-bed4b2762f0d", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "b188e64c-93d4-4d2d-aa4e-0e84069eacf0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "6dbc555c-2bd6-4c38-9f3c-c14983e59512", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "5a1601c7-8d5d-4a4b-a185-19a35cf08e54", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "3f7e3ad3-4d39-43e5-a839-c15c73650df1", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "b0e7ffe2-d2d5-431b-96c7-e86deae98156", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "264e9f31-36ec-4011-a554-c19974c5e809", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "58763f4b-1519-49f2-af45-cd5ba22254a9", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "1538188c-18f7-4447-bce1-c1aedf629ed0", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "15981458-26da-4098-8eca-27fa02ff39cc", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "63634e24-a7bb-46de-8d6d-c277aa1d102d", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "5295051b-aac7-4ded-a9fd-aabdba35fa67", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "460fd7a9-6261-495b-a23a-c47aa73962ee", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "05b53fd5-5841-443c-829d-a2c1f0906546", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "cccf85a2-c813-47d1-b587-c499313a0ae4", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "e6d35dae-c9a6-42af-875e-201667767526", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f522b1e1-a192-48b6-9319-c5b1ae466407", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "05ebb198-4dc2-4b4c-83d8-d7a036c95519", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f4697344-51cf-4a14-a3e8-c5dceb857a86", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "4edc0b48-ed79-46a4-9dc7-5158eaf3cd0f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "33905046-dfa1-4fc2-9442-c603219a07e5", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "8878ca8a-bf87-4f9a-9174-845a78397257", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "ff38e585-e65d-4544-8fbd-c824835c8edc", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "65358653-2639-499d-ae11-4053bf55d094", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "18471421-57a9-4f5f-93ca-c88c6db7376e", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "5a1601c7-8d5d-4a4b-a185-19a35cf08e54", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "96111af6-f0e5-4e10-9f5b-ca18902b3e5a", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "e6d35dae-c9a6-42af-875e-201667767526", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "5d3a2dd5-ede3-46f4-9ac5-caeb27e84691", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "58763f4b-1519-49f2-af45-cd5ba22254a9", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "14e4e200-c623-4358-a999-cb39501d551c", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "24f6639a-10f4-4caf-863c-adc619895f91", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "9228644d-7637-45a5-b24e-cc4d027b6aa9", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "25be54f6-370b-40ec-8c13-0d41a2f61e1d", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "e86b13a2-7ad8-4876-8732-cda81d9a17b0", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "7266f6c3-b82b-4675-89e1-e80fdec5cb99", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "75af49ab-341e-4bac-942f-cfc7b26ec126", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "06c781d4-6e9b-42d2-b231-d022bd0192c7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "2207330b-4300-4b43-a03d-d10055bcaed0", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "a61c6bfa-a99c-4cdf-8bc9-de56cf0be69b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "6fe836d4-9a58-48f1-a57c-d12dcce49688", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "65358653-2639-499d-ae11-4053bf55d094", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "402a14ca-5f63-4050-b109-d24cfd9148ca", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "2a87bd18-4f3e-41ef-987e-e26d3cfc9cfd", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "5df75c85-8e7a-4c11-942a-d2d267cbad3c", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "06c781d4-6e9b-42d2-b231-d022bd0192c7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "d8ae546c-6e5a-4bbb-a974-d4655f3f8b6a", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "7266f6c3-b82b-4675-89e1-e80fdec5cb99", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "b5ca593a-a99f-4552-afa2-d6eb24143ad6", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "8878ca8a-bf87-4f9a-9174-845a78397257", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "e061a382-530f-4d4b-aaea-d7866b32c637", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "5ee1f6a5-8056-481f-91b4-56892ccaf2a0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "10f78c32-ee98-4afe-b37c-d7a909c07cdf", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "8878ca8a-bf87-4f9a-9174-845a78397257", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "57b3fe1f-2f8b-4525-bda0-d8e31986fb3d", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "06c781d4-6e9b-42d2-b231-d022bd0192c7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f4ca7894-3dff-4a95-97f8-d976e009f31f", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "f01bab66-ce19-432f-9d8f-85544281cbb5", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "a10051fc-0fe3-427d-b441-db8e6a434100", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "536170c8-2f32-474b-bda8-6c3dafbdfaf1", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "94010355-66cf-4199-b9a7-dd7bd3d35dec", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "c80e12d9-b755-4e0a-81a1-e08fd40dc489", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "bf47591e-f247-4a27-b04f-e0578ccb1911", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "536170c8-2f32-474b-bda8-6c3dafbdfaf1", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "2d06341b-8dba-485f-8133-e1cba48a8575", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "05ebb198-4dc2-4b4c-83d8-d7a036c95519", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "58f60cf9-0618-48e0-9015-e2b155104ec8", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "e6d35dae-c9a6-42af-875e-201667767526", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "18fd3c48-ecea-4fcf-a746-e5740d53c615", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "7ce979be-c686-43bf-be8c-c8ffac2bc552", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "25e620ea-22fd-404b-9cc9-e57ebc7f8447", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "f9420288-3ff4-47b1-b5c3-1e230f70229e", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "81d7f997-3dc6-4361-923d-e58640fa8dbe", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "5295051b-aac7-4ded-a9fd-aabdba35fa67", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "fcc82727-a848-416e-8e21-e5d4a502f3bf", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "e7dc823f-1b4c-4e66-bcaa-1a94f17364b3", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "87a8ca38-52df-49fd-9481-e64c851802d5", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "5ec8ac1b-6265-48fb-aa5d-fd1024d4d438", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f186f9b8-4b1a-4cf6-abb9-e6764488b12f", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "4edc0b48-ed79-46a4-9dc7-5158eaf3cd0f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "6f3b57a2-0f9d-487b-8421-e7086932fbde", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "b188e64c-93d4-4d2d-aa4e-0e84069eacf0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "b3029fd0-0b47-49d9-a42c-e9c9902f796f", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "05ebb198-4dc2-4b4c-83d8-d7a036c95519", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "564b13d9-c3eb-4bc3-b7dd-edec67166565", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "65358653-2639-499d-ae11-4053bf55d094", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "a7619b56-93b9-476b-941b-ee4e0ad0a125", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "8878ca8a-bf87-4f9a-9174-845a78397257", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "aad9ac4e-e469-486a-af04-ee59a274b772", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "51d259c5-4149-4000-84fe-bd58062529d8", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "ebc5de8f-900d-4cb1-a521-ee9d28261e40", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "e6d35dae-c9a6-42af-875e-201667767526", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "3bd6386d-8e16-4246-83eb-ef4bc874a8cc", + "roleId": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "packageId": "5ec8ac1b-6265-48fb-aa5d-fd1024d4d438", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "6fd56746-c4c5-472d-9c87-effd172cf755", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "4e61ea85-73ac-4ff3-ba90-ac40e0b038c6", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "bcc34863-5846-4485-a3cb-f2a517512f98", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "00629157-9374-4ed4-9e39-b12d9e57c2a7", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "1bf7f4d1-fdcb-4b9e-9447-f3fe83649f1b", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "51d259c5-4149-4000-84fe-bd58062529d8", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "e021626e-08cf-4eff-b27f-f4e4ec8e4da4", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "58763f4b-1519-49f2-af45-cd5ba22254a9", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "d0c600da-9302-4d8f-bf57-f674202473f0", + "roleId": "1005e523-9423-4037-92e7-d23dee6a9813", + "packageId": "a61c6bfa-a99c-4cdf-8bc9-de56cf0be69b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "da322568-c403-4ca2-a2ff-f68f0af07ba5", + "roleId": "0610a058-2046-4fb7-8566-a7cef6515baf", + "packageId": "b0e7ffe2-d2d5-431b-96c7-e86deae98156", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "9f9389b8-2f31-4e97-ba81-f6f78ae1eaad", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "24f6639a-10f4-4caf-863c-adc619895f91", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "e6fc3221-60de-4997-a16e-f740c310b712", + "roleId": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "packageId": "90dff34b-6a01-438c-ab62-51d9640a9b2f", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "aec01830-2ff9-4fd0-9414-f7f0b284248e", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "5a1601c7-8d5d-4a4b-a185-19a35cf08e54", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + }, + { + "id": "ba41e360-0b28-4d83-9c28-f8e41a798c30", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "8878ca8a-bf87-4f9a-9174-845a78397257", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "82f45977-c064-466c-9ce2-fa5617be40f4", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "65358653-2639-499d-ae11-4053bf55d094", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "f3cb5998-bcf3-4166-a291-fb6c3cc9590d", + "roleId": "6adad370-5524-4438-a811-932d27f655b9", + "packageId": "2ce97f2a-679f-488c-afec-dbd291e8a55b", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "83c523ac-d8eb-41fd-a879-fcc2007c248a", + "roleId": "77778386-d57f-4378-ac31-5f260b407079", + "packageId": "5ee1f6a5-8056-481f-91b4-56892ccaf2a0", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "24a85b1f-a674-4247-a40c-fcf76981f34f", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "e7dc823f-1b4c-4e66-bcaa-1a94f17364b3", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "6739d606-41bf-4d77-a01d-fd2248f753f0", + "roleId": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "packageId": "05b53fd5-5841-443c-829d-a2c1f0906546", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "b831bf59-8f59-4640-ad61-ffaa1fbe0e26", + "roleId": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "packageId": "7266f6c3-b82b-4675-89e1-e80fdec5cb99", + "entityVariantId": null, + "isActor": false, + "isAdmin": true + }, + { + "id": "787a7050-0443-4088-b281-fff8519d743f", + "roleId": "857bb1fb-fcaa-4a3c-859d-319032626539", + "packageId": "932501b0-7a7b-4bca-b761-4b705e3e5268", + "entityVariantId": null, + "isActor": true, + "isAdmin": true + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Role_eng.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Role_eng.json new file mode 100644 index 00000000..0358c426 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Role_eng.json @@ -0,0 +1,281 @@ +[ + { + "id": "66ad5542-4f4a-4606-996f-18690129ce00", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Administrative unit - public sector", + "code": "ADOS", + "description": "Administrative unit - public sector", + "urn": "brreg:role:ados" + }, + { + "id": "585ac6f7-aef0-47ca-8597-1ac7e63a58ce", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Deputy manager", + "code": "NEST", + "description": "Styremedlem som opptrer som styreleder ved leders fravær", + "urn": "brreg:role:nest" + }, + { + "id": "a715f610-4096-49bf-9b59-1c9ec81966f5", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Part of shared office", + "code": "KTRF", + "description": "Part of shared office", + "urn": "brreg:role:ktrf" + }, + { + "id": "ffa924c7-45ba-469b-9657-27bbb66002d4", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Organizational unit in the public sector", + "code": "ORGL", + "description": "Organizational unit in the public sector", + "urn": "brreg:role:orgl" + }, + { + "id": "792c01dc-29c9-4dec-ae6d-28cff0b04678", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Specially divided unit", + "code": "OPMV", + "description": "Specially divided unit", + "urn": "brreg:role:opmv" + }, + { + "id": "6795081e-e69c-4efd-8d42-2bfccd346777", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Client administrator", + "code": "KLA", + "description": "Allows managing access to services on behalf of clients for employees", + "urn": "digdir:role:kla" + }, + { + "id": "857bb1fb-fcaa-4a3c-859d-319032626539", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "General manager", + "code": "DAGL", + "description": "Individual or entity responsible for daily operations", + "urn": "brreg:role:dagl" + }, + { + "id": "6c1fbcb9-609c-4ab8-a048-3be8d7da5a82", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Access controller", + "code": "TS", + "description": "Allows forwarding access within the organization", + "urn": "digdir:role:ts" + }, + { + "id": "3af9bb77-9455-44bd-8d93-4d3f2a9fda33", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Participant with pro rata liability (shared responsibility)", + "code": "DTPR", + "description": "Individual or legal entity with personal responsibility for parts of the company’s obligations", + "urn": "brreg:role:dtpr" + }, + { + "id": "ba1c261c-20ec-44e2-9e0b-4e7cfe9f36e7", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Main administrator", + "code": "HA", + "description": "Allows management of all accesses for the organization", + "urn": "digdir:role:ha" + }, + { + "id": "f96756f4-415a-45dd-8d10-4ebee0e6db84", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Proprietor", + "code": "INNH", + "description": "Individual owning a sole proprietorship", + "urn": "brreg:role:innh" + }, + { + "id": "5ba618b1-e6a8-4d84-bc93-5623cf680bc0", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "73dfe32a-8f21-465c-9242-40d82e61f320", + "name": "Customer administrator", + "code": "KUA", + "description": " Gir mulighet til å administrere tilganger man har mottatt for sine kunder til ansatte i egen virksomheten", + "urn": "digdir:role:kua" + }, + { + "id": "77778386-d57f-4378-ac31-5f260b407079", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Participant with joint responsibility (fully liable)", + "code": "DTSO", + "description": "Individual or legal entity with unlimited personal responsibility for the companys obligations", + "urn": "brreg:role:dtso" + }, + { + "id": "748ec709-78d6-4b13-a3f9-5fb8e783e679", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Deputy member", + "code": "VARA", + "description": "Fysisk- eller juridisk person som er stedfortreder for et styremedlem", + "urn": "brreg:role:vara" + }, + { + "id": "197fbfbb-d867-4c0f-8d4a-62e9287e340d", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Observer", + "code": "OBS", + "description": "Fysisk person som deltar i styremøter i en virksomhet, men uten stemmerett", + "urn": "brreg:role:obs" + }, + { + "id": "de42ae15-c265-42b3-8060-64c779684902", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Board member", + "code": "MEDL", + "description": "Individual or legal entity who is a member of a board", + "urn": "brreg:role:medl" + }, + { + "id": "72c336a2-1705-4aef-b220-7f4aa6c0e69d", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Chair of the board", + "code": "LEDE", + "description": "Individual or legal entity who is a board member and chairs the board", + "urn": "brreg:role:lede" + }, + { + "id": "38453a5d-ff7d-44eb-ba9a-92b1cd7fc98c", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Person involved in personal bankruptcy", + "code": "KENK", + "description": "Person involved in personal bankruptcy", + "urn": "brreg:role:kenk" + }, + { + "id": "6adad370-5524-4438-a811-932d27f655b9", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Norwegian representative for foreign entity", + "code": "REPR", + "description": "Individual or legal entity responsible for daily operations in Norway", + "urn": "brreg:role:repr" + }, + { + "id": "49def9e7-9ea4-4f78-9013-98c9af5918d4", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Contact person", + "code": "KONT", + "description": "Individual representing a business", + "urn": "brreg:role:kont" + }, + { + "id": "d7ab8fd4-de81-4c82-8b0e-9cb6470a274e", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Managing shipowner", + "code": "BEST", + "description": "Managing shipowner", + "urn": "brreg:role:best" + }, + { + "id": "d4f78604-db47-4ff7-8537-a4e7318e8c11", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Owner municipality", + "code": "EIKM", + "description": "Owner municipality", + "urn": "brreg:role:eikm" + }, + { + "id": "0610a058-2046-4fb7-8566-a7cef6515baf", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Estate manager", + "code": "BOBE", + "description": "Administrator of a bankruptcy or deceased estate under public probate proceedings", + "urn": "brreg:role:bobe" + }, + { + "id": "e4674211-034a-45f3-99ac-b2356984968a", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Healthcare enterprise", + "code": "HLSE", + "description": "Healthcare enterprise", + "urn": "brreg:role:hlse" + }, + { + "id": "63b5255d-4776-4ba1-bed2-c950bb5b04ab", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Auditor", + "code": "REVI", + "description": "Auditor", + "urn": "brreg:role:revi" + }, + { + "id": "e207eaf7-afde-452c-a1ba-ce7ba9305bcc", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Business manager", + "code": "FFØR", + "description": "Business manager", + "urn": "brreg:role:ffør" + }, + { + "id": "1005e523-9423-4037-92e7-d23dee6a9813", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "General partner", + "code": "KOMP", + "description": "General partner", + "urn": "brreg:role:komp" + }, + { + "id": "e4df5308-56ed-4301-ae53-ef67da3a57e9", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Bankrupt debtor", + "code": "KDEB", + "description": "Bankrupt debtor", + "urn": "brreg:role:kdeb" + }, + { + "id": "3bdd603a-dbe0-4caa-bc97-f0b6a1675b15", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Part of church council", + "code": "KIRK", + "description": "Part of church council", + "urn": "brreg:role:kirk" + }, + { + "id": "38c368c1-c9f4-4b01-a296-f1ef7e466c13", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Information about the company in the home country", + "code": "HFOR", + "description": "Information about the company in the home country", + "urn": "brreg:role:hfor" + }, + { + "id": "303d78e8-a658-454d-88ae-f836596982c7", + "entityTypeId": "8c216e2f-afdd-4234-9ba2-691c727bb33d", + "providerId": "323f9ff9-11ad-4af3-8ccb-0db7bdb71d75", + "name": "Accountant", + "code": "REGN", + "description": "Accountant", + "urn": "brreg:role:regn" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Tag.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Tag.json new file mode 100644 index 00000000..79dd3b64 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Tag.json @@ -0,0 +1,56 @@ +[ + { + "id": "e18d4b17-3588-4b24-be2f-00d202ae84e5", + "groupId": null, + "parentId": null, + "name": "Eiendom" + }, + { + "id": "52CA697B-7C6B-48AA-809A-64A452B5597A", + "groupId": null, + "parentId": null, + "name": "Viktig" + }, + { + "id": "89D454B8-12A8-4F5E-B3DF-20050820EEE6", + "groupId": null, + "parentId": null, + "name": "Sensitivt" + }, + { + "id": "58D53CB7-3AE1-470C-903A-63B7E89B2692", + "groupId": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "parentId": null, + "name": "A:Jordbruk" + }, + { + "id": "A3F7D194-1714-4CCA-B9D3-E9B55DAA3B1A", + "groupId": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "parentId": null, + "name": "B:Bergverksdrift" + }, + { + "id": "DECCA79D-3777-46EC-A7C2-5E8430964072", + "groupId": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "parentId": null, + "name": "C:Industri" + }, + { + "id": "606A472A-AA7C-40B8-8857-198C2004DF30", + "groupId": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "parentId": null, + "name": "D:Kraftforsyning" + }, + { + "id": "BB4D852B-0138-44D8-A522-8A271A476DB0", + "groupId": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "parentId": null, + "name": "E:Vann, avløp, renovasjon" + }, + { + "id": "451C2E37-2D25-45EA-A26C-195ED830F4E7", + "groupId": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "parentId": null, + "name": "F:Bygge- og annleggsvirksomhet" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/TagGroup.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/TagGroup.json new file mode 100644 index 00000000..f075a39a --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/TagGroup.json @@ -0,0 +1,6 @@ +[ + { + "id": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "name": "Næringskode" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/TagGroup_eng.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/TagGroup_eng.json new file mode 100644 index 00000000..87bcd1b8 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/TagGroup_eng.json @@ -0,0 +1,6 @@ +[ + { + "id": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "name": "NACE" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Tag_eng.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Tag_eng.json new file mode 100644 index 00000000..58616fd0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonData/Tag_eng.json @@ -0,0 +1,56 @@ +[ + { + "id": "e18d4b17-3588-4b24-be2f-00d202ae84e5", + "groupId": null, + "parentId": null, + "name": "Property" + }, + { + "id": "52CA697B-7C6B-48AA-809A-64A452B5597A", + "groupId": null, + "parentId": null, + "name": "Important" + }, + { + "id": "89D454B8-12A8-4F5E-B3DF-20050820EEE6", + "groupId": null, + "parentId": null, + "name": "Sensitive" + }, + { + "id": "58D53CB7-3AE1-470C-903A-63B7E89B2692", + "groupId": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "parentId": null, + "name": "A:Agriculture" + }, + { + "id": "A3F7D194-1714-4CCA-B9D3-E9B55DAA3B1A", + "groupId": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "parentId": null, + "name": "B:Mining" + }, + { + "id": "DECCA79D-3777-46EC-A7C2-5E8430964072", + "groupId": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "parentId": null, + "name": "C:Industry" + }, + { + "id": "606A472A-AA7C-40B8-8857-198C2004DF30", + "groupId": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "parentId": null, + "name": "D:Power supply" + }, + { + "id": "BB4D852B-0138-44D8-A522-8A271A476DB0", + "groupId": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "parentId": null, + "name": "E:Water, sewage, waste" + }, + { + "id": "451C2E37-2D25-45EA-A26C-195ED830F4E7", + "groupId": "3e5c0530-f57f-4996-97eb-5ff5f18752a3", + "parentId": null, + "name": "F:Construction and civil engineering" + } +] \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonIngestFactory.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonIngestFactory.cs new file mode 100644 index 00000000..0123c521 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/JsonIngestFactory.cs @@ -0,0 +1,99 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Altinn.Authorization.AccessPackages.Repo.Ingest.Services; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest; + +/// +/// Json Ingest Factory +/// +public class JsonIngestFactory : IDatabaseIngest +{ + private readonly ProviderJsonIngestService providerIngestService; + private readonly AreaJsonIngestService areaIngestService; + private readonly AreaGroupJsonIngestService areaGroupIngestService; + private readonly EntityTypeJsonIngestService entityTypeIngestService; + private readonly EntityVariantJsonIngestService entityVariantIngestService; + private readonly EntityVariantRoleJsonIngestService entityVariantRoleIngestService; + private readonly PackageJsonIngestService packageIngestService; + private readonly RoleJsonIngestService roleIngestService; + private readonly RoleMapJsonIngestService roleMapIngestService; + private readonly RolePackageJsonIngestService rolePackageIngestService; + private readonly TagGroupJsonIngestService tagGroupIngestService; + private readonly TagJsonIngestService tagIngestService; + + /// + /// JsonIngestFactory + /// + /// JsonIngestConfig + /// IProviderService + /// IAreaService + /// IAreaGroupService + /// IEntityTypeService + /// IEntityVariantService + /// IEntityVariantRoleService + /// IPackageService + /// IRoleService + /// IRoleMapService + /// IRolePackageService + /// ITagGroupService + /// ITagService + public JsonIngestFactory( + IOptions config, + IProviderService providerService, + IAreaService areaService, + IAreaGroupService areaGroupService, + IEntityTypeService entityTypeService, + IEntityVariantService entityVariantService, + IEntityVariantRoleService entityVariantRoleService, + IPackageService packageService, + IRoleService roleService, + IRoleMapService roleMapService, + IRolePackageService rolePackageService, + ITagGroupService tagGroupService, + ITagService tagService + ) + { + // jsonIngestConfig = Config.Value; + providerIngestService = new ProviderJsonIngestService(providerService, config); + areaIngestService = new AreaJsonIngestService(areaService, config); + areaGroupIngestService = new AreaGroupJsonIngestService(areaGroupService, config); + entityTypeIngestService = new EntityTypeJsonIngestService(entityTypeService, config); + entityVariantIngestService = new EntityVariantJsonIngestService(entityVariantService, config); + entityVariantRoleIngestService = new EntityVariantRoleJsonIngestService(entityVariantRoleService, config); + packageIngestService = new PackageJsonIngestService(packageService, config); + roleIngestService = new RoleJsonIngestService(roleService, config); + roleMapIngestService = new RoleMapJsonIngestService(roleMapService, config); + rolePackageIngestService = new RolePackageJsonIngestService(rolePackageService, config); + tagGroupIngestService = new TagGroupJsonIngestService(tagGroupService, config); + tagIngestService = new TagJsonIngestService(tagService, config); + } + + /// + /// Ingest all services + /// + /// CancellationToken + /// IngestResults + public async Task> IngestAll(CancellationToken cancellationToken) + { + Console.WriteLine("Lets eat some data!"); + + var result = new List(); + + result.Add(await areaGroupIngestService.IngestData(cancellationToken)); + result.Add(await areaIngestService.IngestData(cancellationToken)); + result.Add(await providerIngestService.IngestData(cancellationToken)); + result.Add(await entityTypeIngestService.IngestData(cancellationToken)); + result.Add(await entityVariantIngestService.IngestData(cancellationToken)); + result.Add(await packageIngestService.IngestData(cancellationToken)); + result.Add(await roleIngestService.IngestData(cancellationToken)); + result.Add(await roleMapIngestService.IngestData(cancellationToken)); + result.Add(await rolePackageIngestService.IngestData(cancellationToken)); + result.Add(await tagGroupIngestService.IngestData(cancellationToken)); + result.Add(await tagIngestService.IngestData(cancellationToken)); + result.Add(await entityVariantRoleIngestService.IngestData(cancellationToken)); + + return result; + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/AreaGroupJsonIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/AreaGroupJsonIngestService.cs new file mode 100644 index 00000000..a8bed6cf --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/AreaGroupJsonIngestService.cs @@ -0,0 +1,23 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest.Services; + +/// +/// Ingest AreaGroups from Json files +/// +public class AreaGroupJsonIngestService : BaseJsonIngestService, IIngestService +{ + /// + /// Initializes a new instance of the class. + /// + /// Db repo from Role + /// JsonIngestConfig + public AreaGroupJsonIngestService(IAreaGroupService service, IOptions config) : base(service, config) + { + LoadTranslations = true; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/AreaJsonIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/AreaJsonIngestService.cs new file mode 100644 index 00000000..0f236913 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/AreaJsonIngestService.cs @@ -0,0 +1,23 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest.Services; + +/// +/// Ingest Areas from Json files +/// +public class AreaJsonIngestService : BaseJsonIngestService, IIngestService +{ + /// + /// Initializes a new instance of the class. + /// + /// Db repo from Role + /// JsonIngestConfig + public AreaJsonIngestService(IAreaService service, IOptions config) : base(service, config) + { + LoadTranslations = true; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/BaseJsonIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/BaseJsonIngestService.cs new file mode 100644 index 00000000..18413d96 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/BaseJsonIngestService.cs @@ -0,0 +1,270 @@ +using System.Text.Json; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest.Services; + +/// +/// Base Json Ingest Service +/// +/// +/// +public class BaseJsonIngestService + where TRepo : IDbBasicDataService +{ + /// + /// Dataservice to ingest data + /// + public TRepo DataService { get; } + + /// + /// Configuration + /// + public JsonIngestConfig Config { get; set; } + + /// + /// Type to ingest + /// + private Type Type { get { return typeof(T); } } + + /// + /// Hints if translations are available + /// + public bool LoadTranslations { get; set; } = false; + + /// + /// Base Json Ingest Service + /// + /// Data service + /// JsonIngestConfig + public BaseJsonIngestService(TRepo service, IOptions config) + { + DataService = service; + Config = config.Value; + } + + /// + /// Ingest data + /// + /// CancellationToken + /// + public async Task IngestData(CancellationToken cancellationToken) + { + using var a = Telemetry.StartActivity("IngestData"); + var jsonData = await ReadJsonData(cancellationToken: cancellationToken); + if (jsonData == "[]") + { + return new IngestResult(Type) { Success = false }; + } + + var jsonItems = JsonSerializer.Deserialize>(jsonData, options: new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }); + if (jsonItems == null) + { + return new IngestResult(Type) { Success = false }; + } + + var dbItems = await DataService.Get(); + Console.WriteLine($"Ingest {Type.Name} Json:{jsonItems.Count} Db:{dbItems.Count()}"); + + if (dbItems == null || !dbItems.Any()) + { + foreach (var item in jsonItems) + { + await DataService.Create(item); + } + } + else + { + foreach (var item in jsonItems) + { + if (dbItems.Count(t => IdComparer(item, t)) == 0) + { + await DataService.Create(item); + continue; + } + + if (dbItems.Count(t => PropertyComparer(item, t)) == 0) + { + var id = GetId(item); + if (id.HasValue) + { + await DataService.Update(id.Value, item); + } + } + } + } + + if (LoadTranslations) + { + await IngestTranslation(cancellationToken); + } + + return new IngestResult(Type) { Success = true }; + } + + /// + /// Read Json data file + /// + /// Language code (e.g. nob, nno, eng) + /// CancellationToken + /// + private async Task ReadJsonData(string? language = null, CancellationToken cancellationToken = default) + { + string fileName = $"{Config.BasePath}{Type.Name}{(string.IsNullOrEmpty(language) ? string.Empty : "_" + language)}.json"; + if (File.Exists(fileName)) + { + return await File.ReadAllTextAsync(fileName, cancellationToken); + } + //else + //{ + // Console.WriteLine(Directory.GetCurrentDirectory()); + // Console.WriteLine($"File not found: '{fileName}'"); + //} + + return "[]"; + } + + /// + /// Ingest translations from Json files + /// + /// CancellationToken + /// + private async Task IngestTranslation(CancellationToken cancellationToken) + { + foreach (var lang in Config.Languages) + { + var jsonData = await ReadJsonData(language: lang, cancellationToken: cancellationToken); + if (jsonData == "[]") + { + continue; + } + + var jsonItems = JsonSerializer.Deserialize>(jsonData, options: new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }); + if (jsonItems == null) + { + return; + } + + var dbItems = await DataService.Get(options: new RequestOptions() { Language = lang }); + Console.WriteLine($"Ingest {lang} {Type.Name} Json:{jsonItems.Count} Db:{dbItems.Count()}"); + foreach (var item in jsonItems) + { + if (dbItems == null || !dbItems.Any()) + { + await DataService.Repo.CreateTranslation(item, lang); + } + else + { + // Console.WriteLine(JsonSerializer.Serialize(item)); + + // TODO : Make it better .... + try + { + var id = GetId(item); + if (id == null) + { + throw new Exception($"Failed to get Id for '{typeof(T).Name}'"); + } + + await DataService.Repo.UpdateTranslation(id.Value, item, lang); + continue; + } + catch + { + Console.WriteLine("Failed to update translation"); + } + + try + { + await DataService.Repo.CreateTranslation(item, lang); + continue; + } + catch + { + Console.WriteLine("Failed to create translation"); + } + } + } + } + } + + private TValue? GetValue(T item, string propertyName) + { + var pt = Type.GetProperty(propertyName); + if (pt == null) + { + return default; + } + + return (TValue?)pt.GetValue(item) ?? default; + } + + private Guid? GetId(T item) + { + return GetValue(item, "Id"); + } + + private bool PropertyComparer(T a, T b) + { + foreach (var prop in Type.GetProperties()) + { + if (prop.PropertyType.Name.ToLower() == "string") + { + string? valueA = (string?)prop.GetValue(a); + string? valueB = (string?)prop.GetValue(b); + if (string.IsNullOrEmpty(valueA) || string.IsNullOrEmpty(valueB)) + { + return false; + } + + if (!valueA.Equals(valueB)) + { + return false; + } + } + + if (prop.PropertyType.Name.ToLower() == "guid") + { + Guid? valueA = (Guid?)prop.GetValue(a); + Guid? valueB = (Guid?)prop.GetValue(b); + if (!valueA.HasValue || !valueB.HasValue) + { + return false; + } + + if (!valueA.Equals(valueB)) + { + return false; + } + } + } + + return true; + } + + private bool IdComparer(T a, T b) + { + try + { + var idA = GetId(a); + var idB = GetId(b); + if (!idA.HasValue || !idB.HasValue) + { + return false; + } + + if (idA.Value.Equals(idB.Value)) + { + return true; + } + + return false; + } + catch + { + return false; + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/EntityTypeJsonIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/EntityTypeJsonIngestService.cs new file mode 100644 index 00000000..4469ff95 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/EntityTypeJsonIngestService.cs @@ -0,0 +1,23 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest.Services; + +/// +/// Ingest EntityTypes from Json files +/// +public class EntityTypeJsonIngestService : BaseJsonIngestService, IIngestService +{ + /// + /// Initializes a new instance of the class. + /// + /// Db repo from EntityType + /// JsonIngestConfig + public EntityTypeJsonIngestService(IEntityTypeService service, IOptions config) : base(service, config) + { + LoadTranslations = true; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/EntityVariantJsonIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/EntityVariantJsonIngestService.cs new file mode 100644 index 00000000..189504b0 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/EntityVariantJsonIngestService.cs @@ -0,0 +1,23 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest.Services; + +/// +/// Ingest EntityVariants from Json files +/// +public class EntityVariantJsonIngestService : BaseJsonIngestService, IIngestService +{ + /// + /// Initializes a new instance of the class. + /// + /// Db repo from EntityVariant + /// JsonIngestConfig + public EntityVariantJsonIngestService(IEntityVariantService service, IOptions config) : base(service, config) + { + LoadTranslations = true; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/EntityVariantRoleJsonIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/EntityVariantRoleJsonIngestService.cs new file mode 100644 index 00000000..9320ddf2 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/EntityVariantRoleJsonIngestService.cs @@ -0,0 +1,20 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest.Services; + +/// +/// Ingest EntityVariantRoles from Json files +/// +public class EntityVariantRoleJsonIngestService : BaseJsonIngestService, IIngestService +{ + /// + /// Initializes a new instance of the class. + /// + /// Db repo from EntityVariantRole + /// JsonIngestConfig + public EntityVariantRoleJsonIngestService(IEntityVariantRoleService service, IOptions config) : base(service, config) { } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/PackageJsonIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/PackageJsonIngestService.cs new file mode 100644 index 00000000..fc1976ac --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/PackageJsonIngestService.cs @@ -0,0 +1,23 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest.Services; + +/// +/// Ingest Packages from Json files +/// +public class PackageJsonIngestService : BaseJsonIngestService, IIngestService +{ + /// + /// Initializes a new instance of the class. + /// + /// Db repo from Package + /// JsonIngestConfig + public PackageJsonIngestService(IPackageService service, IOptions config) : base(service, config) + { + LoadTranslations = true; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/ProviderJsonIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/ProviderJsonIngestService.cs new file mode 100644 index 00000000..25bd8e44 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/ProviderJsonIngestService.cs @@ -0,0 +1,20 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest.Services; + +/// +/// Ingest Providers from Json files +/// +public class ProviderJsonIngestService : BaseJsonIngestService, IIngestService +{ + /// + /// Initializes a new instance of the class. + /// + /// Db repo from Role + /// JsonIngestConfig + public ProviderJsonIngestService(IProviderService service, IOptions config) : base(service, config) { } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/RoleJsonIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/RoleJsonIngestService.cs new file mode 100644 index 00000000..967445fb --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/RoleJsonIngestService.cs @@ -0,0 +1,23 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest.Services; + +/// +/// Ingest Roles from Json files +/// +public class RoleJsonIngestService : BaseJsonIngestService, IIngestService +{ + /// + /// Initializes a new instance of the class. + /// + /// Db repo from Role + /// JsonIngestConfig + public RoleJsonIngestService(IRoleService service, IOptions config) : base(service, config) + { + LoadTranslations = true; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/RoleMapJsonIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/RoleMapJsonIngestService.cs new file mode 100644 index 00000000..51a26d62 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/RoleMapJsonIngestService.cs @@ -0,0 +1,20 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest.Services; + +/// +/// Ingest RoleMaps from Json files +/// +public class RoleMapJsonIngestService : BaseJsonIngestService, IIngestService +{ + /// + /// Initializes a new instance of the class. + /// + /// Db repo from RoleMap + /// JsonIngestConfig + public RoleMapJsonIngestService(IRoleMapService service, IOptions config) : base(service, config) { } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/RolePackageJsonIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/RolePackageJsonIngestService.cs new file mode 100644 index 00000000..f8abbd14 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/RolePackageJsonIngestService.cs @@ -0,0 +1,20 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest.Services; + +/// +/// Ingest RolePackages from Json files +/// +public class RolePackageJsonIngestService : BaseJsonIngestService, IIngestService +{ + /// + /// Initializes a new instance of the class. + /// + /// Db repo from RolePackage + /// JsonIngestConfig + public RolePackageJsonIngestService(IRolePackageService service, IOptions config) : base(service, config) { } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/TagGroupJsonIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/TagGroupJsonIngestService.cs new file mode 100644 index 00000000..1c0f2a4b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/TagGroupJsonIngestService.cs @@ -0,0 +1,23 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest.Services; + +/// +/// Ingest TagGroups from Json files +/// +public class TagGroupJsonIngestService : BaseJsonIngestService, IIngestService +{ + /// + /// Initializes a new instance of the class. + /// + /// Db repo from TagGroup + /// JsonIngestConfig + public TagGroupJsonIngestService(ITagGroupService service, IOptions config) : base(service, config) + { + LoadTranslations = true; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/TagJsonIngestService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/TagJsonIngestService.cs new file mode 100644 index 00000000..87cf0701 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Ingest/Services/TagJsonIngestService.cs @@ -0,0 +1,23 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.Extensions.Options; + +namespace Altinn.Authorization.AccessPackages.Repo.Ingest.Services; + +/// +/// Ingest Tags from Json files +/// +public class TagJsonIngestService : BaseJsonIngestService, IIngestService +{ + /// + /// Initializes a new instance of the class. + /// + /// Db repo from Tag + /// JsonIngestConfig + public TagJsonIngestService(ITagService service, IOptions config) : base(service, config) + { + LoadTranslations = true; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Migrate/DatabaseMigration.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Migrate/DatabaseMigration.cs new file mode 100644 index 00000000..6c78dc02 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Migrate/DatabaseMigration.cs @@ -0,0 +1,240 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Altinn.Authorization.AccessPackages.DbAccess.Migrate.Contracts; +using Altinn.Authorization.AccessPackages.Models; + +namespace Altinn.Authorization.AccessPackages.Repo.Migrate; + +/// +/// Access Package Migration +/// +public class DatabaseMigration : IDatabaseMigration +{ + private readonly IDbMigrationFactory _factory; + + private bool UseHistory { get { return _factory.UseHistory; } } + + private bool UseTranslation { get { return _factory.UseTranslation; } } + + /// + /// Constructor + /// + /// IDbMigrationFactory + public DatabaseMigration(IDbMigrationFactory factory) + { + _factory = factory; + } + + /// + public async Task Init() + { + await _factory.Init(); + await CreateSchema(); + + await CreateProvider(); + await CreateArea(); + await CreateEntity(); + await CreateTag(); + await CreatePackage(); + await CreateRole(); + await CreateResource(); + } + + private async Task CreateSchema() + { + await _factory.CreateSchema("History"); + await _factory.CreateSchema("Translation"); + } + + private async Task CreateProvider() + { + await _factory.CreateTable(withHistory: UseHistory); + await _factory.CreateColumn("Name", DataTypes.String(75)); + await _factory.CreateUniqueConstraint(["Name"]); + } + + private async Task CreateEntity() + { + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("Name", DataTypes.String(50)); + await _factory.CreateColumn("ProviderId", DataTypes.Guid); + await _factory.CreateUniqueConstraint(["ProviderId", "Name"]); + await _factory.CreateForeignKeyConstraint("ProviderId"); + + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("Name", DataTypes.String(50)); + await _factory.CreateColumn("Description", DataTypes.String(150)); + await _factory.CreateColumn("TypeId", DataTypes.Guid); + await _factory.CreateUniqueConstraint(["TypeId", "Name"]); + await _factory.CreateForeignKeyConstraint("TypeId"); + + await _factory.CreateTable(withHistory: UseHistory); + await _factory.CreateColumn("Name", DataTypes.String(250)); + await _factory.CreateColumn("TypeId", DataTypes.Guid); + await _factory.CreateColumn("VariantId", DataTypes.Guid); + await _factory.CreateColumn("RefId", DataTypes.String(50)); + await _factory.CreateUniqueConstraint(["Name", "TypeId", "RefId"]); + await _factory.CreateForeignKeyConstraint("TypeId"); + await _factory.CreateForeignKeyConstraint("VariantId"); + } + + private async Task CreateArea() + { + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("Name", DataTypes.String(75)); + await _factory.CreateColumn("Description", DataTypes.String(750)); + await _factory.CreateUniqueConstraint(["Name"]); + + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("Name", DataTypes.String(75)); + await _factory.CreateColumn("Description", DataTypes.String(750)); + await _factory.CreateColumn("IconName", DataTypes.String(50)); + await _factory.CreateColumn("GroupId", DataTypes.Guid); + await _factory.CreateUniqueConstraint(["Name"]); + await _factory.CreateForeignKeyConstraint("GroupId"); + } + + private async Task CreateTag() + { + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("Name", DataTypes.String(100)); + await _factory.CreateUniqueConstraint(["Name"]); + + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("Name", DataTypes.String(50)); + await _factory.CreateColumn("GroupId", DataTypes.Guid, nullable: true); + await _factory.CreateColumn("ParentId", DataTypes.Guid, nullable: true); + await _factory.CreateUniqueConstraint(["Name"]); + await _factory.CreateForeignKeyConstraint("GroupId"); + await _factory.CreateForeignKeyConstraint("ParentId"); + } + + private async Task CreatePackage() + { + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("Name", DataTypes.String(100)); + await _factory.CreateColumn("Description", DataTypes.String(1500)); + await _factory.CreateColumn("IsDelegable", DataTypes.Bool); + await _factory.CreateColumn("ProviderId", DataTypes.Guid); + await _factory.CreateColumn("EntityTypeId", DataTypes.Guid); + await _factory.CreateColumn("AreaId", DataTypes.Guid); + await _factory.CreateUniqueConstraint(["ProviderId", "Name"]); + await _factory.CreateForeignKeyConstraint("ProviderId"); + await _factory.CreateForeignKeyConstraint("EntityTypeId"); + await _factory.CreateForeignKeyConstraint("AreaId"); + + await _factory.CreateTable(withHistory: UseHistory); + await _factory.CreateColumn("PackageId", DataTypes.Guid); + await _factory.CreateColumn("TagId", DataTypes.Guid); + await _factory.CreateUniqueConstraint(["PackageId", "TagId"]); + await _factory.CreateForeignKeyConstraint("PackageId"); + await _factory.CreateForeignKeyConstraint("TagId"); + + await _factory.CreateTable(withHistory: UseHistory); + await _factory.CreateColumn("PackageId", DataTypes.Guid); + await _factory.CreateColumn("ForId", DataTypes.Guid); + await _factory.CreateColumn("ToId", DataTypes.Guid); + await _factory.CreateColumn("ById", DataTypes.Guid); + await _factory.CreateUniqueConstraint(["ForId", "ToId", "PackageId"]); + await _factory.CreateForeignKeyConstraint("PackageId"); + await _factory.CreateForeignKeyConstraint("ForId"); + await _factory.CreateForeignKeyConstraint("ToId"); + await _factory.CreateForeignKeyConstraint("ById"); + } + + private async Task CreateRole() + { + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("EntityTypeId", DataTypes.Guid); + await _factory.CreateColumn("ProviderId", DataTypes.Guid); + await _factory.CreateColumn("Name", DataTypes.String(100)); + await _factory.CreateColumn("Code", DataTypes.String(15)); + await _factory.CreateColumn("Description", DataTypes.String(1500)); + await _factory.CreateColumn("Urn", DataTypes.String(250)); + await _factory.CreateUniqueConstraint(["Urn"]); + await _factory.CreateUniqueConstraint(["EntityTypeId", "Name"]); + await _factory.CreateUniqueConstraint(["EntityTypeId", "Code"]); + await _factory.CreateForeignKeyConstraint("EntityTypeId"); + await _factory.CreateForeignKeyConstraint("ProviderId"); + + await _factory.CreateTable(withHistory: UseHistory); + await _factory.CreateColumn("RoleId", DataTypes.Guid); + await _factory.CreateColumn("PackageId", DataTypes.Guid); + await _factory.CreateColumn("IsActor", DataTypes.Bool); + await _factory.CreateColumn("IsAdmin", DataTypes.Bool); + await _factory.CreateColumn("EntityVariantId", DataTypes.Guid, nullable: true); + await _factory.CreateUniqueConstraint(["RoleId", "PackageId", "EntityVariantId"]); + await _factory.CreateForeignKeyConstraint("RoleId"); + await _factory.CreateForeignKeyConstraint("PackageId"); + await _factory.CreateForeignKeyConstraint("EntityVariantId"); + + await _factory.CreateTable(withHistory: UseHistory); + await _factory.CreateColumn("VariantId", DataTypes.Guid); + await _factory.CreateColumn("RoleId", DataTypes.Guid); + await _factory.CreateUniqueConstraint(["VariantId", "RoleId"]); + await _factory.CreateForeignKeyConstraint("VariantId"); + await _factory.CreateForeignKeyConstraint("RoleId"); + + await _factory.CreateTable(withHistory: UseHistory); + await _factory.CreateColumn("RoleId", DataTypes.Guid); + await _factory.CreateColumn("ForId", DataTypes.Guid); + await _factory.CreateColumn("ToId", DataTypes.Guid); + await _factory.CreateUniqueConstraint(["ForId", "RoleId", "ToId"]); + await _factory.CreateForeignKeyConstraint("RoleId"); + await _factory.CreateForeignKeyConstraint("ForId"); + await _factory.CreateForeignKeyConstraint("ToId"); + + await _factory.CreateTable(withHistory: UseHistory); + await _factory.CreateColumn("HasRoleId", DataTypes.Guid); + await _factory.CreateColumn("GetRoleId", DataTypes.Guid); + await _factory.CreateUniqueConstraint(["HasRoleId", "GetRoleId"]); + await _factory.CreateForeignKeyConstraint("HasRoleId"); + await _factory.CreateForeignKeyConstraint("GetRoleId"); + } + + private async Task CreateResource() + { + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("Name", DataTypes.String(50)); + await _factory.CreateUniqueConstraint(["Name"]); + + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("Name", DataTypes.String(50)); + await _factory.CreateColumn("ProviderId", DataTypes.Guid); + await _factory.CreateUniqueConstraint(["ProviderId", "Name"]); + await _factory.CreateForeignKeyConstraint("ProviderId"); + + /* + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("Name", DataTypes.String(15)); + await _factory.CreateColumn("ResourceGroupId", DataTypes.Guid); + await _factory.CreateUniqueConstraint(["ResourceGroupId", "Name"]); + await _factory.CreateForeignKeyConstraint("ResourceGroupId"); + */ + + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("Name", DataTypes.String(500)); + await _factory.CreateColumn("ProviderId", DataTypes.Guid); + await _factory.CreateColumn("TypeId", DataTypes.Guid); + await _factory.CreateColumn("GroupId", DataTypes.Guid); + await _factory.CreateUniqueConstraint(["Name"]); + await _factory.CreateForeignKeyConstraint("ProviderId"); + await _factory.CreateForeignKeyConstraint("TypeId"); + await _factory.CreateForeignKeyConstraint("GroupId"); + + /* + await _factory.CreateTable(withHistory: UseHistory, withTranslation: UseTranslation); + await _factory.CreateColumn("ResourceId", DataTypes.Guid); + await _factory.CreateColumn("ActionId", DataTypes.Guid); + await _factory.CreateUniqueConstraint(["ResourceId", "ActionId"]); + await _factory.CreateForeignKeyConstraint("ResourceId"); + await _factory.CreateForeignKeyConstraint("ActionId"); + */ + + await _factory.CreateTable(withHistory: UseHistory); + await _factory.CreateColumn("PackageId", DataTypes.Guid); + await _factory.CreateColumn("ResourceId", DataTypes.Guid); + await _factory.CreateColumn("Read", DataTypes.Bool); + await _factory.CreateColumn("Write", DataTypes.Bool); + await _factory.CreateColumn("Sign", DataTypes.Bool); + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Telemetry.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Telemetry.cs new file mode 100644 index 00000000..41125066 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages.Repo/Telemetry.cs @@ -0,0 +1,14 @@ +using System.Diagnostics; + +namespace Altinn.Authorization.AccessPackages.Repo; +public static class Telemetry +{ + public static ActivitySource Source = new ActivitySource("Altinn.Authorization.AccessPackages.Repo", "1.0.0"); + + public static Activity? StartActivity(string name, ActivityKind kind = ActivityKind.Internal) + { + var a = Source.StartActivity(name + $"<{typeof(T).Name}>", kind); + a?.SetCustomProperty("Type", typeof(T)); + return a; + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/.gitignore b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/.gitignore deleted file mode 100644 index b80bd20e..00000000 --- a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ - -.plugins -yuniql.exe -yuniql.pdb -yuniqlx.exe -yuniql-log-*.txt diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/AccessPackagesHost.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/AccessPackagesHost.cs deleted file mode 100644 index b86d9e97..00000000 --- a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/AccessPackagesHost.cs +++ /dev/null @@ -1,57 +0,0 @@ -using Altinn.Authorization.AccessPackages.Services; -using Altinn.Authorization.Configuration.Extensions; -using Altinn.Authorization.Configuration.OpenTelemetry.Extensions; -using Altinn.Authorization.Hosting.Extensions; - -namespace Altinn.Authorization.AccessPackages; - -/// -/// Provides methods for creating and configuring the host for the Altinn Access Packages service. -/// -public static class AccessPackagesHost -{ - /// - /// Creates and configures a new instance of the . - /// - /// Command-line arguments passed to the application. - /// The name of the service being configured. - /// An instance of configured for the Altinn Access Packages service. - public static WebApplication Create(string[] args, string service) - { - var builder = WebApplication.CreateBuilder(args); - ConfigureAppsettings(builder); - ConfigureServices(builder, service); - return builder.Build(); - } - - /// - /// Configures application settings for the Altinn Access Packages service. - /// - /// The instance of to configure. - /// The updated instance for method chaining. - public static WebApplicationBuilder ConfigureAppsettings(WebApplicationBuilder builder) - { - builder.AddAltinnAppConfiguration(opts => opts.AddDefaults()); - return builder; - } - - /// - /// Configures services for the Altinn Access Packages service. - /// - /// The instance of to configure. - /// The name of the service being configured. - /// The updated instance for method chaining. - public static WebApplicationBuilder ConfigureServices(WebApplicationBuilder builder, string service) - { - builder.AddAltinnHostDefaults(); - builder.AddAltinnDefaultOpenTelemetry(otel => otel.ServiceName = service); - - builder.Services.AddEndpointsApiExplorer(); - builder.Services.AddSwaggerGen(); - builder.Services.AddLogging(); - builder.Services.AddControllers(); - - builder.Services.AddSingleton(); - return builder; - } -} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Altinn.Authorization.AccessPackages.csproj b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Altinn.Authorization.AccessPackages.csproj index f8687061..34c1cfa7 100644 --- a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Altinn.Authorization.AccessPackages.csproj +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Altinn.Authorization.AccessPackages.csproj @@ -1,28 +1,22 @@ - + - + + net8.0 + enable + enable + SA1122;SA1516;CA8618;CA1860 + - - + + + + + + + - + + + - - - PreserveNewest - - - - - - - - - - - - \ No newline at end of file + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Altinn.Authorization.AccessPackages.http b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Altinn.Authorization.AccessPackages.http new file mode 100644 index 00000000..8298d397 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Altinn.Authorization.AccessPackages.http @@ -0,0 +1,6 @@ +@Altinn.Authorization.AccessPackages_HostAddress = http://localhost:5152 + +GET {{Altinn.Authorization.AccessPackages_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Controllers/AccessPackagesController.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Controllers/AccessPackagesController.cs deleted file mode 100644 index 5a824002..00000000 --- a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Controllers/AccessPackagesController.cs +++ /dev/null @@ -1,54 +0,0 @@ -using Altinn.Authorization.AccessPackages.Models; -using Altinn.Authorization.AccessPackages.Services; -using Microsoft.AspNetCore.Mvc; - -namespace Altinn.Authorization.AccessPackages.Controllers; - -/// -/// Controller responsible for managing access packages within the Altinn authorization service. -/// -[ApiController] -[Route("[controller]/api/v1")] -public partial class AccessPackagesController : ControllerBase -{ - /// - /// Initializes a new instance of the class. - /// - /// An instance of for logging. - /// An instance of for accessing package services. - public AccessPackagesController(ILogger logger, IAccessPackageService service) - { - Logger = logger; - Service = service; - } - - private ILogger Logger { get; } - - private IAccessPackageService Service { get; } - - /// - /// Retrieves metadata for access packages. - /// - /// A cancellation token to observe while waiting for the task to complete. - /// A task representing the asynchronous operation, containing an with the metadata. - [HttpGet("metadata")] - [ProducesResponseType>(StatusCodes.Status200OK)] - public async Task GetMetadata(CancellationToken cancellationToken = default) - { - Log.ReadMetadata(Logger); - return Ok(await Service.ListAccessPackagesMetadata(cancellationToken)); - } - - /// - /// Provides structured logging methods for the . - /// - internal partial class Log - { - /// - /// Logs an informational message when metadata for access packages is being retrieved. - /// - /// The logger instance used to write the log message. - [LoggerMessage(EventId = 1, Level = LogLevel.Information, Message = "Retrieving access packages.")] - internal static partial void ReadMetadata(ILogger logger); - } -} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/EndpointExtension.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/EndpointExtension.cs new file mode 100644 index 00000000..660dd385 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/EndpointExtension.cs @@ -0,0 +1,249 @@ +using Altinn.Authorization.AccessPackages.DbAccess.Data.Contracts; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; +using Microsoft.AspNetCore.Mvc; + +namespace Altinn.Authorization.AccessPackages.Extensions; + +/// +/// Api Endpoint extension for DbAccess services +/// +public static class EndpointExtension +{ + /// + /// MapDbAccessEndpoints + /// + /// WebApplication + /// + public static WebApplication MapDbAccessEndpoints(this WebApplication app) + { + MapDefaultsExt(mapIngest: true, mapSearch: true); + MapDefaultsExt(); + MapDefaultsExt(); + MapCrossDefaults("variants", "roles"); + MapDefaultsExt(mapSearch: true); + MapCrossDefaults("packages", "tags"); + MapDefaults(); + MapDefaults(); + MapDefaultsExt(); + MapDefaultsExt(); + MapDefaultsExt(); + MapDefaults(); + return app; + + void MapDefaults(bool mapPost = true, bool mapPut = true, bool mapDelete = true, bool mapGetAll = true, bool mapIngest = false, bool mapSearch = false) + where TRepo : IDbBasicDataService + { + string name = typeof(T).Name; + app.MapGet($"/{name.ToLower()}" + "/{id}", (HttpRequest request, TRepo service, Guid id) => { return service.Get(id, options: GenerateRequestOptions(request)); }).WithOpenApi().WithTags(name).WithSummary("Get single " + name); + if (mapSearch) + { + app.MapGet($"/{name.ToLower()}" + "/search/{term}", (HttpRequest request, TRepo service, string term) => { return service.Search(term, options: GenerateRequestOptions(request)); }).WithOpenApi().WithTags(name).WithSummary("Search " + name); + } + + if (mapGetAll) + { + app.MapGet($"/{name.ToLower()}", (HttpRequest request, TRepo service) => { return service.Get(options: GenerateRequestOptions(request)); }).WithOpenApi().WithTags(name).WithSummary("Get all " + name); + } + + if (mapPost) + { + app.MapPost($"/{name.ToLower()}", async (TRepo service, [FromBody] T obj) => + { + var res = await service.Create(obj); + return res > 0 ? Results.Created("/", obj) : Results.Problem(); + }).WithOpenApi().WithTags(name).WithSummary("Create " + name); + } + + if (mapIngest) + { + app.MapPost($"/{name.ToLower()}/ingest", async (TRepo service, [FromBody] List data) => + { + var res = await service.Create(data); + return res > 0 ? Results.CreatedAtRoute() : Results.Problem(); + }).WithOpenApi().WithTags(name).WithSummary("Ingest list of " + name); + } + + if (mapPut) + { + app.MapPut($"/{name.ToLower()}" + "/{id}", (TRepo service, Guid id, [FromBody] T obj) => + { + return service.Update(id, obj); + }).WithOpenApi().WithTags(name).WithSummary("Update " + name); + } + + if (mapDelete) + { + app.MapDelete($"/{name.ToLower()}" + "/{id}", (TRepo service, Guid id) => + { + return service.Delete(id); + }).WithOpenApi().WithTags(name).WithSummary("Delete " + name); + } + } + + void MapDefaultsExt(bool mapPost = true, bool mapPut = true, bool mapDelete = true, bool mapGetAll = true, bool mapIngest = false, bool mapSearch = false) + where TRepo : IDbExtendedDataService + { + string name = typeof(T).Name; + app.MapGet($"/{name.ToLower()}" + "/{id}", (HttpRequest request, TRepo service, Guid id) => + { + return service.GetExtended(id, options: GenerateRequestOptions(request)); + }).WithOpenApi().WithTags(name).WithSummary("Get single " + name); + + if (mapSearch) + { + app.MapGet($"/{name.ToLower()}" + "/search/{term}", (HttpRequest request, TRepo service, string term) => + { + return service.SearchExtended(term, options: GenerateRequestOptions(request)); + }).WithOpenApi().WithTags(name).WithSummary("Search " + name); + } + + if (mapGetAll) + { + app.MapGet($"/{name.ToLower()}", (HttpRequest request, TRepo service) => + { + return service.ExtendedRepo.GetExtended(options: GenerateRequestOptions(request)); + }).WithOpenApi().WithTags(name).WithSummary("Get all " + name); + } + + if (mapPost) + { + app.MapPost($"/{name.ToLower()}", async (TRepo service, [FromBody] T obj) => + { + var res = await service.Create(obj); + return res > 0 ? Results.Created("/", obj) : Results.Problem(); + }).WithOpenApi().WithTags(name).WithSummary("Create " + name); + } + + if (mapIngest) + { + app.MapPost($"/{name.ToLower()}/ingest", async (TRepo service, [FromBody] List data) => + { + var res = await service.Create(data); + return res > 0 ? Results.CreatedAtRoute() : Results.Problem(); + }).WithOpenApi().WithTags(name).WithSummary("Ingest list of " + name); + } + + if (mapPut) + { + app.MapPut($"/{name.ToLower()}" + "/{id}", (TRepo service, Guid id, [FromBody] T obj) => + { + return service.Update(id, obj); + }).WithOpenApi().WithTags(name).WithSummary("Update " + name); + } + + if (mapDelete) + { + app.MapDelete($"/{name.ToLower()}" + "/{id}", (TRepo service, Guid id) => + { + return service.Delete(id); + }).WithOpenApi().WithTags(name).WithSummary("Delete " + name); + } + } + + void MapCrossDefaults(string PluralNameForA, string PluralNameForB) + where TRepo : IDbCrossDataService + { + var nameForT = typeof(T).Name; // PackageTag + var nameForA = typeof(TA).Name; // Package + var nameForB = typeof(TB).Name; // Tag + + app.MapGet($"/{nameForA.ToLower()}" + "/{id}/" + PluralNameForB, (HttpRequest request, TRepo service, Guid id) => + { + return service.GetB(id); + }).WithOpenApi().WithTags(nameForA).WithSummary($"Get {nameForB} based on {typeof(T).Name} filtering on {nameForA}"); + + app.MapGet($"/{nameForB.ToLower()}" + "/{id}/" + PluralNameForA, (HttpRequest request, TRepo service, Guid id) => + { + return service.GetA(id); + }).WithOpenApi().WithTags(nameForB).WithSummary($"Get {nameForA} based on {typeof(T).Name} filtering on {nameForB}"); + } + + RequestOptions GenerateRequestOptions(HttpRequest request) + { + var options = new RequestOptions(); + if (request == null || request.Headers == null) + { + return options; + } + + if (request.Headers.AcceptLanguage.Any()) + { + // Example from browser: nb-NO, + // nb;q=0.9, + // no;q=0.8, + // nn;q=0.7, + // en-US;q=0.6, + // en;q=0.5 + foreach (var lang in request.Headers.AcceptLanguage) + { + if (string.IsNullOrEmpty(lang)) + { + continue; + } + + var languageCode = TranslateLanguageCode(lang.Split(',')[0]); + if (languageCode != "nob") + { + options.Language = languageCode; + } + } + } + + if (request.Headers.ContainsKey("x-as-of-time")) + { + options.AsOf = DateTime.Parse(request.Headers["x-as-of-time"].ToString()); + } + + if (request.Query != null) + { + if (request.Query.ContainsKey("page") | request.Query.ContainsKey("page-size")) + { + options.UsePaging = true; + options.PageNumber = int.Parse(request.Query["page"][0] ?? "1"); + options.PageSize = int.Parse(request.Query["page-size"][0] ?? "25"); + options.OrderBy = "name"; + } + + if (request.Query.ContainsKey("orderby")) + { + options.OrderBy = request.Query["orderby"][0] ?? "name"; + } + } + + if (request.Headers != null) + { + if (request.Headers.ContainsKey("x-page") || request.Headers.ContainsKey("x-page-size")) + { + options.UsePaging = true; + options.PageNumber = int.Parse(request.Headers["x-page"][0] ?? "1"); + options.PageSize = int.Parse(request.Headers["x-page-size"][0] ?? "25"); + options.OrderBy = "name"; + } + + if (request.Headers.ContainsKey("x-orderby")) + { + options.OrderBy = request.Headers["x-orderby"][0] ?? "name"; + } + } + + return options; + } + + string TranslateLanguageCode(string languageCode) + { + switch (languageCode) + { + default: + return languageCode; + case "nb-NO": + return "nob"; + case "nn-NO": + return "nno"; + case "en-US": + return "eng"; + } + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Program.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Program.cs index 07b04527..05b3b0d6 100644 --- a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Program.cs +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Program.cs @@ -1,7 +1,51 @@ -using Altinn.Authorization.AccessPackages; -using Altinn.Authorization.Hosting.Extensions; +using Altinn.Authorization.AccessPackages.DbAccess.Data.Models; +using Altinn.Authorization.AccessPackages.DbAccess.Ingest.Models; +using Altinn.Authorization.AccessPackages.DbAccess.Migrate.Models; +using Altinn.Authorization.AccessPackages.Extensions; +using Altinn.Authorization.AccessPackages.Repo.Extensions; +using Microsoft.Extensions.Hosting; +using OpenTelemetry; +using OpenTelemetry.Logs; +using OpenTelemetry.Resources; +using OpenTelemetry.Trace; -var app = AccessPackagesHost.Create(args, "AccessPackages"); +var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddLogging(); + +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +builder.Services.Configure(builder.Configuration.GetRequiredSection("DbObjDefConfig")); +builder.Services.AddSingleton(); + +builder.Services.Configure(builder.Configuration.GetSection("DbMigration")); +builder.Services.AddDbAccessMigrations(); + +builder.Services.Configure(builder.Configuration.GetSection("JsonIngest")); +builder.Services.AddDbAccessIngests(); + +builder.Services.AddDbAccessData(); + +var app = builder.Build(); + +using var tracerProvider = Sdk.CreateTracerProviderBuilder() + .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("AccessPackages", serviceInstanceId: "api")) + .AddSource("Altinn.Authorization.AccessPackages.Repo") + .AddOtlpExporter() + .Build(); + +using var tracerProvider2 = Sdk.CreateTracerProviderBuilder() + .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("DbAccess", serviceInstanceId:"api")) + .AddSource("Altinn.Authorization.DbAccess") + .AddOtlpExporter() + .Build(); + +var definitions = app.Services.GetRequiredService(); +definitions.SetDatabaseDefinitions(); + +await app.Services.UseDbAccessMigrations(); +await app.Services.UseDbAccessIngests(); if (app.Environment.IsDevelopment()) { @@ -9,12 +53,13 @@ app.UseSwaggerUI(); } -app.UseAltinnHostDefaults(); -app.MapControllers(); +app.UseHttpsRedirection(); + +app.MapGet("/icon/{type}/{category}/{name}", (string type, string category, string name) => +{ + return Results.File(@$"resources/{type}/{category}/{name}.svg", contentType: "image/svg+xml"); +}).WithOpenApi().WithTags("Icon").WithSummary("Gets icons"); -await app.RunAsync(); +app.MapDbAccessEndpoints(); -/// -/// Program -/// -public partial class Program { } \ No newline at end of file +app.Run(); \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Properties/launchSettings.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Properties/launchSettings.json index b230a73a..0f71e25e 100644 --- a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Properties/launchSettings.json +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Properties/launchSettings.json @@ -4,8 +4,8 @@ "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { - "applicationUrl": "http://localhost:23560", - "sslPort": 44312 + "applicationUrl": "http://localhost:21000", + "sslPort": 44321 } }, "profiles": { @@ -14,7 +14,7 @@ "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", - "applicationUrl": "http://localhost:5072", + "applicationUrl": "http://localhost:5152", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } @@ -24,7 +24,7 @@ "dotnetRunMessages": true, "launchBrowser": true, "launchUrl": "swagger", - "applicationUrl": "https://localhost:7271;http://localhost:5072", + "applicationUrl": "https://localhost:7040;http://localhost:5152", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Services/AccessPackagesService.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Services/AccessPackagesService.cs deleted file mode 100644 index bd61c616..00000000 --- a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/Services/AccessPackagesService.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.Net; -using System.Text.Json; -using Altinn.Authorization.AccessPackages.Models; - -namespace Altinn.Authorization.AccessPackages.Services; - -/// -public class AccessPackagesService : IAccessPackageService -{ - private string AccessPackageFile { get; } = Path.Join(AppContext.BaseDirectory, "accesspackages.json"); - - /// - public async Task> ListAccessPackagesMetadata(CancellationToken cancellationToken = default) - { - return await JsonSerializer.DeserializeAsync>(File.OpenRead(AccessPackageFile), cancellationToken: cancellationToken); - } -} - -/// -/// Manages Access Packages -/// -public interface IAccessPackageService -{ - /// - /// Lists access package metadata - /// - public Task> ListAccessPackagesMetadata(CancellationToken cancellationToken = default); -} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/accesspackages.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/accesspackages.json deleted file mode 100644 index c85c08ff..00000000 --- a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/accesspackages.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - - { - "name": "Access Package 1" - }, - { - "name": "Access Package 2" - }, - { - "name": "Access Package 3" - } -] diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/appsettings.Development.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/appsettings.json b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/appsettings.json index 51b4f54a..9a52a4dc 100644 --- a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/appsettings.json +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.AccessPackages/appsettings.json @@ -1,17 +1,41 @@ { - "AppConfiguration": { - "Endpoint": "https://appconfaltinnauth001at21.azconfig.io/" - }, - "Postgres": { - "Host": "172.21.0.1:5432", - "Database": "test", - "Username": "platform_authorization_admin", - "Password": "Password" - }, "Logging": { "LogLevel": { - "Default": "Information" + "Default": "Information", + "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*" -} \ No newline at end of file + "AllowedHosts": "*", + "DbObjDefConfig": { + "BaseSchema": "dbo", + "TranslationSchema": "translation", + "HistorySchema": "history", + "TranslateObjects": [ + "Area", + "AreaGroup", + "EntityType", + "Package", + "Role", + "Tag", + "TagGroup" + ], + "HistoryObjects": [ "" ] + }, + "DataService": { + "ConnectionString": "Database=wiggin01;Host=localhost;Username=wigg;Password=jw8s0F4" + }, + "DbMigration": { + "ConnectionString": "Database=wiggin01;Host=localhost;Username=wigg;Password=jw8s0F4", + "CollectionId": "AccessPackages", + "DefaultSchema": "dbo", + "TranslationSchema": "translation", + "HistorySchema": "history" + }, + "JsonIngest": { + "BasePath": "..\\Altinn.Authorization.AccessPackages.Repo\\Ingest\\JsonData\\", + "Languages": [ + "nno", + "eng" + ] + } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Altinn.Authorization.Importers.BRREG.csproj b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Altinn.Authorization.Importers.BRREG.csproj new file mode 100644 index 00000000..b2b9992d --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Altinn.Authorization.Importers.BRREG.csproj @@ -0,0 +1,14 @@ + + + + net8.0 + enable + enable + CS8618;CA1822;IDE0051 + + + + + + + diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/BrregApiWrapper.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/BrregApiWrapper.cs new file mode 100644 index 00000000..8579c6d5 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/BrregApiWrapper.cs @@ -0,0 +1,402 @@ +using System.IO.Compression; +using System.Net.Http.Json; +using System.Text.Json; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// Wrapper for Brønnøysund Register API +/// +public class BrregApiWrapper +{ + #region Tools + private static async Task WriteCacheFile(string shortName, string content) + { + await File.WriteAllTextAsync(shortName, content); + } + + private static async Task?> GetCacheFile(string shortName, CancellationToken cancellationToken = default) + { + if (File.Exists(shortName)) + { + var res = JsonSerializer.Deserialize>(await File.ReadAllTextAsync(shortName, cancellationToken)); + return res ?? throw new Exception("Empty stream result"); + } + + return null; + } + + private async Task> GetHttpStream(string shortName, string url, string? acceptHeader = null, CancellationToken cancellationToken = default) + { + try + { + using var client = new HttpClient(); + if (acceptHeader != null) + { + client.DefaultRequestHeaders.Add("Accept", acceptHeader); + } + + using var stream = await client.GetStreamAsync(url, cancellationToken); + using var decompress = new GZipStream(stream, CompressionMode.Decompress); + var res = JsonSerializer.Deserialize>(new StreamReader(decompress).BaseStream); + + if (typeof(T) != typeof(RoleResult)) + { + try + { + await WriteCacheFile(shortName, JsonSerializer.Serialize(res)); + } + catch (Exception ex) + { + Console.WriteLine($"Unable to write result to cache for '{typeof(T).Name}'. " + ex.Message); + } + } + + return res ?? throw new Exception("Empty stream result"); + } + catch (Exception ex) + { + throw new Exception("Failed while downloading stream", ex); + } + } + + /// + /// PagedUrl + /// + internal class PagedUrl + { + /// + /// BaseUrl + /// + public string BaseUrl { get; set; } + + /// + /// PageSize + /// + public int PageSize { get; set; } + + /// + /// CurrentPage + /// + public int CurrentPage { get; set; } + + /// + /// LastPage + /// + public int LastPage { get; set; } + + /// + /// Constructor + /// + /// Baseurl + /// PageSize + /// ChangeId + /// ChangeDate + public PagedUrl(string baseUrl, int pageSize = 1000, int? changeId = null, DateTime? changeDate = null) + { + CurrentPage = -1; + LastPage = 1; + PageSize = pageSize; + if (changeId.HasValue) + { + BaseUrl = $"{baseUrl}?oppdateringsid={changeId.Value}"; + } + + if (changeDate.HasValue) + { + BaseUrl = $"{baseUrl}?dato={changeDate.Value:yyyy-MM-ddTHH:mm:ss.fffZ}"; + } + + if (string.IsNullOrEmpty(BaseUrl)) + { + throw new Exception("BaseUrl missing"); + } + } + + /// + /// Get data + /// + /// Type to convert data to + /// + public async Task> GetData() + where T : IChangeResult + { + using var client = new HttpClient(); + var result = new List(); + while (LastPage > CurrentPage + 1) + { + string url = $"{BaseUrl}&size={PageSize}&page={CurrentPage}"; + Console.WriteLine(url); + var res = await client.GetFromJsonAsync(url); + if (res != null) + { + result.Add(res); + LastPage = res.Page.TotalPages; + CurrentPage++; + } + else + { + break; + } + } + + return result; + } + } + #endregion + + #region Unit + + /// + /// Get all units + /// + /// + public async Task> GetAllUnits() + { + var cacheResult = await GetCacheFile("allunits"); + if (cacheResult != null) + { + return cacheResult; + } + + return await GetHttpStream("allunits", "https://data.brreg.no/enhetsregisteret/api/enheter/lastned", "application/vnd.brreg.enhetsregisteret.enhet.v2+gzip;charset=UTF-8"); + } + + /// + /// Gets a single unit + /// + /// Organisasjonsnummer + /// + public async Task GetUnit(string orgNo) + { + try + { + using var client = new HttpClient(); + var res = await client.GetFromJsonAsync($"https://data.brreg.no/enhetsregisteret/api/enheter/{orgNo}"); + if (res == null) + { + return null; + } + else + { + return res ?? null; + } + } + catch (Exception ex) + { + Console.WriteLine($"Unit not found '{orgNo}': {ex.Message}"); + throw; + } + } + + /// + /// Gets changes for units by id or date + /// + /// PageSize + /// Last changeId + /// Last sync date + /// + /// Only specify afterChangeId OR sinceDate + public async Task> GetUnitChanges(int pageSize = 1000, int? changeId = null, DateTime? sinceDate = null) + { + if (changeId.HasValue && sinceDate.HasValue) + { + throw new ArgumentException("Only specify afterChangeId OR sinceDate"); + } + + var url = new PagedUrl("https://data.brreg.no/enhetsregisteret/api/oppdateringer/enheter", pageSize: pageSize, changeId: changeId, changeDate: sinceDate); + var changeResults = await url.GetData(); + if (changeResults == null) + { + return []; + } + + try + { + return changeResults.SelectMany(t => t.Elements.Data).ToList(); + } + catch + { + return []; + } + } + #endregion + + #region SubUnit + + /// + /// Gets all subunits + /// + /// + public async Task> GetAllSubUnits() + { + return await GetHttpStream("allsubunits", "https://data.brreg.no/enhetsregisteret/api/underenheter/lastned", "application/vnd.brreg.enhetsregisteret.underenhet.v2+gzip;charset=UTF-8"); + } + + /// + /// Gets single subunit + /// + /// Organisasjonsnummer + /// + public async Task GetSubUnit(string orgNo) + { + using var client = new HttpClient(); + var res = await client.GetFromJsonAsync($"https://data.brreg.no/enhetsregisteret/api/underenheter/{orgNo}"); + return res; + } + + /// + /// Gets changes for subunits by id or date + /// + /// PageSize + /// Last changeId + /// Last sync date + /// + /// Only specify afterChangeId OR sinceDate + public async Task> GetSubUnitChanges(int pageSize = 1000, int? changeId = null, DateTime? sinceDate = null) + { + if (changeId.HasValue && sinceDate.HasValue) + { + throw new ArgumentException("Only specify afterChangeId OR sinceDate"); + } + + var url = new PagedUrl("https://data.brreg.no/enhetsregisteret/api/oppdateringer/underenheter", pageSize: pageSize, changeId: changeId, changeDate: sinceDate); + var changeResults = await url.GetData(); + try + { + return changeResults.SelectMany(t => t.Elements.Data).ToList(); + } + catch + { + return []; + } + } + + #endregion + + #region Roles + + /// + /// Gets all roles for all units + /// + /// + public async Task> GetAllUnitRoles() + { + var cacheResult = await GetCacheFile("allroles"); + if (cacheResult != null) + { + return cacheResult; + } + + return await GetHttpStream("allroles", "https://data.brreg.no/enhetsregisteret/api/roller/totalbestand", "application/vnd.brreg.enhetsregisteret.underenhet.v2+gzip;charset=UTF-8"); + } + + /// + /// Gets roles for a single unit + /// + /// Organisasjonsnummer + /// + public async Task GetUnitRoles(string orgNo) + { + using var client = new HttpClient(); + return await client.GetFromJsonAsync($"https://data.brreg.no/enhetsregisteret/api/enheter/{orgNo}/roller"); + } + + /// + /// Gets role changes for all units after changeId + /// + /// Last changeId + /// + public async Task> GetAllRoleChanges(int afterChangeId) + { + using var client = new HttpClient(); + var changes = new List(); + + int resultCount = 1; + while (resultCount > 0) + { + string urlPath = $"https://data.brreg.no/enhetsregisteret/api/oppdateringer/roller?afterId={afterChangeId}"; + var res = await client.GetFromJsonAsync>(urlPath); + if (res != null) + { + changes.AddRange(res); + resultCount = res.Count; + afterChangeId = changes.Max(t => t.Id); + } + else + { + break; + } + } + + return changes; + } + + /// + /// Gets role changes for all units after given date + /// + /// Last sync date + /// + public async Task> GetAllRoleChanges(DateTime sinceDate) + { + using var client = new HttpClient(); + var changes = new List(); + + int resultCount = 1; + while (resultCount > 0) + { + string urlPath = $"https://data.brreg.no/enhetsregisteret/api/oppdateringer/roller?afterTime={sinceDate:yyyy-MM-ddTHH:mm:ss.fffZ}"; + var res = await client.GetFromJsonAsync>(urlPath); + if (res != null) + { + changes.AddRange(res); + resultCount = res.Count; + sinceDate = changes.Max(t => t.Time); + } + else + { + break; + } + } + + return changes; + } + #endregion + + #region Types + + /// + /// Gets all unit forms (Organisasjonsformer) + /// + /// + public async Task> GetUnitForms() + { + using var client = new HttpClient(); + var result = new List(); + var data = await client.GetFromJsonAsync("https://data.brreg.no/enhetsregisteret/api/organisasjonsformer"); + if (data != null) + { + result.AddRange(data.Elements.Data); + } + + return result; + } + + /// + /// Gets all roletypes (Rolletyper) + /// + /// + public async Task> GetEntityRoleTypes() + { + using var client = new HttpClient(); + var result = new List(); + var data = await client.GetFromJsonAsync("https://data.brreg.no/enhetsregisteret/api/roller/rolletyper"); + if (data != null) + { + result.AddRange(data.Elements.Data); + } + + return result; + } + #endregion +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Importer.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Importer.cs new file mode 100644 index 00000000..554c6571 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Importer.cs @@ -0,0 +1,592 @@ +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// Import changes from Brreg API +/// +public class Importer +{ + #region Constructor + private BrregApiWrapper BrregApi { get; set; } + + private IEntityService EntityService { get; set; } + + private IEntityTypeService EntityTypeService { get; } + + private IEntityVariantService EntityVariantService { get; } + + private IRoleAssignmentService RoleAssignmentService { get; } + + private IRoleService RoleService { get; } + + /// + /// Importer + /// + /// IEntityService + /// IEntityTypeService + /// IEntityVariantService + /// IRoleAssignmentService + /// IRoleService + public Importer( + IEntityService entityService, + IEntityTypeService entityTypeService, + IEntityVariantService entityVariantService, + IRoleAssignmentService roleAssignmentService, + IRoleService roleService + ) + { + BrregApi = new BrregApiWrapper(); + EntityService = entityService; + EntityTypeService = entityTypeService; + EntityVariantService = entityVariantService; + RoleAssignmentService = roleAssignmentService; + RoleService = roleService; + ChangeRef = new Dictionary + { + { "enhet", 19897745 }, + { "underenhet", 19308023 }, + { "roller", 2929641 } + }; + LoadCache().Wait(); + } + #endregion + + #region ChangeRef + private Dictionary ChangeRef { get; set; } + + private int GetChangeId(string type) + { + return ChangeRef[type]; + } + + private void UpdateChangeId(string type, int id) + { + Console.WriteLine(type + ":" + id); + if (id > GetChangeId(type)) + { + ChangeRef[type] = id; + } + } + + /// + /// Write ChangeIds to console + /// + public void WriteChangeRefsToConsole() + { + foreach (var changeRef in ChangeRef) + { + Console.WriteLine($"{changeRef.Key}:{changeRef.Value}"); + } + } + #endregion + + #region Cache + private async Task LoadCache() + { + Console.WriteLine("Loading cache..."); + CacheEntityType = [.. await EntityTypeService.Get()]; + CacheEntityVariant = [.. await EntityVariantService.Get()]; + CacheRole = [.. await RoleService.Get()]; + + var res = await EntityService.Get(); + EntityIdCache = res.ToDictionary(k => k.RefId, v => v.Id); + + Console.WriteLine($"CacheEntityType:{CacheEntityType.Count}\t" + + $"CacheEntityVariant:{CacheEntityVariant.Count}\t" + + $"CacheRole:{CacheRole.Count}\t" + + $"EntityIdCache:{EntityIdCache.Count}\t"); + } + + private List CacheEntityType { get; set; } = []; + + private List CacheEntityVariant { get; set; } = []; + + private List CacheRole { get; set; } = []; + + private Dictionary EntityIdCache { get; set; } = []; + + #endregion + + #region Lookup + private Role? LookupRole(string name) + { + return CacheRole.FirstOrDefault(t => t.Code == name) ?? throw new Exception($"Role not found '{name}'"); + } + + private EntityType? LookupType(string typeName) + { + return CacheEntityType.FirstOrDefault(t => t.Name == typeName); + } + + private EntityVariant? LookupVariant(string typeName, string variantName) + { + var type = LookupType(typeName); + if (type == null) + { + return null; + } + + return CacheEntityVariant.FirstOrDefault(t => t.TypeId == type.Id && t.Name == variantName); + } + + private EntityVariant? LookupVariant(Guid typeId, string variantName) + { + return CacheEntityVariant.FirstOrDefault(t => t.TypeId == typeId && t.Name == variantName); + } + + private (EntityType? Type, EntityVariant? Variant) LookupTypeVariant(string typeName, string variantName) + { + return (LookupType(typeName), LookupVariant(typeName, variantName)); + } + + #endregion + + #region Generate + private Entity? GenerateOrgEntity(Unit unit) + { + return GenerateOrgEntity(unit.Name, unit.OrgNo, unit.OrgForm.Code); + } + + private Entity? GenerateOrgEntity(string name, string orgNo, string orgForm) + { + var typeVariant = LookupTypeVariant("Organisasjon", orgForm); + if (typeVariant.Type == null || typeVariant.Variant == null) + { + return null; + } + + return new Entity() + { + Id = Guid.NewGuid(), + Name = name, + RefId = orgNo, + TypeId = typeVariant.Type.Id, + VariantId = typeVariant.Variant.Id + }; + } + + private string GeneratePersonRefId(RolePerson person) + { + var str = $"{person.Birthdate}{person.Name.Lastname}{person.Name.Firstname}{person.Name.Middlename}"; + if (str.Length > 50) + { + return str[..50]; + } + + return str; + } + + private string GeneratePersonDisplayName(RolePerson person) + { + var nameParts = new string[] { person.Name.Firstname, person.Name.Middlename, person.Name.Lastname }; + return string.Join(' ', nameParts.Where(t => !string.IsNullOrEmpty(t))); + } + + private Entity? GeneratePersonEntity(RolePerson person) + { + return GeneratePersonEntity(GeneratePersonDisplayName(person), GeneratePersonRefId(person)); + } + + private Entity? GeneratePersonEntity(string name, string refId) + { + var typeVariant = LookupTypeVariant("Person", "Person"); + if (typeVariant.Type == null || typeVariant.Variant == null) + { + return null; + } + + return new Entity() + { + Id = Guid.NewGuid(), + Name = name, + RefId = refId, + TypeId = typeVariant.Type.Id, + VariantId = typeVariant.Variant.Id + }; + } + #endregion + + #region UnitChanges + + /// + /// Import Unit changes + /// + /// + public async Task ImportUnit() + { + Console.WriteLine("Importing unit changes"); + await LoadCache(); + var changeId = GetChangeId("enhet"); + if (changeId == 0) + { + var sinceDate = DateTime.Parse(DateTime.Now.ToShortDateString()); + if (sinceDate.DayOfWeek == DayOfWeek.Sunday) + { + /* + Brreg Bug ... + */ + sinceDate.AddDays(-1); + } + + Console.WriteLine($"Getting changes since {sinceDate}"); + var changes = await BrregApi.GetUnitChanges(sinceDate: sinceDate); + + Console.WriteLine($"Handeling changes ({changes.Count})"); + foreach (var change in changes) + { + await HandleUnitChange(change, isSubUnit: true); + UpdateChangeId("enhet", change.ChangeId); + } + } + else + { + Console.WriteLine($"Getting changes since {changeId}"); + var changes = await BrregApi.GetUnitChanges(changeId: changeId); + Console.WriteLine($"Handeling changes ({changes.Count})"); + foreach (var change in changes) + { + await HandleUnitChange(change, isSubUnit: false); + UpdateChangeId("enhet", change.ChangeId); + } + } + + Console.WriteLine("Role import complete"); + } + + /// + /// Import SubUnit changes + /// + /// + public async Task ImportSubUnit() + { + var changeId = GetChangeId("underenhet"); + + if (changeId == 0) + { + var sinceDate = DateTime.Parse(DateTime.Now.ToShortDateString()); + if (sinceDate.DayOfWeek == DayOfWeek.Sunday) + { + sinceDate.AddDays(-1); + } + + Console.WriteLine($"Getting changes since {sinceDate}"); + var changes = await BrregApi.GetSubUnitChanges(sinceDate: sinceDate); + Console.WriteLine($"Handeling changes ({changes.Count})"); + foreach (var change in changes) + { + await HandleUnitChange(change, isSubUnit: true); + UpdateChangeId("underenhet", change.ChangeId); + } + } + else + { + Console.WriteLine($"Getting changes since {changeId}"); + var changes = await BrregApi.GetSubUnitChanges(changeId: changeId); + Console.WriteLine($"Handeling changes ({changes.Count})"); + foreach (var change in changes) + { + await HandleUnitChange(change, isSubUnit: true); + UpdateChangeId("underenhet", change.ChangeId); + } + } + } + + private async Task HandleUnitChange(UnitChange change, bool isSubUnit) + { + try + { + switch (change.ChangeType) + { + case "Ny": + await CreateUnitEnity(change.OrgNo, isSubUnit); + break; + case "Endring": + case "Ukjent": + await UpdateUnitEntity(change.OrgNo, isSubUnit); + break; + case "Sletting": + case "Fjernet": + await DeleteUnitEntity(change.OrgNo); + break; + } + } + catch (Exception ex) + { + Console.WriteLine($"Failed to implement '{change.ChangeType}' change #{change.ChangeId} for '{change.OrgNo}'"); + Console.WriteLine(ex.Message); + } + } + + private async Task CreateUnitEnity(string orgNo, bool isSubUnit) + { + var unit = await GetUnit(orgNo, isSubUnit); + if (unit == null) + { + return; + } + + var entity = GenerateOrgEntity(unit.Name, unit.OrgNo, unit.OrgForm.Code); + if (entity == null) + { + return; + } + + await EntityService.Create(entity); + } + + private async Task UpdateUnitEntity(string orgNo, bool isSubUnit) + { + var unit = await GetUnit(orgNo, isSubUnit); + if (unit == null) + { + return; + } + + var type = LookupType("Organisasjon"); + if (type == null) + { + return; + } + + var entity = await EntityService.GetByRefId(orgNo, type.Id); + if (entity == null) + { + return; + } + + if (unit.Name != entity.Name) + { + await EntityService.Update(entity.Id, "Name", unit.Name); + } + } + + private async Task DeleteUnitEntity(string orgNo) + { + var type = LookupType("Organisasjon"); + if (type == null) + { + return; + } + + var entity = await EntityService.GetByRefId(orgNo, type.Id); + if (entity == null) + { + return; + } + + await EntityService.Repo.Delete(entity.Id); + } + + private async Task GetUnit(string orgNo, bool isSubUnit) + { + if (isSubUnit) + { + return await BrregApi.GetSubUnit(orgNo); + } + else + { + return await BrregApi.GetUnit(orgNo); + } + } + #endregion + + #region RoleChanges + + /// + /// Import Role changes + /// + /// + public async Task ImportRoles() + { + var changeId = GetChangeId("roller"); + Console.WriteLine("Getting role changes"); + + if (changeId == 0) + { + var sinceDate = DateTime.Parse(DateTime.Now.ToShortDateString()); + if (sinceDate.DayOfWeek == DayOfWeek.Sunday) + { + /* + Brreg bug? + */ + + sinceDate.AddDays(-1); + } + + Console.WriteLine($"Getting changes since {sinceDate}"); + var changes = await BrregApi.GetAllRoleChanges(sinceDate: sinceDate); + Console.WriteLine($"Handeling changes ({changes.Count})"); + foreach (var change in changes) + { + await ChangeRole(change); + UpdateChangeId("roller", change.Id); + } + } + else + { + Console.WriteLine($"Getting changes since {changeId}"); + var changes = await BrregApi.GetAllRoleChanges(changeId); + Console.WriteLine($"Handeling changes ({changes.Count})"); + foreach (var change in changes) + { + await ChangeRole(change); + UpdateChangeId("roller", change.Id); + } + } + + Console.WriteLine("RoleAssignment - Done"); + } + + /// + /// RoleAssignment Comparer + /// + internal class RoleAssignmentComparer + { + /// + /// ToId + ForId + RoleId + /// + public string Key { get; set; } + + /// + /// RoleAssignment + /// + public RoleAssignment RoleAssignment { get; set; } + + /// + /// RoleAssignmentComparer + /// + /// RoleAssignment + public RoleAssignmentComparer(RoleAssignment roleAssignment) + { + RoleAssignment = roleAssignment; + Key = RoleAssignment.ToId.ToString() + RoleAssignment.ForId.ToString() + RoleAssignment.RoleId.ToString(); + } + + /// + /// Key + /// + /// + public override string ToString() + { + return Key; + } + } + + private async Task ChangeRole(RoleChange change) + { + try + { + Console.WriteLine("RoleChangeType:" + change.Type + " for " + change.Data.OrgNo); + var roleResult = await BrregApi.GetUnitRoles(change.Data.OrgNo); + if (roleResult == null) + { + return; + } + + var entityId = EntityIdCache[change.Data.OrgNo]; + + Console.WriteLine($"Generate new assignments from result {roleResult.RoleGroups.Count}"); + var (result, hasErrors) = GenerateRoleAssignments(roleResult, change.Data.OrgNo); + + /* + Do something with .hasErrors + */ + + Console.WriteLine("Getting old for assignments"); + var oldForAssignments = await RoleAssignmentService.Get("ForId", entityId); + + if (result == null || oldForAssignments == null) + { + return; + } + + var newAssList = result.Select(t => new RoleAssignmentComparer(t)).ToList(); + var oldAssList = oldForAssignments.Select(t => new RoleAssignmentComparer(t)).ToList(); + + if (newAssList == null || oldAssList == null) + { + return; + } + + Console.WriteLine($"New: {newAssList.Count} Old:{oldAssList.Count}"); + + var ingest = newAssList.ExceptBy(oldAssList.Select(t => t.Key), t => t.Key); + var remove = oldAssList.ExceptBy(newAssList.Select(t => t.Key), t => t.Key); + + Console.WriteLine($"Ingest: {ingest.Count()} Remove:{remove.Count()}"); + + foreach (var i in ingest) + { + await RoleAssignmentService.Create(i.RoleAssignment); + } + + foreach (var r in remove) + { + await RoleAssignmentService.Delete(r.RoleAssignment.Id); + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + return; + } + } + + private (List Result, bool HasErrors) GenerateRoleAssignments(RoleResult roleResult, string refId) + { + bool hasErrors = false; + var result = new List(); + + try + { + Guid forEntityId = EntityIdCache[refId]; + + foreach (var roleGroup in roleResult.RoleGroups) + { + foreach (var role in roleGroup.Roles) + { + Guid? toEntityId = null; + if (role.Person != null) + { + toEntityId = EntityIdCache[GeneratePersonRefId(role.Person)]; + } + + if (role.Organization != null) + { + toEntityId = EntityIdCache[role.Organization.OrgNo]; + } + + var entityRole = LookupRole(role.Type.Code); + + if (entityRole != null && toEntityId.HasValue) + { + result.Add(new RoleAssignment() + { + Id = Guid.NewGuid(), + ForId = forEntityId, + RoleId = entityRole.Id, + ToId = toEntityId.Value + }); + } + } + } + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + hasErrors = true; + } + + if (hasErrors) + { + return (new List(), true); + } + else + { + return (result, false); + } + } + #endregion +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Ingestor.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Ingestor.cs new file mode 100644 index 00000000..adcb1abc --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Ingestor.cs @@ -0,0 +1,488 @@ +using Altinn.Authorization.AccessPackages.Models; +using Altinn.Authorization.AccessPackages.Repo.Data.Contracts; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// Ingest initial data from Brreg API +/// +/// IEntityService +/// IRoleAssignmentService +/// IEntityTypeService +/// IEntityVariantService +/// IRoleService +public class Ingestor(IEntityService entityService, IRoleAssignmentService roleAssignmentService, IEntityTypeService entityTypeService, IEntityVariantService entityVariantService, IRoleService roleService) +{ + private BrregApiWrapper BrregApi { get; set; } = new BrregApiWrapper(); + + private IEntityService EntityService { get; } = entityService; + + private IRoleAssignmentService RoleAssignmentService { get; } = roleAssignmentService; + + private IEntityTypeService EntityTypeService { get; } = entityTypeService; + + private IEntityVariantService EntityVariantService { get; } = entityVariantService; + + private IRoleService RoleService { get; } = roleService; + + /// + /// Ingest Units, SubUnits and Roles + /// + /// + public async Task IngestAll() + { + Console.WriteLine("Ingest starting!"); + + await LoadCache(); + await IngestUnits(); + + await LoadCache(); + await IngestSubUnits(); + + await LoadCache(); + await IngestRoles(); + + Console.WriteLine("Ingest complete!"); + } + + /// + /// Ingest Units + /// + /// + public async Task IngestUnits() + { + Console.WriteLine("Getting units"); + var units = await BrregApi.GetAllUnits(); + + Console.WriteLine("Converting units to entities"); + var entities = units.Select(GenerateOrgEntity); + + Console.WriteLine("Writing entities to Db"); + await EntityService.Repo.Ingest(entities.OfType().ToList()); + } + + /// + /// Ingest SubUnits + /// + /// + public async Task IngestSubUnits() + { + Console.WriteLine("Getting subunits"); + var units = await BrregApi.GetAllSubUnits(); + + Console.WriteLine($"Cleaning units ({units.Count})"); + var cleanUnits = units.Where(t => !EntityIdCache.ContainsKey(t.OrgNo)); + + Console.WriteLine($"Converting subunits ({cleanUnits.Count()}) to entities"); + var entities = cleanUnits.Select(GenerateOrgEntity); + + Console.WriteLine($"Writing entities ({entities.Count()}) to Db"); + await EntityService.Repo.Ingest(entities.OfType().ToList()); + } + + /// + /// Ingest Roles + /// + /// + public async Task IngestRoles() + { + Console.WriteLine("Getting roles"); + var roleResults = await BrregApi.GetAllUnitRoles(); + + Console.WriteLine("Generate People Entity"); + var people = roleResults.SelectMany(res => res.RoleGroups).SelectMany(roleGrp => roleGrp.Roles).Where(role => role.Person != null).Select(p => p.Person).Distinct().ToList(); + var prePeopleEntities = people.Select(GeneratePersonEntity).OfType().DistinctBy(t => t.Name + t.TypeId.ToString() + t.RefId).Where(t => !EntityIdCache.ContainsKey(t.RefId)).ToList(); + Console.WriteLine($"Ingest People ({prePeopleEntities.Count})"); + await EntityService.Repo.Ingest([.. prePeopleEntities]); + + await LoadCache(); + + var orgs1 = roleResults.SelectMany(res => res.RoleGroups).SelectMany(roleGrp => roleGrp.Roles).Where(role => role.Organization != null).Select(p => p.Organization.OrgNo).Distinct().ToList(); + var orgs2 = roleResults.Select(res => res.OrgNo).Distinct().ToList(); + + orgs1.AddRange(orgs2); + var orgs = orgs1.Distinct(); + + Console.WriteLine($"Orgs: {orgs.Count()}"); + var orgsClean = orgs.Where(t => !EntityIdCache.ContainsKey(t)).ToList(); + Console.WriteLine($"Clean Orgs: {orgsClean.Count}"); + + Console.WriteLine("Converting roles to assignments"); + var roleAssignments = new List(); + foreach (var r in roleResults) + { + roleAssignments.AddRange(GenerateRoleAssignmentsFast(r) ?? []); + } + + /*Retry*/ + Console.WriteLine("Running retry"); + Console.WriteLine($"Retry status:\tRoleOrgQueue:{RoleOrgQueue.Count}\tRoleEntityQueue:{RoleEntityQueue.Count}"); + var failedOrgRetry = new List(); + foreach (var org in RoleOrgQueue) + { + try + { + var unit = await BrregApi.GetUnit(org) ?? throw new Exception($"Unit not found '{org}'"); + var entity = GenerateOrgEntity(unit) ?? throw new Exception($"Unable to generate Entity from Unit '{org}'"); + RoleEntityQueue.Add(entity); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + failedOrgRetry.Add(org); + } + } + + Console.WriteLine($"Retry status:\tRoleOrgQueue:{RoleOrgQueue.Count}\tRoleEntityQueue:{RoleEntityQueue.Count}"); + var failedOrgSecondRetry = new List(); + foreach (var org in failedOrgRetry) + { + try + { + var unit = await BrregApi.GetSubUnit(org) ?? throw new Exception($"SubUnit not found '{org}'"); + var entity = GenerateOrgEntity(unit) ?? throw new Exception($"Unable to generate Entity from SubUnit '{org}'"); + RoleEntityQueue.Add(entity); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + failedOrgSecondRetry.Add(org); + } + } + + Console.WriteLine($"Retry status:\tRoleOrgQueue:{RoleOrgQueue.Count}\tRoleEntityQueue:{RoleEntityQueue.Count}"); + try + { + if (RoleEntityQueue != null && RoleEntityQueue.Count > 0) + { + await EntityService.Repo.Ingest(RoleEntityQueue); + RoleEntityQueue.Clear(); + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + + var failedEntityRetry = new List(); + if (RoleEntityQueue != null && RoleEntityQueue.Count > 0) + { + Console.WriteLine($"Retry status:\tRoleOrgQueue:{RoleOrgQueue.Count}\tRoleEntityQueue:{RoleEntityQueue.Count}"); + foreach (var entity in RoleEntityQueue) + { + try + { + await EntityService.Repo.Create(entity); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to create Entity '{entity.RefId}'. " + ex.Message); + failedEntityRetry.Add(entity); + } + } + } + + if (failedOrgSecondRetry.Count > 0 && failedEntityRetry.Count > 0 && RoleResultRetryQueue.Count > 0) + { + Console.WriteLine($"failedOrgSecondRetry: {failedOrgSecondRetry.Count}"); + Console.WriteLine($"failedEntityRetry: {failedEntityRetry.Count}"); + Console.WriteLine($"RoleResultRetryQueue: {RoleResultRetryQueue.Count}"); + + // Console.WriteLine("Continue?"); + // Console.ReadLine(); + } + else + { + Console.WriteLine("ALL GOOD!"); + } + + Console.WriteLine($"Writing assignments ({roleAssignments.Count}) to Db"); + await RoleAssignmentService.Repo.Ingest(roleAssignments.OfType().DistinctBy(t => t.ToId.ToString() + t.ForId.ToString() + t.RoleId.ToString()).ToList()); + } + + #region Queue + private List RoleEntityQueue { get; set; } = []; + + private List RoleOrgQueue { get; set; } = []; + + private void QueueRoleEntity(Entity? entity) + { + if (entity != null && !RoleEntityQueue.Any(t => t.RefId == entity.RefId) && !RoleOrgQueue.Any(t => t == entity.RefId)) + { + RoleEntityQueue.Add(entity); + } + } + + private void QueueRoleEntity(string orgNo) + { + if (!RoleEntityQueue.Any(t => t.RefId == orgNo) && !RoleOrgQueue.Any(t => t == orgNo)) + { + RoleOrgQueue.Add(orgNo); + } + } + #endregion + + #region Generate Assignment + private List RoleResultRetryQueue { get; set; } = []; + + /// + /// Generate RoleAssignments based on RoleResult + /// NOT Fast: Will check database for missing information + /// + /// RoleResult + /// + private List GenerateRoleAssignments(RoleResult roleResult) + { + bool hasErrors = false; + + var result = new List(); + var forEntityId = LookupEntityId(roleResult.OrgNo); + if (!forEntityId.HasValue) + { + QueueRoleEntity(roleResult.OrgNo); + hasErrors = true; + } + + foreach (var roleGroup in roleResult.RoleGroups) + { + foreach (var role in roleGroup.Roles) + { + Guid? toEntityId = null; + if (role.Person != null) + { + toEntityId = LookupEntityId(GeneratePersonRefId(role.Person)); + if (toEntityId == null) + { + QueueRoleEntity(GeneratePersonEntity(role.Person)); + hasErrors = true; + } + } + + if (role.Organization != null) + { + toEntityId = LookupEntityId(role.Organization.OrgNo); + if (toEntityId == null) + { + QueueRoleEntity(role.Organization.OrgNo); + hasErrors = true; + } + } + + var entityRole = LookupRole(role.Type.Code); + + if (entityRole != null && toEntityId.HasValue && forEntityId.HasValue) + { + result.Add(new RoleAssignment() + { + Id = Guid.NewGuid(), + ForId = forEntityId.Value, + RoleId = entityRole.Id, + ToId = toEntityId.Value + }); + } + } + } + + if (hasErrors) + { + RoleResultRetryQueue.Add(roleResult); + return []; + } + else + { + return result; + } + } + + /// + /// Generate RoleAssignments based on RoleResult + /// Fast: Will not check database for missing information + /// + /// RoleResult + /// + private List GenerateRoleAssignmentsFast(RoleResult roleResult) + { + bool hasErrors = false; + var result = new List(); + + try + { + var forEntityId = EntityIdCache[roleResult.OrgNo]; + foreach (var roleGroup in roleResult.RoleGroups) + { + foreach (var role in roleGroup.Roles) + { + Guid? toEntityId = null; + if (role.Person != null) + { + toEntityId = EntityIdCache[GeneratePersonRefId(role.Person)]; + } + + if (role.Organization != null) + { + toEntityId = EntityIdCache[role.Organization.OrgNo]; + } + + var entityRole = LookupRole(role.Type.Code); + + if (entityRole != null && toEntityId.HasValue) + { + result.Add(new RoleAssignment() + { + Id = Guid.NewGuid(), + ForId = forEntityId, + RoleId = entityRole.Id, + ToId = toEntityId.Value + }); + } + } + } + } + catch + { + hasErrors = true; + } + + if (hasErrors) + { + RoleResultRetryQueue.Add(roleResult); + return []; + } + else + { + return result; + } + } + #endregion + + #region Generate Entity + private Entity? GeneratePersonEntity(RolePerson person) + { + return GeneratePersonEntity(GeneratePersonDisplayName(person), GeneratePersonRefId(person)); + } + + private Entity? GeneratePersonEntity(string name, string refId) + { + var typeVariant = LookupTypeVariant("Person", "Person"); + if (typeVariant.Type == null || typeVariant.Variant == null) + { + return null; + } + + return new Entity() + { + Id = Guid.NewGuid(), + Name = name, + RefId = refId, + TypeId = typeVariant.Type.Id, + VariantId = typeVariant.Variant.Id + }; + } + + private string GeneratePersonDisplayName(RolePerson person) + { + var nameParts = new string[] { person.Name.Firstname, person.Name.Middlename, person.Name.Lastname }; + return string.Join(' ', nameParts.Where(t => !string.IsNullOrEmpty(t))); + } + + private string GeneratePersonRefId(RolePerson person) + { + var str = $"{person.Birthdate}{person.Name.Lastname}{person.Name.Firstname}{person.Name.Middlename}"; // RemoveSpaces? + if (str.Length > 50) + { + return str[..50]; + } + + return str; + } + + private Entity? GenerateOrgEntity(Unit unit) + { + return GenerateOrgEntity(unit.Name, unit.OrgNo, unit.OrgForm.Code); + } + + private Entity? GenerateOrgEntity(string name, string orgNo, string orgForm) + { + var typeVariant = LookupTypeVariant("Organisasjon", orgForm); + if (typeVariant.Type == null || typeVariant.Variant == null) + { + return null; + } + + return new Entity() + { + Id = Guid.NewGuid(), + Name = name, + RefId = orgNo, + TypeId = typeVariant.Type.Id, + VariantId = typeVariant.Variant.Id + }; + } + #endregion + + #region Cache + + /// + /// Loads cache for lookups + /// + /// + private async Task LoadCache() + { + Console.WriteLine("Loading cache..."); + CacheEntityType = [.. await EntityTypeService.Repo.Get()]; + CacheEntityVariant = [.. await EntityVariantService.Repo.Get()]; + CacheRole = [.. await RoleService.Repo.Get()]; + + var res = await EntityService.Repo.Get(); + EntityIdCache = res.ToDictionary(k => k.RefId, v => v.Id); + + Console.WriteLine($"CacheEntityType:{CacheEntityType.Count}\t" + + $"CacheEntityVariant:{CacheEntityVariant.Count}\t" + + $"CacheRole:{CacheRole.Count}\t" + + $"EntityIdCache:{EntityIdCache.Count}\t"); + } + + private List CacheEntityType { get; set; } = []; + + private List CacheEntityVariant { get; set; } = []; + + private List CacheRole { get; set; } = []; + + private Dictionary EntityIdCache { get; set; } = []; + + #endregion + + #region Lookup + private (EntityType? Type, EntityVariant? Variant) LookupTypeVariant(string typeName, string variantName) + { + var type = LookupType(typeName); + if (type == null) + { + return (null, null); + } + + return (type, LookupVariant(type.Id, variantName)); + } + + private EntityType? LookupType(string name) + { + return CacheEntityType.FirstOrDefault(t => t.Name == name); + } + + private EntityVariant? LookupVariant(Guid typeId, string name) + { + return CacheEntityVariant.FirstOrDefault(t => t.TypeId == typeId && t.Name == name); + } + + private Role? LookupRole(string code) + { + return CacheRole.FirstOrDefault(t => t.Code == code); + } + + private Guid? LookupEntityId(string refIf) + { + return EntityIdCache.FirstOrDefault(t => t.Key == refIf).Value; + } + + #endregion +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/BaseResult.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/BaseResult.cs new file mode 100644 index 00000000..2e0a6f34 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/BaseResult.cs @@ -0,0 +1,21 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// BaseResult +/// +public class BaseResult +{ + /// + /// Links + /// + [JsonPropertyName("_links")] + public ResultLinks Links { get; set; } + + /// + /// Page + /// + [JsonPropertyName("page")] + public ResultPage Page { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/EntityChangeResult.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/EntityChangeResult.cs new file mode 100644 index 00000000..cd1f62f4 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/EntityChangeResult.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// EntityChangeResult +/// +public class EntityChangeResult : BaseResult, IChangeResult +{ + /// + /// Elements + /// + [JsonPropertyName("_embedded")] + public EntityChangeResultData Elements { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/EntityChangeResultData.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/EntityChangeResultData.cs new file mode 100644 index 00000000..f4a75bbd --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/EntityChangeResultData.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// EntityChangeResultData +/// +public class EntityChangeResultData +{ + /// + /// Data + /// + [JsonPropertyName("oppdaterteEnheter")] + public List Data { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/IChangeResult.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/IChangeResult.cs new file mode 100644 index 00000000..cf1c70ba --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/IChangeResult.cs @@ -0,0 +1,17 @@ +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// IChangeResult +/// +public interface IChangeResult +{ + /// + /// Links + /// + ResultLinks Links { get; set; } + + /// + /// Page + /// + ResultPage Page { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/Link.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/Link.cs new file mode 100644 index 00000000..f486332b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/Link.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// Link +/// +public class Link +{ + /// + /// Href + /// + [JsonPropertyName("Href")] + public string Href { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/PersonName.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/PersonName.cs new file mode 100644 index 00000000..f686bd26 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/PersonName.cs @@ -0,0 +1,27 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// PersonName +/// +public class PersonName +{ + /// + /// Firstname + /// + [JsonPropertyName("fornavn")] + public string Firstname { get; set; } + + /// + /// Middlename + /// + [JsonPropertyName("mellomnavn")] + public string Middlename { get; set; } + + /// + /// Lastname + /// + [JsonPropertyName("etternavn")] + public string Lastname { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/ResultLinks.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/ResultLinks.cs new file mode 100644 index 00000000..65ff68d3 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/ResultLinks.cs @@ -0,0 +1,33 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// ResultLinks +/// +public class ResultLinks +{ + /// + /// First + /// + [JsonPropertyName("first")] + public Link First { get; set; } + + /// + /// Self + /// + [JsonPropertyName("self")] + public Link Self { get; set; } + + /// + /// Next + /// + [JsonPropertyName("next")] + public Link Next { get; set; } + + /// + /// Last + /// + [JsonPropertyName("last")] + public Link Last { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/ResultPage.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/ResultPage.cs new file mode 100644 index 00000000..e7501fb1 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/ResultPage.cs @@ -0,0 +1,33 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// ResultPage +/// +public class ResultPage +{ + /// + /// Size + /// + [JsonPropertyName("size")] + public int Size { get; set; } + + /// + /// TotalElements + /// + [JsonPropertyName("totalElements")] + public int TotalElements { get; set; } + + /// + /// TotalPages + /// + [JsonPropertyName("totalPages")] + public int TotalPages { get; set; } + + /// + /// CurrentPage + /// + [JsonPropertyName("number")] + public int CurrentPage { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleChange.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleChange.cs new file mode 100644 index 00000000..1241921b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleChange.cs @@ -0,0 +1,45 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// RoleChange +/// +public class RoleChange +{ + /// + /// Version + /// + [JsonPropertyName("specversion")] + public string Version { get; set; } = string.Empty; + + /// + /// ChangeId + /// + [JsonPropertyName("id")] + public int Id { get; set; } + + /// + /// Source + /// + [JsonPropertyName("source")] + public string Source { get; set; } = string.Empty; + + /// + /// Type + /// + [JsonPropertyName("type")] + public string Type { get; set; } = string.Empty; + + /// + /// Time + /// + [JsonPropertyName("time")] + public DateTime Time { get; set; } + + /// + /// Data + /// + [JsonPropertyName("data")] + public RoleChangeResultData Data { get; set; } = new RoleChangeResultData(); +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleChangeResultData.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleChangeResultData.cs new file mode 100644 index 00000000..a2d7aa14 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleChangeResultData.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// RoleChangeResultData +/// +public class RoleChangeResultData +{ + /// + /// OrgNo + /// + [JsonPropertyName("organisasjonsnummer")] + public string OrgNo { get; set; } = string.Empty; +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleGroup.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleGroup.cs new file mode 100644 index 00000000..b5107003 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleGroup.cs @@ -0,0 +1,27 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// RoleGroup +/// +public class RoleGroup +{ + /// + /// Type + /// + [JsonPropertyName("type")] + public RoleGroupType Type { get; set; } + + /// + /// LastChanged + /// + [JsonPropertyName("sistEndret")] + public string LastChanged { get; set; } + + /// + /// Roles + /// + [JsonPropertyName("roller")] + public List Roles { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleGroupType.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleGroupType.cs new file mode 100644 index 00000000..30b2e10b --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleGroupType.cs @@ -0,0 +1,27 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// RoleGroupType +/// +public class RoleGroupType +{ + /// + /// Code + /// + [JsonPropertyName("kode")] + public string Code { get; set; } + + /// + /// Description + /// + [JsonPropertyName("beskrivelse")] + public string Description { get; set; } + + /// + /// Links + /// + [JsonPropertyName("_links")] + public object Links { get; set; } // _self +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleOrganization.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleOrganization.cs new file mode 100644 index 00000000..a7721d32 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleOrganization.cs @@ -0,0 +1,33 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// RoleOrganization +/// +public class RoleOrganization +{ + /// + /// OrgNo + /// + [JsonPropertyName("organisasjonsnummer")] + public string OrgNo { get; set; } + + /// + /// Name + /// + [JsonPropertyName("navn")] + public string[] Name { get; set; } + + /// + /// IsDeleted + /// + [JsonPropertyName("erSlettet")] + public bool IsDeleted { get; set; } + + /// + /// OrgForm + /// + [JsonPropertyName("organisasjonsform")] + public UnitForm OrgForm { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RolePerson.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RolePerson.cs new file mode 100644 index 00000000..7c7b09e7 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RolePerson.cs @@ -0,0 +1,27 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// RolePerson +/// +public class RolePerson +{ + /// + /// Birthdate + /// + [JsonPropertyName("fodselsdato")] + public string Birthdate { get; set; } + + /// + /// Name + /// + [JsonPropertyName("navn")] + public PersonName Name { get; set; } + + /// + /// IsDead + /// + [JsonPropertyName("erDoed")] + public bool IsDead { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleResult.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleResult.cs new file mode 100644 index 00000000..9c063036 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleResult.cs @@ -0,0 +1,27 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// RoleResult +/// +public class RoleResult +{ + /// + /// OrgNo + /// + [JsonPropertyName("organisasjonsnummer")] + public string OrgNo { get; set; } + + /// + /// RoleGroups + /// + [JsonPropertyName("rollegrupper")] + public List RoleGroups { get; set; } + + /// + /// Links + /// + [JsonPropertyName("_links")] + public object Links { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleType.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleType.cs new file mode 100644 index 00000000..8c4aec80 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleType.cs @@ -0,0 +1,27 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// RoleType +/// +public class RoleType +{ + /// + /// Code + /// + [JsonPropertyName("kode")] + public string Code { get; set; } + + /// + /// Description + /// + [JsonPropertyName("beskrivelse")] + public string Description { get; set; } + + /// + /// Links + /// + [JsonPropertyName("_links")] + public object Links { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleTypeResult.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleTypeResult.cs new file mode 100644 index 00000000..e794f8ba --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleTypeResult.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// RoleTypeResult +/// +public class RoleTypeResult : BaseResult +{ + /// + /// Elements + /// + [JsonPropertyName("_embedded")] + public RoleTypeResultData Elements { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleTypeResultData.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleTypeResultData.cs new file mode 100644 index 00000000..3de7ebce --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/RoleTypeResultData.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// RoleTypeResultData +/// +public class RoleTypeResultData +{ + /// + /// Data + /// + [JsonPropertyName("rolletyper")] + public List Data { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/SubEntityChangeResult.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/SubEntityChangeResult.cs new file mode 100644 index 00000000..66f563f6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/SubEntityChangeResult.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// SubEntityChangeResult +/// +public class SubEntityChangeResult : BaseResult, IChangeResult +{ + /// + /// Elements + /// + [JsonPropertyName("_embedded")] + public SubEntityChangeResultData Elements { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/SubEntityChangeResultData.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/SubEntityChangeResultData.cs new file mode 100644 index 00000000..2186f054 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/SubEntityChangeResultData.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// SubEntityChangeResultData +/// +public class SubEntityChangeResultData +{ + /// + /// Data + /// + [JsonPropertyName("oppdaterteUnderenheter")] + public List Data { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/Unit.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/Unit.cs new file mode 100644 index 00000000..10739729 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/Unit.cs @@ -0,0 +1,33 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// Unit +/// +public class Unit +{ + /// + /// OrgNo + /// + [JsonPropertyName("organisasjonsnummer")] + public string OrgNo { get; set; } + + /// + /// Name + /// + [JsonPropertyName("navn")] + public string Name { get; set; } + + /// + /// ParentOrgNo + /// + [JsonPropertyName("overordnetEnhet")] + public string? ParentOrgNo { get; set; } + + /// + /// OrgForm + /// + [JsonPropertyName("organisasjonsform")] + public UnitForm OrgForm { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitChange.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitChange.cs new file mode 100644 index 00000000..abfaa749 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitChange.cs @@ -0,0 +1,76 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// UnitChange +/// +public class UnitChange +{ + /// + /// ChangeId + /// + [JsonPropertyName("oppdateringsid")] + public int ChangeId { get; set; } + + /// + /// Date + /// + [JsonPropertyName("dato")] + public string Date { get; set; } + + /// + /// OrgNo + /// + [JsonPropertyName("organisasjonsnummer")] + public string OrgNo { get; set; } + + /// + /// ChangeType + /// + [JsonPropertyName("endringstype")] + public string ChangeType { get; set; } + + /// + /// Links + /// + [JsonPropertyName("_links")] + public UnitChangeLinks Links { get; set; } +} + +/// +/// UnitChangeLinks +/// +public class UnitChangeLinks +{ + /// + /// SubUnit + /// + [JsonPropertyName("underenhet")] + public Link SubUnit { get; set; } + + /// + /// Unit + /// + [JsonPropertyName("enhet")] + public Link Unit { get; set; } + + /// + /// GetSelfLink + /// + /// + public string GetSelfLink() + { + if (SubUnit != null) + { + return SubUnit.Href; + } + + if (Unit != null) + { + return Unit.Href; + } + + return string.Empty; + } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitForm.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitForm.cs new file mode 100644 index 00000000..5154b584 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitForm.cs @@ -0,0 +1,21 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// UnitForm +/// +public class UnitForm +{ + /// + /// Code + /// + [JsonPropertyName("kode")] + public string Code { get; set; } + + /// + /// Description + /// + [JsonPropertyName("beskrivelse")] + public string Description { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitRole.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitRole.cs new file mode 100644 index 00000000..dce2673f --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitRole.cs @@ -0,0 +1,39 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// UnitRole +/// +public class UnitRole +{ + /// + /// Type + /// + [JsonPropertyName("type")] + public RoleType Type { get; set; } + + /// + /// Person + /// + [JsonPropertyName("person")] + public RolePerson Person { get; set; } + + /// + /// Organization + /// + [JsonPropertyName("enhet")] + public RoleOrganization Organization { get; set; } + + /// + /// Deactivated + /// + [JsonPropertyName("fratraadt")] + public bool Deactivated { get; set; } + + /// + /// Order + /// + [JsonPropertyName("rekkefolge")] + public int Order { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitType.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitType.cs new file mode 100644 index 00000000..a78ab1c6 --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitType.cs @@ -0,0 +1,21 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// UnitType +/// +public class UnitType +{ + /// + /// Code + /// + [JsonPropertyName("kode")] + public string Code { get; set; } + + /// + /// Description + /// + [JsonPropertyName("beskrivelse")] + public string Description { get; set; } +} \ No newline at end of file diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitTypeResult.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitTypeResult.cs new file mode 100644 index 00000000..23e0916c --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitTypeResult.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// UnitTypeResult +/// +public class UnitTypeResult : BaseResult +{ + /// + /// Elements + /// + [JsonPropertyName("_embedded")] + public UnitTypeResultData Elements { get; set; } +} diff --git a/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitTypeResultData.cs b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitTypeResultData.cs new file mode 100644 index 00000000..b21d044e --- /dev/null +++ b/src/apps/Altinn.Authorization.AccessPackages/src/Altinn.Authorization.Importers.BRREG/Models/UnitTypeResultData.cs @@ -0,0 +1,15 @@ +using System.Text.Json.Serialization; + +namespace Altinn.Authorization.Importers.BRREG; + +/// +/// UnitTypeResultData +/// +public class UnitTypeResultData +{ + /// + /// Data + /// + [JsonPropertyName("organisasjonsformer")] + public List Data { get; set; } +}