diff --git a/Directory.Packages.props b/Directory.Packages.props index 306e69d2e..4558148f5 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -20,6 +20,8 @@ + + @@ -135,6 +137,7 @@ + @@ -156,6 +159,7 @@ + @@ -280,7 +284,7 @@ - + diff --git a/aspnet-core/.gitignore b/aspnet-core/.gitignore index 796eb0ca8..3bd3c27ef 100644 --- a/aspnet-core/.gitignore +++ b/aspnet-core/.gitignore @@ -5,4 +5,5 @@ Publish **/*.csproj.user nupkg consoles -*.configs.cache \ No newline at end of file +*.configs.cache +appsettings.Staging.json diff --git a/aspnet-core/LINGYUN.MicroService.All.sln b/aspnet-core/LINGYUN.MicroService.All.sln index 39b63554f..3f4365364 100644 --- a/aspnet-core/LINGYUN.MicroService.All.sln +++ b/aspnet-core/LINGYUN.MicroService.All.sln @@ -400,8 +400,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TextTemplating. EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Localization", "framework\localization\LINGYUN.Abp.AspNetCore.Mvc.Localization\LINGYUN.Abp.AspNetCore.Mvc.Localization.csproj", "{995DB1CE-A2FC-4468-A521-4207FD587EC5}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Account.Templates", "modules\account\LINGYUN.Abp.Account.Templates\LINGYUN.Abp.Account.Templates.csproj", "{AFFBE8EE-1B92-4CDF-8A4F-4000B78A0154}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "caching-management", "caching-management", "{63FCC71F-1CEF-44D3-B95B-23EE58DE8C95}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.CachingManagement.Domain", "modules\caching-management\LINGYUN.Abp.CachingManagement.Domain\LINGYUN.Abp.CachingManagement.Domain.csproj", "{7D6AE2BB-7DBF-4FC8-A1F5-C004D139B278}" @@ -777,6 +775,48 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.HttpApi.Cl EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Emailing.Platform.Tests", "tests\LINGYUN.Abp.Emailing.Platform.Tests\LINGYUN.Abp.Emailing.Platform.Tests.csproj", "{80F44B5B-F8FF-47FA-9A77-BE2D176B2721}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "gdpr", "gdpr", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.Domain.Shared", "modules\gdpr\LINGYUN.Abp.Gdpr.Domain.Shared\LINGYUN.Abp.Gdpr.Domain.Shared.csproj", "{DD365101-E8FC-6516-2883-B9CA024B36FA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.Domain", "modules\gdpr\LINGYUN.Abp.Gdpr.Domain\LINGYUN.Abp.Gdpr.Domain.csproj", "{C330BADD-59A0-A3CD-E839-A0D4C2C636EE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.Domain.Identity", "modules\gdpr\LINGYUN.Abp.Gdpr.Domain.Identity\LINGYUN.Abp.Gdpr.Domain.Identity.csproj", "{F1C6C6B6-5B99-5AA6-7F76-27560C111605}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.Application.Contracts", "modules\gdpr\LINGYUN.Abp.Gdpr.Application.Contracts\LINGYUN.Abp.Gdpr.Application.Contracts.csproj", "{459DA653-F12A-65B5-41EF-A5877B1C38BA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.Application", "modules\gdpr\LINGYUN.Abp.Gdpr.Application\LINGYUN.Abp.Gdpr.Application.csproj", "{9DD70A99-41A6-8598-553E-2B5AB6277035}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.EntityFrameworkCore", "modules\gdpr\LINGYUN.Abp.Gdpr.EntityFrameworkCore\LINGYUN.Abp.Gdpr.EntityFrameworkCore.csproj", "{016CCD97-3551-B6C7-FC6C-FF1CB7F84B88}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.HttpApi", "modules\gdpr\LINGYUN.Abp.Gdpr.HttpApi\LINGYUN.Abp.Gdpr.HttpApi.csproj", "{F92EBAA6-5BCF-1B7D-FB5E-CDD9F61CA147}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Encryption.SM4", "framework\security\LINGYUN.Abp.Encryption.SM4\LINGYUN.Abp.Encryption.SM4.csproj", "{AE00DA82-B33A-CAF7-D9CD-D5E26608741B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Account.Web", "modules\account\LINGYUN.Abp.Account.Web\LINGYUN.Abp.Account.Web.csproj", "{F9A0D88F-53AE-4AC7-8E15-163C34386E7C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Account.Web.IdentityServer", "modules\account\LINGYUN.Abp.Account.Web.IdentityServer\LINGYUN.Abp.Account.Web.IdentityServer.csproj", "{0FF0A04C-B580-4A56-9171-CF2988B5DE5A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Account.Emailing", "modules\account\LINGYUN.Abp.Account.Emailing\LINGYUN.Abp.Account.Emailing.csproj", "{29A87F09-CC03-4DB8-B584-98073AB50AA4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Account.Web.OpenIddict", "modules\account\LINGYUN.Abp.Account.Web.OpenIddict\LINGYUN.Abp.Account.Web.OpenIddict.csproj", "{F810C8A8-1256-440F-BAAF-7F3588291963}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Account.HttpApi.Client", "modules\account\LINGYUN.Abp.Account.HttpApi.Client\LINGYUN.Abp.Account.HttpApi.Client.csproj", "{FFBE3EC6-F11B-4B7C-9BAF-AFBBB12BEF59}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.HttpApi.Client", "modules\gdpr\LINGYUN.Abp.Gdpr.HttpApi.Client\LINGYUN.Abp.Gdpr.HttpApi.Client.csproj", "{C95DE287-9D21-4DCD-9281-A060B6D99774}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Gdpr.Web", "modules\gdpr\LINGYUN.Abp.Gdpr.Web\LINGYUN.Abp.Gdpr.Web.csproj", "{96748DAE-D367-48C0-B64E-2F25010EAC4D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "exporter", "exporter", "{A4633711-7FB6-411A-8D08-BB9A0A778046}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Exporter.Core", "framework\exporter\LINGYUN.Abp.Exporter.Core\LINGYUN.Abp.Exporter.Core.csproj", "{5A0063BF-EE72-E688-84C6-9E3CE0616C94}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Exporter.MiniExcel", "framework\exporter\LINGYUN.Abp.Exporter.MiniExcel\LINGYUN.Abp.Exporter.MiniExcel.csproj", "{ECE61F58-1AEC-1E4F-1543-76C2242B6F70}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Exporter.MagicodesIE.Excel", "framework\exporter\LINGYUN.Abp.Exporter.MagicodesIE.Excel\LINGYUN.Abp.Exporter.MagicodesIE.Excel.csproj", "{B7B63E08-8F62-34F6-FEA5-063267F1FC85}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Auditing.HttpApi.Client", "modules\auditing\LINGYUN.Abp.Auditing.HttpApi.Client\LINGYUN.Abp.Auditing.HttpApi.Client.csproj", "{7C48C1CA-7E53-4261-A477-454DD3A8402C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1399,10 +1439,6 @@ Global {995DB1CE-A2FC-4468-A521-4207FD587EC5}.Debug|Any CPU.Build.0 = Debug|Any CPU {995DB1CE-A2FC-4468-A521-4207FD587EC5}.Release|Any CPU.ActiveCfg = Release|Any CPU {995DB1CE-A2FC-4468-A521-4207FD587EC5}.Release|Any CPU.Build.0 = Release|Any CPU - {AFFBE8EE-1B92-4CDF-8A4F-4000B78A0154}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AFFBE8EE-1B92-4CDF-8A4F-4000B78A0154}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AFFBE8EE-1B92-4CDF-8A4F-4000B78A0154}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AFFBE8EE-1B92-4CDF-8A4F-4000B78A0154}.Release|Any CPU.Build.0 = Release|Any CPU {7D6AE2BB-7DBF-4FC8-A1F5-C004D139B278}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7D6AE2BB-7DBF-4FC8-A1F5-C004D139B278}.Debug|Any CPU.Build.0 = Debug|Any CPU {7D6AE2BB-7DBF-4FC8-A1F5-C004D139B278}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -1999,6 +2035,82 @@ Global {80F44B5B-F8FF-47FA-9A77-BE2D176B2721}.Debug|Any CPU.Build.0 = Debug|Any CPU {80F44B5B-F8FF-47FA-9A77-BE2D176B2721}.Release|Any CPU.ActiveCfg = Release|Any CPU {80F44B5B-F8FF-47FA-9A77-BE2D176B2721}.Release|Any CPU.Build.0 = Release|Any CPU + {DD365101-E8FC-6516-2883-B9CA024B36FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD365101-E8FC-6516-2883-B9CA024B36FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD365101-E8FC-6516-2883-B9CA024B36FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD365101-E8FC-6516-2883-B9CA024B36FA}.Release|Any CPU.Build.0 = Release|Any CPU + {C330BADD-59A0-A3CD-E839-A0D4C2C636EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C330BADD-59A0-A3CD-E839-A0D4C2C636EE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C330BADD-59A0-A3CD-E839-A0D4C2C636EE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C330BADD-59A0-A3CD-E839-A0D4C2C636EE}.Release|Any CPU.Build.0 = Release|Any CPU + {F1C6C6B6-5B99-5AA6-7F76-27560C111605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1C6C6B6-5B99-5AA6-7F76-27560C111605}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1C6C6B6-5B99-5AA6-7F76-27560C111605}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F1C6C6B6-5B99-5AA6-7F76-27560C111605}.Release|Any CPU.Build.0 = Release|Any CPU + {459DA653-F12A-65B5-41EF-A5877B1C38BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {459DA653-F12A-65B5-41EF-A5877B1C38BA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {459DA653-F12A-65B5-41EF-A5877B1C38BA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {459DA653-F12A-65B5-41EF-A5877B1C38BA}.Release|Any CPU.Build.0 = Release|Any CPU + {9DD70A99-41A6-8598-553E-2B5AB6277035}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9DD70A99-41A6-8598-553E-2B5AB6277035}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9DD70A99-41A6-8598-553E-2B5AB6277035}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9DD70A99-41A6-8598-553E-2B5AB6277035}.Release|Any CPU.Build.0 = Release|Any CPU + {016CCD97-3551-B6C7-FC6C-FF1CB7F84B88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {016CCD97-3551-B6C7-FC6C-FF1CB7F84B88}.Debug|Any CPU.Build.0 = Debug|Any CPU + {016CCD97-3551-B6C7-FC6C-FF1CB7F84B88}.Release|Any CPU.ActiveCfg = Release|Any CPU + {016CCD97-3551-B6C7-FC6C-FF1CB7F84B88}.Release|Any CPU.Build.0 = Release|Any CPU + {F92EBAA6-5BCF-1B7D-FB5E-CDD9F61CA147}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F92EBAA6-5BCF-1B7D-FB5E-CDD9F61CA147}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F92EBAA6-5BCF-1B7D-FB5E-CDD9F61CA147}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F92EBAA6-5BCF-1B7D-FB5E-CDD9F61CA147}.Release|Any CPU.Build.0 = Release|Any CPU + {AE00DA82-B33A-CAF7-D9CD-D5E26608741B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AE00DA82-B33A-CAF7-D9CD-D5E26608741B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AE00DA82-B33A-CAF7-D9CD-D5E26608741B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AE00DA82-B33A-CAF7-D9CD-D5E26608741B}.Release|Any CPU.Build.0 = Release|Any CPU + {F9A0D88F-53AE-4AC7-8E15-163C34386E7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F9A0D88F-53AE-4AC7-8E15-163C34386E7C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F9A0D88F-53AE-4AC7-8E15-163C34386E7C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F9A0D88F-53AE-4AC7-8E15-163C34386E7C}.Release|Any CPU.Build.0 = Release|Any CPU + {0FF0A04C-B580-4A56-9171-CF2988B5DE5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0FF0A04C-B580-4A56-9171-CF2988B5DE5A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0FF0A04C-B580-4A56-9171-CF2988B5DE5A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0FF0A04C-B580-4A56-9171-CF2988B5DE5A}.Release|Any CPU.Build.0 = Release|Any CPU + {29A87F09-CC03-4DB8-B584-98073AB50AA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {29A87F09-CC03-4DB8-B584-98073AB50AA4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {29A87F09-CC03-4DB8-B584-98073AB50AA4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {29A87F09-CC03-4DB8-B584-98073AB50AA4}.Release|Any CPU.Build.0 = Release|Any CPU + {F810C8A8-1256-440F-BAAF-7F3588291963}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F810C8A8-1256-440F-BAAF-7F3588291963}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F810C8A8-1256-440F-BAAF-7F3588291963}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F810C8A8-1256-440F-BAAF-7F3588291963}.Release|Any CPU.Build.0 = Release|Any CPU + {FFBE3EC6-F11B-4B7C-9BAF-AFBBB12BEF59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FFBE3EC6-F11B-4B7C-9BAF-AFBBB12BEF59}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FFBE3EC6-F11B-4B7C-9BAF-AFBBB12BEF59}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FFBE3EC6-F11B-4B7C-9BAF-AFBBB12BEF59}.Release|Any CPU.Build.0 = Release|Any CPU + {C95DE287-9D21-4DCD-9281-A060B6D99774}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C95DE287-9D21-4DCD-9281-A060B6D99774}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C95DE287-9D21-4DCD-9281-A060B6D99774}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C95DE287-9D21-4DCD-9281-A060B6D99774}.Release|Any CPU.Build.0 = Release|Any CPU + {96748DAE-D367-48C0-B64E-2F25010EAC4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {96748DAE-D367-48C0-B64E-2F25010EAC4D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {96748DAE-D367-48C0-B64E-2F25010EAC4D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {96748DAE-D367-48C0-B64E-2F25010EAC4D}.Release|Any CPU.Build.0 = Release|Any CPU + {5A0063BF-EE72-E688-84C6-9E3CE0616C94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5A0063BF-EE72-E688-84C6-9E3CE0616C94}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5A0063BF-EE72-E688-84C6-9E3CE0616C94}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5A0063BF-EE72-E688-84C6-9E3CE0616C94}.Release|Any CPU.Build.0 = Release|Any CPU + {ECE61F58-1AEC-1E4F-1543-76C2242B6F70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ECE61F58-1AEC-1E4F-1543-76C2242B6F70}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ECE61F58-1AEC-1E4F-1543-76C2242B6F70}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ECE61F58-1AEC-1E4F-1543-76C2242B6F70}.Release|Any CPU.Build.0 = Release|Any CPU + {B7B63E08-8F62-34F6-FEA5-063267F1FC85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B7B63E08-8F62-34F6-FEA5-063267F1FC85}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B7B63E08-8F62-34F6-FEA5-063267F1FC85}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B7B63E08-8F62-34F6-FEA5-063267F1FC85}.Release|Any CPU.Build.0 = Release|Any CPU + {7C48C1CA-7E53-4261-A477-454DD3A8402C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7C48C1CA-7E53-4261-A477-454DD3A8402C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C48C1CA-7E53-4261-A477-454DD3A8402C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7C48C1CA-7E53-4261-A477-454DD3A8402C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -2192,7 +2304,6 @@ Global {130F8ED1-A64F-48DE-BF43-18EAD19CAF63} = {ABD89F39-62D9-439E-8662-BE4F36BFA04F} {A53FE09E-6B1C-46C0-9422-C313D14AE9E4} = {ABD89F39-62D9-439E-8662-BE4F36BFA04F} {995DB1CE-A2FC-4468-A521-4207FD587EC5} = {90E88EAC-4291-4406-8D88-EFDF61B11292} - {AFFBE8EE-1B92-4CDF-8A4F-4000B78A0154} = {9E72FEB9-A626-4312-892B-CDD043879758} {63FCC71F-1CEF-44D3-B95B-23EE58DE8C95} = {D52D5A11-78EF-4154-8298-267738A6715B} {7D6AE2BB-7DBF-4FC8-A1F5-C004D139B278} = {63FCC71F-1CEF-44D3-B95B-23EE58DE8C95} {920867B4-4740-4074-9B49-14002B272A63} = {63FCC71F-1CEF-44D3-B95B-23EE58DE8C95} @@ -2375,6 +2486,27 @@ Global {856B4ACA-BD13-417F-A6E2-0F401F877189} = {370D7CD5-1E17-4F3D-BBFA-03429F6D4F2F} {B52B199C-0E1C-4CE9-B066-71D26F618424} = {F4923692-D343-4318-AECA-96F580B1A563} {80F44B5B-F8FF-47FA-9A77-BE2D176B2721} = {370D7CD5-1E17-4F3D-BBFA-03429F6D4F2F} + {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {D52D5A11-78EF-4154-8298-267738A6715B} + {DD365101-E8FC-6516-2883-B9CA024B36FA} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {C330BADD-59A0-A3CD-E839-A0D4C2C636EE} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {F1C6C6B6-5B99-5AA6-7F76-27560C111605} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {459DA653-F12A-65B5-41EF-A5877B1C38BA} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {9DD70A99-41A6-8598-553E-2B5AB6277035} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {016CCD97-3551-B6C7-FC6C-FF1CB7F84B88} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {F92EBAA6-5BCF-1B7D-FB5E-CDD9F61CA147} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {AE00DA82-B33A-CAF7-D9CD-D5E26608741B} = {9D1302BE-3886-49F8-B0CD-35D2AC1E5A37} + {F9A0D88F-53AE-4AC7-8E15-163C34386E7C} = {9E72FEB9-A626-4312-892B-CDD043879758} + {0FF0A04C-B580-4A56-9171-CF2988B5DE5A} = {9E72FEB9-A626-4312-892B-CDD043879758} + {29A87F09-CC03-4DB8-B584-98073AB50AA4} = {9E72FEB9-A626-4312-892B-CDD043879758} + {F810C8A8-1256-440F-BAAF-7F3588291963} = {9E72FEB9-A626-4312-892B-CDD043879758} + {FFBE3EC6-F11B-4B7C-9BAF-AFBBB12BEF59} = {9E72FEB9-A626-4312-892B-CDD043879758} + {C95DE287-9D21-4DCD-9281-A060B6D99774} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {96748DAE-D367-48C0-B64E-2F25010EAC4D} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {A4633711-7FB6-411A-8D08-BB9A0A778046} = {C5CAD011-DF84-4914-939C-0C029DCEF26F} + {5A0063BF-EE72-E688-84C6-9E3CE0616C94} = {A4633711-7FB6-411A-8D08-BB9A0A778046} + {ECE61F58-1AEC-1E4F-1543-76C2242B6F70} = {A4633711-7FB6-411A-8D08-BB9A0A778046} + {B7B63E08-8F62-34F6-FEA5-063267F1FC85} = {A4633711-7FB6-411A-8D08-BB9A0A778046} + {7C48C1CA-7E53-4261-A477-454DD3A8402C} = {67DAB2A0-D407-4CAB-8414-AE3D0AC52FC4} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718} diff --git a/aspnet-core/LINGYUN.MicroService.TaskManagement.sln b/aspnet-core/LINGYUN.MicroService.TaskManagement.sln index f102b0e95..ec0e352d9 100644 --- a/aspnet-core/LINGYUN.MicroService.TaskManagement.sln +++ b/aspnet-core/LINGYUN.MicroService.TaskManagement.sln @@ -158,6 +158,18 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Claims.Mapping", "framework\security\LINGYUN.Abp.Claims.Mapping\LINGYUN.Abp.Claims.Mapping.csproj", "{34042B8E-B896-4E5E-A243-31E2802264CE}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "platform", "platform", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.Domain.Shared", "modules\platform\LINGYUN.Platform.Domain.Shared\LINGYUN.Platform.Domain.Shared.csproj", "{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.Application.Contracts", "modules\platform\LINGYUN.Platform.Application.Contracts\LINGYUN.Platform.Application.Contracts.csproj", "{16C5E2EC-7A8F-2697-F611-0F2C22087192}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.HttpApi.Client", "modules\platform\LINGYUN.Platform.HttpApi.Client\LINGYUN.Platform.HttpApi.Client.csproj", "{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Emailing.Platform", "modules\platform\LINGYUN.Abp.Emailing.Platform\LINGYUN.Abp.Emailing.Platform.csproj", "{8BAB6A91-865C-A599-BE2A-7C487129D83A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Sms.Platform", "modules\platform\LINGYUN.Abp.Sms.Platform\LINGYUN.Abp.Sms.Platform.csproj", "{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -404,6 +416,26 @@ Global {34042B8E-B896-4E5E-A243-31E2802264CE}.Debug|Any CPU.Build.0 = Debug|Any CPU {34042B8E-B896-4E5E-A243-31E2802264CE}.Release|Any CPU.ActiveCfg = Release|Any CPU {34042B8E-B896-4E5E-A243-31E2802264CE}.Release|Any CPU.Build.0 = Release|Any CPU + {FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Release|Any CPU.Build.0 = Release|Any CPU + {16C5E2EC-7A8F-2697-F611-0F2C22087192}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16C5E2EC-7A8F-2697-F611-0F2C22087192}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16C5E2EC-7A8F-2697-F611-0F2C22087192}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16C5E2EC-7A8F-2697-F611-0F2C22087192}.Release|Any CPU.Build.0 = Release|Any CPU + {0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Release|Any CPU.Build.0 = Release|Any CPU + {8BAB6A91-865C-A599-BE2A-7C487129D83A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8BAB6A91-865C-A599-BE2A-7C487129D83A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8BAB6A91-865C-A599-BE2A-7C487129D83A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8BAB6A91-865C-A599-BE2A-7C487129D83A}.Release|Any CPU.Build.0 = Release|Any CPU + {8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -469,6 +501,11 @@ Global {6CC06BD8-FA30-45E0-BD3A-25FF39906EF5} = {77341F31-F54C-436A-AF8D-F78D91303C45} {3EBB4CA4-82C2-41C6-94C5-CB0D4D2B6D07} = {77341F31-F54C-436A-AF8D-F78D91303C45} {34042B8E-B896-4E5E-A243-31E2802264CE} = {5A41C31A-B966-418B-B446-5BA1D7E61A62} + {FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {16C5E2EC-7A8F-2697-F611-0F2C22087192} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {0EA7605E-3364-6EDC-3AC1-F21A9A984B9B} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {8BAB6A91-865C-A599-BE2A-7C487129D83A} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E1FD1F4C-D344-408B-97CF-B6F1F6D7D293} diff --git a/aspnet-core/LINGYUN.MicroService.WebhooksManagement.sln b/aspnet-core/LINGYUN.MicroService.WebhooksManagement.sln index e29bffbc2..3978ea819 100644 --- a/aspnet-core/LINGYUN.MicroService.WebhooksManagement.sln +++ b/aspnet-core/LINGYUN.MicroService.WebhooksManagement.sln @@ -153,6 +153,18 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Sessio EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session.AspNetCore", "modules\identity\LINGYUN.Abp.Identity.Session.AspNetCore\LINGYUN.Abp.Identity.Session.AspNetCore.csproj", "{BE58649C-EA57-4DFC-8D25-54FDCB1943A1}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "platform", "platform", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.Domain.Shared", "modules\platform\LINGYUN.Platform.Domain.Shared\LINGYUN.Platform.Domain.Shared.csproj", "{FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.Application.Contracts", "modules\platform\LINGYUN.Platform.Application.Contracts\LINGYUN.Platform.Application.Contracts.csproj", "{16C5E2EC-7A8F-2697-F611-0F2C22087192}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Platform.HttpApi.Client", "modules\platform\LINGYUN.Platform.HttpApi.Client\LINGYUN.Platform.HttpApi.Client.csproj", "{0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Sms.Platform", "modules\platform\LINGYUN.Abp.Sms.Platform\LINGYUN.Abp.Sms.Platform.csproj", "{8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Emailing.Platform", "modules\platform\LINGYUN.Abp.Emailing.Platform\LINGYUN.Abp.Emailing.Platform.csproj", "{8BAB6A91-865C-A599-BE2A-7C487129D83A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -395,6 +407,26 @@ Global {BE58649C-EA57-4DFC-8D25-54FDCB1943A1}.Debug|Any CPU.Build.0 = Debug|Any CPU {BE58649C-EA57-4DFC-8D25-54FDCB1943A1}.Release|Any CPU.ActiveCfg = Release|Any CPU {BE58649C-EA57-4DFC-8D25-54FDCB1943A1}.Release|Any CPU.Build.0 = Release|Any CPU + {FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F}.Release|Any CPU.Build.0 = Release|Any CPU + {16C5E2EC-7A8F-2697-F611-0F2C22087192}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16C5E2EC-7A8F-2697-F611-0F2C22087192}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16C5E2EC-7A8F-2697-F611-0F2C22087192}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16C5E2EC-7A8F-2697-F611-0F2C22087192}.Release|Any CPU.Build.0 = Release|Any CPU + {0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0EA7605E-3364-6EDC-3AC1-F21A9A984B9B}.Release|Any CPU.Build.0 = Release|Any CPU + {8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0}.Release|Any CPU.Build.0 = Release|Any CPU + {8BAB6A91-865C-A599-BE2A-7C487129D83A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8BAB6A91-865C-A599-BE2A-7C487129D83A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8BAB6A91-865C-A599-BE2A-7C487129D83A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8BAB6A91-865C-A599-BE2A-7C487129D83A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -471,6 +503,12 @@ Global {23E99204-F7C1-47BA-84CD-3C9D05210F4F} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97} {BF298DF5-BC1D-4DDD-A51E-8E9020D2C5F1} = {23E99204-F7C1-47BA-84CD-3C9D05210F4F} {BE58649C-EA57-4DFC-8D25-54FDCB1943A1} = {23E99204-F7C1-47BA-84CD-3C9D05210F4F} + {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97} + {FDEF1FD1-574D-AF6E-5CBB-46FA0CE5633F} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {16C5E2EC-7A8F-2697-F611-0F2C22087192} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {0EA7605E-3364-6EDC-3AC1-F21A9A984B9B} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {8298C4A6-5275-D7A2-9A5C-99B5F2D0E7A0} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {8BAB6A91-865C-A599-BE2A-7C487129D83A} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {80ED12A5-C899-459F-A181-ADCC9D680DE5} diff --git a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.IP.Location/FodyWeavers.xml b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.IP.Location/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.IP.Location/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN.Abp.Aliyun.SettingManagement.csproj b/aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN.Abp.Aliyun.SettingManagement.csproj index ecb2f4f80..07a0cab5c 100644 --- a/aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN.Abp.Aliyun.SettingManagement.csproj +++ b/aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN.Abp.Aliyun.SettingManagement.csproj @@ -24,8 +24,8 @@ - + diff --git a/aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AbpAliyunSettingManagementModule.cs b/aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AbpAliyunSettingManagementModule.cs index 184b40aea..94b3523dc 100644 --- a/aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AbpAliyunSettingManagementModule.cs +++ b/aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AbpAliyunSettingManagementModule.cs @@ -1,5 +1,4 @@ using LINGYUN.Abp.Aliyun.Localization; -using LINGYUN.Abp.Sms.Aliyun; using Localization.Resources.AbpUi; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AspNetCore.Mvc; @@ -11,7 +10,6 @@ namespace LINGYUN.Abp.Aliyun.SettingManagement; [DependsOn( typeof(AbpAliyunModule), - typeof(AbpAliyunSmsModule), typeof(AbpAspNetCoreMvcModule))] public class AbpAliyunSettingManagementModule : AbpModule { diff --git a/aspnet-core/framework/cloud-tencent/LINGYUN.Abp.Tencent.QQ/LINGYUN/Abp/Tencent/QQ/Settings/TencentQQSettingDefinitionProvider.cs b/aspnet-core/framework/cloud-tencent/LINGYUN.Abp.Tencent.QQ/LINGYUN/Abp/Tencent/QQ/Settings/TencentQQSettingDefinitionProvider.cs index d838d843f..e66c6d8b8 100644 --- a/aspnet-core/framework/cloud-tencent/LINGYUN.Abp.Tencent.QQ/LINGYUN/Abp/Tencent/QQ/Settings/TencentQQSettingDefinitionProvider.cs +++ b/aspnet-core/framework/cloud-tencent/LINGYUN.Abp.Tencent.QQ/LINGYUN/Abp/Tencent/QQ/Settings/TencentQQSettingDefinitionProvider.cs @@ -16,9 +16,9 @@ public class TencentQQSettingDefinitionProvider : SettingDefinitionProvider return new SettingDefinition[] { new SettingDefinition( - TencentQQSettingNames.QQConnect.AppId, "", - L("DisplayName:QQConnect.AppId"), - L("Description:QQConnect.AppId"), + TencentQQSettingNames.QQConnect.AppId, + displayName: L("DisplayName:QQConnect.AppId"), + description: L("Description:QQConnect.AppId"), isVisibleToClients: false, isEncrypted: true) .WithProviders( @@ -27,9 +27,9 @@ public class TencentQQSettingDefinitionProvider : SettingDefinitionProvider GlobalSettingValueProvider.ProviderName, TenantSettingValueProvider.ProviderName), new SettingDefinition( - TencentQQSettingNames.QQConnect.AppKey, "", - L("DisplayName:QQConnect.AppKey"), - L("Description:QQConnect.AppKey"), + TencentQQSettingNames.QQConnect.AppKey, + displayName: L("DisplayName:QQConnect.AppKey"), + description: L("Description:QQConnect.AppKey"), isVisibleToClients: false, isEncrypted: true) .WithProviders( diff --git a/aspnet-core/migrations/LY.MicroService.AuthServer.DbMigrator/LY.MicroService.AuthServer.DbMigrator.csproj b/aspnet-core/migrations/LY.MicroService.AuthServer.DbMigrator/LY.MicroService.AuthServer.DbMigrator.csproj index 0c024305a..920b4b8e8 100644 --- a/aspnet-core/migrations/LY.MicroService.AuthServer.DbMigrator/LY.MicroService.AuthServer.DbMigrator.csproj +++ b/aspnet-core/migrations/LY.MicroService.AuthServer.DbMigrator/LY.MicroService.AuthServer.DbMigrator.csproj @@ -7,8 +7,9 @@ net9.0 enable enable - Debug;Release;PostgreSQL + Debug;Release AnyCPU + false diff --git a/aspnet-core/migrations/LY.MicroService.AuthServer.DbMigrator/appsettings.json b/aspnet-core/migrations/LY.MicroService.AuthServer.DbMigrator/appsettings.json index dbaa2c278..5134cd6f5 100644 --- a/aspnet-core/migrations/LY.MicroService.AuthServer.DbMigrator/appsettings.json +++ b/aspnet-core/migrations/LY.MicroService.AuthServer.DbMigrator/appsettings.json @@ -1,22 +1,9 @@ { "ConnectionStrings": { - "Default": "Server=127.0.0.1;Database=AuthServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpAuditLogging": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpOpenIddict": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTenantManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AppPlatform": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "TaskManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "Workflow": "Server=127.0.0.1;Database=Workflow-V70;User Id=root;Password=123456;SslMode=None", - "Notifications": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None", - "MessageService": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" + "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=AuthServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "StringEncryption": { "DefaultPassPhrase": "s46c5q55nxpeS8Ra", diff --git a/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/AuthServerMigrationsDbContext.cs b/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/AuthServerMigrationsDbContext.cs index 28b1a03da..abbd5af5a 100644 --- a/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/AuthServerMigrationsDbContext.cs +++ b/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/AuthServerMigrationsDbContext.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore; +using LINGYUN.Abp.Gdpr.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore; @@ -21,5 +22,7 @@ public class AuthServerMigrationsDbContext : AbpDbContext(options => + { + options.Databases.Configure("Platform", database => + { + database.MapConnection("AbpSaas"); + database.MapConnection("Workflow"); + database.MapConnection("AppPlatform"); + database.MapConnection("TaskManagement"); + database.MapConnection("AbpAuditLogging"); + database.MapConnection("AbpTextTemplating"); + database.MapConnection("AbpSettingManagement"); + database.MapConnection("AbpFeatureManagement"); + database.MapConnection("AbpPermissionManagement"); + database.MapConnection("AbpLocalizationManagement"); + database.MapConnection("AbpDataProtectionManagement"); + }); + options.Databases.Configure("Identity", database => + { + database.MapConnection("AbpGdpr"); + database.MapConnection("AbpIdentity"); + database.MapConnection("AbpOpenIddict"); + database.MapConnection("AbpIdentityServer"); + }); + options.Databases.Configure("Realtime", database => + { + database.MapConnection("Notifications"); + database.MapConnection("MessageService"); + }); + }); } } diff --git a/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/LY.MicroService.AuthServer.EntityFrameworkCore.csproj b/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/LY.MicroService.AuthServer.EntityFrameworkCore.csproj index c5981e752..3a772a946 100644 --- a/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/LY.MicroService.AuthServer.EntityFrameworkCore.csproj +++ b/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/LY.MicroService.AuthServer.EntityFrameworkCore.csproj @@ -4,6 +4,7 @@ + false net9.0 LY.MicroService.AuthServer.EntityFrameworkCore @@ -24,8 +25,11 @@ + + + diff --git a/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/Migrations/20250226011251_Add-Gdpr-Module.Designer.cs b/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/Migrations/20250226011251_Add-Gdpr-Module.Designer.cs new file mode 100644 index 000000000..47aade662 --- /dev/null +++ b/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/Migrations/20250226011251_Add-Gdpr-Module.Designer.cs @@ -0,0 +1,1254 @@ +// +using System; +using LY.MicroService.AuthServer.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace LY.MicroService.AuthServer.EntityFrameworkCore.Migrations +{ + [DbContext(typeof(AuthServerMigrationsDbContext))] + [Migration("20250226011251_Add-Gdpr-Module")] + partial class AddGdprModule + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) + .HasAnnotation("ProductVersion", "9.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Data") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("Data"); + + b.Property("Provider") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Provider"); + + b.Property("RequestId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("RequestId"); + + b.ToTable("AbpGdprInfos", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("ReadyTime") + .HasColumnType("datetime(6)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpGdprRequests", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("varchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("Required") + .HasColumnType("tinyint(1)"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("SourceTenantId") + .HasColumnType("char(36)"); + + b.Property("SourceUserId") + .HasColumnType("char(36)"); + + b.Property("TargetTenantId") + .HasColumnType("char(36)"); + + b.Property("TargetUserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique(); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("tinyint(1)") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("tinyint(1)") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("varchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySession", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Device") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("DeviceInfo") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IpAddresses") + .HasMaxLength(2048) + .HasColumnType("varchar(2048)"); + + b.Property("LastAccessed") + .HasColumnType("datetime(6)"); + + b.Property("SessionId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("SignedIn") + .HasColumnType("datetime(6)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("Device"); + + b.HasIndex("SessionId"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSessions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)") + .HasColumnName("IsActive"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("LastPasswordChangeTime") + .HasColumnType("datetime(6)"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("varchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("ShouldChangePasswordOnNextLogin") + .HasColumnType("tinyint(1)"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("EndTime") + .HasColumnType("datetime(6)"); + + b.Property("SourceUserId") + .HasColumnType("char(36)"); + + b.Property("StartTime") + .HasColumnType("datetime(6)"); + + b.Property("TargetUserId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("varchar(196)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("char(36)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("varchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("DisplayName"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ClientId") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ClientSecret") + .HasColumnType("longtext"); + + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("ClientUri") + .HasColumnType("longtext"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .HasColumnType("longtext"); + + b.Property("DisplayNames") + .HasColumnType("longtext"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("JsonWebKeySet") + .HasColumnType("longtext"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("LogoUri") + .HasColumnType("longtext"); + + b.Property("Permissions") + .HasColumnType("longtext"); + + b.Property("PostLogoutRedirectUris") + .HasColumnType("longtext"); + + b.Property("Properties") + .HasColumnType("longtext"); + + b.Property("RedirectUris") + .HasColumnType("longtext"); + + b.Property("Requirements") + .HasColumnType("longtext"); + + b.Property("Settings") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("OpenIddictApplications", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ApplicationId") + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("Properties") + .HasColumnType("longtext"); + + b.Property("Scopes") + .HasColumnType("longtext"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("varchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictAuthorizations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Descriptions") + .HasColumnType("longtext"); + + b.Property("DisplayName") + .HasColumnType("longtext"); + + b.Property("DisplayNames") + .HasColumnType("longtext"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Properties") + .HasColumnType("longtext"); + + b.Property("Resources") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ApplicationId") + .HasColumnType("char(36)"); + + b.Property("AuthorizationId") + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime(6)"); + + b.Property("ExpirationDate") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("Payload") + .HasColumnType("longtext"); + + b.Property("Properties") + .HasColumnType("longtext"); + + b.Property("RedemptionDate") + .HasColumnType("datetime(6)"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("varchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictTokens", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprInfo", b => + { + b.HasOne("LINGYUN.Abp.Gdpr.GdprRequest", null) + .WithMany("Infos") + .HasForeignKey("RequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); + }); + + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprRequest", b => + { + b.Navigation("Infos"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/Migrations/20250226011251_Add-Gdpr-Module.cs b/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/Migrations/20250226011251_Add-Gdpr-Module.cs new file mode 100644 index 000000000..17c39ffd4 --- /dev/null +++ b/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/Migrations/20250226011251_Add-Gdpr-Module.cs @@ -0,0 +1,77 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace LY.MicroService.AuthServer.EntityFrameworkCore.Migrations +{ + /// + public partial class AddGdprModule : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AbpGdprRequests", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + UserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + CreationTime = table.Column(type: "datetime(6)", nullable: false), + ReadyTime = table.Column(type: "datetime(6)", nullable: false), + ExtraProperties = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpGdprRequests", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpGdprInfos", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + RequestId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + Data = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Provider = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpGdprInfos", x => x.Id); + table.ForeignKey( + name: "FK_AbpGdprInfos_AbpGdprRequests_RequestId", + column: x => x.RequestId, + principalTable: "AbpGdprRequests", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateIndex( + name: "IX_AbpGdprInfos_RequestId", + table: "AbpGdprInfos", + column: "RequestId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpGdprRequests_UserId", + table: "AbpGdprRequests", + column: "UserId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AbpGdprInfos"); + + migrationBuilder.DropTable( + name: "AbpGdprRequests"); + } + } +} diff --git a/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/Migrations/AuthServerMigrationsDbContextModelSnapshot.cs b/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/Migrations/AuthServerMigrationsDbContextModelSnapshot.cs index 7e40ebd87..9ac3f5fcd 100644 --- a/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/Migrations/AuthServerMigrationsDbContextModelSnapshot.cs +++ b/aspnet-core/migrations/LY.MicroService.AuthServer.EntityFrameworkCore/Migrations/AuthServerMigrationsDbContextModelSnapshot.cs @@ -24,6 +24,68 @@ namespace LY.MicroService.AuthServer.DbMigrator.Migrations MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Data") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("Data"); + + b.Property("Provider") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Provider"); + + b.Property("RequestId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("RequestId"); + + b.ToTable("AbpGdprInfos", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("ReadyTime") + .HasColumnType("datetime(6)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpGdprRequests", (string)null); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => { b.Property("Id") @@ -1041,6 +1103,15 @@ namespace LY.MicroService.AuthServer.DbMigrator.Migrations b.ToTable("OpenIddictTokens", (string)null); }); + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprInfo", b => + { + b.HasOne("LINGYUN.Abp.Gdpr.GdprRequest", null) + .WithMany("Infos") + .HasForeignKey("RequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => { b.HasOne("Volo.Abp.Identity.IdentityRole", null) @@ -1147,6 +1218,11 @@ namespace LY.MicroService.AuthServer.DbMigrator.Migrations .HasForeignKey("AuthorizationId"); }); + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprRequest", b => + { + b.Navigation("Infos"); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => { b.Navigation("Claims"); diff --git a/aspnet-core/migrations/LY.MicroService.BackendAdmin.DbMigrator/LY.MicroService.BackendAdmin.DbMigrator.csproj b/aspnet-core/migrations/LY.MicroService.BackendAdmin.DbMigrator/LY.MicroService.BackendAdmin.DbMigrator.csproj index 307f735eb..a9781c84d 100644 --- a/aspnet-core/migrations/LY.MicroService.BackendAdmin.DbMigrator/LY.MicroService.BackendAdmin.DbMigrator.csproj +++ b/aspnet-core/migrations/LY.MicroService.BackendAdmin.DbMigrator/LY.MicroService.BackendAdmin.DbMigrator.csproj @@ -7,8 +7,9 @@ net9.0 enable enable - Debug;Release;PostgreSQL + Debug;Release AnyCPU + false diff --git a/aspnet-core/migrations/LY.MicroService.BackendAdmin.DbMigrator/appsettings.json b/aspnet-core/migrations/LY.MicroService.BackendAdmin.DbMigrator/appsettings.json index f6e1fc7b2..5134cd6f5 100644 --- a/aspnet-core/migrations/LY.MicroService.BackendAdmin.DbMigrator/appsettings.json +++ b/aspnet-core/migrations/LY.MicroService.BackendAdmin.DbMigrator/appsettings.json @@ -1,22 +1,9 @@ { "ConnectionStrings": { "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpAuditLogging": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpOpenIddict": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTenantManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AppPlatform": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "TaskManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "Workflow": "Server=127.0.0.1;Database=Workflow-V70;User Id=root;Password=123456;SslMode=None", - "Notifications": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None", - "MessageService": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=AuthServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "StringEncryption": { "DefaultPassPhrase": "s46c5q55nxpeS8Ra", diff --git a/aspnet-core/migrations/LY.MicroService.BackendAdmin.EntityFrameworkCore/BackendAdminMigrationsEntityFrameworkCoreModule.cs b/aspnet-core/migrations/LY.MicroService.BackendAdmin.EntityFrameworkCore/BackendAdminMigrationsEntityFrameworkCoreModule.cs index 213b0f9a1..67597b582 100644 --- a/aspnet-core/migrations/LY.MicroService.BackendAdmin.EntityFrameworkCore/BackendAdminMigrationsEntityFrameworkCoreModule.cs +++ b/aspnet-core/migrations/LY.MicroService.BackendAdmin.EntityFrameworkCore/BackendAdminMigrationsEntityFrameworkCoreModule.cs @@ -3,6 +3,7 @@ using LINGYUN.Abp.DataProtectionManagement.EntityFrameworkCore; using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.TextTemplating.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Modularity; @@ -35,5 +36,35 @@ public class BackendAdminMigrationsEntityFrameworkCoreModule : AbpModule mysql.TranslateParameterizedCollectionsToConstants(); }); }); + + Configure(options => + { + options.Databases.Configure("Platform", database => + { + database.MapConnection("AbpSaas"); + database.MapConnection("Workflow"); + database.MapConnection("AppPlatform"); + database.MapConnection("TaskManagement"); + database.MapConnection("AbpAuditLogging"); + database.MapConnection("AbpTextTemplating"); + database.MapConnection("AbpSettingManagement"); + database.MapConnection("AbpFeatureManagement"); + database.MapConnection("AbpPermissionManagement"); + database.MapConnection("AbpLocalizationManagement"); + database.MapConnection("AbpDataProtectionManagement"); + }); + options.Databases.Configure("Identity", database => + { + database.MapConnection("AbpGdpr"); + database.MapConnection("AbpIdentity"); + database.MapConnection("AbpOpenIddict"); + database.MapConnection("AbpIdentityServer"); + }); + options.Databases.Configure("Realtime", database => + { + database.MapConnection("Notifications"); + database.MapConnection("MessageService"); + }); + }); } } diff --git a/aspnet-core/migrations/LY.MicroService.BackendAdmin.EntityFrameworkCore/LY.MicroService.BackendAdmin.EntityFrameworkCore.csproj b/aspnet-core/migrations/LY.MicroService.BackendAdmin.EntityFrameworkCore/LY.MicroService.BackendAdmin.EntityFrameworkCore.csproj index ff167f9f2..7c7fcb2ec 100644 --- a/aspnet-core/migrations/LY.MicroService.BackendAdmin.EntityFrameworkCore/LY.MicroService.BackendAdmin.EntityFrameworkCore.csproj +++ b/aspnet-core/migrations/LY.MicroService.BackendAdmin.EntityFrameworkCore/LY.MicroService.BackendAdmin.EntityFrameworkCore.csproj @@ -4,6 +4,7 @@ + false net9.0 LY.MicroService.BackendAdmin.EntityFrameworkCore diff --git a/aspnet-core/migrations/LY.MicroService.IdentityServer.DbMigrator/LY.MicroService.IdentityServer.DbMigrator.csproj b/aspnet-core/migrations/LY.MicroService.IdentityServer.DbMigrator/LY.MicroService.IdentityServer.DbMigrator.csproj index 26284cee3..75dead59e 100644 --- a/aspnet-core/migrations/LY.MicroService.IdentityServer.DbMigrator/LY.MicroService.IdentityServer.DbMigrator.csproj +++ b/aspnet-core/migrations/LY.MicroService.IdentityServer.DbMigrator/LY.MicroService.IdentityServer.DbMigrator.csproj @@ -7,8 +7,9 @@ net9.0 enable enable - Debug;Release;PostgreSQL + Debug;Release AnyCPU + false diff --git a/aspnet-core/migrations/LY.MicroService.IdentityServer.DbMigrator/appsettings.json b/aspnet-core/migrations/LY.MicroService.IdentityServer.DbMigrator/appsettings.json index f0b0e2199..58c4aa811 100644 --- a/aspnet-core/migrations/LY.MicroService.IdentityServer.DbMigrator/appsettings.json +++ b/aspnet-core/migrations/LY.MicroService.IdentityServer.DbMigrator/appsettings.json @@ -1,22 +1,9 @@ { "ConnectionStrings": { - "Default": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpAuditLogging": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpOpenIddict": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTenantManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AppPlatform": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "TaskManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "Workflow": "Server=127.0.0.1;Database=Workflow-V70;User Id=root;Password=123456;SslMode=None", - "Notifications": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None", - "MessageService": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" + "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "IdentityServer": { "Clients": { diff --git a/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/IdentityServerMigrationsDbContext.cs b/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/IdentityServerMigrationsDbContext.cs index c65cb8868..020b60cd3 100644 --- a/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/IdentityServerMigrationsDbContext.cs +++ b/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/IdentityServerMigrationsDbContext.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore; +using LINGYUN.Abp.Gdpr.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.Identity.EntityFrameworkCore; @@ -21,5 +22,7 @@ public class IdentityServerMigrationsDbContext : AbpDbContext(options => + { + options.Databases.Configure("Platform", database => + { + database.MapConnection("AbpSaas"); + database.MapConnection("Workflow"); + database.MapConnection("AppPlatform"); + database.MapConnection("TaskManagement"); + database.MapConnection("AbpAuditLogging"); + database.MapConnection("AbpTextTemplating"); + database.MapConnection("AbpSettingManagement"); + database.MapConnection("AbpFeatureManagement"); + database.MapConnection("AbpPermissionManagement"); + database.MapConnection("AbpLocalizationManagement"); + database.MapConnection("AbpDataProtectionManagement"); + }); + options.Databases.Configure("Identity", database => + { + database.MapConnection("AbpGdpr"); + database.MapConnection("AbpIdentity"); + database.MapConnection("AbpOpenIddict"); + database.MapConnection("AbpIdentityServer"); + }); + options.Databases.Configure("Realtime", database => + { + database.MapConnection("Notifications"); + database.MapConnection("MessageService"); + }); + }); } } diff --git a/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/LY.MicroService.IdentityServer.EntityFrameworkCore.csproj b/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/LY.MicroService.IdentityServer.EntityFrameworkCore.csproj index b31fa55af..c26021dcf 100644 --- a/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/LY.MicroService.IdentityServer.EntityFrameworkCore.csproj +++ b/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/LY.MicroService.IdentityServer.EntityFrameworkCore.csproj @@ -4,6 +4,7 @@ + false net9.0 LY.MicroService.IdentityServer.EntityFrameworkCore @@ -23,9 +24,12 @@ + + + diff --git a/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/Migrations/20250226011209_Add-Gdpr-Module.Designer.cs b/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/Migrations/20250226011209_Add-Gdpr-Module.Designer.cs new file mode 100644 index 000000000..08c6e948c --- /dev/null +++ b/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/Migrations/20250226011209_Add-Gdpr-Module.Designer.cs @@ -0,0 +1,1975 @@ +// +using System; +using LY.MicroService.IdentityServer.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace LY.MicroService.IdentityServer.EntityFrameworkCore.Migrations +{ + [DbContext(typeof(IdentityServerMigrationsDbContext))] + [Migration("20250226011209_Add-Gdpr-Module")] + partial class AddGdprModule + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) + .HasAnnotation("ProductVersion", "9.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Data") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("Data"); + + b.Property("Provider") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Provider"); + + b.Property("RequestId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("RequestId"); + + b.ToTable("AbpGdprInfos", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("ReadyTime") + .HasColumnType("datetime(6)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpGdprRequests", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("varchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("Required") + .HasColumnType("tinyint(1)"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("SourceTenantId") + .HasColumnType("char(36)"); + + b.Property("SourceUserId") + .HasColumnType("char(36)"); + + b.Property("TargetTenantId") + .HasColumnType("char(36)"); + + b.Property("TargetUserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique(); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("tinyint(1)") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("tinyint(1)") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("varchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("varchar(96)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySession", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Device") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("DeviceInfo") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IpAddresses") + .HasMaxLength(2048) + .HasColumnType("varchar(2048)"); + + b.Property("LastAccessed") + .HasColumnType("datetime(6)"); + + b.Property("SessionId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("SignedIn") + .HasColumnType("datetime(6)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("Device"); + + b.HasIndex("SessionId"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSessions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("tinyint(1)") + .HasColumnName("IsActive"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("LastPasswordChangeTime") + .HasColumnType("datetime(6)"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetime(6)"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("varchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("ShouldChangePasswordOnNextLogin") + .HasColumnType("tinyint(1)"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("EndTime") + .HasColumnType("datetime(6)"); + + b.Property("SourceUserId") + .HasColumnType("char(36)"); + + b.Property("StartTime") + .HasColumnType("datetime(6)"); + + b.Property("TargetUserId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("varchar(196)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("char(36)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("varchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("varchar(128)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("varchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("DisplayName"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("char(36)"); + + b.Property("RoleId") + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AllowedAccessTokenSigningAlgorithms") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("varchar(1000)"); + + b.Property("DisplayName") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Enabled") + .HasColumnType("tinyint(1)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ShowInDiscoveryDocument") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.ToTable("IdentityServerApiResources", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => + { + b.Property("ApiResourceId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("ApiResourceId", "Type"); + + b.ToTable("IdentityServerApiResourceClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => + { + b.Property("ApiResourceId") + .HasColumnType("char(36)"); + + b.Property("Key") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Value") + .HasMaxLength(300) + .HasColumnType("varchar(300)"); + + b.HasKey("ApiResourceId", "Key", "Value"); + + b.ToTable("IdentityServerApiResourceProperties", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => + { + b.Property("ApiResourceId") + .HasColumnType("char(36)"); + + b.Property("Scope") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("ApiResourceId", "Scope"); + + b.ToTable("IdentityServerApiResourceScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => + { + b.Property("ApiResourceId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Value") + .HasMaxLength(300) + .HasColumnType("varchar(300)"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("varchar(1000)"); + + b.Property("Expiration") + .HasColumnType("datetime(6)"); + + b.HasKey("ApiResourceId", "Type", "Value"); + + b.ToTable("IdentityServerApiResourceSecrets", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("varchar(1000)"); + + b.Property("DisplayName") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Emphasize") + .HasColumnType("tinyint(1)"); + + b.Property("Enabled") + .HasColumnType("tinyint(1)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Required") + .HasColumnType("tinyint(1)"); + + b.Property("ShowInDiscoveryDocument") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.ToTable("IdentityServerApiScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => + { + b.Property("ApiScopeId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("ApiScopeId", "Type"); + + b.ToTable("IdentityServerApiScopeClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => + { + b.Property("ApiScopeId") + .HasColumnType("char(36)"); + + b.Property("Key") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Value") + .HasMaxLength(300) + .HasColumnType("varchar(300)"); + + b.HasKey("ApiScopeId", "Key", "Value"); + + b.ToTable("IdentityServerApiScopeProperties", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AbsoluteRefreshTokenLifetime") + .HasColumnType("int"); + + b.Property("AccessTokenLifetime") + .HasColumnType("int"); + + b.Property("AccessTokenType") + .HasColumnType("int"); + + b.Property("AllowAccessTokensViaBrowser") + .HasColumnType("tinyint(1)"); + + b.Property("AllowOfflineAccess") + .HasColumnType("tinyint(1)"); + + b.Property("AllowPlainTextPkce") + .HasColumnType("tinyint(1)"); + + b.Property("AllowRememberConsent") + .HasColumnType("tinyint(1)"); + + b.Property("AllowedIdentityTokenSigningAlgorithms") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("AlwaysIncludeUserClaimsInIdToken") + .HasColumnType("tinyint(1)"); + + b.Property("AlwaysSendClientClaims") + .HasColumnType("tinyint(1)"); + + b.Property("AuthorizationCodeLifetime") + .HasColumnType("int"); + + b.Property("BackChannelLogoutSessionRequired") + .HasColumnType("tinyint(1)"); + + b.Property("BackChannelLogoutUri") + .HasMaxLength(2000) + .HasColumnType("varchar(2000)"); + + b.Property("ClientClaimsPrefix") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ClientName") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ClientUri") + .HasMaxLength(2000) + .HasColumnType("varchar(2000)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsentLifetime") + .HasColumnType("int"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("varchar(1000)"); + + b.Property("DeviceCodeLifetime") + .HasColumnType("int"); + + b.Property("EnableLocalLogin") + .HasColumnType("tinyint(1)"); + + b.Property("Enabled") + .HasColumnType("tinyint(1)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("FrontChannelLogoutSessionRequired") + .HasColumnType("tinyint(1)"); + + b.Property("FrontChannelLogoutUri") + .HasMaxLength(2000) + .HasColumnType("varchar(2000)"); + + b.Property("IdentityTokenLifetime") + .HasColumnType("int"); + + b.Property("IncludeJwtId") + .HasColumnType("tinyint(1)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("LogoUri") + .HasMaxLength(2000) + .HasColumnType("varchar(2000)"); + + b.Property("PairWiseSubjectSalt") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ProtocolType") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("RefreshTokenExpiration") + .HasColumnType("int"); + + b.Property("RefreshTokenUsage") + .HasColumnType("int"); + + b.Property("RequireClientSecret") + .HasColumnType("tinyint(1)"); + + b.Property("RequireConsent") + .HasColumnType("tinyint(1)"); + + b.Property("RequirePkce") + .HasColumnType("tinyint(1)"); + + b.Property("RequireRequestObject") + .HasColumnType("tinyint(1)"); + + b.Property("SlidingRefreshTokenLifetime") + .HasColumnType("int"); + + b.Property("UpdateAccessTokenClaimsOnRefresh") + .HasColumnType("tinyint(1)"); + + b.Property("UserCodeType") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("UserSsoLifetime") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("IdentityServerClients", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Value") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("ClientId", "Type", "Value"); + + b.ToTable("IdentityServerClientClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("Origin") + .HasMaxLength(150) + .HasColumnType("varchar(150)"); + + b.HasKey("ClientId", "Origin"); + + b.ToTable("IdentityServerClientCorsOrigins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("GrantType") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.HasKey("ClientId", "GrantType"); + + b.ToTable("IdentityServerClientGrantTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("Provider") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("ClientId", "Provider"); + + b.ToTable("IdentityServerClientIdPRestrictions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("PostLogoutRedirectUri") + .HasMaxLength(300) + .HasColumnType("varchar(300)"); + + b.HasKey("ClientId", "PostLogoutRedirectUri"); + + b.ToTable("IdentityServerClientPostLogoutRedirectUris", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("Key") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Value") + .HasMaxLength(300) + .HasColumnType("varchar(300)"); + + b.HasKey("ClientId", "Key", "Value"); + + b.ToTable("IdentityServerClientProperties", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("RedirectUri") + .HasMaxLength(300) + .HasColumnType("varchar(300)"); + + b.HasKey("ClientId", "RedirectUri"); + + b.ToTable("IdentityServerClientRedirectUris", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("Scope") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("ClientId", "Scope"); + + b.ToTable("IdentityServerClientScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + { + b.Property("ClientId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Value") + .HasMaxLength(300) + .HasColumnType("varchar(300)"); + + b.Property("Description") + .HasMaxLength(2000) + .HasColumnType("varchar(2000)"); + + b.Property("Expiration") + .HasColumnType("datetime(6)"); + + b.HasKey("ClientId", "Type", "Value"); + + b.ToTable("IdentityServerClientSecrets", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Devices.DeviceFlowCodes", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("Data") + .IsRequired() + .HasMaxLength(10000) + .HasColumnType("varchar(10000)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("DeviceCode") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Expiration") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("SessionId") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("SubjectId") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("UserCode") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("Id"); + + b.HasIndex("DeviceCode") + .IsUnique(); + + b.HasIndex("Expiration"); + + b.HasIndex("UserCode"); + + b.ToTable("IdentityServerDeviceFlowCodes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => + { + b.Property("Key") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsumedTime") + .HasColumnType("datetime(6)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)"); + + b.Property("Data") + .IsRequired() + .HasMaxLength(10000) + .HasColumnType("varchar(10000)"); + + b.Property("Description") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Expiration") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("Id") + .HasColumnType("char(36)"); + + b.Property("SessionId") + .HasMaxLength(100) + .HasColumnType("varchar(100)"); + + b.Property("SubjectId") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("varchar(50)"); + + b.HasKey("Key"); + + b.HasIndex("Expiration"); + + b.HasIndex("SubjectId", "ClientId", "Type"); + + b.HasIndex("SubjectId", "SessionId", "Type"); + + b.ToTable("IdentityServerPersistedGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("varchar(1000)"); + + b.Property("DisplayName") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Emphasize") + .HasColumnType("tinyint(1)"); + + b.Property("Enabled") + .HasColumnType("tinyint(1)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.Property("Required") + .HasColumnType("tinyint(1)"); + + b.Property("ShowInDiscoveryDocument") + .HasColumnType("tinyint(1)"); + + b.HasKey("Id"); + + b.ToTable("IdentityServerIdentityResources", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + { + b.Property("IdentityResourceId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasMaxLength(200) + .HasColumnType("varchar(200)"); + + b.HasKey("IdentityResourceId", "Type"); + + b.ToTable("IdentityServerIdentityResourceClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => + { + b.Property("IdentityResourceId") + .HasColumnType("char(36)"); + + b.Property("Key") + .HasMaxLength(250) + .HasColumnType("varchar(250)"); + + b.Property("Value") + .HasMaxLength(300) + .HasColumnType("varchar(300)"); + + b.HasKey("IdentityResourceId", "Key", "Value"); + + b.ToTable("IdentityServerIdentityResourceProperties", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprInfo", b => + { + b.HasOne("LINGYUN.Abp.Gdpr.GdprRequest", null) + .WithMany("Infos") + .HasForeignKey("RequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) + .WithMany("UserClaims") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceProperty", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) + .WithMany("Properties") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceScope", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) + .WithMany("Scopes") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceSecret", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource", null) + .WithMany("Secrets") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) + .WithMany("UserClaims") + .HasForeignKey("ApiScopeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScopeProperty", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiScopes.ApiScope", null) + .WithMany("Properties") + .HasForeignKey("ApiScopeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("Claims") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("AllowedCorsOrigins") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("AllowedGrantTypes") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("IdentityProviderRestrictions") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("PostLogoutRedirectUris") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("Properties") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("RedirectUris") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("AllowedScopes") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client", null) + .WithMany("ClientSecrets") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) + .WithMany("UserClaims") + .HasForeignKey("IdentityResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResourceProperty", b => + { + b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", null) + .WithMany("Properties") + .HasForeignKey("IdentityResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprRequest", b => + { + b.Navigation("Infos"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + { + b.Navigation("Properties"); + + b.Navigation("Scopes"); + + b.Navigation("Secrets"); + + b.Navigation("UserClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiScopes.ApiScope", b => + { + b.Navigation("Properties"); + + b.Navigation("UserClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => + { + b.Navigation("AllowedCorsOrigins"); + + b.Navigation("AllowedGrantTypes"); + + b.Navigation("AllowedScopes"); + + b.Navigation("Claims"); + + b.Navigation("ClientSecrets"); + + b.Navigation("IdentityProviderRestrictions"); + + b.Navigation("PostLogoutRedirectUris"); + + b.Navigation("Properties"); + + b.Navigation("RedirectUris"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + { + b.Navigation("Properties"); + + b.Navigation("UserClaims"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/Migrations/20250226011209_Add-Gdpr-Module.cs b/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/Migrations/20250226011209_Add-Gdpr-Module.cs new file mode 100644 index 000000000..643fb7996 --- /dev/null +++ b/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/Migrations/20250226011209_Add-Gdpr-Module.cs @@ -0,0 +1,77 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace LY.MicroService.IdentityServer.EntityFrameworkCore.Migrations +{ + /// + public partial class AddGdprModule : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AbpGdprRequests", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + UserId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + CreationTime = table.Column(type: "datetime(6)", nullable: false), + ReadyTime = table.Column(type: "datetime(6)", nullable: false), + ExtraProperties = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpGdprRequests", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AbpGdprInfos", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + RequestId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + Data = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Provider = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AbpGdprInfos", x => x.Id); + table.ForeignKey( + name: "FK_AbpGdprInfos_AbpGdprRequests_RequestId", + column: x => x.RequestId, + principalTable: "AbpGdprRequests", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateIndex( + name: "IX_AbpGdprInfos_RequestId", + table: "AbpGdprInfos", + column: "RequestId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpGdprRequests_UserId", + table: "AbpGdprRequests", + column: "UserId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AbpGdprInfos"); + + migrationBuilder.DropTable( + name: "AbpGdprRequests"); + } + } +} diff --git a/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/Migrations/IdentityServerMigrationsDbContextModelSnapshot.cs b/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/Migrations/IdentityServerMigrationsDbContextModelSnapshot.cs index a19feae90..adee4e538 100644 --- a/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/Migrations/IdentityServerMigrationsDbContextModelSnapshot.cs +++ b/aspnet-core/migrations/LY.MicroService.IdentityServer.EntityFrameworkCore/Migrations/IdentityServerMigrationsDbContextModelSnapshot.cs @@ -24,6 +24,68 @@ namespace LY.MicroService.IdentityServer.EntityFrameworkCore.Migrations MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprInfo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Data") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("Data"); + + b.Property("Provider") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Provider"); + + b.Property("RequestId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("RequestId"); + + b.ToTable("AbpGdprInfos", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("ReadyTime") + .HasColumnType("datetime(6)"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpGdprRequests", (string)null); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => { b.Property("Id") @@ -1581,6 +1643,15 @@ namespace LY.MicroService.IdentityServer.EntityFrameworkCore.Migrations b.ToTable("IdentityServerIdentityResourceProperties", (string)null); }); + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprInfo", b => + { + b.HasOne("LINGYUN.Abp.Gdpr.GdprRequest", null) + .WithMany("Infos") + .HasForeignKey("RequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => { b.HasOne("Volo.Abp.Identity.IdentityRole", null) @@ -1822,6 +1893,11 @@ namespace LY.MicroService.IdentityServer.EntityFrameworkCore.Migrations .IsRequired(); }); + modelBuilder.Entity("LINGYUN.Abp.Gdpr.GdprRequest", b => + { + b.Navigation("Infos"); + }); + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => { b.Navigation("Claims"); diff --git a/aspnet-core/migrations/LY.MicroService.LocalizationManagement.DbMigrator/LY.MicroService.LocalizationManagement.DbMigrator.csproj b/aspnet-core/migrations/LY.MicroService.LocalizationManagement.DbMigrator/LY.MicroService.LocalizationManagement.DbMigrator.csproj index 8cc1610df..49e43dfcd 100644 --- a/aspnet-core/migrations/LY.MicroService.LocalizationManagement.DbMigrator/LY.MicroService.LocalizationManagement.DbMigrator.csproj +++ b/aspnet-core/migrations/LY.MicroService.LocalizationManagement.DbMigrator/LY.MicroService.LocalizationManagement.DbMigrator.csproj @@ -7,8 +7,9 @@ net9.0 enable enable - Debug;Release;PostgreSQL + Debug;Release AnyCPU + false diff --git a/aspnet-core/migrations/LY.MicroService.LocalizationManagement.DbMigrator/appsettings.json b/aspnet-core/migrations/LY.MicroService.LocalizationManagement.DbMigrator/appsettings.json index b16b9bae0..5134cd6f5 100644 --- a/aspnet-core/migrations/LY.MicroService.LocalizationManagement.DbMigrator/appsettings.json +++ b/aspnet-core/migrations/LY.MicroService.LocalizationManagement.DbMigrator/appsettings.json @@ -1,22 +1,9 @@ { "ConnectionStrings": { "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpAuditLogging": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpOpenIddict": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTenantManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "TaskManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AppPlatform": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "Workflow": "Server=127.0.0.1;Database=Workflow-V70;User Id=root;Password=123456;SslMode=None", - "Notifications": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None", - "MessageService": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=AuthServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "StringEncryption": { "DefaultPassPhrase": "s46c5q55nxpeS8Ra", diff --git a/aspnet-core/migrations/LY.MicroService.LocalizationManagement.EntityFrameworkCore/LY.MicroService.LocalizationManagement.EntityFrameworkCore.csproj b/aspnet-core/migrations/LY.MicroService.LocalizationManagement.EntityFrameworkCore/LY.MicroService.LocalizationManagement.EntityFrameworkCore.csproj index 6d8539b9b..678cf28f7 100644 --- a/aspnet-core/migrations/LY.MicroService.LocalizationManagement.EntityFrameworkCore/LY.MicroService.LocalizationManagement.EntityFrameworkCore.csproj +++ b/aspnet-core/migrations/LY.MicroService.LocalizationManagement.EntityFrameworkCore/LY.MicroService.LocalizationManagement.EntityFrameworkCore.csproj @@ -4,6 +4,7 @@ + false net9.0 LY.MicroService.LocalizationManagement.EntityFrameworkCore diff --git a/aspnet-core/migrations/LY.MicroService.LocalizationManagement.EntityFrameworkCore/LocalizationManagementMigrationsEntityFrameworkCoreModule.cs b/aspnet-core/migrations/LY.MicroService.LocalizationManagement.EntityFrameworkCore/LocalizationManagementMigrationsEntityFrameworkCoreModule.cs index 5e320ec39..985969f7f 100644 --- a/aspnet-core/migrations/LY.MicroService.LocalizationManagement.EntityFrameworkCore/LocalizationManagementMigrationsEntityFrameworkCoreModule.cs +++ b/aspnet-core/migrations/LY.MicroService.LocalizationManagement.EntityFrameworkCore/LocalizationManagementMigrationsEntityFrameworkCoreModule.cs @@ -2,6 +2,7 @@ using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; using LINGYUN.Abp.Saas.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.FeatureManagement.EntityFrameworkCore; @@ -35,5 +36,34 @@ public class LocalizationManagementMigrationsEntityFrameworkCoreModule : AbpModu mysql.TranslateParameterizedCollectionsToConstants(); }); }); + Configure(options => + { + options.Databases.Configure("Platform", database => + { + database.MapConnection("AbpSaas"); + database.MapConnection("Workflow"); + database.MapConnection("AppPlatform"); + database.MapConnection("TaskManagement"); + database.MapConnection("AbpAuditLogging"); + database.MapConnection("AbpTextTemplating"); + database.MapConnection("AbpSettingManagement"); + database.MapConnection("AbpFeatureManagement"); + database.MapConnection("AbpPermissionManagement"); + database.MapConnection("AbpLocalizationManagement"); + database.MapConnection("AbpDataProtectionManagement"); + }); + options.Databases.Configure("Identity", database => + { + database.MapConnection("AbpGdpr"); + database.MapConnection("AbpIdentity"); + database.MapConnection("AbpOpenIddict"); + database.MapConnection("AbpIdentityServer"); + }); + options.Databases.Configure("Realtime", database => + { + database.MapConnection("Notifications"); + database.MapConnection("MessageService"); + }); + }); } } diff --git a/aspnet-core/migrations/LY.MicroService.Platform.DbMigrator/LY.MicroService.Platform.DbMigrator.csproj b/aspnet-core/migrations/LY.MicroService.Platform.DbMigrator/LY.MicroService.Platform.DbMigrator.csproj index 4b63662f7..227b766b0 100644 --- a/aspnet-core/migrations/LY.MicroService.Platform.DbMigrator/LY.MicroService.Platform.DbMigrator.csproj +++ b/aspnet-core/migrations/LY.MicroService.Platform.DbMigrator/LY.MicroService.Platform.DbMigrator.csproj @@ -7,8 +7,9 @@ net9.0 enable enable - Debug;Release;PostgreSQL + Debug;Release AnyCPU + false diff --git a/aspnet-core/migrations/LY.MicroService.Platform.DbMigrator/appsettings.json b/aspnet-core/migrations/LY.MicroService.Platform.DbMigrator/appsettings.json index f6e1fc7b2..5134cd6f5 100644 --- a/aspnet-core/migrations/LY.MicroService.Platform.DbMigrator/appsettings.json +++ b/aspnet-core/migrations/LY.MicroService.Platform.DbMigrator/appsettings.json @@ -1,22 +1,9 @@ { "ConnectionStrings": { "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpAuditLogging": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpOpenIddict": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTenantManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AppPlatform": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "TaskManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "Workflow": "Server=127.0.0.1;Database=Workflow-V70;User Id=root;Password=123456;SslMode=None", - "Notifications": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None", - "MessageService": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=AuthServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "StringEncryption": { "DefaultPassPhrase": "s46c5q55nxpeS8Ra", diff --git a/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/LY.MicroService.Platform.EntityFrameworkCore.csproj b/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/LY.MicroService.Platform.EntityFrameworkCore.csproj index 8e791548b..37817019b 100644 --- a/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/LY.MicroService.Platform.EntityFrameworkCore.csproj +++ b/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/LY.MicroService.Platform.EntityFrameworkCore.csproj @@ -4,6 +4,7 @@ + false net9.0 LY.MicroService.Platform.EntityFrameworkCore diff --git a/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/Migrations/20250226010532_Add-Message-Center.Designer.cs b/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/Migrations/20250226010532_Add-Message-Center.Designer.cs new file mode 100644 index 000000000..32b6b2c87 --- /dev/null +++ b/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/Migrations/20250226010532_Add-Message-Center.Designer.cs @@ -0,0 +1,1342 @@ +// +using System; +using LY.MicroService.Platform.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace LY.MicroService.Platform.EntityFrameworkCore.Migrations +{ + [DbContext(typeof(PlatformMigrationsDbContext))] + [Migration("20250226010532_Add-Message-Center")] + partial class AddMessageCenter + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) + .HasAnnotation("ProductVersion", "9.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); + + modelBuilder.Entity("LINGYUN.Platform.Datas.Data", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("Description"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("DisplayName"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("varchar(30)") + .HasColumnName("Name"); + + b.Property("ParentId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AppPlatformDatas", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Datas.DataItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AllowBeNull") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(true); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DataId") + .HasColumnType("char(36)"); + + b.Property("DefaultValue") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("DefaultValue"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("Description"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("DisplayName"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsStatic") + .HasColumnType("tinyint(1)"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("varchar(30)") + .HasColumnName("Name"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("DataId"); + + b.HasIndex("Name"); + + b.ToTable("AppPlatformDataItems", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Feedbacks.Feedback", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Category") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Category"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Content") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Content"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AppPlatformFeedbacks", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Feedbacks.FeedbackAttachment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("FeedbackId") + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Name"); + + b.Property("Size") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("Url") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Url"); + + b.HasKey("Id"); + + b.HasIndex("FeedbackId"); + + b.ToTable("AppPlatformFeedbackAttachments", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Feedbacks.FeedbackComment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Capacity") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Capacity"); + + b.Property("Content") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Content"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("FeedbackId") + .HasColumnType("char(36)"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("FeedbackId"); + + b.ToTable("AppPlatformFeedbackComments", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Layouts.Layout", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DataId") + .HasColumnType("char(36)"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("DisplayName"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("Framework") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Framework"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Name"); + + b.Property("Path") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Path"); + + b.Property("Redirect") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Redirect"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AppPlatformLayouts", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Menus.Menu", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(23) + .HasColumnType("varchar(23)") + .HasColumnName("Code"); + + b.Property("Component") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Component"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("DisplayName"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("Framework") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Framework"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsPublic") + .HasColumnType("tinyint(1)"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("LayoutId") + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Name"); + + b.Property("ParentId") + .HasColumnType("char(36)"); + + b.Property("Path") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Path"); + + b.Property("Redirect") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Redirect"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AppPlatformMenus", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Menus.RoleMenu", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("MenuId") + .HasColumnType("char(36)"); + + b.Property("RoleName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("RoleName"); + + b.Property("Startup") + .HasColumnType("tinyint(1)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleName", "MenuId"); + + b.ToTable("AppPlatformRoleMenus", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Menus.UserFavoriteMenu", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AliasName") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("AliasName"); + + b.Property("Color") + .HasMaxLength(30) + .HasColumnType("varchar(30)") + .HasColumnName("Color"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("DisplayName"); + + b.Property("Framework") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Framework"); + + b.Property("Icon") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("Icon"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("MenuId") + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Name"); + + b.Property("Path") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Path"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId", "MenuId"); + + b.ToTable("AppPlatformUserFavoriteMenus", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Menus.UserMenu", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("MenuId") + .HasColumnType("char(36)"); + + b.Property("Startup") + .HasColumnType("tinyint(1)"); + + b.Property("TenantId") + .HasColumnType("char(36)") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("UserId", "MenuId"); + + b.ToTable("AppPlatformUserMenus", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Messages.EmailMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("BodyTransferEncoding") + .HasColumnType("int"); + + b.Property("CC") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("CC"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Content") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("Content"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeliveryNotificationOptions") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("From") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("From"); + + b.Property("IsBodyHtml") + .HasColumnType("tinyint(1)"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Normalize") + .HasColumnType("tinyint(1)"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Provider") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("Provider"); + + b.Property("Reason") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Reason"); + + b.Property("Receiver") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("Receiver"); + + b.Property("SendCount") + .HasColumnType("int"); + + b.Property("SendTime") + .HasColumnType("datetime(6)"); + + b.Property("Sender") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Sender"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Subject") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("Subject"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.ToTable("AppPlatformEmailMessages", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Messages.EmailMessageAttachment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("BlobName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("BlobName"); + + b.Property("MessageId") + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Name"); + + b.Property("Size") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("MessageId"); + + b.ToTable("AppPlatformEmailMessageAttachments", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Messages.EmailMessageHeader", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Key") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Key"); + + b.Property("MessageId") + .HasColumnType("char(36)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("Value"); + + b.HasKey("Id"); + + b.HasIndex("MessageId"); + + b.ToTable("AppPlatformEmailMessageHeaders", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Messages.SmsMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Content") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("Content"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Provider") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("Provider"); + + b.Property("Reason") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Reason"); + + b.Property("Receiver") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("Receiver"); + + b.Property("SendCount") + .HasColumnType("int"); + + b.Property("SendTime") + .HasColumnType("datetime(6)"); + + b.Property("Sender") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Sender"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.ToTable("AppPlatformSmsMessages", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Packages.Package", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Authors") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("Authors"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Description"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("ForceUpdate") + .HasColumnType("tinyint(1)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Level") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Name"); + + b.Property("Note") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("Note"); + + b.Property("Version") + .IsRequired() + .HasMaxLength(30) + .HasColumnType("varchar(30)") + .HasColumnName("Version"); + + b.HasKey("Id"); + + b.HasIndex("Name", "Version"); + + b.ToTable("AppPlatformPackages", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Packages.PackageBlob", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Authors") + .HasMaxLength(100) + .HasColumnType("varchar(100)") + .HasColumnName("Authors"); + + b.Property("ContentType") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("ContentType"); + + b.Property("CreatedAt") + .HasColumnType("datetime(6)"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DownloadCount") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("License") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("License"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Name"); + + b.Property("PackageId") + .HasColumnType("char(36)"); + + b.Property("SHA256") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("SHA256"); + + b.Property("Size") + .HasColumnType("bigint"); + + b.Property("Summary") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("Summary"); + + b.Property("UpdatedAt") + .HasColumnType("datetime(6)"); + + b.Property("Url") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("Url"); + + b.HasKey("Id"); + + b.HasIndex("PackageId", "Name"); + + b.ToTable("AppPlatformPackageBlobs", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Portal.Enterprise", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Address") + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Address"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("char(36)") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime(6)") + .HasColumnName("DeletionTime"); + + b.Property("EnglishName") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("EnglishName"); + + b.Property("ExpirationDate") + .HasColumnType("datetime(6)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint(1)") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("LegalMan") + .HasMaxLength(60) + .HasColumnType("varchar(60)") + .HasColumnName("LegalMan"); + + b.Property("Logo") + .HasMaxLength(512) + .HasColumnType("varchar(512)") + .HasColumnName("Logo"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("varchar(255)") + .HasColumnName("Name"); + + b.Property("OrganizationCode") + .HasMaxLength(16) + .HasColumnType("varchar(16)") + .HasColumnName("OrganizationCode"); + + b.Property("RegistrationCode") + .HasMaxLength(30) + .HasColumnType("varchar(30)") + .HasColumnName("RegistrationCode"); + + b.Property("RegistrationDate") + .HasColumnType("datetime(6)"); + + b.Property("TaxCode") + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("TaxCode"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.ToTable("AppPlatformEnterprises", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Datas.DataItem", b => + { + b.HasOne("LINGYUN.Platform.Datas.Data", null) + .WithMany("Items") + .HasForeignKey("DataId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("LINGYUN.Platform.Feedbacks.FeedbackAttachment", b => + { + b.HasOne("LINGYUN.Platform.Feedbacks.Feedback", null) + .WithMany("Attachments") + .HasForeignKey("FeedbackId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("LINGYUN.Platform.Feedbacks.FeedbackComment", b => + { + b.HasOne("LINGYUN.Platform.Feedbacks.Feedback", null) + .WithMany("Comments") + .HasForeignKey("FeedbackId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("LINGYUN.Platform.Messages.EmailMessageAttachment", b => + { + b.HasOne("LINGYUN.Platform.Messages.EmailMessage", null) + .WithMany("Attachments") + .HasForeignKey("MessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("LINGYUN.Platform.Messages.EmailMessageHeader", b => + { + b.HasOne("LINGYUN.Platform.Messages.EmailMessage", null) + .WithMany("Headers") + .HasForeignKey("MessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("LINGYUN.Platform.Packages.PackageBlob", b => + { + b.HasOne("LINGYUN.Platform.Packages.Package", "Package") + .WithMany("Blobs") + .HasForeignKey("PackageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Package"); + }); + + modelBuilder.Entity("LINGYUN.Platform.Datas.Data", b => + { + b.Navigation("Items"); + }); + + modelBuilder.Entity("LINGYUN.Platform.Feedbacks.Feedback", b => + { + b.Navigation("Attachments"); + + b.Navigation("Comments"); + }); + + modelBuilder.Entity("LINGYUN.Platform.Messages.EmailMessage", b => + { + b.Navigation("Attachments"); + + b.Navigation("Headers"); + }); + + modelBuilder.Entity("LINGYUN.Platform.Packages.Package", b => + { + b.Navigation("Blobs"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/Migrations/20250226010532_Add-Message-Center.cs b/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/Migrations/20250226010532_Add-Message-Center.cs new file mode 100644 index 000000000..85d39a520 --- /dev/null +++ b/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/Migrations/20250226010532_Add-Message-Center.cs @@ -0,0 +1,170 @@ +using System; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace LY.MicroService.Platform.EntityFrameworkCore.Migrations +{ + /// + public partial class AddMessageCenter : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AppPlatformEmailMessages", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + From = table.Column(type: "varchar(128)", maxLength: 128, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Subject = table.Column(type: "varchar(128)", maxLength: 128, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + IsBodyHtml = table.Column(type: "tinyint(1)", nullable: false), + CC = table.Column(type: "varchar(1024)", maxLength: 1024, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Normalize = table.Column(type: "tinyint(1)", nullable: false), + Priority = table.Column(type: "int", nullable: true), + BodyTransferEncoding = table.Column(type: "int", nullable: true), + DeliveryNotificationOptions = table.Column(type: "int", nullable: true), + ExtraProperties = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + CreationTime = table.Column(type: "datetime(6)", nullable: false), + CreatorId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + LastModificationTime = table.Column(type: "datetime(6)", nullable: true), + LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + Sender = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Provider = table.Column(type: "varchar(128)", maxLength: 128, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Receiver = table.Column(type: "varchar(1024)", maxLength: 1024, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Content = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + SendTime = table.Column(type: "datetime(6)", nullable: true), + SendCount = table.Column(type: "int", nullable: false), + Status = table.Column(type: "int", nullable: false), + Reason = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AppPlatformEmailMessages", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AppPlatformSmsMessages", + columns: table => new + { + Id = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + ExtraProperties = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + ConcurrencyStamp = table.Column(type: "varchar(40)", maxLength: 40, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + CreationTime = table.Column(type: "datetime(6)", nullable: false), + CreatorId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + LastModificationTime = table.Column(type: "datetime(6)", nullable: true), + LastModifierId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + UserId = table.Column(type: "char(36)", nullable: true, collation: "ascii_general_ci"), + Sender = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Provider = table.Column(type: "varchar(128)", maxLength: 128, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4"), + Receiver = table.Column(type: "varchar(1024)", maxLength: 1024, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Content = table.Column(type: "longtext", nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + SendTime = table.Column(type: "datetime(6)", nullable: true), + SendCount = table.Column(type: "int", nullable: false), + Status = table.Column(type: "int", nullable: false), + Reason = table.Column(type: "varchar(256)", maxLength: 256, nullable: true) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AppPlatformSmsMessages", x => x.Id); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AppPlatformEmailMessageAttachments", + columns: table => new + { + Id = table.Column(type: "bigint", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + MessageId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + Name = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + BlobName = table.Column(type: "varchar(256)", maxLength: 256, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Size = table.Column(type: "bigint", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AppPlatformEmailMessageAttachments", x => x.Id); + table.ForeignKey( + name: "FK_AppPlatformEmailMessageAttachments_AppPlatformEmailMessages_~", + column: x => x.MessageId, + principalTable: "AppPlatformEmailMessages", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateTable( + name: "AppPlatformEmailMessageHeaders", + columns: table => new + { + Id = table.Column(type: "bigint", nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + MessageId = table.Column(type: "char(36)", nullable: false, collation: "ascii_general_ci"), + Key = table.Column(type: "varchar(64)", maxLength: 64, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4"), + Value = table.Column(type: "varchar(128)", maxLength: 128, nullable: false) + .Annotation("MySql:CharSet", "utf8mb4") + }, + constraints: table => + { + table.PrimaryKey("PK_AppPlatformEmailMessageHeaders", x => x.Id); + table.ForeignKey( + name: "FK_AppPlatformEmailMessageHeaders_AppPlatformEmailMessages_Mess~", + column: x => x.MessageId, + principalTable: "AppPlatformEmailMessages", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }) + .Annotation("MySql:CharSet", "utf8mb4"); + + migrationBuilder.CreateIndex( + name: "IX_AppPlatformEmailMessageAttachments_MessageId", + table: "AppPlatformEmailMessageAttachments", + column: "MessageId"); + + migrationBuilder.CreateIndex( + name: "IX_AppPlatformEmailMessageHeaders_MessageId", + table: "AppPlatformEmailMessageHeaders", + column: "MessageId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AppPlatformEmailMessageAttachments"); + + migrationBuilder.DropTable( + name: "AppPlatformEmailMessageHeaders"); + + migrationBuilder.DropTable( + name: "AppPlatformSmsMessages"); + + migrationBuilder.DropTable( + name: "AppPlatformEmailMessages"); + } + } +} diff --git a/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/Migrations/PlatformMigrationsDbContextModelSnapshot.cs b/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/Migrations/PlatformMigrationsDbContextModelSnapshot.cs index 6bbc8b5ef..fbc4a17de 100644 --- a/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/Migrations/PlatformMigrationsDbContextModelSnapshot.cs +++ b/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/Migrations/PlatformMigrationsDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace LY.MicroService.Platform.EntityFrameworkCore.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) - .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("ProductVersion", "9.0.0") .HasAnnotation("Relational:MaxIdentifierLength", 64); MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); @@ -737,6 +737,253 @@ namespace LY.MicroService.Platform.EntityFrameworkCore.Migrations b.ToTable("AppPlatformUserMenus", (string)null); }); + modelBuilder.Entity("LINGYUN.Platform.Messages.EmailMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("BodyTransferEncoding") + .HasColumnType("int"); + + b.Property("CC") + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("CC"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Content") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("Content"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("DeliveryNotificationOptions") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("From") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("From"); + + b.Property("IsBodyHtml") + .HasColumnType("tinyint(1)"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Normalize") + .HasColumnType("tinyint(1)"); + + b.Property("Priority") + .HasColumnType("int"); + + b.Property("Provider") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("Provider"); + + b.Property("Reason") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Reason"); + + b.Property("Receiver") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("Receiver"); + + b.Property("SendCount") + .HasColumnType("int"); + + b.Property("SendTime") + .HasColumnType("datetime(6)"); + + b.Property("Sender") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Sender"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("Subject") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("Subject"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.ToTable("AppPlatformEmailMessages", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Messages.EmailMessageAttachment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("BlobName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("BlobName"); + + b.Property("MessageId") + .HasColumnType("char(36)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Name"); + + b.Property("Size") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("MessageId"); + + b.ToTable("AppPlatformEmailMessageAttachments", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Messages.EmailMessageHeader", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); + + b.Property("Key") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("varchar(64)") + .HasColumnName("Key"); + + b.Property("MessageId") + .HasColumnType("char(36)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("Value"); + + b.HasKey("Id"); + + b.HasIndex("MessageId"); + + b.ToTable("AppPlatformEmailMessageHeaders", (string)null); + }); + + modelBuilder.Entity("LINGYUN.Platform.Messages.SmsMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("varchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Content") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("Content"); + + b.Property("CreationTime") + .HasColumnType("datetime(6)") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("char(36)") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("longtext") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("datetime(6)") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("char(36)") + .HasColumnName("LastModifierId"); + + b.Property("Provider") + .HasMaxLength(128) + .HasColumnType("varchar(128)") + .HasColumnName("Provider"); + + b.Property("Reason") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Reason"); + + b.Property("Receiver") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("varchar(1024)") + .HasColumnName("Receiver"); + + b.Property("SendCount") + .HasColumnType("int"); + + b.Property("SendTime") + .HasColumnType("datetime(6)"); + + b.Property("Sender") + .HasMaxLength(256) + .HasColumnType("varchar(256)") + .HasColumnName("Sender"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.ToTable("AppPlatformSmsMessages", (string)null); + }); + modelBuilder.Entity("LINGYUN.Platform.Packages.Package", b => { b.Property("Id") @@ -1034,6 +1281,24 @@ namespace LY.MicroService.Platform.EntityFrameworkCore.Migrations .IsRequired(); }); + modelBuilder.Entity("LINGYUN.Platform.Messages.EmailMessageAttachment", b => + { + b.HasOne("LINGYUN.Platform.Messages.EmailMessage", null) + .WithMany("Attachments") + .HasForeignKey("MessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("LINGYUN.Platform.Messages.EmailMessageHeader", b => + { + b.HasOne("LINGYUN.Platform.Messages.EmailMessage", null) + .WithMany("Headers") + .HasForeignKey("MessageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + modelBuilder.Entity("LINGYUN.Platform.Packages.PackageBlob", b => { b.HasOne("LINGYUN.Platform.Packages.Package", "Package") @@ -1057,6 +1322,13 @@ namespace LY.MicroService.Platform.EntityFrameworkCore.Migrations b.Navigation("Comments"); }); + modelBuilder.Entity("LINGYUN.Platform.Messages.EmailMessage", b => + { + b.Navigation("Attachments"); + + b.Navigation("Headers"); + }); + modelBuilder.Entity("LINGYUN.Platform.Packages.Package", b => { b.Navigation("Blobs"); diff --git a/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/PlatformMigrationsEntityFrameworkCoreModule.cs b/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/PlatformMigrationsEntityFrameworkCoreModule.cs index 3b44ac361..7f8f10fb8 100644 --- a/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/PlatformMigrationsEntityFrameworkCoreModule.cs +++ b/aspnet-core/migrations/LY.MicroService.Platform.EntityFrameworkCore/PlatformMigrationsEntityFrameworkCoreModule.cs @@ -2,6 +2,7 @@ using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.UI.Navigation.VueVbenAdmin; using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.FeatureManagement.EntityFrameworkCore; @@ -36,5 +37,34 @@ public class PlatformMigrationsEntityFrameworkCoreModule : AbpModule mysql.TranslateParameterizedCollectionsToConstants(); }); }); + Configure(options => + { + options.Databases.Configure("Platform", database => + { + database.MapConnection("AbpSaas"); + database.MapConnection("Workflow"); + database.MapConnection("AppPlatform"); + database.MapConnection("TaskManagement"); + database.MapConnection("AbpAuditLogging"); + database.MapConnection("AbpTextTemplating"); + database.MapConnection("AbpSettingManagement"); + database.MapConnection("AbpFeatureManagement"); + database.MapConnection("AbpPermissionManagement"); + database.MapConnection("AbpLocalizationManagement"); + database.MapConnection("AbpDataProtectionManagement"); + }); + options.Databases.Configure("Identity", database => + { + database.MapConnection("AbpGdpr"); + database.MapConnection("AbpIdentity"); + database.MapConnection("AbpOpenIddict"); + database.MapConnection("AbpIdentityServer"); + }); + options.Databases.Configure("Realtime", database => + { + database.MapConnection("Notifications"); + database.MapConnection("MessageService"); + }); + }); } } diff --git a/aspnet-core/migrations/LY.MicroService.RealtimeMessage.DbMigrator/LY.MicroService.RealtimeMessage.DbMigrator.csproj b/aspnet-core/migrations/LY.MicroService.RealtimeMessage.DbMigrator/LY.MicroService.RealtimeMessage.DbMigrator.csproj index 4b48ab4f3..a6ccd75a8 100644 --- a/aspnet-core/migrations/LY.MicroService.RealtimeMessage.DbMigrator/LY.MicroService.RealtimeMessage.DbMigrator.csproj +++ b/aspnet-core/migrations/LY.MicroService.RealtimeMessage.DbMigrator/LY.MicroService.RealtimeMessage.DbMigrator.csproj @@ -7,8 +7,9 @@ net9.0 enable enable - Debug;Release;PostgreSQL + Debug;Release AnyCPU + false diff --git a/aspnet-core/migrations/LY.MicroService.RealtimeMessage.DbMigrator/appsettings.json b/aspnet-core/migrations/LY.MicroService.RealtimeMessage.DbMigrator/appsettings.json index 67254a02a..5134cd6f5 100644 --- a/aspnet-core/migrations/LY.MicroService.RealtimeMessage.DbMigrator/appsettings.json +++ b/aspnet-core/migrations/LY.MicroService.RealtimeMessage.DbMigrator/appsettings.json @@ -1,22 +1,9 @@ { "ConnectionStrings": { - "Default": "Server=127.0.0.1;Database=Messages-v70;User Id=root;Password=123456;SslMode=None", - "AbpAuditLogging": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpOpenIddict": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTenantManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AppPlatform": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "TaskManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "Workflow": "Server=127.0.0.1;Database=Workflow-V70;User Id=root;Password=123456;SslMode=None", - "Notifications": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None", - "MessageService": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" + "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=AuthServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "StringEncryption": { "DefaultPassPhrase": "s46c5q55nxpeS8Ra", diff --git a/aspnet-core/migrations/LY.MicroService.RealtimeMessage.EntityFrameworkCore/LY.MicroService.RealtimeMessage.EntityFrameworkCore.csproj b/aspnet-core/migrations/LY.MicroService.RealtimeMessage.EntityFrameworkCore/LY.MicroService.RealtimeMessage.EntityFrameworkCore.csproj index f583a0d2d..96d12e4f9 100644 --- a/aspnet-core/migrations/LY.MicroService.RealtimeMessage.EntityFrameworkCore/LY.MicroService.RealtimeMessage.EntityFrameworkCore.csproj +++ b/aspnet-core/migrations/LY.MicroService.RealtimeMessage.EntityFrameworkCore/LY.MicroService.RealtimeMessage.EntityFrameworkCore.csproj @@ -4,6 +4,7 @@ + false net9.0 LY.MicroService.RealtimeMessage.EntityFrameworkCore diff --git a/aspnet-core/migrations/LY.MicroService.RealtimeMessage.EntityFrameworkCore/RealtimeMessageMigrationsEntityFrameworkCoreModule.cs b/aspnet-core/migrations/LY.MicroService.RealtimeMessage.EntityFrameworkCore/RealtimeMessageMigrationsEntityFrameworkCoreModule.cs index 22c8ad56a..6b7019d43 100644 --- a/aspnet-core/migrations/LY.MicroService.RealtimeMessage.EntityFrameworkCore/RealtimeMessageMigrationsEntityFrameworkCoreModule.cs +++ b/aspnet-core/migrations/LY.MicroService.RealtimeMessage.EntityFrameworkCore/RealtimeMessageMigrationsEntityFrameworkCoreModule.cs @@ -4,6 +4,7 @@ using LINGYUN.Abp.Notifications.EntityFrameworkCore; using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.TextTemplating.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.FeatureManagement.EntityFrameworkCore; @@ -39,5 +40,34 @@ public class RealtimeMessageMigrationsEntityFrameworkCoreModule : AbpModule mysql.TranslateParameterizedCollectionsToConstants(); }); }); + Configure(options => + { + options.Databases.Configure("Platform", database => + { + database.MapConnection("AbpSaas"); + database.MapConnection("Workflow"); + database.MapConnection("AppPlatform"); + database.MapConnection("TaskManagement"); + database.MapConnection("AbpAuditLogging"); + database.MapConnection("AbpTextTemplating"); + database.MapConnection("AbpSettingManagement"); + database.MapConnection("AbpFeatureManagement"); + database.MapConnection("AbpPermissionManagement"); + database.MapConnection("AbpLocalizationManagement"); + database.MapConnection("AbpDataProtectionManagement"); + }); + options.Databases.Configure("Identity", database => + { + database.MapConnection("AbpGdpr"); + database.MapConnection("AbpIdentity"); + database.MapConnection("AbpOpenIddict"); + database.MapConnection("AbpIdentityServer"); + }); + options.Databases.Configure("Realtime", database => + { + database.MapConnection("Notifications"); + database.MapConnection("MessageService"); + }); + }); } } diff --git a/aspnet-core/migrations/LY.MicroService.TaskManagement.DbMigrator/appsettings.json b/aspnet-core/migrations/LY.MicroService.TaskManagement.DbMigrator/appsettings.json index f6e1fc7b2..5134cd6f5 100644 --- a/aspnet-core/migrations/LY.MicroService.TaskManagement.DbMigrator/appsettings.json +++ b/aspnet-core/migrations/LY.MicroService.TaskManagement.DbMigrator/appsettings.json @@ -1,22 +1,9 @@ { "ConnectionStrings": { "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpAuditLogging": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpOpenIddict": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTenantManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AppPlatform": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "TaskManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "Workflow": "Server=127.0.0.1;Database=Workflow-V70;User Id=root;Password=123456;SslMode=None", - "Notifications": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None", - "MessageService": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=AuthServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "StringEncryption": { "DefaultPassPhrase": "s46c5q55nxpeS8Ra", diff --git a/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/TaskManagementMigrationsEntityFrameworkCoreModule.cs b/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/TaskManagementMigrationsEntityFrameworkCoreModule.cs index a00b24087..1328e558b 100644 --- a/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/TaskManagementMigrationsEntityFrameworkCoreModule.cs +++ b/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/TaskManagementMigrationsEntityFrameworkCoreModule.cs @@ -2,6 +2,7 @@ using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.TaskManagement.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.FeatureManagement.EntityFrameworkCore; @@ -35,5 +36,35 @@ public class TaskManagementMigrationsEntityFrameworkCoreModule : AbpModule mysql.TranslateParameterizedCollectionsToConstants(); }); }); + + Configure(options => + { + options.Databases.Configure("Platform", database => + { + database.MapConnection("AbpSaas"); + database.MapConnection("Workflow"); + database.MapConnection("AppPlatform"); + database.MapConnection("TaskManagement"); + database.MapConnection("AbpAuditLogging"); + database.MapConnection("AbpTextTemplating"); + database.MapConnection("AbpSettingManagement"); + database.MapConnection("AbpFeatureManagement"); + database.MapConnection("AbpPermissionManagement"); + database.MapConnection("AbpLocalizationManagement"); + database.MapConnection("AbpDataProtectionManagement"); + }); + options.Databases.Configure("Identity", database => + { + database.MapConnection("AbpGdpr"); + database.MapConnection("AbpIdentity"); + database.MapConnection("AbpOpenIddict"); + database.MapConnection("AbpIdentityServer"); + }); + options.Databases.Configure("Realtime", database => + { + database.MapConnection("Notifications"); + database.MapConnection("MessageService"); + }); + }); } } diff --git a/aspnet-core/migrations/LY.MicroService.WebhooksManagement.DbMigrator/LY.MicroService.WebhooksManagement.DbMigrator.csproj b/aspnet-core/migrations/LY.MicroService.WebhooksManagement.DbMigrator/LY.MicroService.WebhooksManagement.DbMigrator.csproj index f9ce8c988..868e9f6fa 100644 --- a/aspnet-core/migrations/LY.MicroService.WebhooksManagement.DbMigrator/LY.MicroService.WebhooksManagement.DbMigrator.csproj +++ b/aspnet-core/migrations/LY.MicroService.WebhooksManagement.DbMigrator/LY.MicroService.WebhooksManagement.DbMigrator.csproj @@ -7,6 +7,7 @@ net9.0 enable enable + false diff --git a/aspnet-core/migrations/LY.MicroService.WebhooksManagement.DbMigrator/appsettings.json b/aspnet-core/migrations/LY.MicroService.WebhooksManagement.DbMigrator/appsettings.json index f6e1fc7b2..5134cd6f5 100644 --- a/aspnet-core/migrations/LY.MicroService.WebhooksManagement.DbMigrator/appsettings.json +++ b/aspnet-core/migrations/LY.MicroService.WebhooksManagement.DbMigrator/appsettings.json @@ -1,22 +1,9 @@ { "ConnectionStrings": { "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpAuditLogging": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpOpenIddict": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTenantManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AppPlatform": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "TaskManagement": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "Workflow": "Server=127.0.0.1;Database=Workflow-V70;User Id=root;Password=123456;SslMode=None", - "Notifications": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None", - "MessageService": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=AuthServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "StringEncryption": { "DefaultPassPhrase": "s46c5q55nxpeS8Ra", diff --git a/aspnet-core/migrations/LY.MicroService.WebhooksManagement.EntityFrameworkCore/LY.MicroService.WebhooksManagement.EntityFrameworkCore.csproj b/aspnet-core/migrations/LY.MicroService.WebhooksManagement.EntityFrameworkCore/LY.MicroService.WebhooksManagement.EntityFrameworkCore.csproj index c6dc06719..5036a8452 100644 --- a/aspnet-core/migrations/LY.MicroService.WebhooksManagement.EntityFrameworkCore/LY.MicroService.WebhooksManagement.EntityFrameworkCore.csproj +++ b/aspnet-core/migrations/LY.MicroService.WebhooksManagement.EntityFrameworkCore/LY.MicroService.WebhooksManagement.EntityFrameworkCore.csproj @@ -4,6 +4,7 @@ + false net9.0 LY.MicroService.WebhooksManagement.EntityFrameworkCore diff --git a/aspnet-core/migrations/LY.MicroService.WebhooksManagement.EntityFrameworkCore/WebhooksManagementMigrationsEntityFrameworkCoreModule.cs b/aspnet-core/migrations/LY.MicroService.WebhooksManagement.EntityFrameworkCore/WebhooksManagementMigrationsEntityFrameworkCoreModule.cs index ea56ec850..2d89a802c 100644 --- a/aspnet-core/migrations/LY.MicroService.WebhooksManagement.EntityFrameworkCore/WebhooksManagementMigrationsEntityFrameworkCoreModule.cs +++ b/aspnet-core/migrations/LY.MicroService.WebhooksManagement.EntityFrameworkCore/WebhooksManagementMigrationsEntityFrameworkCoreModule.cs @@ -2,6 +2,7 @@ using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.FeatureManagement.EntityFrameworkCore; @@ -35,5 +36,35 @@ public class WebhooksManagementMigrationsEntityFrameworkCoreModule : AbpModule mysql.TranslateParameterizedCollectionsToConstants(); }); }); + + Configure(options => + { + options.Databases.Configure("Platform", database => + { + database.MapConnection("AbpSaas"); + database.MapConnection("Workflow"); + database.MapConnection("AppPlatform"); + database.MapConnection("TaskManagement"); + database.MapConnection("AbpAuditLogging"); + database.MapConnection("AbpTextTemplating"); + database.MapConnection("AbpSettingManagement"); + database.MapConnection("AbpFeatureManagement"); + database.MapConnection("AbpPermissionManagement"); + database.MapConnection("AbpLocalizationManagement"); + database.MapConnection("AbpDataProtectionManagement"); + }); + options.Databases.Configure("Identity", database => + { + database.MapConnection("AbpGdpr"); + database.MapConnection("AbpIdentity"); + database.MapConnection("AbpOpenIddict"); + database.MapConnection("AbpIdentityServer"); + }); + options.Databases.Configure("Realtime", database => + { + database.MapConnection("Notifications"); + database.MapConnection("MessageService"); + }); + }); } } diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Dto/GetUserClaimStateDto.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Dto/GetUserClaimStateDto.cs new file mode 100644 index 000000000..5c3d661c8 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Dto/GetUserClaimStateDto.cs @@ -0,0 +1,7 @@ +namespace LINGYUN.Abp.Account; + +public class GetUserClaimStateDto +{ + public bool IsBound { get; set; } + public string Value { get; set; } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Dto/SecurityLogDto.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Dto/SecurityLogDto.cs new file mode 100644 index 000000000..eb5f5ddad --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Dto/SecurityLogDto.cs @@ -0,0 +1,29 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace LINGYUN.Abp.Account; + +public class SecurityLogDto : ExtensibleEntityDto +{ + public string ApplicationName { get; set; } + + public string Identity { get; set; } + + public string Action { get; set; } + + public Guid? UserId { get; set; } + + public string UserName { get; set; } + + public string TenantName { get; set; } + + public string ClientId { get; set; } + + public string CorrelationId { get; set; } + + public string ClientIpAddress { get; set; } + + public string BrowserInfo { get; set; } + + public DateTime CreationTime { get; set; } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Dto/SecurityLogGetListInput.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Dto/SecurityLogGetListInput.cs new file mode 100644 index 000000000..afde4703a --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Dto/SecurityLogGetListInput.cs @@ -0,0 +1,15 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace LINGYUN.Abp.Account; + +public class SecurityLogGetListInput : PagedAndSortedResultRequestDto +{ + public DateTime? StartTime { get; set; } + public DateTime? EndTime { get; set; } + public string ApplicationName { get; set; } + public string Identity { get; set; } + public string ActionName { get; set; } + public string ClientId { get; set; } + public string CorrelationId { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/IMyClaimAppService.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/IMyClaimAppService.cs index 3141e954c..5706195b3 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/IMyClaimAppService.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/IMyClaimAppService.cs @@ -5,5 +5,22 @@ namespace LINGYUN.Abp.Account; public interface IMyClaimAppService : IApplicationService { + /// + /// 变更头像 + /// + /// + /// Task ChangeAvatarAsync(ChangeAvatarInput input); + /// + /// 查询绑定状态 + /// + /// + /// + Task GetStateAsync(string claimType); + /// + /// 重置绑定状态 + /// + /// + /// + Task ResetAsync(string claimType); } diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/IMyProfileAppService.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/IMyProfileAppService.cs index 84905cae0..430090099 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/IMyProfileAppService.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/IMyProfileAppService.cs @@ -11,13 +11,13 @@ public interface IMyProfileAppService : IApplicationService /// 获取验证器信息 /// /// - Task GetAuthenticator(); + Task GetAuthenticatorAsync(); /// /// 验证验证器代码 /// /// /// - Task VerifyAuthenticatorCode(VerifyAuthenticatorCodeInput input); + Task VerifyAuthenticatorCodeAsync(VerifyAuthenticatorCodeInput input); /// /// 获取会话列表 /// @@ -34,7 +34,7 @@ public interface IMyProfileAppService : IApplicationService /// 重置验证器 /// /// - Task ResetAuthenticator(); + Task ResetAuthenticatorAsync(); /// /// 获取二次认证状态 /// diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/IMySecurityLogAppService.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/IMySecurityLogAppService.cs new file mode 100644 index 000000000..9cd577543 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/IMySecurityLogAppService.cs @@ -0,0 +1,14 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; + +namespace LINGYUN.Abp.Account; + +public interface IMySecurityLogAppService +{ + Task> GetListAsync(SecurityLogGetListInput input); + + Task GetAsync(Guid id); + + Task DeleteAsync(Guid id); +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Localization/Resources/en.json b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Localization/Resources/en.json index f450b36bd..3fac4ec96 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Localization/Resources/en.json +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Localization/Resources/en.json @@ -16,6 +16,7 @@ "DisplayName:WeChatCode": "Wechat login code", "DisplayName:AuthenticatorCode": "Authenticator Code", "TwoFactor": "Two factor authentication", + "TwoFactor:Enabled": "TwoFactor Enabled", "TwoFactor:Email": "Email", "TwoFactor:Phone": "Phone", "TwoFactor:Authenticator": "Authenticator", @@ -43,6 +44,11 @@ "YourAuthenticatorIsSuccessfullyReset": "Your authenticator reset was successful.", "Steps:PreStep": "Pre Step", "Steps:NextStep": "Next Step", - "Steps:Done": "Done" + "Steps:Done": "Done", + "PersonalSessions": "Personal sessions", + "ProfileTab:Session": "Sessions", + "ProfileTab:TwoFactor": "TwoFactor", + "ProfileTab:Authenticator": "Authenticator", + "ProfileTab:SecurityLog": "Security Log" } } \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Localization/Resources/zh-Hans.json b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Localization/Resources/zh-Hans.json index d216764e0..a550172c7 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Localization/Resources/zh-Hans.json +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application.Contracts/LINGYUN/Abp/Account/Localization/Resources/zh-Hans.json @@ -16,6 +16,7 @@ "DisplayName:WeChatCode": "微信登录凭证", "DisplayName:AuthenticatorCode": "验证代码", "TwoFactor": "双因素身份验证", + "TwoFactor:Enabled": "启用双因素认证", "TwoFactor:Email": "邮箱验证", "TwoFactor:Phone": "手机验证", "TwoFactor:Authenticator": "验证码验证", @@ -43,6 +44,11 @@ "YourAuthenticatorIsSuccessfullyReset": "您的验证器重置成功.", "Steps:PreStep": "上一步", "Steps:NextStep": "下一步", - "Steps:Done": "完成" + "Steps:Done": "完成", + "PersonalSessions": "我的会话", + "ProfileTab:Session": "会话管理", + "ProfileTab:TwoFactor": "双因素身份验证", + "ProfileTab:Authenticator": "身份验证程序", + "ProfileTab:SecurityLog": "安全日志" } } \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN.Abp.Account.Application.csproj b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN.Abp.Account.Application.csproj index 131ab2367..1ada339df 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN.Abp.Account.Application.csproj +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN.Abp.Account.Application.csproj @@ -19,11 +19,12 @@ + - + diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AbpAccountApplicationModule.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AbpAccountApplicationModule.cs index 30425c87a..5544d58be 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AbpAccountApplicationModule.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AbpAccountApplicationModule.cs @@ -1,22 +1,34 @@ -using LINGYUN.Abp.Account.Templates; -using LINGYUN.Abp.Identity; -using LINGYUN.Abp.WeChat.MiniProgram; -using Volo.Abp.Modularity; +using LINGYUN.Abp.Account.Emailing; +using LINGYUN.Abp.Account.Emailing.Localization; +using LINGYUN.Abp.Identity; +using LINGYUN.Abp.WeChat.MiniProgram; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Account.Localization; +using Volo.Abp.AutoMapper; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.VirtualFileSystem; -namespace LINGYUN.Abp.Account; - -[DependsOn( - typeof(Volo.Abp.Account.AbpAccountApplicationModule), - typeof(AbpAccountApplicationContractsModule), - typeof(AbpAccountTemplatesModule), - typeof(AbpIdentityDomainModule), - typeof(AbpWeChatMiniProgramModule))] -public class AbpAccountApplicationModule : AbpModule -{ +namespace LINGYUN.Abp.Account; + +[DependsOn( + typeof(Volo.Abp.Account.AbpAccountApplicationModule), + typeof(AbpAccountApplicationContractsModule), + typeof(AbpAccountEmailingModule), + typeof(AbpIdentityDomainModule), + typeof(AbpWeChatMiniProgramModule))] +public class AbpAccountApplicationModule : AbpModule +{ public override void ConfigureServices(ServiceConfigurationContext context) { + context.Services.AddAutoMapperObjectMapper(); + + Configure(options => + { + options.AddMaps(validate: true); + }); + Configure(options => { options.FileSets.AddEmbedded(); @@ -26,5 +38,12 @@ public class AbpAccountApplicationModule : AbpModule { options.Applications["MVC"].Urls[AccountUrlNames.EmailConfirm] = "Account/EmailConfirm"; }); - } -} + + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes(typeof(AccountEmailingResource)); + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AbpAccountMapperProfile.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AbpAccountMapperProfile.cs new file mode 100644 index 000000000..ee907f377 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AbpAccountMapperProfile.cs @@ -0,0 +1,12 @@ +using AutoMapper; +using LINGYUN.Abp.AuditLogging; + +namespace LINGYUN.Abp.Account; + +public class AbpAccountMapperProfile : Profile +{ + public AbpAccountMapperProfile() + { + CreateMap(MemberList.Destination); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AccountAppService.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AccountAppService.cs index a22c0e07a..e27278844 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AccountAppService.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AccountAppService.cs @@ -7,7 +7,6 @@ using LINGYUN.Abp.WeChat.MiniProgram; using LINGYUN.Abp.WeChat.OpenId; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Caching.Distributed; -using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using System; using System.ComponentModel.DataAnnotations; @@ -15,7 +14,6 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Volo.Abp; -using Volo.Abp.Account; using Volo.Abp.Application.Dtos; using Volo.Abp.Caching; using Volo.Abp.Clients; diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AccountApplicationServiceBase.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AccountApplicationServiceBase.cs index 73b94a953..52e61ce0b 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AccountApplicationServiceBase.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AccountApplicationServiceBase.cs @@ -17,6 +17,7 @@ public abstract class AccountApplicationServiceBase : ApplicationService protected AccountApplicationServiceBase() { LocalizationResource = typeof(AccountResource); + ObjectMapperContext = typeof(AbpAccountApplicationModule); } protected async virtual Task GetCurrentUserAsync() diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/Emailing/AccountEmailSender.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/Emailing/AccountEmailSender.cs deleted file mode 100644 index e14118a2c..000000000 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/Emailing/AccountEmailSender.cs +++ /dev/null @@ -1,92 +0,0 @@ -using LINGYUN.Abp.Account.Emailing.Templates; -using Microsoft.Extensions.Localization; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text.Encodings.Web; -using System.Threading.Tasks; -using Volo.Abp.Account.Emailing; -using Volo.Abp.Account.Localization; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Emailing; -using Volo.Abp.Identity; -using Volo.Abp.MultiTenancy; -using Volo.Abp.TextTemplating; -using Volo.Abp.UI.Navigation.Urls; - -namespace LINGYUN.Abp.Account.Emailing; - -[Dependency(ReplaceServices = true)] -[ExposeServices( - typeof(IAccountEmailConfirmSender), - typeof(IAccountEmailVerifySender), - typeof(IAccountEmailer), - typeof(AccountEmailSender))] -public class AccountEmailSender : - AccountEmailer, - IAccountEmailConfirmSender, - IAccountEmailVerifySender, - ITransientDependency -{ - public AccountEmailSender( - IEmailSender emailSender, - ITemplateRenderer templateRenderer, - IStringLocalizer accountLocalizer, - IAppUrlProvider appUrlProvider, - ICurrentTenant currentTenant) - : base(emailSender, templateRenderer, accountLocalizer, appUrlProvider, currentTenant) - { - } - - public async virtual Task SendMailLoginVerifyCodeAsync( - string code, - string userName, - string emailAddress) - { - var emailContent = await TemplateRenderer.RenderAsync( - AccountEmailTemplates.MailSecurityVerifyLink, - new { code = code, user = userName } - ); - - await EmailSender.SendAsync( - emailAddress, - StringLocalizer["MailSecurityVerify"], - emailContent - ); - } - - public async virtual Task SendEmailConfirmLinkAsync( - IdentityUser user, - string confirmToken, - string appName, - string returnUrl = null, - string returnUrlHash = null) - { - Debug.Assert(CurrentTenant.Id == user.TenantId, "This method can only work for current tenant!"); - - var url = await AppUrlProvider.GetUrlAsync(appName, AccountUrlNames.EmailConfirm); - - var link = $"{url}?userId={user.Id}&{TenantResolverConsts.DefaultTenantKey}={user.TenantId}&confirmToken={confirmToken}"; - - if (!returnUrl.IsNullOrEmpty()) - { - link += "&returnUrl=" + NormalizeReturnUrl(returnUrl); - } - - if (!returnUrlHash.IsNullOrEmpty()) - { - link += "&returnUrlHash=" + returnUrlHash; - } - - var emailContent = await TemplateRenderer.RenderAsync( - AccountEmailTemplates.MailConfirmLink, - new { link = link } - ); - - await EmailSender.SendAsync( - user.Email, - StringLocalizer["EmailConfirm"], - emailContent - ); - } -} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/MyClaimAppService.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/MyClaimAppService.cs index 1c47aeb37..3b040a4d4 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/MyClaimAppService.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/MyClaimAppService.cs @@ -22,25 +22,25 @@ public class MyClaimAppService : AccountApplicationServiceBase, IMyClaimAppServi var user = await GetCurrentUserAsync(); // TODO: Use AbpClaimTypes.Picture - user.Claims.RemoveAll(x => x.ClaimType.Equals(IdentityConsts.ClaimType.Avatar.Name)); - user.AddClaim(GuidGenerator, new Claim(IdentityConsts.ClaimType.Avatar.Name, input.AvatarUrl)); - - var avatarClaims = user.Claims.Where(x => x.ClaimType.StartsWith(AbpClaimTypes.Picture)) - .Select(x => x.ToClaim()) - .Skip(0) - .Take(3) - .ToList(); - if (avatarClaims.Any()) - { + user.Claims.RemoveAll(x => x.ClaimType.Equals(IdentityConsts.ClaimType.Avatar.Name)); + user.AddClaim(GuidGenerator, new Claim(IdentityConsts.ClaimType.Avatar.Name, input.AvatarUrl)); + + var avatarClaims = user.Claims.Where(x => x.ClaimType.StartsWith(AbpClaimTypes.Picture)) + .Select(x => x.ToClaim()) + .Skip(0) + .Take(3) + .ToList(); + if (avatarClaims.Any()) + { // 保留最多3个头像 if (avatarClaims.Count >= 3) { user.RemoveClaim(avatarClaims.First()); avatarClaims.RemoveAt(0); - } - - // 历史头像加数字标识 - for (var index = 1; index <= avatarClaims.Count; index++) + } + + // 历史头像加数字标识 + for (var index = 1; index <= avatarClaims.Count; index++) { var avatarClaim = avatarClaims[index - 1]; var findClaim = user.FindClaim(avatarClaim); @@ -49,14 +49,38 @@ public class MyClaimAppService : AccountApplicationServiceBase, IMyClaimAppServi findClaim.SetClaim(new Claim( AbpClaimTypes.Picture + index.ToString(), findClaim.ClaimValue)); - } - } - } - - user.AddClaim(GuidGenerator, new Claim(AbpClaimTypes.Picture, input.AvatarUrl)); - + } + } + } + + user.AddClaim(GuidGenerator, new Claim(AbpClaimTypes.Picture, input.AvatarUrl)); + (await UserManager.UpdateAsync(user)).CheckErrors(); await CurrentUnitOfWork.SaveChangesAsync(); } + + public async virtual Task GetStateAsync(string claimType) + { + var user = await GetCurrentUserAsync(); + + var userClaim = user.Claims.FirstOrDefault(x => x.ClaimType == claimType); + + return new GetUserClaimStateDto + { + IsBound = userClaim != null, + Value = userClaim?.ClaimValue, + }; + } + + public async virtual Task ResetAsync(string claimType) + { + var user = await GetCurrentUserAsync(); + + var seeyonLoginClaim = user.Claims.FirstOrDefault(x => x.ClaimType == claimType); + if (seeyonLoginClaim != null) + { + (await UserManager.RemoveClaimAsync(user, seeyonLoginClaim.ToClaim())).CheckErrors(); + } + } } diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/MyProfileAppService.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/MyProfileAppService.cs index 0b77eb666..42790e5b0 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/MyProfileAppService.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/MyProfileAppService.cs @@ -7,11 +7,9 @@ using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Options; using System; -using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; -using System.Text.Encodings.Web; using System.Threading.Tasks; using System.Web; using Volo.Abp; @@ -172,11 +170,13 @@ public class MyProfileAppService : AccountApplicationServiceBase, IMyProfileAppS var sender = LazyServiceProvider.LazyGetRequiredService(); await sender.SendEmailConfirmLinkAsync( - user, + user.Id, + user.Email, confirmToken, input.AppName, input.ReturnUrl, - input.ReturnUrlHash); + input.ReturnUrlHash, + user.TenantId); } public async virtual Task ConfirmEmailAsync(ConfirmEmailInput input) @@ -186,7 +186,7 @@ public class MyProfileAppService : AccountApplicationServiceBase, IMyProfileAppS var user = await UserManager.GetByIdAsync(CurrentUser.GetId()); // 字符编码错误 - var confirmToken = WebUtility.UrlDecode(input.ConfirmToken.Replace("%20", "%2B")); + var confirmToken = HttpUtility.UrlDecode(input.ConfirmToken); ; (await UserManager.ConfirmEmailAsync(user, confirmToken)).CheckErrors(); await IdentitySecurityLogManager.SaveAsync(new IdentitySecurityLogContext @@ -196,7 +196,7 @@ public class MyProfileAppService : AccountApplicationServiceBase, IMyProfileAppS }); } - public async virtual Task GetAuthenticator() + public async virtual Task GetAuthenticatorAsync() { await IdentityOptions.SetAsync(); @@ -228,7 +228,7 @@ public class MyProfileAppService : AccountApplicationServiceBase, IMyProfileAppS }; } - public async virtual Task VerifyAuthenticatorCode(VerifyAuthenticatorCodeInput input) + public async virtual Task VerifyAuthenticatorCodeAsync(VerifyAuthenticatorCodeInput input) { await IdentityOptions.SetAsync(); @@ -257,7 +257,7 @@ public class MyProfileAppService : AccountApplicationServiceBase, IMyProfileAppS }; } - public async virtual Task ResetAuthenticator() + public async virtual Task ResetAuthenticatorAsync() { await IdentityOptions.SetAsync(); diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/MySecurityLogAppService.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/MySecurityLogAppService.cs new file mode 100644 index 000000000..86478f180 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/MySecurityLogAppService.cs @@ -0,0 +1,51 @@ +using LINGYUN.Abp.AuditLogging; +using Microsoft.AspNetCore.Authorization; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Users; + +namespace LINGYUN.Abp.Account; + +[Authorize] +public class MySecurityLogAppService : AccountApplicationServiceBase, IMySecurityLogAppService +{ + protected ISecurityLogManager SecurityLogManager { get; } + public MySecurityLogAppService(ISecurityLogManager securityLogManager) + { + SecurityLogManager = securityLogManager; + } + public async virtual Task GetAsync(Guid id) + { + var securityLog = await SecurityLogManager.GetAsync(id, includeDetails: true); + + return ObjectMapper.Map(securityLog); + } + + public async virtual Task> GetListAsync(SecurityLogGetListInput input) + { + var userId = CurrentUser.GetId(); + var securityLogCount = await SecurityLogManager + .GetCountAsync(input.StartTime, input.EndTime, + input.ApplicationName, input.Identity, input.ActionName, + userId, null, input.ClientId, input.CorrelationId + ); + + var securityLogs = await SecurityLogManager + .GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount, + input.StartTime, input.EndTime, + input.ApplicationName, input.Identity, input.ActionName, + userId, null, input.ClientId, input.CorrelationId, + includeDetails: false + ); + + return new PagedResultDto(securityLogCount, + ObjectMapper.Map, List>(securityLogs)); + } + + public async virtual Task DeleteAsync(Guid id) + { + await SecurityLogManager.DeleteAsync(id); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/FodyWeavers.xml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/FodyWeavers.xsd b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN.Abp.Account.Emailing.csproj b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN.Abp.Account.Emailing.csproj new file mode 100644 index 000000000..01b39652a --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN.Abp.Account.Emailing.csproj @@ -0,0 +1,28 @@ + + + + + + + netstandard2.0;netstandard2.1;net8.0;net9.0 + LINGYUN.Abp.Account.Emailing + LINGYUN.Abp.Account.Emailing + false + false + false + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/AbpAccountEmailingModule.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/AbpAccountEmailingModule.cs new file mode 100644 index 000000000..a8328c793 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/AbpAccountEmailingModule.cs @@ -0,0 +1,29 @@ +using LINGYUN.Abp.Account.Emailing.Localization; +using Volo.Abp.Emailing; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.UI.Navigation; +using Volo.Abp.VirtualFileSystem; + +namespace LINGYUN.Abp.Account.Emailing; + +[DependsOn( + typeof(AbpEmailingModule), + typeof(AbpUiNavigationModule))] +public class AbpAccountEmailingModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddVirtualJson("/LINGYUN/Abp/Account/Emailing/Localization/Resources"); + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/AccountEmailSender.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/AccountEmailSender.cs new file mode 100644 index 000000000..df1837b2a --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/AccountEmailSender.cs @@ -0,0 +1,137 @@ +using LINGYUN.Abp.Account.Emailing.Localization; +using LINGYUN.Abp.Account.Emailing.Templates; +using Microsoft.Extensions.Localization; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Text.Encodings.Web; +using System.Threading.Tasks; +using System.Web; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Emailing; +using Volo.Abp.MultiTenancy; +using Volo.Abp.TextTemplating; +using Volo.Abp.UI.Navigation.Urls; + +namespace LINGYUN.Abp.Account.Emailing; + +[Dependency(ReplaceServices = true)] +[ExposeServices( + typeof(IAccountEmailConfirmSender), + typeof(IAccountEmailVerifySender), + typeof(AccountEmailSender))] +public class AccountEmailSender : + IAccountEmailConfirmSender, + IAccountEmailVerifySender, + ITransientDependency +{ + protected ITemplateRenderer TemplateRenderer { get; } + protected IEmailSender EmailSender { get; } + protected IStringLocalizer StringLocalizer { get; } + protected IAppUrlProvider AppUrlProvider { get; } + protected ICurrentTenant CurrentTenant { get; } + + public AccountEmailSender( + IEmailSender emailSender, + ICurrentTenant currentTenant, + IAppUrlProvider appUrlProvider, + ITemplateRenderer templateRenderer, + IStringLocalizer accountLocalizer) + { + EmailSender = emailSender; + CurrentTenant = currentTenant; + AppUrlProvider = appUrlProvider; + StringLocalizer = accountLocalizer; + TemplateRenderer = templateRenderer; + } + + public async virtual Task SendMailLoginVerifyCodeAsync( + string code, + string userName, + string emailAddress) + { + var emailContent = await TemplateRenderer.RenderAsync( + AccountEmailTemplates.MailSecurityVerifyLink, + new { code = code, user = userName } + ); + + await EmailSender.SendAsync( + emailAddress, + StringLocalizer["MailSecurityVerify"], + emailContent + ); + } + + public async virtual Task SendEmailConfirmLinkAsync( + Guid userId, + string userEmail, + string confirmToken, + string appName, + string returnUrl = null, + string returnUrlHash = null, + Guid? userTenantId = null) + { + Debug.Assert(CurrentTenant.Id == userTenantId, "This method can only work for current tenant!"); + + var url = await AppUrlProvider.GetUrlAsync(appName, AccountUrlNames.EmailConfirm); + + var link = $"{url}?userId={userId}&{TenantResolverConsts.DefaultTenantKey}={userTenantId}&confirmToken={UrlEncoder.Default.Encode(confirmToken)}"; + + if (!returnUrl.IsNullOrEmpty()) + { + link += "&returnUrl=" + NormalizeReturnUrl(returnUrl); + } + + if (!returnUrlHash.IsNullOrEmpty()) + { + link += "&returnUrlHash=" + returnUrlHash; + } + + var emailContent = await TemplateRenderer.RenderAsync( + AccountEmailTemplates.MailConfirmLink, + new { link = link } + ); + + await EmailSender.SendAsync( + userEmail, + StringLocalizer["EmailConfirm"], + emailContent + ); + } + + protected virtual string NormalizeReturnUrl(string returnUrl) + { + if (returnUrl.IsNullOrEmpty()) + { + return returnUrl; + } + + //Handling openid connect login + if (returnUrl.StartsWith("/connect/authorize/callback", StringComparison.OrdinalIgnoreCase)) + { + if (returnUrl.Contains("?")) + { + var queryPart = returnUrl.Split('?')[1]; + var queryParameters = queryPart.Split('&'); + foreach (var queryParameter in queryParameters) + { + if (queryParameter.Contains("=")) + { + var queryParam = queryParameter.Split('='); + if (queryParam[0] == "redirect_uri") + { + return HttpUtility.UrlDecode(queryParam[1]); + } + } + } + } + } + + if (returnUrl.StartsWith("/connect/authorize?", StringComparison.OrdinalIgnoreCase)) + { + return HttpUtility.UrlEncode(returnUrl); + } + + return returnUrl; + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AccountUrlNames.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/AccountUrlNames.cs similarity index 80% rename from aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AccountUrlNames.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/AccountUrlNames.cs index e09c4c583..040f3d0eb 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/AccountUrlNames.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/AccountUrlNames.cs @@ -1,7 +1,7 @@ -namespace LINGYUN.Abp.Account; - -public static class AccountUrlNames -{ - public const string EmailConfirm = "Abp.Account.EmailConfirm"; - public const string EmailVerifyLogin = "Abp.Account.EmailVerifyLogin"; -} +namespace LINGYUN.Abp.Account.Emailing; + +public static class AccountUrlNames +{ + public const string EmailConfirm = "Abp.Account.EmailConfirm"; + public const string EmailVerifyLogin = "Abp.Account.EmailVerifyLogin"; +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/Emailing/IAccountEmailConfirmSender.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/IAccountEmailConfirmSender.cs similarity index 57% rename from aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/Emailing/IAccountEmailConfirmSender.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/IAccountEmailConfirmSender.cs index 36a2427a9..6a2f693f4 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/Emailing/IAccountEmailConfirmSender.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/IAccountEmailConfirmSender.cs @@ -1,15 +1,17 @@ -using System.Threading.Tasks; -using Volo.Abp.Identity; - -namespace LINGYUN.Abp.Account.Emailing; - -public interface IAccountEmailConfirmSender -{ - Task SendEmailConfirmLinkAsync( - IdentityUser user, - string confirmToken, - string appName, - string returnUrl = null, - string returnUrlHash = null - ); -} +using System; +using System.Threading.Tasks; + +namespace LINGYUN.Abp.Account.Emailing; + +public interface IAccountEmailConfirmSender +{ + Task SendEmailConfirmLinkAsync( + Guid userId, + string userEmail, + string confirmToken, + string appName, + string returnUrl = null, + string returnUrlHash = null, + Guid? userTenantId = null + ); +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/Emailing/IAccountEmailVerifySender.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/IAccountEmailVerifySender.cs similarity index 97% rename from aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/Emailing/IAccountEmailVerifySender.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/IAccountEmailVerifySender.cs index 55eb373c0..10c898dbc 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Application/LINGYUN/Abp/Account/Emailing/IAccountEmailVerifySender.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/IAccountEmailVerifySender.cs @@ -2,10 +2,10 @@ namespace LINGYUN.Abp.Account.Emailing; -public interface IAccountEmailVerifySender -{ - Task SendMailLoginVerifyCodeAsync( - string code, - string userName, - string emailAddress); +public interface IAccountEmailVerifySender +{ + Task SendMailLoginVerifyCodeAsync( + string code, + string userName, + string emailAddress); } diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Localization/AccountEmailingResource.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Localization/AccountEmailingResource.cs new file mode 100644 index 000000000..a3b5dd5ef --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Localization/AccountEmailingResource.cs @@ -0,0 +1,8 @@ +using Volo.Abp.Localization; + +namespace LINGYUN.Abp.Account.Emailing.Localization; + +[LocalizationResourceName("AbpAccountEmailing")] +public class AccountEmailingResource +{ +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Templates/Localization/Resources/en.json b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Localization/Resources/en.json similarity index 100% rename from aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Templates/Localization/Resources/en.json rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Localization/Resources/en.json diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Templates/Localization/Resources/zh-Hans.json b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Localization/Resources/zh-Hans.json similarity index 100% rename from aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Templates/Localization/Resources/zh-Hans.json rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Localization/Resources/zh-Hans.json diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Templates/AccountEmailTemplates.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Templates/AccountEmailTemplates.cs new file mode 100644 index 000000000..e033e7dcd --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Templates/AccountEmailTemplates.cs @@ -0,0 +1,13 @@ +namespace LINGYUN.Abp.Account.Emailing.Templates; + +public static class AccountEmailTemplates +{ + /// + /// 邮件地址确认 + /// + public const string MailConfirmLink = "Abp.Account.MailConfirmLink"; + /// + /// 邮件安全验证 + /// + public const string MailSecurityVerifyLink = "Abp.Account.MailSecurityVerifyLink"; +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Templates/AccountTemplateDefinitionProvider.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Templates/AccountTemplateDefinitionProvider.cs new file mode 100644 index 000000000..b7b993696 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Templates/AccountTemplateDefinitionProvider.cs @@ -0,0 +1,32 @@ +using LINGYUN.Abp.Account.Emailing.Localization; +using Volo.Abp.Emailing.Templates; +using Volo.Abp.Localization; +using Volo.Abp.TextTemplating; + +namespace LINGYUN.Abp.Account.Emailing.Templates; + +public class AccountTemplateDefinitionProvider : TemplateDefinitionProvider +{ + public override void Define(ITemplateDefinitionContext context) + { + context.Add( + new TemplateDefinition( + AccountEmailTemplates.MailSecurityVerifyLink, + displayName: L($"TextTemplate:{AccountEmailTemplates.MailSecurityVerifyLink}"), + layout: StandardEmailTemplates.Layout, + localizationResource: typeof(AccountEmailingResource) + ).WithVirtualFilePath("/LINGYUN/Abp/Account/Emailing/Templates/MailSecurityVerify.tpl", true), + new TemplateDefinition( + AccountEmailTemplates.MailConfirmLink, + displayName: L($"TextTemplate:{AccountEmailTemplates.MailConfirmLink}"), + layout: StandardEmailTemplates.Layout, + localizationResource: typeof(AccountEmailingResource) + ).WithVirtualFilePath("/LINGYUN/Abp/Account/Emailing/Templates/MailConfirm.tpl", true) + ); + } + + private static ILocalizableString L(string name) + { + return LocalizableString.Create(name); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Templates/MailConfirm.tpl b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Templates/MailConfirm.tpl new file mode 100644 index 000000000..49bdcf0f8 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Templates/MailConfirm.tpl @@ -0,0 +1,7 @@ +

{{L "EmailConfirm"}}

+ +

{{L "EmailConfirmInfo"}}

+ + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Templates/MailSecurityVerify.tpl b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Templates/MailSecurityVerify.tpl new file mode 100644 index 000000000..60a3bbf0a --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Emailing/LINGYUN/Abp/Account/Emailing/Templates/MailSecurityVerify.tpl @@ -0,0 +1,5 @@ +
+ {{L "VerifyMyEmailAddress"}}{{model.user}} +

{{model.code}}

+ {{L "MailSecurityVerifyRemarks"}} +
\ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/AccountClientProxy.Generated.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/AccountClientProxy.Generated.cs new file mode 100644 index 000000000..38e581818 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/AccountClientProxy.Generated.cs @@ -0,0 +1,83 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.Account; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Account; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IAccountAppService), typeof(AccountClientProxy))] +public partial class AccountClientProxy : ClientProxyBase, IAccountAppService +{ + public virtual async Task RegisterAsync(WeChatRegisterDto input) + { + await RequestAsync(nameof(RegisterAsync), new ClientProxyRequestTypeValue + { + { typeof(WeChatRegisterDto), input } + }); + } + + public virtual async Task RegisterAsync(PhoneRegisterDto input) + { + await RequestAsync(nameof(RegisterAsync), new ClientProxyRequestTypeValue + { + { typeof(PhoneRegisterDto), input } + }); + } + + public virtual async Task ResetPasswordAsync(PhoneResetPasswordDto input) + { + await RequestAsync(nameof(ResetPasswordAsync), new ClientProxyRequestTypeValue + { + { typeof(PhoneResetPasswordDto), input } + }); + } + + public virtual async Task SendPhoneSigninCodeAsync(SendPhoneSigninCodeDto input) + { + await RequestAsync(nameof(SendPhoneSigninCodeAsync), new ClientProxyRequestTypeValue + { + { typeof(SendPhoneSigninCodeDto), input } + }); + } + + public virtual async Task SendEmailSigninCodeAsync(SendEmailSigninCodeDto input) + { + await RequestAsync(nameof(SendEmailSigninCodeAsync), new ClientProxyRequestTypeValue + { + { typeof(SendEmailSigninCodeDto), input } + }); + } + + public virtual async Task SendPhoneRegisterCodeAsync(SendPhoneRegisterCodeDto input) + { + await RequestAsync(nameof(SendPhoneRegisterCodeAsync), new ClientProxyRequestTypeValue + { + { typeof(SendPhoneRegisterCodeDto), input } + }); + } + + public virtual async Task SendPhoneResetPasswordCodeAsync(SendPhoneResetPasswordCodeDto input) + { + await RequestAsync(nameof(SendPhoneResetPasswordCodeAsync), new ClientProxyRequestTypeValue + { + { typeof(SendPhoneResetPasswordCodeDto), input } + }); + } + + public virtual async Task> GetTwoFactorProvidersAsync(GetTwoFactorProvidersInput input) + { + return await RequestAsync>(nameof(GetTwoFactorProvidersAsync), new ClientProxyRequestTypeValue + { + { typeof(GetTwoFactorProvidersInput), input } + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/AccountClientProxy.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/AccountClientProxy.cs new file mode 100644 index 000000000..f3a520be1 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/AccountClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of AccountClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Account; + +public partial class AccountClientProxy +{ +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MyClaimClientProxy.Generated.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MyClaimClientProxy.Generated.cs new file mode 100644 index 000000000..06170f499 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MyClaimClientProxy.Generated.cs @@ -0,0 +1,43 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.Account; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Account; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IMyClaimAppService), typeof(MyClaimClientProxy))] +public partial class MyClaimClientProxy : ClientProxyBase, IMyClaimAppService +{ + public virtual async Task ChangeAvatarAsync(ChangeAvatarInput input) + { + await RequestAsync(nameof(ChangeAvatarAsync), new ClientProxyRequestTypeValue + { + { typeof(ChangeAvatarInput), input } + }); + } + + public virtual async Task GetStateAsync(string claimType) + { + return await RequestAsync(nameof(GetStateAsync), new ClientProxyRequestTypeValue + { + { typeof(string), claimType } + }); + } + + public virtual async Task ResetAsync(string claimType) + { + await RequestAsync(nameof(ResetAsync), new ClientProxyRequestTypeValue + { + { typeof(string), claimType } + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MyClaimClientProxy.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MyClaimClientProxy.cs new file mode 100644 index 000000000..550cd836e --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MyClaimClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of MyClaimClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Account; + +public partial class MyClaimClientProxy +{ +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MyProfileClientProxy.Generated.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MyProfileClientProxy.Generated.cs new file mode 100644 index 000000000..40f72e394 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MyProfileClientProxy.Generated.cs @@ -0,0 +1,99 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.Account; +using LINGYUN.Abp.Identity; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Account; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IMyProfileAppService), typeof(MyProfileClientProxy))] +public partial class MyProfileClientProxy : ClientProxyBase, IMyProfileAppService +{ + public virtual async Task> GetSessionsAsync(GetMySessionsInput input) + { + return await RequestAsync>(nameof(GetSessionsAsync), new ClientProxyRequestTypeValue + { + { typeof(GetMySessionsInput), input } + }); + } + + public virtual async Task RevokeSessionAsync(string sessionId) + { + await RequestAsync(nameof(RevokeSessionAsync), new ClientProxyRequestTypeValue + { + { typeof(string), sessionId } + }); + } + + public virtual async Task GetTwoFactorEnabledAsync() + { + return await RequestAsync(nameof(GetTwoFactorEnabledAsync)); + } + + public virtual async Task ChangeTwoFactorEnabledAsync(TwoFactorEnabledDto input) + { + await RequestAsync(nameof(ChangeTwoFactorEnabledAsync), new ClientProxyRequestTypeValue + { + { typeof(TwoFactorEnabledDto), input } + }); + } + + public virtual async Task SendChangePhoneNumberCodeAsync(SendChangePhoneNumberCodeInput input) + { + await RequestAsync(nameof(SendChangePhoneNumberCodeAsync), new ClientProxyRequestTypeValue + { + { typeof(SendChangePhoneNumberCodeInput), input } + }); + } + + public virtual async Task ChangePhoneNumberAsync(ChangePhoneNumberInput input) + { + await RequestAsync(nameof(ChangePhoneNumberAsync), new ClientProxyRequestTypeValue + { + { typeof(ChangePhoneNumberInput), input } + }); + } + + public virtual async Task SendEmailConfirmLinkAsync(SendEmailConfirmCodeDto input) + { + await RequestAsync(nameof(SendEmailConfirmLinkAsync), new ClientProxyRequestTypeValue + { + { typeof(SendEmailConfirmCodeDto), input } + }); + } + + public virtual async Task ConfirmEmailAsync(ConfirmEmailInput input) + { + await RequestAsync(nameof(ConfirmEmailAsync), new ClientProxyRequestTypeValue + { + { typeof(ConfirmEmailInput), input } + }); + } + + public virtual async Task GetAuthenticatorAsync() + { + return await RequestAsync(nameof(GetAuthenticatorAsync)); + } + + public virtual async Task VerifyAuthenticatorCodeAsync(VerifyAuthenticatorCodeInput input) + { + return await RequestAsync(nameof(VerifyAuthenticatorCodeAsync), new ClientProxyRequestTypeValue + { + { typeof(VerifyAuthenticatorCodeInput), input } + }); + } + + public virtual async Task ResetAuthenticatorAsync() + { + await RequestAsync(nameof(ResetAuthenticatorAsync)); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MyProfileClientProxy.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MyProfileClientProxy.cs new file mode 100644 index 000000000..fcf36f2e3 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MyProfileClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of MyProfileClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Account; + +public partial class MyProfileClientProxy +{ +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MySecurityLogClientProxy.Generated.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MySecurityLogClientProxy.Generated.cs new file mode 100644 index 000000000..ba8829a08 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MySecurityLogClientProxy.Generated.cs @@ -0,0 +1,43 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.Account; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Account; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IMySecurityLogAppService), typeof(MySecurityLogClientProxy))] +public partial class MySecurityLogClientProxy : ClientProxyBase, IMySecurityLogAppService +{ + public virtual async Task DeleteAsync(Guid id) + { + await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task GetAsync(Guid id) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task> GetListAsync(SecurityLogGetListInput input) + { + return await RequestAsync>(nameof(GetListAsync), new ClientProxyRequestTypeValue + { + { typeof(SecurityLogGetListInput), input } + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MySecurityLogClientProxy.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MySecurityLogClientProxy.cs new file mode 100644 index 000000000..0333ac462 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/LINGYUN/Abp/Account/MySecurityLogClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of MySecurityLogClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Account; + +public partial class MySecurityLogClientProxy +{ +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/AccountClientProxy.Generated.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/AccountClientProxy.Generated.cs new file mode 100644 index 000000000..7016b5f8e --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/AccountClientProxy.Generated.cs @@ -0,0 +1,52 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Account; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; +using Volo.Abp.Identity; + +// ReSharper disable once CheckNamespace +namespace Volo.Abp.Account; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IAccountAppService), typeof(AccountClientProxy))] +public partial class AccountClientProxy : ClientProxyBase, IAccountAppService +{ + public virtual async Task RegisterAsync(RegisterDto input) + { + return await RequestAsync(nameof(RegisterAsync), new ClientProxyRequestTypeValue + { + { typeof(RegisterDto), input } + }); + } + + public virtual async Task SendPasswordResetCodeAsync(SendPasswordResetCodeDto input) + { + await RequestAsync(nameof(SendPasswordResetCodeAsync), new ClientProxyRequestTypeValue + { + { typeof(SendPasswordResetCodeDto), input } + }); + } + + public virtual async Task VerifyPasswordResetTokenAsync(VerifyPasswordResetTokenInput input) + { + return await RequestAsync(nameof(VerifyPasswordResetTokenAsync), new ClientProxyRequestTypeValue + { + { typeof(VerifyPasswordResetTokenInput), input } + }); + } + + public virtual async Task ResetPasswordAsync(ResetPasswordDto input) + { + await RequestAsync(nameof(ResetPasswordAsync), new ClientProxyRequestTypeValue + { + { typeof(ResetPasswordDto), input } + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/AccountClientProxy.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/AccountClientProxy.cs new file mode 100644 index 000000000..31a500fcd --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/AccountClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of AccountClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace Volo.Abp.Account; + +public partial class AccountClientProxy +{ +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/DynamicClaimsClientProxy.Generated.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/DynamicClaimsClientProxy.Generated.cs new file mode 100644 index 000000000..7bb80a95c --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/DynamicClaimsClientProxy.Generated.cs @@ -0,0 +1,24 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Account; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace Volo.Abp.Account; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IDynamicClaimsAppService), typeof(DynamicClaimsClientProxy))] +public partial class DynamicClaimsClientProxy : ClientProxyBase, IDynamicClaimsAppService +{ + public virtual async Task RefreshAsync() + { + await RequestAsync(nameof(RefreshAsync)); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/DynamicClaimsClientProxy.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/DynamicClaimsClientProxy.cs new file mode 100644 index 000000000..da398d895 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/DynamicClaimsClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of DynamicClaimsClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace Volo.Abp.Account; + +public partial class DynamicClaimsClientProxy +{ +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/ProfileClientProxy.Generated.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/ProfileClientProxy.Generated.cs new file mode 100644 index 000000000..616453055 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/ProfileClientProxy.Generated.cs @@ -0,0 +1,40 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Account; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace Volo.Abp.Account; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IProfileAppService), typeof(ProfileClientProxy))] +public partial class ProfileClientProxy : ClientProxyBase, IProfileAppService +{ + public virtual async Task GetAsync() + { + return await RequestAsync(nameof(GetAsync)); + } + + public virtual async Task UpdateAsync(UpdateProfileDto input) + { + return await RequestAsync(nameof(UpdateAsync), new ClientProxyRequestTypeValue + { + { typeof(UpdateProfileDto), input } + }); + } + + public virtual async Task ChangePasswordAsync(ChangePasswordInput input) + { + await RequestAsync(nameof(ChangePasswordAsync), new ClientProxyRequestTypeValue + { + { typeof(ChangePasswordInput), input } + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/ProfileClientProxy.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/ProfileClientProxy.cs new file mode 100644 index 000000000..17a0ad1a2 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/Volo/Abp/Account/ProfileClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of ProfileClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace Volo.Abp.Account; + +public partial class ProfileClientProxy +{ +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/account-generate-proxy.json b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/account-generate-proxy.json new file mode 100644 index 000000000..c74015198 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/ClientProxies/account-generate-proxy.json @@ -0,0 +1,1883 @@ +{ + "modules": { + "account": { + "rootPath": "account", + "remoteServiceName": "AbpAccount", + "controllers": { + "LINGYUN.Abp.Account.AccountController": { + "controllerName": "Account", + "controllerGroupName": "Account", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.Account.AccountController", + "interfaces": [ + { + "type": "LINGYUN.Abp.Account.IAccountAppService", + "name": "IAccountAppService", + "methods": [ + { + "name": "RegisterAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.PhoneRegisterDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.PhoneRegisterDto", + "typeSimple": "LINGYUN.Abp.Account.PhoneRegisterDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "RegisterAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.WeChatRegisterDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.WeChatRegisterDto", + "typeSimple": "LINGYUN.Abp.Account.WeChatRegisterDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "ResetPasswordAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.PhoneResetPasswordDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.PhoneResetPasswordDto", + "typeSimple": "LINGYUN.Abp.Account.PhoneResetPasswordDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "SendPhoneRegisterCodeAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SendPhoneRegisterCodeDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SendPhoneRegisterCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendPhoneRegisterCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "SendPhoneSigninCodeAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SendPhoneSigninCodeDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SendPhoneSigninCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendPhoneSigninCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "SendEmailSigninCodeAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SendEmailSigninCodeDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SendEmailSigninCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendEmailSigninCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "SendPhoneResetPasswordCodeAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SendPhoneResetPasswordCodeDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SendPhoneResetPasswordCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendPhoneResetPasswordCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "GetTwoFactorProvidersAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.GetTwoFactorProvidersInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.GetTwoFactorProvidersInput", + "typeSimple": "LINGYUN.Abp.Account.GetTwoFactorProvidersInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + } + ] + } + ], + "actions": { + "RegisterAsyncByInput": { + "uniqueName": "RegisterAsyncByInput", + "name": "RegisterAsync", + "httpMethod": "POST", + "url": "api/account/wechat/register", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.WeChatRegisterDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.WeChatRegisterDto", + "typeSimple": "LINGYUN.Abp.Account.WeChatRegisterDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Account.WeChatRegisterDto", + "typeSimple": "LINGYUN.Abp.Account.WeChatRegisterDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.Account.IAccountAppService" + }, + "ResetPasswordAsyncByInput": { + "uniqueName": "ResetPasswordAsyncByInput", + "name": "ResetPasswordAsync", + "httpMethod": "PUT", + "url": "api/account/phone/reset-password", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.PhoneResetPasswordDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.PhoneResetPasswordDto", + "typeSimple": "LINGYUN.Abp.Account.PhoneResetPasswordDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Account.PhoneResetPasswordDto", + "typeSimple": "LINGYUN.Abp.Account.PhoneResetPasswordDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.Account.IAccountAppService" + }, + "SendPhoneSigninCodeAsyncByInput": { + "uniqueName": "SendPhoneSigninCodeAsyncByInput", + "name": "SendPhoneSigninCodeAsync", + "httpMethod": "POST", + "url": "api/account/phone/send-signin-code", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SendPhoneSigninCodeDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SendPhoneSigninCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendPhoneSigninCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Account.SendPhoneSigninCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendPhoneSigninCodeDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.Account.IAccountAppService" + }, + "SendEmailSigninCodeAsyncByInput": { + "uniqueName": "SendEmailSigninCodeAsyncByInput", + "name": "SendEmailSigninCodeAsync", + "httpMethod": "POST", + "url": "api/account/email/send-signin-code", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SendEmailSigninCodeDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SendEmailSigninCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendEmailSigninCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Account.SendEmailSigninCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendEmailSigninCodeDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.Account.IAccountAppService" + }, + "SendPhoneRegisterCodeAsyncByInput": { + "uniqueName": "SendPhoneRegisterCodeAsyncByInput", + "name": "SendPhoneRegisterCodeAsync", + "httpMethod": "POST", + "url": "api/account/phone/send-register-code", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SendPhoneRegisterCodeDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SendPhoneRegisterCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendPhoneRegisterCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Account.SendPhoneRegisterCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendPhoneRegisterCodeDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.Account.IAccountAppService" + }, + "SendPhoneResetPasswordCodeAsyncByInput": { + "uniqueName": "SendPhoneResetPasswordCodeAsyncByInput", + "name": "SendPhoneResetPasswordCodeAsync", + "httpMethod": "POST", + "url": "api/account/phone/send-password-reset-code", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SendPhoneResetPasswordCodeDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SendPhoneResetPasswordCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendPhoneResetPasswordCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Account.SendPhoneResetPasswordCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendPhoneResetPasswordCodeDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.Account.IAccountAppService" + }, + "GetTwoFactorProvidersAsyncByInput": { + "uniqueName": "GetTwoFactorProvidersAsyncByInput", + "name": "GetTwoFactorProvidersAsync", + "httpMethod": "GET", + "url": "api/account/two-factor-providers", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.GetTwoFactorProvidersInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.GetTwoFactorProvidersInput", + "typeSimple": "LINGYUN.Abp.Account.GetTwoFactorProvidersInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "UserId", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.Account.IAccountAppService" + } + } + }, + "LINGYUN.Abp.Account.MyClaimController": { + "controllerName": "MyClaim", + "controllerGroupName": "Claim", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.Account.MyClaimController", + "interfaces": [ + { + "type": "LINGYUN.Abp.Account.IMyClaimAppService", + "name": "IMyClaimAppService", + "methods": [ + { + "name": "ChangeAvatarAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.ChangeAvatarInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.ChangeAvatarInput", + "typeSimple": "LINGYUN.Abp.Account.ChangeAvatarInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "GetStateAsync", + "parametersOnMethod": [ + { + "name": "claimType", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Account.GetUserClaimStateDto", + "typeSimple": "LINGYUN.Abp.Account.GetUserClaimStateDto" + } + }, + { + "name": "ResetAsync", + "parametersOnMethod": [ + { + "name": "claimType", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "ChangeAvatarAsyncByInput": { + "uniqueName": "ChangeAvatarAsyncByInput", + "name": "ChangeAvatarAsync", + "httpMethod": "POST", + "url": "api/account/my-claim/change-avatar", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.ChangeAvatarInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.ChangeAvatarInput", + "typeSimple": "LINGYUN.Abp.Account.ChangeAvatarInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Account.ChangeAvatarInput", + "typeSimple": "LINGYUN.Abp.Account.ChangeAvatarInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyClaimAppService" + }, + "GetStateAsyncByClaimType": { + "uniqueName": "GetStateAsyncByClaimType", + "name": "GetStateAsync", + "httpMethod": "GET", + "url": "api/account/my-claim/state/{claimType}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "claimType", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "claimType", + "name": "claimType", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Account.GetUserClaimStateDto", + "typeSimple": "LINGYUN.Abp.Account.GetUserClaimStateDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyClaimAppService" + }, + "ResetAsyncByClaimType": { + "uniqueName": "ResetAsyncByClaimType", + "name": "ResetAsync", + "httpMethod": "DELETE", + "url": "api/account/my-claim/reset/{claimType}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "claimType", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "claimType", + "name": "claimType", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyClaimAppService" + } + } + }, + "LINGYUN.Abp.Account.MyProfileController": { + "controllerName": "MyProfile", + "controllerGroupName": "Profile", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.Account.MyProfileController", + "interfaces": [ + { + "type": "LINGYUN.Abp.Account.IMyProfileAppService", + "name": "IMyProfileAppService", + "methods": [ + { + "name": "GetAuthenticatorAsync", + "parametersOnMethod": [], + "returnValue": { + "type": "LINGYUN.Abp.Account.AuthenticatorDto", + "typeSimple": "LINGYUN.Abp.Account.AuthenticatorDto" + } + }, + { + "name": "VerifyAuthenticatorCodeAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.VerifyAuthenticatorCodeInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.VerifyAuthenticatorCodeInput", + "typeSimple": "LINGYUN.Abp.Account.VerifyAuthenticatorCodeInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Account.AuthenticatorRecoveryCodeDto", + "typeSimple": "LINGYUN.Abp.Account.AuthenticatorRecoveryCodeDto" + } + }, + { + "name": "GetSessionsAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Identity.GetMySessionsInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Identity.GetMySessionsInput", + "typeSimple": "LINGYUN.Abp.Identity.GetMySessionsInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + { + "name": "RevokeSessionAsync", + "parametersOnMethod": [ + { + "name": "sessionId", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "ResetAuthenticatorAsync", + "parametersOnMethod": [], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "GetTwoFactorEnabledAsync", + "parametersOnMethod": [], + "returnValue": { + "type": "LINGYUN.Abp.Account.TwoFactorEnabledDto", + "typeSimple": "LINGYUN.Abp.Account.TwoFactorEnabledDto" + } + }, + { + "name": "ChangeTwoFactorEnabledAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.TwoFactorEnabledDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.TwoFactorEnabledDto", + "typeSimple": "LINGYUN.Abp.Account.TwoFactorEnabledDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "SendChangePhoneNumberCodeAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SendChangePhoneNumberCodeInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SendChangePhoneNumberCodeInput", + "typeSimple": "LINGYUN.Abp.Account.SendChangePhoneNumberCodeInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "ChangePhoneNumberAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.ChangePhoneNumberInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.ChangePhoneNumberInput", + "typeSimple": "LINGYUN.Abp.Account.ChangePhoneNumberInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "SendEmailConfirmLinkAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SendEmailConfirmCodeDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SendEmailConfirmCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendEmailConfirmCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "ConfirmEmailAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.ConfirmEmailInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.ConfirmEmailInput", + "typeSimple": "LINGYUN.Abp.Account.ConfirmEmailInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "GetSessionsAsyncByInput": { + "uniqueName": "GetSessionsAsyncByInput", + "name": "GetSessionsAsync", + "httpMethod": "GET", + "url": "api/account/my-profile/sessions", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Identity.GetMySessionsInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Identity.GetMySessionsInput", + "typeSimple": "LINGYUN.Abp.Identity.GetMySessionsInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Device", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ClientId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyProfileAppService" + }, + "RevokeSessionAsyncBySessionId": { + "uniqueName": "RevokeSessionAsyncBySessionId", + "name": "RevokeSessionAsync", + "httpMethod": "DELETE", + "url": "api/account/my-profile/sessions/{sessionId}/revoke", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "sessionId", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "sessionId", + "name": "sessionId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyProfileAppService" + }, + "GetTwoFactorEnabledAsync": { + "uniqueName": "GetTwoFactorEnabledAsync", + "name": "GetTwoFactorEnabledAsync", + "httpMethod": "GET", + "url": "api/account/my-profile/two-factor", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "LINGYUN.Abp.Account.TwoFactorEnabledDto", + "typeSimple": "LINGYUN.Abp.Account.TwoFactorEnabledDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyProfileAppService" + }, + "ChangeTwoFactorEnabledAsyncByInput": { + "uniqueName": "ChangeTwoFactorEnabledAsyncByInput", + "name": "ChangeTwoFactorEnabledAsync", + "httpMethod": "PUT", + "url": "api/account/my-profile/change-two-factor", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.TwoFactorEnabledDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.TwoFactorEnabledDto", + "typeSimple": "LINGYUN.Abp.Account.TwoFactorEnabledDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Account.TwoFactorEnabledDto", + "typeSimple": "LINGYUN.Abp.Account.TwoFactorEnabledDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyProfileAppService" + }, + "SendChangePhoneNumberCodeAsyncByInput": { + "uniqueName": "SendChangePhoneNumberCodeAsyncByInput", + "name": "SendChangePhoneNumberCodeAsync", + "httpMethod": "POST", + "url": "api/account/my-profile/send-phone-number-change-code", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SendChangePhoneNumberCodeInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SendChangePhoneNumberCodeInput", + "typeSimple": "LINGYUN.Abp.Account.SendChangePhoneNumberCodeInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Account.SendChangePhoneNumberCodeInput", + "typeSimple": "LINGYUN.Abp.Account.SendChangePhoneNumberCodeInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyProfileAppService" + }, + "ChangePhoneNumberAsyncByInput": { + "uniqueName": "ChangePhoneNumberAsyncByInput", + "name": "ChangePhoneNumberAsync", + "httpMethod": "PUT", + "url": "api/account/my-profile/change-phone-number", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.ChangePhoneNumberInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.ChangePhoneNumberInput", + "typeSimple": "LINGYUN.Abp.Account.ChangePhoneNumberInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Account.ChangePhoneNumberInput", + "typeSimple": "LINGYUN.Abp.Account.ChangePhoneNumberInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyProfileAppService" + }, + "SendEmailConfirmLinkAsyncByInput": { + "uniqueName": "SendEmailConfirmLinkAsyncByInput", + "name": "SendEmailConfirmLinkAsync", + "httpMethod": "POST", + "url": "api/account/my-profile/send-email-confirm-link", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SendEmailConfirmCodeDto, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SendEmailConfirmCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendEmailConfirmCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Account.SendEmailConfirmCodeDto", + "typeSimple": "LINGYUN.Abp.Account.SendEmailConfirmCodeDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyProfileAppService" + }, + "ConfirmEmailAsyncByInput": { + "uniqueName": "ConfirmEmailAsyncByInput", + "name": "ConfirmEmailAsync", + "httpMethod": "PUT", + "url": "api/account/my-profile/confirm-email", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.ConfirmEmailInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.ConfirmEmailInput", + "typeSimple": "LINGYUN.Abp.Account.ConfirmEmailInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Account.ConfirmEmailInput", + "typeSimple": "LINGYUN.Abp.Account.ConfirmEmailInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyProfileAppService" + }, + "GetAuthenticatorAsync": { + "uniqueName": "GetAuthenticatorAsync", + "name": "GetAuthenticatorAsync", + "httpMethod": "GET", + "url": "api/account/my-profile/authenticator", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "LINGYUN.Abp.Account.AuthenticatorDto", + "typeSimple": "LINGYUN.Abp.Account.AuthenticatorDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyProfileAppService" + }, + "VerifyAuthenticatorCodeAsyncByInput": { + "uniqueName": "VerifyAuthenticatorCodeAsyncByInput", + "name": "VerifyAuthenticatorCodeAsync", + "httpMethod": "POST", + "url": "api/account/my-profile/verify-authenticator-code", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.VerifyAuthenticatorCodeInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.VerifyAuthenticatorCodeInput", + "typeSimple": "LINGYUN.Abp.Account.VerifyAuthenticatorCodeInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Account.VerifyAuthenticatorCodeInput", + "typeSimple": "LINGYUN.Abp.Account.VerifyAuthenticatorCodeInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Account.AuthenticatorRecoveryCodeDto", + "typeSimple": "LINGYUN.Abp.Account.AuthenticatorRecoveryCodeDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyProfileAppService" + }, + "ResetAuthenticatorAsync": { + "uniqueName": "ResetAuthenticatorAsync", + "name": "ResetAuthenticatorAsync", + "httpMethod": "POST", + "url": "api/account/my-profile/reset-authenticator", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMyProfileAppService" + } + } + }, + "LINGYUN.Abp.Account.MySecurityLogController": { + "controllerName": "MySecurityLog", + "controllerGroupName": "SecurityLog", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.Account.MySecurityLogController", + "interfaces": [ + { + "type": "LINGYUN.Abp.Account.IMySecurityLogAppService", + "name": "IMySecurityLogAppService", + "methods": [ + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SecurityLogGetListInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SecurityLogGetListInput", + "typeSimple": "LINGYUN.Abp.Account.SecurityLogGetListInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Account.SecurityLogDto", + "typeSimple": "LINGYUN.Abp.Account.SecurityLogDto" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/account/security-logs/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMySecurityLogAppService" + }, + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/account/security-logs/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Account.SecurityLogDto", + "typeSimple": "LINGYUN.Abp.Account.SecurityLogDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMySecurityLogAppService" + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/account/security-logs", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Account.SecurityLogGetListInput, LINGYUN.Abp.Account.Application.Contracts", + "type": "LINGYUN.Abp.Account.SecurityLogGetListInput", + "typeSimple": "LINGYUN.Abp.Account.SecurityLogGetListInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "StartTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "EndTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ApplicationName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Identity", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ActionName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ClientId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "CorrelationId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Account.IMySecurityLogAppService" + } + } + }, + "Volo.Abp.Account.AccountController": { + "controllerName": "Account", + "controllerGroupName": "Account", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "Volo.Abp.Account.AccountController", + "interfaces": [ + { + "type": "Volo.Abp.Account.IAccountAppService", + "name": "IAccountAppService", + "methods": [ + { + "name": "RegisterAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.RegisterDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.RegisterDto", + "typeSimple": "Volo.Abp.Account.RegisterDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + { + "name": "SendPasswordResetCodeAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.SendPasswordResetCodeDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.SendPasswordResetCodeDto", + "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "VerifyPasswordResetTokenAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.VerifyPasswordResetTokenInput, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.VerifyPasswordResetTokenInput", + "typeSimple": "Volo.Abp.Account.VerifyPasswordResetTokenInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Boolean", + "typeSimple": "boolean" + } + }, + { + "name": "ResetPasswordAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.ResetPasswordDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.ResetPasswordDto", + "typeSimple": "Volo.Abp.Account.ResetPasswordDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "RegisterAsyncByInput": { + "uniqueName": "RegisterAsyncByInput", + "name": "RegisterAsync", + "httpMethod": "POST", + "url": "api/account/register", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.RegisterDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.RegisterDto", + "typeSimple": "Volo.Abp.Account.RegisterDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "Volo.Abp.Account.RegisterDto", + "typeSimple": "Volo.Abp.Account.RegisterDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Abp.Account.IAccountAppService" + }, + "SendPasswordResetCodeAsyncByInput": { + "uniqueName": "SendPasswordResetCodeAsyncByInput", + "name": "SendPasswordResetCodeAsync", + "httpMethod": "POST", + "url": "api/account/send-password-reset-code", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.SendPasswordResetCodeDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.SendPasswordResetCodeDto", + "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "Volo.Abp.Account.SendPasswordResetCodeDto", + "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Abp.Account.IAccountAppService" + }, + "VerifyPasswordResetTokenAsyncByInput": { + "uniqueName": "VerifyPasswordResetTokenAsyncByInput", + "name": "VerifyPasswordResetTokenAsync", + "httpMethod": "POST", + "url": "api/account/verify-password-reset-token", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.VerifyPasswordResetTokenInput, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.VerifyPasswordResetTokenInput", + "typeSimple": "Volo.Abp.Account.VerifyPasswordResetTokenInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "Volo.Abp.Account.VerifyPasswordResetTokenInput", + "typeSimple": "Volo.Abp.Account.VerifyPasswordResetTokenInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Boolean", + "typeSimple": "boolean" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Abp.Account.IAccountAppService" + }, + "ResetPasswordAsyncByInput": { + "uniqueName": "ResetPasswordAsyncByInput", + "name": "ResetPasswordAsync", + "httpMethod": "POST", + "url": "api/account/reset-password", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.ResetPasswordDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.ResetPasswordDto", + "typeSimple": "Volo.Abp.Account.ResetPasswordDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "Volo.Abp.Account.ResetPasswordDto", + "typeSimple": "Volo.Abp.Account.ResetPasswordDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Abp.Account.IAccountAppService" + } + } + }, + "Volo.Abp.Account.DynamicClaimsController": { + "controllerName": "DynamicClaims", + "controllerGroupName": "DynamicClaims", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "Volo.Abp.Account.DynamicClaimsController", + "interfaces": [ + { + "type": "Volo.Abp.Account.IDynamicClaimsAppService", + "name": "IDynamicClaimsAppService", + "methods": [ + { + "name": "RefreshAsync", + "parametersOnMethod": [], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "RefreshAsync": { + "uniqueName": "RefreshAsync", + "name": "RefreshAsync", + "httpMethod": "POST", + "url": "api/account/dynamic-claims/refresh", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Abp.Account.IDynamicClaimsAppService" + } + } + }, + "Volo.Abp.Account.ProfileController": { + "controllerName": "Profile", + "controllerGroupName": "Profile", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "Volo.Abp.Account.ProfileController", + "interfaces": [ + { + "type": "Volo.Abp.Account.IProfileAppService", + "name": "IProfileAppService", + "methods": [ + { + "name": "GetAsync", + "parametersOnMethod": [], + "returnValue": { + "type": "Volo.Abp.Account.ProfileDto", + "typeSimple": "Volo.Abp.Account.ProfileDto" + } + }, + { + "name": "UpdateAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.UpdateProfileDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.UpdateProfileDto", + "typeSimple": "Volo.Abp.Account.UpdateProfileDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Account.ProfileDto", + "typeSimple": "Volo.Abp.Account.ProfileDto" + } + }, + { + "name": "ChangePasswordAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.ChangePasswordInput, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.ChangePasswordInput", + "typeSimple": "Volo.Abp.Account.ChangePasswordInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "GetAsync": { + "uniqueName": "GetAsync", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/account/my-profile", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Account.ProfileDto", + "typeSimple": "Volo.Abp.Account.ProfileDto" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Abp.Account.IProfileAppService" + }, + "UpdateAsyncByInput": { + "uniqueName": "UpdateAsyncByInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/account/my-profile", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.UpdateProfileDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.UpdateProfileDto", + "typeSimple": "Volo.Abp.Account.UpdateProfileDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "Volo.Abp.Account.UpdateProfileDto", + "typeSimple": "Volo.Abp.Account.UpdateProfileDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Account.ProfileDto", + "typeSimple": "Volo.Abp.Account.ProfileDto" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Abp.Account.IProfileAppService" + }, + "ChangePasswordAsyncByInput": { + "uniqueName": "ChangePasswordAsyncByInput", + "name": "ChangePasswordAsync", + "httpMethod": "POST", + "url": "api/account/my-profile/change-password", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.ChangePasswordInput, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.ChangePasswordInput", + "typeSimple": "Volo.Abp.Account.ChangePasswordInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "Volo.Abp.Account.ChangePasswordInput", + "typeSimple": "Volo.Abp.Account.ChangePasswordInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "Volo.Abp.Account.IProfileAppService" + } + } + } + } + } + }, + "types": {} +} \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/FodyWeavers.xml b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/FodyWeavers.xsd b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/LINGYUN.Abp.Account.HttpApi.Client.csproj b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/LINGYUN.Abp.Account.HttpApi.Client.csproj new file mode 100644 index 000000000..fd96d31c6 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/LINGYUN.Abp.Account.HttpApi.Client.csproj @@ -0,0 +1,32 @@ + + + + + + + netstandard2.0;netstandard2.1;net8.0;net9.0 + LINGYUN.Abp.Account.HttpApi.Client + LINGYUN.Abp.Account.HttpApi.Client + false + false + false + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/LINGYUN/Abp/Account/AbpAccountHttpApiClientModule.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/LINGYUN/Abp/Account/AbpAccountHttpApiClientModule.cs new file mode 100644 index 000000000..f0cef345d --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi.Client/LINGYUN/Abp/Account/AbpAccountHttpApiClientModule.cs @@ -0,0 +1,25 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Account; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; +using VoloAbpAccountHttpApiClientModule = Volo.Abp.Account.AbpAccountHttpApiClientModule; + +namespace LINGYUN.Abp.Account; + +[DependsOn( + typeof(AbpAccountApplicationContractsModule), + typeof(VoloAbpAccountHttpApiClientModule))] +public class AbpAccountHttpApiClientModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddStaticHttpClientProxies( + typeof(AbpAccountApplicationContractsModule).Assembly, + AccountRemoteServiceConsts.RemoteServiceName); + + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi/LINGYUN/Abp/Account/MyClaimController.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi/LINGYUN/Abp/Account/MyClaimController.cs index dde75b6d1..8eedfcaec 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi/LINGYUN/Abp/Account/MyClaimController.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi/LINGYUN/Abp/Account/MyClaimController.cs @@ -1,4 +1,5 @@ using Asp.Versioning; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; using Volo.Abp; @@ -7,10 +8,11 @@ using Volo.Abp.AspNetCore.Mvc; namespace LINGYUN.Abp.Account; -[RemoteService(Name = AccountRemoteServiceConsts.RemoteServiceName)] +[Authorize] [Area("account")] [ControllerName("Claim")] -[Route("/api/account/my-claim")] +[Route($"/api/{AccountRemoteServiceConsts.ModuleName}/my-claim")] +[RemoteService(Name = AccountRemoteServiceConsts.RemoteServiceName)] public class MyClaimController : AbpControllerBase, IMyClaimAppService { private readonly IMyClaimAppService _service; @@ -23,8 +25,22 @@ public class MyClaimController : AbpControllerBase, IMyClaimAppService [HttpPost] [Route("change-avatar")] - public async virtual Task ChangeAvatarAsync(ChangeAvatarInput input) + public virtual Task ChangeAvatarAsync(ChangeAvatarInput input) + { + return _service.ChangeAvatarAsync(input); + } + + [HttpGet] + [Route("state/{claimType}")] + public virtual Task GetStateAsync(string claimType) + { + return _service.GetStateAsync(claimType); + } + + [HttpDelete] + [Route("reset/{claimType}")] + public virtual Task ResetAsync(string claimType) { - await _service.ChangeAvatarAsync(input); + return _service.ResetAsync(claimType); } } diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi/LINGYUN/Abp/Account/MyProfileController.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi/LINGYUN/Abp/Account/MyProfileController.cs index aa444c402..90da8191f 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi/LINGYUN/Abp/Account/MyProfileController.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi/LINGYUN/Abp/Account/MyProfileController.cs @@ -1,5 +1,6 @@ using Asp.Versioning; using LINGYUN.Abp.Identity; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; using Volo.Abp; @@ -9,10 +10,11 @@ using Volo.Abp.AspNetCore.Mvc; namespace LINGYUN.Abp.Account; -[RemoteService(Name = AccountRemoteServiceConsts.RemoteServiceName)] +[Authorize] [Area("account")] [ControllerName("Profile")] -[Route("/api/account/my-profile")] +[Route($"/api/{AccountRemoteServiceConsts.ModuleName}/my-profile")] +[RemoteService(Name = AccountRemoteServiceConsts.RemoteServiceName)] public class MyProfileController : AbpControllerBase, IMyProfileAppService { protected IMyProfileAppService MyProfileAppService { get; } @@ -81,22 +83,22 @@ public class MyProfileController : AbpControllerBase, IMyProfileAppService [HttpGet] [Route("authenticator")] - public virtual Task GetAuthenticator() + public virtual Task GetAuthenticatorAsync() { - return MyProfileAppService.GetAuthenticator(); + return MyProfileAppService.GetAuthenticatorAsync(); } [HttpPost] [Route("verify-authenticator-code")] - public virtual Task VerifyAuthenticatorCode(VerifyAuthenticatorCodeInput input) + public virtual Task VerifyAuthenticatorCodeAsync(VerifyAuthenticatorCodeInput input) { - return MyProfileAppService.VerifyAuthenticatorCode(input); + return MyProfileAppService.VerifyAuthenticatorCodeAsync(input); } [HttpPost] [Route("reset-authenticator")] - public virtual Task ResetAuthenticator() + public virtual Task ResetAuthenticatorAsync() { - return MyProfileAppService.ResetAuthenticator(); + return MyProfileAppService.ResetAuthenticatorAsync(); } } diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi/LINGYUN/Abp/Account/MySecurityLogController.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi/LINGYUN/Abp/Account/MySecurityLogController.cs new file mode 100644 index 000000000..df16a5540 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.HttpApi/LINGYUN/Abp/Account/MySecurityLogController.cs @@ -0,0 +1,45 @@ +using Asp.Versioning; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Account; +using Volo.Abp.Application.Dtos; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.Account; + +[Authorize] +[Area("account")] +[ControllerName("SecurityLog")] +[Route($"/api/{AccountRemoteServiceConsts.ModuleName}/security-logs")] +[RemoteService(Name = AccountRemoteServiceConsts.RemoteServiceName)] +public class MySecurityLogController : AbpControllerBase, IMySecurityLogAppService +{ + private readonly IMySecurityLogAppService _service; + public MySecurityLogController(IMySecurityLogAppService service) + { + _service = service; + } + + [HttpDelete] + [Route("{id}")] + public virtual Task DeleteAsync(Guid id) + { + return _service.DeleteAsync(id); + } + + [HttpGet] + [Route("{id}")] + public virtual Task GetAsync(Guid id) + { + return _service.GetAsync(id); + } + + [HttpGet] + public virtual Task> GetListAsync(SecurityLogGetListInput input) + { + return _service.GetListAsync(input); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN.Abp.Account.Templates.csproj b/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN.Abp.Account.Templates.csproj index 4356d6e15..a6bb6fb13 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN.Abp.Account.Templates.csproj +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN.Abp.Account.Templates.csproj @@ -15,12 +15,15 @@ - - + + + + + diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Templates/AbpAccountTemplatesModule.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/AbpAccountEmailingModule.cs similarity index 67% rename from aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Templates/AbpAccountTemplatesModule.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/AbpAccountEmailingModule.cs index 5b4d97be5..dd6ca89b5 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Templates/AbpAccountTemplatesModule.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/AbpAccountEmailingModule.cs @@ -1,28 +1,28 @@ -using Volo.Abp.Account.Localization; -using Volo.Abp.Emailing; -using Volo.Abp.Localization; -using Volo.Abp.Modularity; -using Volo.Abp.VirtualFileSystem; - -namespace LINGYUN.Abp.Account.Templates; - -[DependsOn( - typeof(AbpEmailingModule), - typeof(AbpAccountApplicationContractsModule))] -public class AbpAccountTemplatesModule : AbpModule -{ - public override void ConfigureServices(ServiceConfigurationContext context) - { - Configure(options => - { - options.FileSets.AddEmbedded(); - }); - - Configure(options => - { - options.Resources - .Get() - .AddVirtualJson("/LINGYUN/Abp/Account/Templates/Localization/Resources"); - }); - } -} +using Volo.Abp.Account.Localization; +using Volo.Abp.Emailing; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; + +namespace LINGYUN.Abp.Account.Emailing; + +[DependsOn( + typeof(AbpEmailingModule), + typeof(AbpAccountApplicationContractsModule))] +public class AbpAccountEmailingModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Get() + .AddVirtualJson("/LINGYUN/Abp/Account/Emailing/Localization/Resources"); + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Localization/Resources/en.json b/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Localization/Resources/en.json new file mode 100644 index 000000000..ff2ebb3ca --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Localization/Resources/en.json @@ -0,0 +1,16 @@ +{ + "culture": "en", + "texts": { + "TextTemplate:Abp.Account.MailSecurityVerifyLink": "Mail security validation template", + "TextTemplate:Abp.Account.MailConfirmLink": "Mail confirm template", + "MailSecurityVerify": "Mail security verification", + "VerifyMyEmailAddress": "Hello {0}

Your email security verification code is as follows. Please enter the verification code to proceed to the next step.

If not operated by you, please ignore this email.

", + "MailSecurityVerifyRemarks": "

(If it is not in the form of a link, copy the address to the browser address bar for further access)

Thank you for your visit and have a good time!

", + "ClickToValidation": "Click link verification", + "Validation": "Validation", + "EmailConfirm": "Email confirm", + "EmailConfirmInfo": "We received an email confirmation request! If you initiated this request, please click the link below to confirm the email address.", + "ConfirmMyEmail": "Bind my email address", + "YourEmailIsSuccessfullyConfirm": "Your email address was bound successfully." + } +} \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Localization/Resources/zh-Hans.json b/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Localization/Resources/zh-Hans.json new file mode 100644 index 000000000..bf4fe71f5 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Localization/Resources/zh-Hans.json @@ -0,0 +1,16 @@ +{ + "culture": "zh-Hans", + "texts": { + "TextTemplate:Abp.Account.MailSecurityVerifyLink": "邮件验证模板", + "TextTemplate:Abp.Account.MailConfirmLink": "邮件确认模板", + "MailSecurityVerify": "邮件安全验证", + "VerifyMyEmailAddress": "您好

您此次邮件安全验证码如下,请输入验证码进行下一步操作。

如非你本人操作,请忽略此邮件。

", + "MailSecurityVerifyRemarks": "此邮件为系统所发,请勿直接回复。", + "ClickToValidation": "点击进行验证", + "Validation": "验证", + "EmailConfirm": "邮件确认", + "EmailConfirmInfo": "我们收到了邮件确认请求!如果你发起了此请求,请单击以下链接以确认邮件地址.", + "ConfirmMyEmail": "绑定我的邮箱地址", + "YourEmailIsSuccessfullyConfirm": "您的邮件地址绑定成功." + } +} \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Templates/AccountEmailTemplates.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Templates/AccountEmailTemplates.cs index 4415d1452..44cedff32 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Templates/AccountEmailTemplates.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Templates/AccountEmailTemplates.cs @@ -1,13 +1,13 @@ -namespace LINGYUN.Abp.Account.Emailing.Templates; - +namespace LINGYUN.Abp.Account.Emailing.Templates; + public static class AccountEmailTemplates { - /// - /// 邮件地址确认 - /// + /// + /// 邮件地址确认 + /// public const string MailConfirmLink = "Abp.Account.MailConfirmLink"; - /// - /// 邮件安全验证 - /// + /// + /// 邮件安全验证 + /// public const string MailSecurityVerifyLink = "Abp.Account.MailSecurityVerifyLink"; -} +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Templates/AccountTemplateDefinitionProvider.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Templates/AccountTemplateDefinitionProvider.cs index 265c8879b..d5d35b98d 100644 --- a/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Templates/AccountTemplateDefinitionProvider.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Templates/LINGYUN/Abp/Account/Emailing/Templates/AccountTemplateDefinitionProvider.cs @@ -1,10 +1,10 @@ using Volo.Abp.Account.Localization; -using Volo.Abp.Emailing.Templates; -using Volo.Abp.Localization; -using Volo.Abp.TextTemplating; - -namespace LINGYUN.Abp.Account.Emailing.Templates; - +using Volo.Abp.Emailing.Templates; +using Volo.Abp.Localization; +using Volo.Abp.TextTemplating; + +namespace LINGYUN.Abp.Account.Emailing.Templates; + public class AccountTemplateDefinitionProvider : TemplateDefinitionProvider { public override void Define(ITemplateDefinitionContext context) @@ -29,4 +29,4 @@ public class AccountTemplateDefinitionProvider : TemplateDefinitionProvider { return LocalizableString.Create(name); } -} +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/AbpAccountWebIdentityServerModule.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/AbpAccountWebIdentityServerModule.cs new file mode 100644 index 000000000..207966e60 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/AbpAccountWebIdentityServerModule.cs @@ -0,0 +1,28 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; +using VoloAbpAccountWebIdentityServerModule = Volo.Abp.Account.Web.AbpAccountWebIdentityServerModule; + +namespace LINGYUN.Abp.Account.Web.IdentityServer; + +[DependsOn( + typeof(AbpAccountWebModule), + typeof(VoloAbpAccountWebIdentityServerModule))] +public class AbpAccountWebIdentityServerModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpAccountWebIdentityServerModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/FodyWeavers.xml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/FodyWeavers.xsd b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/LINGYUN.Abp.Account.Web.IdentityServer.csproj b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/LINGYUN.Abp.Account.Web.IdentityServer.csproj new file mode 100644 index 000000000..0c0554570 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/LINGYUN.Abp.Account.Web.IdentityServer.csproj @@ -0,0 +1,26 @@ + + + + + + + net9.0 + LINGYUN.Abp.Account.Web.IdentityServer + LINGYUN.Abp.Account.Web.IdentityServer + false + false + false + LINGYUN.Abp.Account.Web.IdentityServer + Library + + + + + + + + + + + + diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs similarity index 95% rename from aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs index 006ebd069..29a46ffd6 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs @@ -1,68 +1,68 @@ -using IdentityServer4.Services; -using IdentityServer4.Stores; -using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using System.Collections.Generic; -using System.Threading.Tasks; -using Volo.Abp.Account.Web; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Identity; -using IdentityOptions = Microsoft.AspNetCore.Identity.IdentityOptions; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - /// - /// 重写登录模型,实现双因素登录 - /// - [Dependency(ReplaceServices = true)] - [ExposeServices(typeof(LoginModel), typeof(IdentityServerSupportedLoginModel))] - public class TwoFactorSupportedLoginModel : IdentityServerSupportedLoginModel - { - public TwoFactorSupportedLoginModel( - IAuthenticationSchemeProvider schemeProvider, - IOptions accountOptions, - IOptions identityOptions, - IIdentityServerInteractionService interaction, - IdentityDynamicClaimsPrincipalContributorCache identityDynamicClaimsPrincipalContributorCache, - IClientStore clientStore, - IEventService identityServerEvents) - : base(schemeProvider, accountOptions, identityOptions, identityDynamicClaimsPrincipalContributorCache, interaction, clientStore, identityServerEvents) - { - - } - - protected async override Task> GetExternalProviders() - { - var providers = await base.GetExternalProviders(); - - foreach (var provider in providers) - { - var localizedDisplayName = L[provider.DisplayName]; - if (localizedDisplayName.ResourceNotFound) - { - localizedDisplayName = L["AuthenticationScheme:" + provider.DisplayName]; - } - - if (!localizedDisplayName.ResourceNotFound) - { - provider.DisplayName = localizedDisplayName.Value; - } - } - - return providers; - } - - protected override Task TwoFactorLoginResultAsync() - { - // 重定向双因素认证页面 - return Task.FromResult(RedirectToPage("SendCode", new - { - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash, - rememberMe = LoginInput.RememberMe - })); - } - } -} +using IdentityServer4.Services; +using IdentityServer4.Stores; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Account.Web; +using Volo.Abp.Account.Web.Pages.Account; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Identity; +using IdentityOptions = Microsoft.AspNetCore.Identity.IdentityOptions; + +namespace LINGYUN.Abp.Account.Web.IdentityServer.Pages.Account +{ + /// + /// 重写登录模型,实现双因素登录 + /// + [Dependency(ReplaceServices = true)] + [ExposeServices(typeof(LoginModel), typeof(IdentityServerSupportedLoginModel))] + public class TwoFactorSupportedLoginModel : IdentityServerSupportedLoginModel + { + public TwoFactorSupportedLoginModel( + IAuthenticationSchemeProvider schemeProvider, + IOptions accountOptions, + IOptions identityOptions, + IIdentityServerInteractionService interaction, + IdentityDynamicClaimsPrincipalContributorCache identityDynamicClaimsPrincipalContributorCache, + IClientStore clientStore, + IEventService identityServerEvents) + : base(schemeProvider, accountOptions, identityOptions, identityDynamicClaimsPrincipalContributorCache, interaction, clientStore, identityServerEvents) + { + + } + + protected async override Task> GetExternalProviders() + { + var providers = await base.GetExternalProviders(); + + foreach (var provider in providers) + { + var localizedDisplayName = L[provider.DisplayName]; + if (localizedDisplayName.ResourceNotFound) + { + localizedDisplayName = L["AuthenticationScheme:" + provider.DisplayName]; + } + + if (!localizedDisplayName.ResourceNotFound) + { + provider.DisplayName = localizedDisplayName.Value; + } + } + + return providers; + } + + protected override Task TwoFactorLoginResultAsync() + { + // 重定向双因素认证页面 + return Task.FromResult(RedirectToPage("SendCode", new + { + returnUrl = ReturnUrl, + returnUrlHash = ReturnUrlHash, + rememberMe = LoginInput.RememberMe + })); + } + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Pages/_ViewImports.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Pages/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Properties/launchSettings.json b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Properties/launchSettings.json new file mode 100644 index 000000000..14eb87dfc --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.IdentityServer/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "LINGYUN.Abp.Account.Web.IdentityServer": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:56712;http://localhost:56713" + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/AbpAccountWebOpenIddictModule.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/AbpAccountWebOpenIddictModule.cs new file mode 100644 index 000000000..88dc73415 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/AbpAccountWebOpenIddictModule.cs @@ -0,0 +1,28 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; +using VoloAbpAccountWebOpenIddictModule = Volo.Abp.Account.Web.AbpAccountWebOpenIddictModule; + +namespace LINGYUN.Abp.Account.Web.OpenIddict; + +[DependsOn( + typeof(AbpAccountWebModule), + typeof(VoloAbpAccountWebOpenIddictModule))] +public class AbpAccountWebOpenIddictModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpAccountWebOpenIddictModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/FodyWeavers.xml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/FodyWeavers.xsd b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/LINGYUN.Abp.Account.Web.OpenIddict.csproj b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/LINGYUN.Abp.Account.Web.OpenIddict.csproj new file mode 100644 index 000000000..ad062b9c9 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/LINGYUN.Abp.Account.Web.OpenIddict.csproj @@ -0,0 +1,26 @@ + + + + + + + net9.0 + LINGYUN.Abp.Account.Web.OpenIddict + LINGYUN.Abp.Account.Web.OpenIddict + false + false + false + LINGYUN.Abp.Account.Web.OpenIddict + Library + + + + + + + + + + + + diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/TwoFactorSupportedLoginModel.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Pages/Account/TwoFactorSupportedLoginModel.cs similarity index 88% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/TwoFactorSupportedLoginModel.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Pages/Account/TwoFactorSupportedLoginModel.cs index 3d5a2f9e0..376372223 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/TwoFactorSupportedLoginModel.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Pages/Account/TwoFactorSupportedLoginModel.cs @@ -1,70 +1,64 @@ -using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using OpenIddict.Server.AspNetCore; -using OpenIddict.Server; -using System.Collections.Generic; -using System.Threading.Tasks; -using Volo.Abp.Account.Web; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Identity; -using Volo.Abp.OpenIddict; -using IdentityOptions = Microsoft.AspNetCore.Identity.IdentityOptions; -using System.Diagnostics; -using Volo.Abp.Account.Settings; -using Volo.Abp.Settings; -using LINGYUN.Abp.Identity.Session; - -namespace LY.MicroService.AuthServer.Pages.Account -{ - /// - /// 重写登录模型,实现双因素登录 - /// - [Dependency(ReplaceServices = true)] - [ExposeServices(typeof(LoginModel), typeof(OpenIddictSupportedLoginModel))] - public class TwoFactorSupportedLoginModel : OpenIddictSupportedLoginModel - { - public TwoFactorSupportedLoginModel( - IAuthenticationSchemeProvider schemeProvider, - IOptions accountOptions, - IOptions identityOptions, - IdentityDynamicClaimsPrincipalContributorCache identityDynamicClaimsPrincipalContributorCache, - AbpOpenIddictRequestHelper openIddictRequestHelper) - : base(schemeProvider, accountOptions, identityOptions, identityDynamicClaimsPrincipalContributorCache, openIddictRequestHelper) - { - } - - protected async override Task> GetExternalProviders() - { - var providers = await base.GetExternalProviders(); - - foreach (var provider in providers) - { - var localizedDisplayName = L[provider.DisplayName]; - if (localizedDisplayName.ResourceNotFound) - { - localizedDisplayName = L["AuthenticationScheme:" + provider.DisplayName]; - } - - if (!localizedDisplayName.ResourceNotFound) - { - provider.DisplayName = localizedDisplayName.Value; - } - } - - return providers; - } - - protected override Task TwoFactorLoginResultAsync() - { - // 重定向双因素认证页面 - return Task.FromResult(RedirectToPage("SendCode", new - { - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash, - rememberMe = LoginInput.RememberMe - })); - } - } -} +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Account.Web; +using Volo.Abp.Account.Web.Pages.Account; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Identity; +using Volo.Abp.OpenIddict; +using IdentityOptions = Microsoft.AspNetCore.Identity.IdentityOptions; + +namespace LINGYUN.Abp.Account.Web.OpenIddict.Pages.Account +{ + /// + /// 重写登录模型,实现双因素登录 + /// + [Dependency(ReplaceServices = true)] + [ExposeServices(typeof(LoginModel), typeof(OpenIddictSupportedLoginModel))] + public class TwoFactorSupportedLoginModel : OpenIddictSupportedLoginModel + { + public TwoFactorSupportedLoginModel( + IAuthenticationSchemeProvider schemeProvider, + IOptions accountOptions, + IOptions identityOptions, + IdentityDynamicClaimsPrincipalContributorCache identityDynamicClaimsPrincipalContributorCache, + AbpOpenIddictRequestHelper openIddictRequestHelper) + : base(schemeProvider, accountOptions, identityOptions, identityDynamicClaimsPrincipalContributorCache, openIddictRequestHelper) + { + } + + protected async override Task> GetExternalProviders() + { + var providers = await base.GetExternalProviders(); + + foreach (var provider in providers) + { + var localizedDisplayName = L[provider.DisplayName]; + if (localizedDisplayName.ResourceNotFound) + { + localizedDisplayName = L["AuthenticationScheme:" + provider.DisplayName]; + } + + if (!localizedDisplayName.ResourceNotFound) + { + provider.DisplayName = localizedDisplayName.Value; + } + } + + return providers; + } + + protected override Task TwoFactorLoginResultAsync() + { + // 重定向双因素认证页面 + return Task.FromResult(RedirectToPage("SendCode", new + { + returnUrl = ReturnUrl, + returnUrlHash = ReturnUrlHash, + rememberMe = LoginInput.RememberMe + })); + } + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Pages/_ViewImports.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Pages/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Properties/launchSettings.json b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Properties/launchSettings.json new file mode 100644 index 000000000..cc22df07b --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web.OpenIddict/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "LINGYUN.Abp.Account.Web.OpenIddict": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:65279;http://localhost:65280" + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/AbpAccountWebModule.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/AbpAccountWebModule.cs new file mode 100644 index 000000000..c026dcd3c --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/AbpAccountWebModule.cs @@ -0,0 +1,89 @@ +using LINGYUN.Abp.Account.Emailing; +using LINGYUN.Abp.Account.Web.ProfileManagement; +using LINGYUN.Abp.Identity; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Account.Localization; +using Volo.Abp.Account.Web.Pages.Account; +using Volo.Abp.Account.Web.ProfileManagement; +using Volo.Abp.AspNetCore.Mvc.Localization; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Packages.QRCode; +using Volo.Abp.AutoMapper; +using Volo.Abp.Modularity; +using Volo.Abp.Sms; +using Volo.Abp.VirtualFileSystem; +using VoloAbpAccountWebModule = Volo.Abp.Account.Web.AbpAccountWebModule; + +namespace LINGYUN.Abp.Account.Web; + +[DependsOn( + typeof(AbpSmsModule), + typeof(VoloAbpAccountWebModule), + typeof(AbpIdentityDomainModule), + typeof(AbpAccountEmailingModule), + typeof(AbpAccountApplicationContractsModule))] +public class AbpAccountWebModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + context.Services.PreConfigure(options => + { + options.AddAssemblyResource(typeof(AccountResource), typeof(AbpAccountWebModule).Assembly); + }); + + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpAccountWebModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + ConfigureProfileManagementPage(); + + context.Services.AddAutoMapperObjectMapper(); + Configure(options => + { + options.AddMaps(validate: true); + }); + } + + private void ConfigureProfileManagementPage() + { + Configure(options => + { + options.Contributors.Add(new SessionManagementPageContributor()); + }); + + Configure(options => + { + options.ScriptBundles + .Configure(typeof(ManageModel).FullName, + configuration => + { + // Client Proxies + configuration.AddFiles("/client-proxies/account-proxy.js"); + + // Session + configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/Session/Index.js"); + + // Authenticator + configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.js"); + + // SecurityLog + configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js"); + + // TwoFactor + configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.js"); + + // QrCode + configuration.AddContributors(typeof(QRCodeScriptContributor)); + }); + }); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/FodyWeavers.xml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/FodyWeavers.xsd b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/LINGYUN.Abp.Account.Web.csproj b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/LINGYUN.Abp.Account.Web.csproj new file mode 100644 index 000000000..de3a3d203 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/LINGYUN.Abp.Account.Web.csproj @@ -0,0 +1,50 @@ + + + + + + + net9.0 + LINGYUN.Abp.Account.Web + LINGYUN.Abp.Account.Web + false + false + false + true + LINGYUN.Abp.Account.Web + true + Library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/AccountProfileAuthenticatorManagementGroupViewComponent.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/AccountProfileAuthenticatorManagementGroupViewComponent.cs new file mode 100644 index 000000000..a4b8bddca --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/AccountProfileAuthenticatorManagementGroupViewComponent.cs @@ -0,0 +1,44 @@ +using Microsoft.AspNetCore.Mvc; +using System.ComponentModel.DataAnnotations; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Authenticator; + +public class AccountProfileAuthenticatorManagementGroupViewComponent : AbpViewComponent +{ + protected IMyProfileAppService ProfileAppService { get; } + + public AccountProfileAuthenticatorManagementGroupViewComponent( + IMyProfileAppService profileAppService) + { + ProfileAppService = profileAppService; + } + + public async virtual Task InvokeAsync() + { + var authenticatorDto = await ProfileAppService.GetAuthenticatorAsync(); + + var model = new AuthenticatorModel + { + AuthenticatorUri = authenticatorDto.AuthenticatorUri, + IsAuthenticated = authenticatorDto.IsAuthenticated, + SharedKey = authenticatorDto.SharedKey, + }; + + return View("~/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.cshtml", model); + } + + public class AuthenticatorModel + { + public bool IsAuthenticated { get; set; } + + public string SharedKey { get; set; } + + public string AuthenticatorUri { get; set; } + + [Required] + [StringLength(6)] + public string AuthenticatorCode { get; set; } + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.cshtml new file mode 100644 index 000000000..347085fbe --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.cshtml @@ -0,0 +1,17 @@ +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.Account.Localization +@using Volo.Abp.Localization + +@inject IHtmlLocalizer L + +@model LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Authenticator.AccountProfileAuthenticatorManagementGroupViewComponent.AuthenticatorModel + + + + + + @L["Authenticator"] + + + + \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.js b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.js new file mode 100644 index 000000000..9ac3ccf0c --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Authenticator/Index.js @@ -0,0 +1,5 @@ +$(function () { + var ul = abp.localization.getResource('AbpUi'); + + abp.log.warn('Please implement your own authentication procedure!'); +}); diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml similarity index 88% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml index 181e7500b..69e0b47c3 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml @@ -15,7 +15,7 @@ @inject IThemeManager ThemeManager @inject IStringLocalizerFactory StringLocalizerFactory @model Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.PersonalInfo.AccountProfilePersonalInfoManagementGroupViewComponent.PersonalInfoModel -@{ +@{ var isUserNameUpdateEnabled = string.Equals(await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsUserNameUpdateEnabled), "true", StringComparison.OrdinalIgnoreCase); @@ -25,7 +25,7 @@

@L["PersonalSettings"]


- + @@ -39,41 +39,41 @@ - - - - - +
+ +
+ + @if (CurrentUser.EmailVerified) { - + } - else + else { - @**@ - @L["Validation"].Value + @L["Validation"] } - - +
+
+
- @foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties()) - { - var isAllowed = propertyInfo.Configuration.GetOrDefault(IdentityModuleExtensionConsts.ConfigurationNames.AllowUserToEdit); - - if (isAllowed == null || !isAllowed.Equals(true)) - { - continue; - } - - if (!propertyInfo.Name.EndsWith("_Text")) - { - if (propertyInfo.Type.IsEnum || !propertyInfo.Lookup.Url.IsNullOrEmpty()) - { - if (propertyInfo.Type.IsEnum) - { - Model.ExtraProperties.ToEnum(propertyInfo.Name, propertyInfo.Type); + @foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties()) + { + var isAllowed = propertyInfo.Configuration.GetOrDefault(IdentityModuleExtensionConsts.ConfigurationNames.AllowUserToEdit); + + if (isAllowed == null || !isAllowed.Equals(true)) + { + continue; + } + + if (!propertyInfo.Name.EndsWith("_Text")) + { + if (propertyInfo.Type.IsEnum || !propertyInfo.Lookup.Url.IsNullOrEmpty()) + { + if (propertyInfo.Type.IsEnum) + { + Model.ExtraProperties.ToEnum(propertyInfo.Name, propertyInfo.Type); } - } - else + } + else { - } - } + } + } } diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js similarity index 100% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs new file mode 100644 index 000000000..e97018d72 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs @@ -0,0 +1,19 @@ +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.SecurityLog; + +public class AccountProfileSecurityLogManagementGroupViewComponent : AbpViewComponent +{ + public AccountProfileSecurityLogManagementGroupViewComponent() + { + } + + public async virtual Task InvokeAsync() + { + await Task.CompletedTask; + + return View("~/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml"); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml new file mode 100644 index 000000000..9cc605220 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml @@ -0,0 +1,22 @@ +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.Account.Localization +@using Volo.Abp.Localization + +@inject IHtmlLocalizer L + +@section scripts { + +} + + + + + + @L["SecurityLog"] + + + + + + + diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js new file mode 100644 index 000000000..25da32da7 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js @@ -0,0 +1,73 @@ +$(function () { + var ul = abp.localization.getResource('AbpUi'); + var l = abp.localization.getResource('AbpAuditLogging'); + var dataTable = $('#SecurityLogTable').DataTable( + abp.libs.datatables.normalizeConfiguration({ + serverSide: true, + paging: true, + searching: false, + scrollX: true, + ajax: abp.libs.datatables.createAjax(labp.account.mySecurityLog.getList), + columnDefs: [ + { + title: ul('Actions'), + rowAction: { + items: + [ + { + text: ul('Delete'), + confirmMessage: function () { + return ul('ItemWillBeDeletedMessage'); + }, + action: function (data) { + labp.account.mySecurityLog + .delete(data.record.id) + .then(function () { + abp.notify.info( + ul('DeletedSuccessfully') + ); + dataTable.ajax.reload(); + }); + } + } + ] + } + }, + { + title: l('DisplayName:CreationTime'), + data: "creationTime", + render: function (data) { + return luxon + .DateTime + .fromISO(data, { + locale: abp.localization.currentCulture.name + }).toLocaleString(luxon.DateTime.DATETIME_FULL_WITH_SECONDS); + } + }, + { + title: l('DisplayName:Identity'), + data: "identity" + }, + { + title: l('DisplayName:ClientId'), + data: "clientId" + }, + { + title: l('DisplayName:ClientIpAddress'), + data: "clientIpAddress" + }, + { + title: l('DisplayName:ApplicationName'), + data: "applicationName" + }, + { + title: l('DisplayName:Actions'), + data: "action" + }, + { + title: l('DisplayName:BrowserInfo'), + data: "browserInfo" + }] + }) + ); +}); diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/AccountProfileSessionManagementGroupViewComponent.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/AccountProfileSessionManagementGroupViewComponent.cs new file mode 100644 index 000000000..487de3ad7 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/AccountProfileSessionManagementGroupViewComponent.cs @@ -0,0 +1,19 @@ +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Session; + +public class AccountProfileSessionManagementGroupViewComponent : AbpViewComponent +{ + public AccountProfileSessionManagementGroupViewComponent() + { + } + + public async virtual Task InvokeAsync() + { + await Task.CompletedTask; + + return View("~/Pages/Account/Components/ProfileManagementGroup/Session/Index.cshtml"); + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/Index.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/Index.cshtml new file mode 100644 index 000000000..7e02f6af2 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/Index.cshtml @@ -0,0 +1,22 @@ +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.Account.Localization +@using Volo.Abp.Localization + +@inject IHtmlLocalizer L + +@section scripts { + +} + + + + + + @L["PersonalSessions"] + + + + + + + diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/Index.js b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/Index.js new file mode 100644 index 000000000..06bc346f4 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/Session/Index.js @@ -0,0 +1,60 @@ +$(function () { + var ul = abp.localization.getResource('AbpUi'); + var il = abp.localization.getResource('AbpIdentity'); + var dataTable = $('#SessionsTable').DataTable( + abp.libs.datatables.normalizeConfiguration({ + serverSide: true, + paging: true, + searching: false, + scrollX: true, + ajax: abp.libs.datatables.createAjax(labp.account.myProfile.getSessions), + columnDefs: [ + { + title: ul('Actions'), + rowAction: { + items: + [ + { + text: il('RevokeSession'), + confirmMessage: function () { + return il('SessionWillBeRevokedMessage'); + }, + visible: function (data) { + return data.sessionId !== abp.currentUser?.sessionId; + }, + action: function (data) { + labp.account.myProfile + .revokeSession(data.record.sessionId) + .then(function () { + abp.notify.info( + il('SuccessfullyRevoked') + ); + dataTable.ajax.reload(); + }); + } + } + ] + } + }, + { + title: il('DisplayName:Device'), + data: "device" + }, + { + title: il('DisplayName:IpAddresses'), + data: "ipAddresses" + }, + { + title: il('DisplayName:SignedIn'), + data: "signedIn", + render: function (data) { + return luxon + .DateTime + .fromISO(data, { + locale: abp.localization.currentCulture.name + }).toLocaleString(luxon.DateTime.DATETIME_FULL_WITH_SECONDS); + } + }] + }) + ); +}); diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/AccountProfileTwoFactorManagementGroupViewComponent.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/AccountProfileTwoFactorManagementGroupViewComponent.cs new file mode 100644 index 000000000..478514775 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/AccountProfileTwoFactorManagementGroupViewComponent.cs @@ -0,0 +1,33 @@ +using Microsoft.AspNetCore.Mvc; +using System.ComponentModel; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.TwoFactor; + +public class AccountProfileTwoFactorManagementGroupViewComponent : AbpViewComponent +{ + protected IMyProfileAppService ProfileAppService { get; } + + public AccountProfileTwoFactorManagementGroupViewComponent(IMyProfileAppService profileAppService) + { + ProfileAppService = profileAppService; + } + + public async virtual Task InvokeAsync() + { + var dto = await ProfileAppService.GetTwoFactorEnabledAsync(); + var model = new ChangeTwoFactorModel + { + TwoFactorEnabled = dto.Enabled + }; + + return View("~/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.cshtml", model); + } + + public class ChangeTwoFactorModel + { + [DisplayName("TwoFactor:Enabled")] + public bool TwoFactorEnabled { get; set; } + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.cshtml new file mode 100644 index 000000000..bef826803 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.cshtml @@ -0,0 +1,17 @@ +@using Volo.Abp.Account.Localization +@using Microsoft.AspNetCore.Mvc.Localization +@inject IHtmlLocalizer L +@model LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.TwoFactor.AccountProfileTwoFactorManagementGroupViewComponent.ChangeTwoFactorModel + +@section scripts { + +} + + + + @L["TwoFactor"] + + + + + diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.js b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.js new file mode 100644 index 000000000..f12e05a37 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/Components/ProfileManagementGroup/TwoFactor/Default.js @@ -0,0 +1,17 @@ +$(function () { + var ul = abp.localization.getResource("AbpUi"); + $("#TwoFactorEnabled").change(function () { + var isChecked = $(this).is(':checked'); + abp.ui.setBusy({ busy: true }); + labp.account.myProfile + .changeTwoFactorEnabled({ + enabled: isChecked + }) + .then(function () { + abp.notify.success(ul("SavedSuccessfully")); + }) + .done(function () { + abp.ui.clearBusy(); + }); + }); +}); diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirm.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirm.cshtml similarity index 90% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirm.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirm.cshtml index db421091d..1e5aa47f9 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirm.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirm.cshtml @@ -2,7 +2,7 @@ @inject IHtmlLocalizer L @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Account.Localization -@model LY.MicroService.AuthServer.Pages.Account.EmailConfirmModel +@model LINGYUN.Abp.Account.Web.Pages.Account.EmailConfirmModel @inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout
diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirm.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirm.cshtml.cs similarity index 94% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirm.cshtml.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirm.cshtml.cs index 8b9257684..78324b1a0 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirm.cshtml.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirm.cshtml.cs @@ -1,74 +1,74 @@ -using LINGYUN.Abp.Account; -using Microsoft.AspNetCore.Mvc; -using System; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.Identity; -using Volo.Abp.Validation; - -namespace LY.MicroService.AuthServer.Pages.Account -{ - public class EmailConfirmModel : AccountPageModel - { - [Required] - [HiddenInput] - [BindProperty(SupportsGet = true)] - public Guid UserId { get; set; } - - [Required] - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ConfirmToken { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - public IMyProfileAppService MyProfileAppService { get; set; } - - public EmailConfirmModel() - { - LocalizationResourceType = typeof(AccountResource); - } - - public async virtual Task OnPostAsync() - { - try - { - ValidateModel(); - - await MyProfileAppService.ConfirmEmailAsync( - new ConfirmEmailInput - { - ConfirmToken = ConfirmToken, - }); - } - catch (AbpIdentityResultException e) - { - if (!string.IsNullOrWhiteSpace(e.Message)) - { - Alerts.Warning(GetLocalizeExceptionMessage(e)); - return Page(); - } - - throw; - } - catch (AbpValidationException) - { - return Page(); - } - - return RedirectToPage("./ConfirmEmailConfirmation", new - { - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash - }); - } - } -} +using LINGYUN.Abp.Account; +using Microsoft.AspNetCore.Mvc; +using System; +using System.ComponentModel.DataAnnotations; +using System.Threading.Tasks; +using Volo.Abp.Account.Localization; +using Volo.Abp.Account.Web.Pages.Account; +using Volo.Abp.Identity; +using Volo.Abp.Validation; + +namespace LINGYUN.Abp.Account.Web.Pages.Account +{ + public class EmailConfirmModel : AccountPageModel + { + [Required] + [HiddenInput] + [BindProperty(SupportsGet = true)] + public Guid UserId { get; set; } + + [Required] + [HiddenInput] + [BindProperty(SupportsGet = true)] + public string ConfirmToken { get; set; } + + [HiddenInput] + [BindProperty(SupportsGet = true)] + public string ReturnUrl { get; set; } + + [HiddenInput] + [BindProperty(SupportsGet = true)] + public string ReturnUrlHash { get; set; } + + public IMyProfileAppService MyProfileAppService { get; set; } + + public EmailConfirmModel() + { + LocalizationResourceType = typeof(AccountResource); + } + + public async virtual Task OnPostAsync() + { + try + { + ValidateModel(); + + await MyProfileAppService.ConfirmEmailAsync( + new ConfirmEmailInput + { + ConfirmToken = ConfirmToken, + }); + } + catch (AbpIdentityResultException e) + { + if (!string.IsNullOrWhiteSpace(e.Message)) + { + Alerts.Warning(GetLocalizeExceptionMessage(e)); + return Page(); + } + + throw; + } + catch (AbpValidationException) + { + return Page(); + } + + return RedirectToPage("./ConfirmEmailConfirmation", new + { + returnUrl = ReturnUrl, + returnUrlHash = ReturnUrlHash + }); + } + } +} diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirmConfirmation.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirmConfirmation.cshtml similarity index 83% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirmConfirmation.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirmConfirmation.cshtml index 17c6d33e1..cc9f87815 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirmConfirmation.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirmConfirmation.cshtml @@ -1,13 +1,13 @@ -@page -@model LY.MicroService.AuthServer.Pages.Account.EmailConfirmConfirmationModel -@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@inject IHtmlLocalizer L -
-
-

@L["EmailConfirm"]

-

@L["YourEmailIsSuccessfullyConfirm"]

- @L["GoToTheApplication"] -
-
+@page +@model LINGYUN.Abp.Account.Web.Pages.Account.EmailConfirmConfirmationModel +@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.Account.Localization +@inject IHtmlLocalizer L +
+
+

@L["EmailConfirm"]

+

@L["YourEmailIsSuccessfullyConfirm"]

+ @L["GoToTheApplication"] +
+
diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirmConfirmation.cshtml.cs similarity index 88% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirmConfirmation.cshtml.cs index f6dfe0f8d..334a7d8fe 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/EmailConfirmConfirmation.cshtml.cs @@ -1,23 +1,23 @@ -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using System.Threading.Tasks; -using Volo.Abp.Account.Web.Pages.Account; - -namespace LY.MicroService.AuthServer.Pages.Account; - -[AllowAnonymous] -public class EmailConfirmConfirmationModel : AccountPageModel -{ - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - public async virtual Task OnGetAsync() - { - ReturnUrl = await GetRedirectUrlAsync(ReturnUrl, ReturnUrlHash); - - return Page(); - } -} +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp.Account.Web.Pages.Account; + +namespace LINGYUN.Abp.Account.Web.Pages.Account; + +[AllowAnonymous] +public class EmailConfirmConfirmationModel : AccountPageModel +{ + [BindProperty(SupportsGet = true)] + public string ReturnUrl { get; set; } + + [BindProperty(SupportsGet = true)] + public string ReturnUrlHash { get; set; } + + public async virtual Task OnGetAsync() + { + ReturnUrl = await GetRedirectUrlAsync(ReturnUrl, ReturnUrlHash); + + return Page(); + } +} diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendCode.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendCode.cshtml similarity index 94% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendCode.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendCode.cshtml index ba2c014bc..86c228904 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendCode.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendCode.cshtml @@ -1,7 +1,7 @@ @page @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Account.Localization -@model LY.MicroService.AuthServer.Pages.Account.SendCodeModel +@model LINGYUN.Abp.Account.Web.Pages.Account.SendCodeModel @inject IHtmlLocalizer L
diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendCode.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendCode.cshtml.cs similarity index 96% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendCode.cshtml.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendCode.cshtml.cs index 6c748df76..2bb13dd6d 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendCode.cshtml.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendCode.cshtml.cs @@ -1,128 +1,128 @@ -using LINGYUN.Abp.Account.Emailing; -using LINGYUN.Abp.Identity.Settings; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Rendering; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Volo.Abp; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.Sms; - -namespace LY.MicroService.AuthServer.Pages.Account -{ - public class SendCodeModel : AccountPageModel - { - [BindProperty] - public SendCodeInputModel Input { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public bool RememberMe { get; set; } - - public IEnumerable Providers { get; set; } - - protected ISmsSender SmsSender { get; } - - protected IAccountEmailVerifySender AccountEmailVerifySender { get; } - - public SendCodeModel( - ISmsSender smsSender, - IAccountEmailVerifySender accountEmailVerifySender) - { - SmsSender = smsSender; - AccountEmailVerifySender = accountEmailVerifySender; - - LocalizationResourceType = typeof(AccountResource); - } - - public virtual async Task OnGetAsync() - { - Input = new SendCodeInputModel(); - - var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); - if (user == null) - { - // ˫Ϣ֤ʧ,һ㶼dzʱ˻ûϢ - Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); - return Page(); - } - var userFactors = await UserManager.GetValidTwoFactorProvidersAsync(user); - Providers = userFactors.Select(purpose => new SelectListItem { Text = purpose, Value = purpose }).ToList(); - - return Page(); - } - - public virtual async Task OnPostAsync() - { - var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); - if (user == null) - { - Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); - return Page(); - } - - if (Input.SelectedProvider == "Authenticator") - { - // ûͨʼ/ӽȨҳ - return RedirectToPage("VerifyAuthenticatorCode", new - { - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash, - rememberMe = RememberMe - }); - } - // ֤ - var code = await UserManager.GenerateTwoFactorTokenAsync(user, Input.SelectedProvider); - if (string.IsNullOrWhiteSpace(code)) - { - Alerts.Warning(L["InvaidGenerateTwoFactorToken"]); - return Page(); - } - - if (Input.SelectedProvider == "Email") - { - await AccountEmailVerifySender - .SendMailLoginVerifyCodeAsync( - code, - user.UserName, - user.Email); - } - else if (Input.SelectedProvider == "Phone") - { - var phoneNumber = await UserManager.GetPhoneNumberAsync(user); - var templateCode = await SettingProvider.GetOrNullAsync(IdentitySettingNames.User.SmsUserSignin); - Check.NotNullOrWhiteSpace(templateCode, nameof(IdentitySettingNames.User.SmsUserSignin)); - - // TODO: Ժչģ巢 - var smsMessage = new SmsMessage(phoneNumber, code); - smsMessage.Properties.Add("code", code); - smsMessage.Properties.Add("TemplateCode", templateCode); - - await SmsSender.SendAsync(smsMessage); - } - - return RedirectToPage("VerifyCode", new - { - provider = Input.SelectedProvider, - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash, - rememberMe = RememberMe - }); - } - } - - public class SendCodeInputModel - { - public string SelectedProvider { get; set; } - } -} +using LINGYUN.Abp.Account.Emailing; +using LINGYUN.Abp.Identity.Settings; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Rendering; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Account.Localization; +using Volo.Abp.Account.Web.Pages.Account; +using Volo.Abp.Sms; + +namespace LINGYUN.Abp.Account.Web.Pages.Account +{ + public class SendCodeModel : AccountPageModel + { + [BindProperty] + public SendCodeInputModel Input { get; set; } + + [HiddenInput] + [BindProperty(SupportsGet = true)] + public string ReturnUrl { get; set; } + + [HiddenInput] + [BindProperty(SupportsGet = true)] + public string ReturnUrlHash { get; set; } + + [HiddenInput] + [BindProperty(SupportsGet = true)] + public bool RememberMe { get; set; } + + public IEnumerable Providers { get; set; } + + protected ISmsSender SmsSender { get; } + + protected IAccountEmailVerifySender AccountEmailVerifySender { get; } + + public SendCodeModel( + ISmsSender smsSender, + IAccountEmailVerifySender accountEmailVerifySender) + { + SmsSender = smsSender; + AccountEmailVerifySender = accountEmailVerifySender; + + LocalizationResourceType = typeof(AccountResource); + } + + public virtual async Task OnGetAsync() + { + Input = new SendCodeInputModel(); + + var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); + if (user == null) + { + // ˫Ϣ֤ʧ,һ㶼dzʱ˻ûϢ + Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); + return Page(); + } + var userFactors = await UserManager.GetValidTwoFactorProvidersAsync(user); + Providers = userFactors.Select(purpose => new SelectListItem { Text = purpose, Value = purpose }).ToList(); + + return Page(); + } + + public virtual async Task OnPostAsync() + { + var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); + if (user == null) + { + Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); + return Page(); + } + + if (Input.SelectedProvider == "Authenticator") + { + // ûͨʼ/ӽȨҳ + return RedirectToPage("VerifyAuthenticatorCode", new + { + returnUrl = ReturnUrl, + returnUrlHash = ReturnUrlHash, + rememberMe = RememberMe + }); + } + // ֤ + var code = await UserManager.GenerateTwoFactorTokenAsync(user, Input.SelectedProvider); + if (string.IsNullOrWhiteSpace(code)) + { + Alerts.Warning(L["InvaidGenerateTwoFactorToken"]); + return Page(); + } + + if (Input.SelectedProvider == "Email") + { + await AccountEmailVerifySender + .SendMailLoginVerifyCodeAsync( + code, + user.UserName, + user.Email); + } + else if (Input.SelectedProvider == "Phone") + { + var phoneNumber = await UserManager.GetPhoneNumberAsync(user); + var templateCode = await SettingProvider.GetOrNullAsync(IdentitySettingNames.User.SmsUserSignin); + Check.NotNullOrWhiteSpace(templateCode, nameof(IdentitySettingNames.User.SmsUserSignin)); + + // TODO: Ժչģ巢 + var smsMessage = new SmsMessage(phoneNumber, code); + smsMessage.Properties.Add("code", code); + smsMessage.Properties.Add("TemplateCode", templateCode); + + await SmsSender.SendAsync(smsMessage); + } + + return RedirectToPage("VerifyCode", new + { + provider = Input.SelectedProvider, + returnUrl = ReturnUrl, + returnUrlHash = ReturnUrlHash, + rememberMe = RememberMe + }); + } + } + + public class SendCodeInputModel + { + public string SelectedProvider { get; set; } + } +} diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendEmailConfirm.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendEmailConfirm.cshtml similarity index 89% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendEmailConfirm.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendEmailConfirm.cshtml index a111160f8..018dbb60c 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendEmailConfirm.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendEmailConfirm.cshtml @@ -2,7 +2,7 @@ @inject IHtmlLocalizer L @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Account.Localization -@model LY.MicroService.AuthServer.Pages.Account.SendEmailConfirmModel +@model LINGYUN.Abp.Account.Web.Pages.Account.SendEmailConfirmModel @inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout
diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendEmailConfirm.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendEmailConfirm.cshtml.cs similarity index 90% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendEmailConfirm.cshtml.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendEmailConfirm.cshtml.cs index 54e2f699e..871fc5e95 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/SendEmailConfirm.cshtml.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/SendEmailConfirm.cshtml.cs @@ -1,75 +1,73 @@ -using LINGYUN.Abp.Account; -using Microsoft.AspNetCore.Mvc; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.Identity; -using Volo.Abp.Validation; - -namespace LY.MicroService.AuthServer.Pages.Account -{ - public class SendEmailConfirmModel : AccountPageModel - { - [BindProperty(SupportsGet = true)] - public string Email { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - public IMyProfileAppService MyProfileAppService { get; set; } - - public SendEmailConfirmModel() - { - LocalizationResourceType = typeof(AccountResource); - } - - public virtual Task OnGetAsync() - { - Email = CurrentUser.Email; - - return Task.FromResult(Page()); - } - - public async virtual Task OnPostAsync() - { - try - { - ValidateModel(); - - await MyProfileAppService.SendEmailConfirmLinkAsync( - new SendEmailConfirmCodeDto - { - Email = Email, - AppName = "MVC", - ReturnUrl = ReturnUrl, - ReturnUrlHash = ReturnUrlHash - }); - } - catch (AbpIdentityResultException e) - { - if (!string.IsNullOrWhiteSpace(e.Message)) - { - Alerts.Warning(GetLocalizeExceptionMessage(e)); - return Page(); - } - - throw; - } - catch (AbpValidationException) - { - return Page(); - } - - return RedirectToPage("~/Account/Manage", new - { - returnUrl = ReturnUrl - }); - } - } -} +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp.Account.Localization; +using Volo.Abp.Account.Web.Pages.Account; +using Volo.Abp.Identity; +using Volo.Abp.Validation; + +namespace LINGYUN.Abp.Account.Web.Pages.Account +{ + public class SendEmailConfirmModel : AccountPageModel + { + [BindProperty(SupportsGet = true)] + public string Email { get; set; } + + [HiddenInput] + [BindProperty(SupportsGet = true)] + public string ReturnUrl { get; set; } + + [HiddenInput] + [BindProperty(SupportsGet = true)] + public string ReturnUrlHash { get; set; } + + public IMyProfileAppService MyProfileAppService { get; set; } + + public SendEmailConfirmModel() + { + LocalizationResourceType = typeof(AccountResource); + } + + public virtual Task OnGetAsync() + { + Email = CurrentUser.Email; + + return Task.FromResult(Page()); + } + + public async virtual Task OnPostAsync() + { + try + { + ValidateModel(); + + await MyProfileAppService.SendEmailConfirmLinkAsync( + new SendEmailConfirmCodeDto + { + Email = Email, + AppName = "MVC", + ReturnUrl = ReturnUrl, + ReturnUrlHash = ReturnUrlHash + }); + } + catch (AbpIdentityResultException e) + { + if (!string.IsNullOrWhiteSpace(e.Message)) + { + Alerts.Warning(GetLocalizeExceptionMessage(e)); + return Page(); + } + + throw; + } + catch (AbpValidationException) + { + return Page(); + } + + return RedirectToPage("~/Account/Manage", new + { + returnUrl = ReturnUrl + }); + } + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/UseRecoveryCode.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/UseRecoveryCode.cshtml new file mode 100644 index 000000000..1e86bdc0e --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/UseRecoveryCode.cshtml @@ -0,0 +1,4 @@ +@page +@model LINGYUN.Abp.Account.Web.Pages.Account.UseRecoveryCodeModel +@{ +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/UseRecoveryCode.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/UseRecoveryCode.cshtml.cs new file mode 100644 index 000000000..daf972526 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/UseRecoveryCode.cshtml.cs @@ -0,0 +1,11 @@ +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace LINGYUN.Abp.Account.Web.Pages.Account +{ + public class UseRecoveryCodeModel : PageModel + { + public void OnGet() + { + } + } +} diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyAuthenticatorCode.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyAuthenticatorCode.cshtml similarity index 93% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyAuthenticatorCode.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyAuthenticatorCode.cshtml index f149d3d6c..c2990e066 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyAuthenticatorCode.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyAuthenticatorCode.cshtml @@ -1,7 +1,7 @@ @page @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Account.Localization -@model LY.MicroService.AuthServer.Pages.Account.VerifyAuthenticatorCodeModel +@model LINGYUN.Abp.Account.Web.Pages.Account.VerifyAuthenticatorCodeModel @inject IHtmlLocalizer L
diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyAuthenticatorCode.cshtml.cs similarity index 97% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyAuthenticatorCode.cshtml.cs index 0742c5c0d..5704b5923 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyAuthenticatorCode.cshtml.cs @@ -4,7 +4,7 @@ using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Volo.Abp.Account.Web.Pages.Account; -namespace LY.MicroService.AuthServer.Pages.Account +namespace LINGYUN.Abp.Account.Web.Pages.Account { public class VerifyAuthenticatorCodeModel : AccountPageModel { diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyCode.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyCode.cshtml similarity index 95% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyCode.cshtml rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyCode.cshtml index 76eb753d5..1de054f64 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyCode.cshtml +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyCode.cshtml @@ -2,7 +2,7 @@ @inject IHtmlLocalizer L @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Account.Localization -@model LY.MicroService.AuthServer.Pages.Account.VerifyCodeModel +@model LINGYUN.Abp.Account.Web.Pages.Account.VerifyCodeModel
diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyCode.cshtml.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyCode.cshtml.cs similarity index 97% rename from aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyCode.cshtml.cs rename to aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyCode.cshtml.cs index 0d4881dbc..13a63c7be 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/VerifyCode.cshtml.cs +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/Account/VerifyCode.cshtml.cs @@ -1,4 +1,3 @@ -using LINGYUN.Abp.Identity.Session; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using System.ComponentModel.DataAnnotations; @@ -7,7 +6,7 @@ using Volo.Abp.Account.Localization; using Volo.Abp.Account.Web.Pages.Account; using Volo.Abp.Identity; -namespace LY.MicroService.AuthServer.Pages.Account +namespace LINGYUN.Abp.Account.Web.Pages.Account { public class VerifyCodeModel : AccountPageModel { diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/_ViewImports.cshtml b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/ProfileManagement/SessionManagementPageContributor.cs b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/ProfileManagement/SessionManagementPageContributor.cs new file mode 100644 index 000000000..b653d8bf9 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/ProfileManagement/SessionManagementPageContributor.cs @@ -0,0 +1,53 @@ +using LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Authenticator; +using LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.SecurityLog; +using LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.Session; +using LINGYUN.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.TwoFactor; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using System.Threading.Tasks; +using Volo.Abp.Account.Localization; +using Volo.Abp.Account.Web.ProfileManagement; + +namespace LINGYUN.Abp.Account.Web.ProfileManagement; + +public class SessionManagementPageContributor : IProfileManagementPageContributor +{ + public virtual Task ConfigureAsync(ProfileManagementPageCreationContext context) + { + var l = context.ServiceProvider.GetRequiredService>(); + + context.Groups.Add( + new ProfileManagementPageGroup( + "LINGYUN.Abp.Account.Session", + l["ProfileTab:Session"], + typeof(AccountProfileSessionManagementGroupViewComponent) + ) + ); + + context.Groups.Add( + new ProfileManagementPageGroup( + "LINGYUN.Abp.Account.TwoFactor", + l["ProfileTab:TwoFactor"], + typeof(AccountProfileTwoFactorManagementGroupViewComponent) + ) + ); + + context.Groups.Add( + new ProfileManagementPageGroup( + "LINGYUN.Abp.Account.SecurityLog", + l["ProfileTab:SecurityLog"], + typeof(AccountProfileSecurityLogManagementGroupViewComponent) + ) + ); + + context.Groups.Add( + new ProfileManagementPageGroup( + "LINGYUN.Abp.Account.Authenticator", + l["ProfileTab:Authenticator"], + typeof(AccountProfileAuthenticatorManagementGroupViewComponent) + ) + ); + + return Task.CompletedTask; + } +} diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Properties/launchSettings.json b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Properties/launchSettings.json new file mode 100644 index 000000000..c3fbbfa10 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "LINGYUN.Abp.Account.Web": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:51246;http://localhost:51247" + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/wwwroot/client-proxies/account-proxy.js b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/wwwroot/client-proxies/account-proxy.js new file mode 100644 index 000000000..7e3210226 --- /dev/null +++ b/aspnet-core/modules/account/LINGYUN.Abp.Account.Web/wwwroot/client-proxies/account-proxy.js @@ -0,0 +1,329 @@ +/* This file is automatically generated by ABP framework to use MVC Controllers from javascript. */ + + +// module account + +(function(){ + + // controller labp.account.account + + (function(){ + + abp.utils.createNamespace(window, 'labp.account.account'); + + labp.account.account.register = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/wechat/register', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.account.resetPassword = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/phone/reset-password', + type: 'PUT', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.account.sendPhoneSigninCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/phone/send-signin-code', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.account.sendEmailSigninCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/email/send-signin-code', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.account.sendPhoneRegisterCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/phone/send-register-code', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.account.sendPhoneResetPasswordCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/phone/send-password-reset-code', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.account.getTwoFactorProviders = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/two-factor-providers' + abp.utils.buildQueryString([{ name: 'userId', value: input.userId }]) + '', + type: 'GET' + }, ajaxParams)); + }; + + })(); + + // controller labp.account.myClaim + + (function(){ + + abp.utils.createNamespace(window, 'labp.account.myClaim'); + + labp.account.myClaim.changeAvatar = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-claim/change-avatar', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myClaim.getState = function(claimType, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-claim/state/' + claimType + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.account.myClaim.reset = function(claimType, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-claim/reset/' + claimType + '', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + })(); + + // controller labp.account.myProfile + + (function(){ + + abp.utils.createNamespace(window, 'labp.account.myProfile'); + + labp.account.myProfile.getSessions = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/sessions' + abp.utils.buildQueryString([{ name: 'device', value: input.device }, { name: 'clientId', value: input.clientId }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.account.myProfile.revokeSession = function(sessionId, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/sessions/' + sessionId + '/revoke', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + labp.account.myProfile.getTwoFactorEnabled = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/two-factor', + type: 'GET' + }, ajaxParams)); + }; + + labp.account.myProfile.changeTwoFactorEnabled = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/change-two-factor', + type: 'PUT', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myProfile.sendChangePhoneNumberCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/send-phone-number-change-code', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myProfile.changePhoneNumber = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/change-phone-number', + type: 'PUT', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myProfile.sendEmailConfirmLink = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/send-email-confirm-link', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myProfile.confirmEmail = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/confirm-email', + type: 'PUT', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myProfile.getAuthenticator = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/authenticator', + type: 'GET' + }, ajaxParams)); + }; + + labp.account.myProfile.verifyAuthenticatorCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/verify-authenticator-code', + type: 'POST', + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.account.myProfile.resetAuthenticator = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/reset-authenticator', + type: 'POST', + dataType: null + }, ajaxParams)); + }; + + })(); + + // controller labp.account.mySecurityLog + + (function(){ + + abp.utils.createNamespace(window, 'labp.account.mySecurityLog'); + + labp.account.mySecurityLog['delete'] = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/security-logs/' + id + '', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + labp.account.mySecurityLog.get = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/security-logs/' + id + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.account.mySecurityLog.getList = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/security-logs' + abp.utils.buildQueryString([{ name: 'startTime', value: input.startTime }, { name: 'endTime', value: input.endTime }, { name: 'applicationName', value: input.applicationName }, { name: 'identity', value: input.identity }, { name: 'actionName', value: input.actionName }, { name: 'clientId', value: input.clientId }, { name: 'correlationId', value: input.correlationId }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', + type: 'GET' + }, ajaxParams)); + }; + + })(); + + // controller volo.abp.account.account + + (function(){ + + abp.utils.createNamespace(window, 'volo.abp.account.account'); + + volo.abp.account.account.register = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/register', + type: 'POST', + data: JSON.stringify(input) + }, ajaxParams)); + }; + + volo.abp.account.account.sendPasswordResetCode = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/send-password-reset-code', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + volo.abp.account.account.verifyPasswordResetToken = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/verify-password-reset-token', + type: 'POST', + data: JSON.stringify(input) + }, ajaxParams)); + }; + + volo.abp.account.account.resetPassword = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/reset-password', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + })(); + + // controller volo.abp.account.dynamicClaims + + (function(){ + + abp.utils.createNamespace(window, 'volo.abp.account.dynamicClaims'); + + volo.abp.account.dynamicClaims.refresh = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/dynamic-claims/refresh', + type: 'POST', + dataType: null + }, ajaxParams)); + }; + + })(); + + // controller volo.abp.account.profile + + (function(){ + + abp.utils.createNamespace(window, 'volo.abp.account.profile'); + + volo.abp.account.profile.get = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile', + type: 'GET' + }, ajaxParams)); + }; + + volo.abp.account.profile.update = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile', + type: 'PUT', + data: JSON.stringify(input) + }, ajaxParams)); + }; + + volo.abp.account.profile.changePassword = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/account/my-profile/change-password', + type: 'POST', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + })(); + +})(); + + diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditingRemoteServiceConsts.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditingRemoteServiceConsts.cs index 7c1a01f7d..0b1e81ac6 100644 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditingRemoteServiceConsts.cs +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditingRemoteServiceConsts.cs @@ -3,4 +3,5 @@ public static class AuditingRemoteServiceConsts { public const string RemoteServiceName = "AbpAuditing"; + public const string ModuleName = "auditing"; } diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/AuditLogClientProxy.Generated.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/AuditLogClientProxy.Generated.cs new file mode 100644 index 000000000..b2870e09d --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/AuditLogClientProxy.Generated.cs @@ -0,0 +1,51 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.Auditing.AuditLogs; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Auditing.AuditLogs; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IAuditLogAppService), typeof(AuditLogClientProxy))] +public partial class AuditLogClientProxy : ClientProxyBase, IAuditLogAppService +{ + public virtual async Task DeleteAsync(Guid id) + { + await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task DeleteManyAsync(AuditLogDeleteManyInput input) + { + await RequestAsync(nameof(DeleteManyAsync), new ClientProxyRequestTypeValue + { + { typeof(AuditLogDeleteManyInput), input } + }); + } + + public virtual async Task GetAsync(Guid id) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task> GetListAsync(AuditLogGetByPagedDto input) + { + return await RequestAsync>(nameof(GetListAsync), new ClientProxyRequestTypeValue + { + { typeof(AuditLogGetByPagedDto), input } + }); + } +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/AuditLogClientProxy.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/AuditLogClientProxy.cs new file mode 100644 index 000000000..5e7158e05 --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/AuditLogClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of AuditLogClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Auditing.AuditLogs; + +public partial class AuditLogClientProxy +{ +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesClientProxy.Generated.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesClientProxy.Generated.cs new file mode 100644 index 000000000..f9dcfe980 --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesClientProxy.Generated.cs @@ -0,0 +1,51 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.Auditing.AuditLogs; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Auditing.AuditLogs; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IEntityChangesAppService), typeof(EntityChangesClientProxy))] +public partial class EntityChangesClientProxy : ClientProxyBase, IEntityChangesAppService +{ + public virtual async Task GetAsync(Guid id) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task> GetListAsync(EntityChangeGetByPagedDto input) + { + return await RequestAsync>(nameof(GetListAsync), new ClientProxyRequestTypeValue + { + { typeof(EntityChangeGetByPagedDto), input } + }); + } + + public virtual async Task GetWithUsernameAsync(Guid id) + { + return await RequestAsync(nameof(GetWithUsernameAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task> GetWithUsernameAsync(EntityChangeGetWithUsernameDto input) + { + return await RequestAsync>(nameof(GetWithUsernameAsync), new ClientProxyRequestTypeValue + { + { typeof(EntityChangeGetWithUsernameDto), input } + }); + } +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesClientProxy.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesClientProxy.cs new file mode 100644 index 000000000..155e3edc1 --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of EntityChangesClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Auditing.AuditLogs; + +public partial class EntityChangesClientProxy +{ +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/Logging/LogClientProxy.Generated.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/Logging/LogClientProxy.Generated.cs new file mode 100644 index 000000000..3a4a3a055 --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/Logging/LogClientProxy.Generated.cs @@ -0,0 +1,35 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.Auditing.Logging; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Auditing.Logging; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(ILogAppService), typeof(LogClientProxy))] +public partial class LogClientProxy : ClientProxyBase, ILogAppService +{ + public virtual async Task GetAsync(string id) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(string), id } + }); + } + + public virtual async Task> GetListAsync(LogGetByPagedDto input) + { + return await RequestAsync>(nameof(GetListAsync), new ClientProxyRequestTypeValue + { + { typeof(LogGetByPagedDto), input } + }); + } +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/Logging/LogClientProxy.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/Logging/LogClientProxy.cs new file mode 100644 index 000000000..ccd994244 --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/Logging/LogClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of LogClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Auditing.Logging; + +public partial class LogClientProxy +{ +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogClientProxy.Generated.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogClientProxy.Generated.cs new file mode 100644 index 000000000..fbf9cebe3 --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogClientProxy.Generated.cs @@ -0,0 +1,51 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.Auditing.SecurityLogs; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Auditing.SecurityLogs; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(ISecurityLogAppService), typeof(SecurityLogClientProxy))] +public partial class SecurityLogClientProxy : ClientProxyBase, ISecurityLogAppService +{ + public virtual async Task DeleteAsync(Guid id) + { + await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task DeleteManyAsync(SecurityLogDeleteManyInput input) + { + await RequestAsync(nameof(DeleteManyAsync), new ClientProxyRequestTypeValue + { + { typeof(SecurityLogDeleteManyInput), input } + }); + } + + public virtual async Task GetAsync(Guid id) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task> GetListAsync(SecurityLogGetByPagedDto input) + { + return await RequestAsync>(nameof(GetListAsync), new ClientProxyRequestTypeValue + { + { typeof(SecurityLogGetByPagedDto), input } + }); + } +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogClientProxy.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogClientProxy.cs new file mode 100644 index 000000000..e23219f22 --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of SecurityLogClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Auditing.SecurityLogs; + +public partial class SecurityLogClientProxy +{ +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/auditing-generate-proxy.json b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/auditing-generate-proxy.json new file mode 100644 index 000000000..e3c8ece58 --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/auditing-generate-proxy.json @@ -0,0 +1,1451 @@ +{ + "modules": { + "auditing": { + "rootPath": "auditing", + "remoteServiceName": "AbpAuditing", + "controllers": { + "LINGYUN.Abp.Auditing.AuditLogs.AuditLogController": { + "controllerName": "AuditLog", + "controllerGroupName": "audit-log", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogController", + "interfaces": [ + { + "type": "LINGYUN.Abp.Auditing.AuditLogs.IAuditLogAppService", + "name": "IAuditLogAppService", + "methods": [ + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogGetByPagedDto, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogGetByPagedDto", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogGetByPagedDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogDto", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogDto" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "DeleteManyAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogDeleteManyInput, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogDeleteManyInput", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogDeleteManyInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/auditing/audit-log/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.AuditLogs.IAuditLogAppService" + }, + "DeleteManyAsyncByInput": { + "uniqueName": "DeleteManyAsyncByInput", + "name": "DeleteManyAsync", + "httpMethod": "DELETE", + "url": "api/auditing/audit-log/bulk", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogDeleteManyInput, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogDeleteManyInput", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogDeleteManyInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogDeleteManyInput", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogDeleteManyInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.AuditLogs.IAuditLogAppService" + }, + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/auditing/audit-log/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogDto", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.AuditLogs.IAuditLogAppService" + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/auditing/audit-log", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogGetByPagedDto, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogGetByPagedDto", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.AuditLogGetByPagedDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "StartTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "EndTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "HttpMethod", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Url", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "UserId", + "jsonName": null, + "type": "System.Guid?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "UserName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ApplicationName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "CorrelationId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ClientId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ClientIpAddress", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxExecutionDuration", + "jsonName": null, + "type": "System.Int32?", + "typeSimple": "number?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MinExecutionDuration", + "jsonName": null, + "type": "System.Int32?", + "typeSimple": "number?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "HasException", + "jsonName": null, + "type": "System.Boolean?", + "typeSimple": "boolean?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "HttpStatusCode", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.AuditLogs.IAuditLogAppService" + } + } + }, + "LINGYUN.Abp.Auditing.AuditLogs.EntityChangesController": { + "controllerName": "EntityChanges", + "controllerGroupName": "entity-changes", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangesController", + "interfaces": [ + { + "type": "LINGYUN.Abp.Auditing.AuditLogs.IEntityChangesAppService", + "name": "IEntityChangesAppService", + "methods": [ + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeDto", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeDto" + } + }, + { + "name": "GetWithUsernameAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeWithUsernameDto", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeWithUsernameDto" + } + }, + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeGetByPagedDto, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeGetByPagedDto", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeGetByPagedDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + { + "name": "GetWithUsernameAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeGetWithUsernameDto, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeGetWithUsernameDto", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeGetWithUsernameDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + } + ] + } + ], + "actions": { + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/auditing/entity-changes/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeDto", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.AuditLogs.IEntityChangesAppService" + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/auditing/entity-changes", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeGetByPagedDto, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeGetByPagedDto", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeGetByPagedDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "AuditLogId", + "jsonName": null, + "type": "System.Guid?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "StartTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "EndTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ChangeType", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "EntityId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "EntityTypeFullName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.AuditLogs.IEntityChangesAppService" + }, + "GetWithUsernameAsyncById": { + "uniqueName": "GetWithUsernameAsyncById", + "name": "GetWithUsernameAsync", + "httpMethod": "GET", + "url": "api/auditing/entity-changes/with-username/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeWithUsernameDto", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeWithUsernameDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.AuditLogs.IEntityChangesAppService" + }, + "GetWithUsernameAsyncByInput": { + "uniqueName": "GetWithUsernameAsyncByInput", + "name": "GetWithUsernameAsync", + "httpMethod": "GET", + "url": "api/auditing/entity-changes/with-username", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeGetWithUsernameDto, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeGetWithUsernameDto", + "typeSimple": "LINGYUN.Abp.Auditing.AuditLogs.EntityChangeGetWithUsernameDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "EntityId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "EntityTypeFullName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.AuditLogs.IEntityChangesAppService" + } + } + }, + "LINGYUN.Abp.Auditing.Logging.LogController": { + "controllerName": "Log", + "controllerGroupName": "logging", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.Auditing.Logging.LogController", + "interfaces": [ + { + "type": "LINGYUN.Abp.Auditing.Logging.ILogAppService", + "name": "ILogAppService", + "methods": [ + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Auditing.Logging.LogDto", + "typeSimple": "LINGYUN.Abp.Auditing.Logging.LogDto" + } + }, + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.Logging.LogGetByPagedDto, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.Logging.LogGetByPagedDto", + "typeSimple": "LINGYUN.Abp.Auditing.Logging.LogGetByPagedDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + } + ] + } + ], + "actions": { + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/auditing/logging/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Auditing.Logging.LogDto", + "typeSimple": "LINGYUN.Abp.Auditing.Logging.LogDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.Logging.ILogAppService" + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/auditing/logging", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.Logging.LogGetByPagedDto, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.Logging.LogGetByPagedDto", + "typeSimple": "LINGYUN.Abp.Auditing.Logging.LogGetByPagedDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "StartTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "EndTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Level", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MachineName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Environment", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Application", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Context", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "RequestId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "RequestPath", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "CorrelationId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ProcessId", + "jsonName": null, + "type": "System.Int32?", + "typeSimple": "number?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ThreadId", + "jsonName": null, + "type": "System.Int32?", + "typeSimple": "number?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "HasException", + "jsonName": null, + "type": "System.Boolean?", + "typeSimple": "boolean?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.Logging.ILogAppService" + } + } + }, + "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogController": { + "controllerName": "SecurityLog", + "controllerGroupName": "security-log", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogController", + "interfaces": [ + { + "type": "LINGYUN.Abp.Auditing.SecurityLogs.ISecurityLogAppService", + "name": "ISecurityLogAppService", + "methods": [ + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogGetByPagedDto, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogGetByPagedDto", + "typeSimple": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogGetByPagedDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogDto", + "typeSimple": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogDto" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "DeleteManyAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogDeleteManyInput, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogDeleteManyInput", + "typeSimple": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogDeleteManyInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/auditing/security-log/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.SecurityLogs.ISecurityLogAppService" + }, + "DeleteManyAsyncByInput": { + "uniqueName": "DeleteManyAsyncByInput", + "name": "DeleteManyAsync", + "httpMethod": "DELETE", + "url": "api/auditing/security-log/bulk", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogDeleteManyInput, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogDeleteManyInput", + "typeSimple": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogDeleteManyInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogDeleteManyInput", + "typeSimple": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogDeleteManyInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.SecurityLogs.ISecurityLogAppService" + }, + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/auditing/security-log/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogDto", + "typeSimple": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.SecurityLogs.ISecurityLogAppService" + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/auditing/security-log", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogGetByPagedDto, LINGYUN.Abp.Auditing.Application.Contracts", + "type": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogGetByPagedDto", + "typeSimple": "LINGYUN.Abp.Auditing.SecurityLogs.SecurityLogGetByPagedDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "StartTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "EndTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ApplicationName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Identity", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ActionName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "UserId", + "jsonName": null, + "type": "System.Guid?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "UserName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ClientId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "CorrelationId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Auditing.SecurityLogs.ISecurityLogAppService" + } + } + } + } + } + }, + "types": {} +} \ No newline at end of file diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/FodyWeavers.xml b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/FodyWeavers.xsd b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/LINGYUN.Abp.Auditing.HttpApi.Client.csproj b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/LINGYUN.Abp.Auditing.HttpApi.Client.csproj new file mode 100644 index 000000000..ba369d7f6 --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/LINGYUN.Abp.Auditing.HttpApi.Client.csproj @@ -0,0 +1,32 @@ + + + + + + + netstandard2.0;netstandard2.1;net8.0;net9.0 + LINGYUN.Abp.Auditing.HttpApi.Client + LINGYUN.Abp.Auditing.HttpApi.Client + false + false + false + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/LINGYUN/Abp/Auditing/AbpAuditingHttpApiClientModule.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/LINGYUN/Abp/Auditing/AbpAuditingHttpApiClientModule.cs new file mode 100644 index 000000000..7d66448db --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/LINGYUN/Abp/Auditing/AbpAuditingHttpApiClientModule.cs @@ -0,0 +1,24 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; + +namespace LINGYUN.Abp.Auditing; + +[DependsOn( + typeof(AbpAuditingApplicationContractsModule), + typeof(AbpHttpClientModule))] +public class AbpAuditingHttpApiClientModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddStaticHttpClientProxies( + typeof(AbpAuditingApplicationContractsModule).Assembly, + AuditingRemoteServiceConsts.RemoteServiceName); + + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/AuditLogController.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/AuditLogController.cs index 12397733d..9f992b4c5 100644 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/AuditLogController.cs +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/AuditLogController.cs @@ -13,7 +13,7 @@ namespace LINGYUN.Abp.Auditing.AuditLogs; [RemoteService(Name = AuditingRemoteServiceConsts.RemoteServiceName)] [Area("auditing")] [ControllerName("audit-log")] -[Route("api/auditing/audit-log")] +[Route($"api/{AuditingRemoteServiceConsts.ModuleName}/audit-log")] [Authorize(AuditingPermissionNames.AuditLog.Default)] public class AuditLogController : AbpControllerBase, IAuditLogAppService { diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesController.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesController.cs index 0879d8892..2d2b98261 100644 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesController.cs +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesController.cs @@ -13,7 +13,7 @@ namespace LINGYUN.Abp.Auditing.AuditLogs; [RemoteService(Name = AuditingRemoteServiceConsts.RemoteServiceName)] [Area("auditing")] [ControllerName("entity-changes")] -[Route("api/auditing/entity-changes")] +[Route($"api/{AuditingRemoteServiceConsts.ModuleName}/entity-changes")] [Authorize(AuditingPermissionNames.AuditLog.Default)] public class EntityChangesController : AbpControllerBase, IEntityChangesAppService { diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/Logging/LogController.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/Logging/LogController.cs index bbdfe0dd9..ce4e23ba7 100644 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/Logging/LogController.cs +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/Logging/LogController.cs @@ -12,7 +12,7 @@ namespace LINGYUN.Abp.Auditing.Logging; [RemoteService(Name = AuditingRemoteServiceConsts.RemoteServiceName)] [Area("auditing")] [ControllerName("logging")] -[Route("api/auditing/logging")] +[Route($"api/{AuditingRemoteServiceConsts.ModuleName}/logging")] [Authorize(AuditingPermissionNames.SystemLog.Default)] public class LogController : AbpControllerBase, ILogAppService { diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogController.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogController.cs index cc8af0999..35c0ab7ca 100644 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogController.cs +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogController.cs @@ -13,7 +13,7 @@ namespace LINGYUN.Abp.Auditing.SecurityLogs; [RemoteService(Name = AuditingRemoteServiceConsts.RemoteServiceName)] [Area("auditing")] [ControllerName("security-log")] -[Route("api/auditing/security-log")] +[Route($"api/{AuditingRemoteServiceConsts.ModuleName}/security-log")] [Authorize(AuditingPermissionNames.SecurityLog.Default)] public class SecurityLogController : AbpControllerBase, ISecurityLogAppService { diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/AbpAuditingWebModule.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/AbpAuditingWebModule.cs new file mode 100644 index 000000000..fa2f4129c --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/AbpAuditingWebModule.cs @@ -0,0 +1,74 @@ +using LINGYUN.Abp.Auditing.Web.ProfileManagement; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Account.Web; +using Volo.Abp.Account.Web.Pages.Account; +using Volo.Abp.Account.Web.ProfileManagement; +using Volo.Abp.AspNetCore.Mvc.Localization; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AuditLogging.Localization; +using Volo.Abp.AutoMapper; +using Volo.Abp.Http.ProxyScripting.Generators.JQuery; +using Volo.Abp.Modularity; +using Volo.Abp.UI.Navigation; +using Volo.Abp.VirtualFileSystem; + +namespace LINGYUN.Abp.Auditing.Web; + +[DependsOn( + typeof(AbpAccountWebModule), + typeof(AbpAuditingApplicationContractsModule))] +public class AbpAuditingWebModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + context.Services.PreConfigure(options => + { + options.AddAssemblyResource(typeof(AuditLoggingResource), typeof(AbpAuditingWebModule).Assembly); + }); + + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpAuditingWebModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + ConfigureProfileManagementPage(); + + context.Services.AddAutoMapperObjectMapper(); + Configure(options => + { + options.AddMaps(validate: true); + }); + + Configure(options => + { + options.DisableModule(AuditingRemoteServiceConsts.ModuleName); + }); + } + + private void ConfigureProfileManagementPage() + { + Configure(options => + { + options.Contributors.Add(new SecurityLogManagementPageContributor()); + }); + + Configure(options => + { + options.ScriptBundles + .Configure(typeof(ManageModel).FullName, + configuration => + { + configuration.AddFiles("/client-proxies/auditing-proxy.js"); + configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js"); + }); + }); + } +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/FodyWeavers.xml b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/LINGYUN.Abp.Auditing.Web.csproj b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/LINGYUN.Abp.Auditing.Web.csproj new file mode 100644 index 000000000..35797b108 --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/LINGYUN.Abp.Auditing.Web.csproj @@ -0,0 +1,39 @@ + + + + + + + net9.0 + LINGYUN.Abp.Auditing.Web + LINGYUN.Abp.Auditing.Web + false + false + false + true + LINGYUN.Abp.Auditing.Web + true + Library + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs new file mode 100644 index 000000000..e594b528b --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs @@ -0,0 +1,19 @@ +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.Auditing.Web.Pages.Account.Components.ProfileManagementGroup.SecurityLog; + +public class AccountProfileSecurityLogManagementGroupViewComponent : AbpViewComponent +{ + public AccountProfileSecurityLogManagementGroupViewComponent() + { + } + + public async virtual Task InvokeAsync() + { + await Task.CompletedTask; + + return View("~/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml"); + } +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml new file mode 100644 index 000000000..9cc605220 --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml @@ -0,0 +1,22 @@ +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.Account.Localization +@using Volo.Abp.Localization + +@inject IHtmlLocalizer L + +@section scripts { + +} + + + + + + @L["SecurityLog"] + + + + + + + diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js new file mode 100644 index 000000000..28d48c27e --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js @@ -0,0 +1,60 @@ +$(function () { + var ul = abp.localization.getResource('AbpUi'); + var il = abp.localization.getResource('AbpIdentity'); + var dataTable = $('#SecurityLogTable').DataTable( + abp.libs.datatables.normalizeConfiguration({ + serverSide: true, + paging: true, + searching: false, + scrollX: true, + ajax: abp.libs.datatables.createAjax(labp.auditing.securityLogs.securityLog.getList), + columnDefs: [ + { + title: ul('Actions'), + rowAction: { + items: + [ + { + text: il('RevokeSession'), + confirmMessage: function () { + return il('SessionWillBeRevokedMessage'); + }, + visible: function (data) { + return data.sessionId !== abp.currentUser?.sessionId; + }, + action: function (data) { + labp.account.myProfile + .revokeSession(data.record.sessionId) + .then(function () { + abp.notify.info( + il('SuccessfullyRevoked') + ); + dataTable.ajax.reload(); + }); + } + } + ] + } + }, + { + title: il('DisplayName:Device'), + data: "device" + }, + { + title: il('DisplayName:IpAddresses'), + data: "ipAddresses" + }, + { + title: il('DisplayName:SignedIn'), + data: "signedIn", + render: function (data) { + return luxon + .DateTime + .fromISO(data, { + locale: abp.localization.currentCulture.name + }).toLocaleString(luxon.DateTime.DATETIME_FULL_WITH_SECONDS); + } + }] + }) + ); +}); diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/ProfileManagement/SecurityLogManagementPageContributor.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/ProfileManagement/SecurityLogManagementPageContributor.cs new file mode 100644 index 000000000..c521a732c --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/ProfileManagement/SecurityLogManagementPageContributor.cs @@ -0,0 +1,26 @@ +using LINGYUN.Abp.Auditing.Web.Pages.Account.Components.ProfileManagementGroup.SecurityLog; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using System.Threading.Tasks; +using Volo.Abp.Account.Web.ProfileManagement; +using Volo.Abp.AuditLogging.Localization; + +namespace LINGYUN.Abp.Auditing.Web.ProfileManagement; + +public class SecurityLogManagementPageContributor : IProfileManagementPageContributor +{ + public virtual Task ConfigureAsync(ProfileManagementPageCreationContext context) + { + var l = context.ServiceProvider.GetRequiredService>(); + + context.Groups.Add( + new ProfileManagementPageGroup( + "LINGYUN.Abp.Account.SecurityLog", + l["SecurityLog"], + typeof(AccountProfileSecurityLogManagementGroupViewComponent) + ) + ); + + return Task.CompletedTask; + } +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Properties/launchSettings.json b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Properties/launchSettings.json new file mode 100644 index 000000000..4b94e23fd --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "LINGYUN.Abp.Auditing.Web": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:62925;http://localhost:62926" + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/wwwroot/client-proxies/auditing-proxy.js b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/wwwroot/client-proxies/auditing-proxy.js new file mode 100644 index 000000000..9b0535a2e --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/wwwroot/client-proxies/auditing-proxy.js @@ -0,0 +1,146 @@ +/* This file is automatically generated by ABP framework to use MVC Controllers from javascript. */ + + +// module auditing + +(function(){ + + // controller labp.auditing.auditLogs.auditLog + + (function(){ + + abp.utils.createNamespace(window, 'labp.auditing.auditLogs.auditLog'); + + labp.auditing.auditLogs.auditLog['delete'] = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/audit-log/' + id + '', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + labp.auditing.auditLogs.auditLog.deleteMany = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/audit-log/bulk', + type: 'DELETE', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.auditing.auditLogs.auditLog.get = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/audit-log/' + id + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.auditing.auditLogs.auditLog.getList = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/audit-log' + abp.utils.buildQueryString([{ name: 'startTime', value: input.startTime }, { name: 'endTime', value: input.endTime }, { name: 'httpMethod', value: input.httpMethod }, { name: 'url', value: input.url }, { name: 'userId', value: input.userId }, { name: 'userName', value: input.userName }, { name: 'applicationName', value: input.applicationName }, { name: 'correlationId', value: input.correlationId }, { name: 'clientId', value: input.clientId }, { name: 'clientIpAddress', value: input.clientIpAddress }, { name: 'maxExecutionDuration', value: input.maxExecutionDuration }, { name: 'minExecutionDuration', value: input.minExecutionDuration }, { name: 'hasException', value: input.hasException }, { name: 'httpStatusCode', value: input.httpStatusCode }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', + type: 'GET' + }, ajaxParams)); + }; + + })(); + + // controller labp.auditing.auditLogs.entityChanges + + (function(){ + + abp.utils.createNamespace(window, 'labp.auditing.auditLogs.entityChanges'); + + labp.auditing.auditLogs.entityChanges.get = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/entity-changes/' + id + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.auditing.auditLogs.entityChanges.getList = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/entity-changes' + abp.utils.buildQueryString([{ name: 'auditLogId', value: input.auditLogId }, { name: 'startTime', value: input.startTime }, { name: 'endTime', value: input.endTime }, { name: 'changeType', value: input.changeType }, { name: 'entityId', value: input.entityId }, { name: 'entityTypeFullName', value: input.entityTypeFullName }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.auditing.auditLogs.entityChanges.getWithUsernameAsyncById = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/entity-changes/with-username/' + id + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.auditing.auditLogs.entityChanges.getWithUsernameAsyncByInput = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/entity-changes/with-username' + abp.utils.buildQueryString([{ name: 'entityId', value: input.entityId }, { name: 'entityTypeFullName', value: input.entityTypeFullName }]) + '', + type: 'GET' + }, ajaxParams)); + }; + + })(); + + // controller labp.auditing.logging.log + + (function(){ + + abp.utils.createNamespace(window, 'labp.auditing.logging.log'); + + labp.auditing.logging.log.get = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/logging/' + id + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.auditing.logging.log.getList = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/logging' + abp.utils.buildQueryString([{ name: 'startTime', value: input.startTime }, { name: 'endTime', value: input.endTime }, { name: 'level', value: input.level }, { name: 'machineName', value: input.machineName }, { name: 'environment', value: input.environment }, { name: 'application', value: input.application }, { name: 'context', value: input.context }, { name: 'requestId', value: input.requestId }, { name: 'requestPath', value: input.requestPath }, { name: 'correlationId', value: input.correlationId }, { name: 'processId', value: input.processId }, { name: 'threadId', value: input.threadId }, { name: 'hasException', value: input.hasException }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', + type: 'GET' + }, ajaxParams)); + }; + + })(); + + // controller labp.auditing.securityLogs.securityLog + + (function(){ + + abp.utils.createNamespace(window, 'labp.auditing.securityLogs.securityLog'); + + labp.auditing.securityLogs.securityLog['delete'] = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/security-log/' + id + '', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + labp.auditing.securityLogs.securityLog.deleteMany = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/security-log/bulk', + type: 'DELETE', + dataType: null, + data: JSON.stringify(input) + }, ajaxParams)); + }; + + labp.auditing.securityLogs.securityLog.get = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/security-log/' + id + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.auditing.securityLogs.securityLog.getList = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/auditing/security-log' + abp.utils.buildQueryString([{ name: 'startTime', value: input.startTime }, { name: 'endTime', value: input.endTime }, { name: 'applicationName', value: input.applicationName }, { name: 'identity', value: input.identity }, { name: 'actionName', value: input.actionName }, { name: 'userId', value: input.userId }, { name: 'userName', value: input.userName }, { name: 'clientId', value: input.clientId }, { name: 'correlationId', value: input.correlationId }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', + type: 'GET' + }, ajaxParams)); + }; + + })(); + +})(); + + diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Domain.Identity/LINGYUN/Abp/Gdpr/Identity/AbpGdprIdentityUserDataProvider.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Domain.Identity/LINGYUN/Abp/Gdpr/Identity/AbpGdprIdentityUserDataProvider.cs index 604440e0b..7f0cbc367 100644 --- a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Domain.Identity/LINGYUN/Abp/Gdpr/Identity/AbpGdprIdentityUserDataProvider.cs +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Domain.Identity/LINGYUN/Abp/Gdpr/Identity/AbpGdprIdentityUserDataProvider.cs @@ -3,7 +3,6 @@ using Microsoft.Extensions.DependencyInjection; using System.Threading.Tasks; using Volo.Abp.Auditing; using Volo.Abp.Domain.ChangeTracking; -using Volo.Abp.Domain.Repositories; using Volo.Abp.Gdpr; using Volo.Abp.Identity; using Volo.Abp.Users; @@ -21,31 +20,36 @@ public class AbpGdprIdentityUserDataProvider: GdprUserDataProviderBase public async override Task DeleteAsync(GdprDeleteUserDataContext context) { - var identityUserRepository = context.ServiceProvider.GetRequiredService(); var identityUserManager = context.ServiceProvider.GetRequiredService(); var identityUser = await identityUserManager.GetByIdAsync(context.UserId); identityUser.Name = ""; identityUser.Surname = ""; - identityUser.SetIsActive(false); - - await identityUserRepository.EnsureCollectionLoadedAsync(identityUser, u => u.Claims); - - identityUser.Claims.Clear(); // TODO: 应设置为空字符串, 但是abp框架不允许Email为空 (await identityUserManager.SetEmailAsync(identityUser, $"{identityUser.UserName}@abp.io")).CheckErrors(); (await identityUserManager.SetPhoneNumberAsync(identityUser, "")).CheckErrors(); + // 清理身份标识 + var userClaims = await identityUserManager.GetClaimsAsync(identityUser); + (await identityUserManager.RemoveClaimsAsync(identityUser, userClaims)).CheckErrors(); + + // TODO: 是否需要清理第三方关联账户? + //var userLogins = await identityUserManager.GetLoginsAsync(identityUser); + //foreach (var userLogin in userLogins) + //{ + // (await identityUserManager.RemoveLoginAsync(identityUser, userLogin.LoginProvider, userLogin.ProviderKey)).CheckErrors(); + //} + (await identityUserManager.UpdateAsync(identityUser)).CheckErrors(); } [DisableEntityChangeTracking] public async override Task PorepareAsync(GdprPrepareUserDataContext context) { - var identityUserRepository = context.ServiceProvider.GetRequiredService(); - var identityUser = await identityUserRepository.GetAsync(context.UserId); + var identityUserManager = context.ServiceProvider.GetRequiredService(); + var identityUser = await identityUserManager.GetByIdAsync(context.UserId); var gdprDataInfo = new GdprDataInfo { diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/ClientProxies/LINGYUN/Abp/Gdpr/GdprRequestClientProxy.Generated.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/ClientProxies/LINGYUN/Abp/Gdpr/GdprRequestClientProxy.Generated.cs new file mode 100644 index 000000000..72412accd --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/ClientProxies/LINGYUN/Abp/Gdpr/GdprRequestClientProxy.Generated.cs @@ -0,0 +1,67 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.Gdpr; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Content; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Gdpr; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IGdprRequestAppService), typeof(GdprRequestClientProxy))] +public partial class GdprRequestClientProxy : ClientProxyBase, IGdprRequestAppService +{ + public virtual async Task DeleteAsync(Guid id) + { + await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task DeletePersonalAccountAsync() + { + await RequestAsync(nameof(DeletePersonalAccountAsync)); + } + + public virtual async Task DeletePersonalDataAsync() + { + await RequestAsync(nameof(DeletePersonalDataAsync)); + } + + public virtual async Task GetAsync(Guid id) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task> GetListAsync(GdprRequestGetListInput input) + { + return await RequestAsync>(nameof(GetListAsync), new ClientProxyRequestTypeValue + { + { typeof(GdprRequestGetListInput), input } + }); + } + + public virtual async Task DownloadPersonalDataAsync(Guid requestId) + { + return await RequestAsync(nameof(DownloadPersonalDataAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), requestId } + }); + } + + public virtual async Task PreparePersonalDataAsync() + { + await RequestAsync(nameof(PreparePersonalDataAsync)); + } +} diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/ClientProxies/LINGYUN/Abp/Gdpr/GdprRequestClientProxy.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/ClientProxies/LINGYUN/Abp/Gdpr/GdprRequestClientProxy.cs new file mode 100644 index 000000000..d100d2f73 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/ClientProxies/LINGYUN/Abp/Gdpr/GdprRequestClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of GdprRequestClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.Gdpr; + +public partial class GdprRequestClientProxy +{ +} diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/ClientProxies/gdpr-generate-proxy.json b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/ClientProxies/gdpr-generate-proxy.json new file mode 100644 index 000000000..504477dc9 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/ClientProxies/gdpr-generate-proxy.json @@ -0,0 +1,362 @@ +{ + "modules": { + "gdpr": { + "rootPath": "gdpr", + "remoteServiceName": "Gdpr", + "controllers": { + "LINGYUN.Abp.Gdpr.GdprRequestController": { + "controllerName": "GdprRequest", + "controllerGroupName": "GdprRequest", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.Gdpr.GdprRequestController", + "interfaces": [ + { + "type": "LINGYUN.Abp.Gdpr.IGdprRequestAppService", + "name": "IGdprRequestAppService", + "methods": [ + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Gdpr.GdprRequestDto", + "typeSimple": "LINGYUN.Abp.Gdpr.GdprRequestDto" + } + }, + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Gdpr.GdprRequestGetListInput, LINGYUN.Abp.Gdpr.Application.Contracts", + "type": "LINGYUN.Abp.Gdpr.GdprRequestGetListInput", + "typeSimple": "LINGYUN.Abp.Gdpr.GdprRequestGetListInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + { + "name": "DownloadPersonalDataAsync", + "parametersOnMethod": [ + { + "name": "requestId", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "PreparePersonalDataAsync", + "parametersOnMethod": [], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "DeletePersonalDataAsync", + "parametersOnMethod": [], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "DeletePersonalAccountAsync", + "parametersOnMethod": [], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/gdpr/requests/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Gdpr.IGdprRequestAppService" + }, + "DeletePersonalAccountAsync": { + "uniqueName": "DeletePersonalAccountAsync", + "name": "DeletePersonalAccountAsync", + "httpMethod": "DELETE", + "url": "api/gdpr/requests/personal-account", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Gdpr.IGdprRequestAppService" + }, + "DeletePersonalDataAsync": { + "uniqueName": "DeletePersonalDataAsync", + "name": "DeletePersonalDataAsync", + "httpMethod": "DELETE", + "url": "api/gdpr/requests/personal-data", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Gdpr.IGdprRequestAppService" + }, + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/gdpr/requests/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.Gdpr.GdprRequestDto", + "typeSimple": "LINGYUN.Abp.Gdpr.GdprRequestDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Gdpr.IGdprRequestAppService" + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/gdpr/requests", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.Gdpr.GdprRequestGetListInput, LINGYUN.Abp.Gdpr.Application.Contracts", + "type": "LINGYUN.Abp.Gdpr.GdprRequestGetListInput", + "typeSimple": "LINGYUN.Abp.Gdpr.GdprRequestGetListInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "CreationTime", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ReadyTime", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Gdpr.IGdprRequestAppService" + }, + "DownloadPersonalDataAsyncByRequestId": { + "uniqueName": "DownloadPersonalDataAsyncByRequestId", + "name": "DownloadPersonalDataAsync", + "httpMethod": "GET", + "url": "api/gdpr/requests/personal-data/download/{requestId}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "requestId", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "requestId", + "name": "requestId", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Gdpr.IGdprRequestAppService" + }, + "PreparePersonalDataAsync": { + "uniqueName": "PreparePersonalDataAsync", + "name": "PreparePersonalDataAsync", + "httpMethod": "POST", + "url": "api/gdpr/requests/personal-data/prepare", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.Gdpr.IGdprRequestAppService" + } + } + } + } + } + }, + "types": {} +} \ No newline at end of file diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/FodyWeavers.xml b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/FodyWeavers.xsd b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/LINGYUN.Abp.Gdpr.HttpApi.Client.csproj b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/LINGYUN.Abp.Gdpr.HttpApi.Client.csproj new file mode 100644 index 000000000..ae1c2def6 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/LINGYUN.Abp.Gdpr.HttpApi.Client.csproj @@ -0,0 +1,32 @@ + + + + + + + netstandard2.0;netstandard2.1;net8.0;net9.0 + LINGYUN.Abp.Gdpr.HttpApi.Client + LINGYUN.Abp.Gdpr.HttpApi.Client + false + false + false + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/LINGYUN/Abp/Gdpr/AbpGdprHttpApiClientModule.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/LINGYUN/Abp/Gdpr/AbpGdprHttpApiClientModule.cs new file mode 100644 index 000000000..d9c69640e --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.HttpApi.Client/LINGYUN/Abp/Gdpr/AbpGdprHttpApiClientModule.cs @@ -0,0 +1,24 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Modularity; +using Volo.Abp.VirtualFileSystem; + +namespace LINGYUN.Abp.Gdpr; + +[DependsOn( + typeof(AbpGdprApplicationContractsModule), + typeof(AbpHttpClientModule))] +public class AbpGdprHttpApiClientModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddStaticHttpClientProxies( + typeof(AbpGdprApplicationContractsModule).Assembly, + GdprRemoteServiceConsts.RemoteServiceName); + + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } +} diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/AbpGdprUserMenuContributor.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/AbpGdprUserMenuContributor.cs new file mode 100644 index 000000000..7fddbefae --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/AbpGdprUserMenuContributor.cs @@ -0,0 +1,29 @@ +using LINGYUN.Abp.Gdpr.Localization; +using System.Threading.Tasks; +using Volo.Abp.UI.Navigation; + +namespace LINGYUN.Abp.Gdpr.Web; + +public class AbpGdprUserMenuContributor : IMenuContributor +{ + public virtual Task ConfigureMenuAsync(MenuConfigurationContext context) + { + if (context.Menu.Name != StandardMenus.User) + { + return Task.CompletedTask; + } + + + var gdprResource = context.GetLocalizer(); + + context.Menu.AddItem( + new ApplicationMenuItem( + "Account.Delete", + gdprResource["DeletePersonalAccount"], + url: "~/Account/Delete", + icon: "fa fa-remove", + order: int.MaxValue - 999)); + + return Task.CompletedTask; + } +} diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/AbpGdprWebModule.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/AbpGdprWebModule.cs new file mode 100644 index 000000000..dad0afe7b --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/AbpGdprWebModule.cs @@ -0,0 +1,88 @@ +using LINGYUN.Abp.Gdpr.Localization; +using LINGYUN.Abp.Gdpr.Web.Pages.Account; +using LINGYUN.Abp.Gdpr.Web.Pages.Account.Components.ProfileManagementGroup.Gdpr; +using LINGYUN.Abp.Gdpr.Web.ProfileManagement; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Account.Web; +using Volo.Abp.Account.Web.Pages.Account; +using Volo.Abp.Account.Web.ProfileManagement; +using Volo.Abp.AspNetCore.Mvc.Localization; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AutoMapper; +using Volo.Abp.Http.ProxyScripting.Generators.JQuery; +using Volo.Abp.Modularity; +using Volo.Abp.UI.Navigation; +using Volo.Abp.VirtualFileSystem; + +namespace LINGYUN.Abp.Gdpr.Web; + +[DependsOn( + typeof(AbpAccountWebModule), + typeof(AbpGdprApplicationContractsModule))] +public class AbpGdprWebModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + context.Services.PreConfigure(options => + { + options.AddAssemblyResource(typeof(GdprResource), typeof(AbpGdprWebModule).Assembly); + }); + + PreConfigure(mvcBuilder => + { + mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpGdprWebModule).Assembly); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.MenuContributors.Add(new AbpGdprUserMenuContributor()); + }); + + ConfigureProfileManagementPage(); + + context.Services.AddAutoMapperObjectMapper(); + Configure(options => + { + options.AddMaps(validate: true); + }); + + Configure(options => + { + options.DisableModule(GdprRemoteServiceConsts.ModuleName); + }); + } + + private void ConfigureProfileManagementPage() + { + Configure(options => + { + options.Contributors.Add(new GdprManagementPageContributor()); + }); + + Configure(options => + { + options.ScriptBundles + .Configure(typeof(ManageModel).FullName, + configuration => + { + configuration.AddFiles("/client-proxies/gdpr-proxy.js"); + configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.js"); + }); + options.ScriptBundles + .Configure(typeof(DeleteModel).FullName, + configuration => + { + configuration.AddFiles("/client-proxies/gdpr-proxy.js"); + configuration.AddFiles("/Pages/Account/Delete.js"); + }); + }); + } +} diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/FodyWeavers.xml b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/FodyWeavers.xml new file mode 100644 index 000000000..1715698cc --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/FodyWeavers.xsd b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/FodyWeavers.xsd new file mode 100644 index 000000000..3f3946e28 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/LINGYUN.Abp.Gdpr.Web.csproj b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/LINGYUN.Abp.Gdpr.Web.csproj new file mode 100644 index 000000000..a8e8aa05c --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/LINGYUN.Abp.Gdpr.Web.csproj @@ -0,0 +1,39 @@ + + + + + + + net9.0 + LINGYUN.Abp.Gdpr.Web + LINGYUN.Abp.Gdpr.Web + false + false + false + true + LINGYUN.Abp.Gdpr.Web + true + Library + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/AccountProfileGdprManagementGroupViewComponent.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/AccountProfileGdprManagementGroupViewComponent.cs new file mode 100644 index 000000000..7eff622a1 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/AccountProfileGdprManagementGroupViewComponent.cs @@ -0,0 +1,19 @@ +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Abp.Gdpr.Web.Pages.Account.Components.ProfileManagementGroup.Gdpr; + +public class AccountProfileGdprManagementGroupViewComponent : AbpViewComponent +{ + public AccountProfileGdprManagementGroupViewComponent() + { + } + + public async virtual Task InvokeAsync() + { + await Task.CompletedTask; + + return View("~/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.cshtml"); + } +} diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.cshtml b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.cshtml new file mode 100644 index 000000000..20903ec68 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.cshtml @@ -0,0 +1,31 @@ +@using LINGYUN.Abp.Gdpr.Web.Pages.Account.Components.ProfileManagementGroup.Gdpr +@using Microsoft.AspNetCore.Mvc.Localization +@using LINGYUN.Abp.Gdpr.Localization +@using Volo.Abp.Localization + +@inject IHtmlLocalizer L + + + + + + @L["PersonalData"] + + + + + + + + + + + + + diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.js b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.js new file mode 100644 index 000000000..0266bf89c --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Components/ProfileManagementGroup/Gdpr/Index.js @@ -0,0 +1,108 @@ +$(function () { + var ul = abp.localization.getResource('AbpUi'); + var gl = abp.localization.getResource('AbpGdpr'); + + var dataTable = $('#PersonalDataTable').DataTable( + abp.libs.datatables.normalizeConfiguration({ + serverSide: true, + paging: true, + searching: false, + scrollX: true, + ajax: abp.libs.datatables.createAjax(labp.gdpr.gdprRequest.getList), + columnDefs: [ + { + title: ul('Actions'), + rowAction: { + items: + [ + { + text: gl('Download'), + visible: function (data) { + const now = luxon.DateTime.now(); + const readyTime = luxon.DateTime.fromISO(data.readyTime, { + locale: abp.localization.currentCulture.name + }); + return now >= readyTime; + }, + action: function (data) { + var downloadWindow = window.open( + abp.appPath + 'api/gdpr/requests/personal-data/download/' + data.record.id + '', + "_blank" + ); + downloadWindow.focus(); + } + }, + { + text: ul('Delete'), + confirmMessage: function () { + return ul('ItemWillBeDeletedMessage'); + }, + action: function (data) { + labp.gdpr.gdprRequest + .delete(data.record.id) + .then(function () { + abp.notify.info( + ul('DeletedSuccessfully') + ); + dataTable.ajax.reload(); + }); + } + } + ] + } + }, + { + title: gl('DisplayName:ReadyTime'), + data: "readyTime", + render: function (data) { + return luxon + .DateTime + .fromISO(data, { + locale: abp.localization.currentCulture.name + }).toLocaleString(luxon.DateTime.DATETIME_FULL_WITH_SECONDS); + } + }, + { + title: gl('DisplayName:CreationTime'), + data: "creationTime", + render: function (data) { + return luxon + .DateTime + .fromISO(data, { + locale: abp.localization.currentCulture.name + }).toLocaleString(luxon.DateTime.DATETIME_FULL_WITH_SECONDS); + } + }] + }) + ); + + $('#RequestPersonalDataButton').click(function (e) { + e.preventDefault(); + labp.gdpr.gdprRequest + .preparePersonalData() + .then(function () { + abp.notify.success( + gl('PersonalDataPrepareRequestReceived') + ); + dataTable.ajax.reload(); + }); + }); + $('#DeletePersonalDataButton').click(function (e) { + e.preventDefault(); + abp.message.confirm( + gl('DeletePersonalDataWarning'), + function (confirm) { + if (confirm) { + labp.gdpr.gdprRequest + .deletePersonalData() + .then(function () { + abp.notify.success( + gl('PersonalDataDeleteRequestReceived') + ); + dataTable.ajax.reload(); + }); + } + } + ); + }); +}); diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.cshtml b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.cshtml new file mode 100644 index 000000000..3f7807f34 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.cshtml @@ -0,0 +1,38 @@ +@page +@using Microsoft.AspNetCore.Mvc.Localization +@using Volo.Abp.Account.Localization +@using LINGYUN.Abp.Gdpr.Localization +@using LINGYUN.Abp.Gdpr.Web.Pages.Account +@using Volo.Abp.AspNetCore.Mvc.UI.Theming +@inject IThemeManager ThemeManager +@inject IHtmlLocalizer L +@inject IHtmlLocalizer AL +@model DeleteModel +@{ + Layout = ThemeManager.CurrentTheme.GetApplicationLayout(); +} +@section scripts { + +} + +@if (!Model.ReturnUrl.IsNullOrWhiteSpace()) +{ + + + + @AL["ReturnToApplication"] + + + +} + +
+ + + + + +
diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.cshtml.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.cshtml.cs new file mode 100644 index 000000000..3b6dd610a --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.cshtml.cs @@ -0,0 +1,38 @@ +using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Threading.Tasks; +using Volo.Abp.Account.Web.Pages.Account; + +namespace LINGYUN.Abp.Gdpr.Web.Pages.Account; + +public class DeleteModel : AccountPageModel +{ + [HiddenInput] + [BindProperty(SupportsGet = true)] + public string ReturnUrl { get; set; } + + public DeleteModel() + { + } + + public virtual async Task OnGetAsync() + { + if (ReturnUrl != null) + { + if (!Url.IsLocalUrl(ReturnUrl) && + !ReturnUrl.StartsWith(UriHelper.BuildAbsolute(Request.Scheme, Request.Host, Request.PathBase).RemovePostFix("/")) && + !await AppUrlProvider.IsRedirectAllowedUrlAsync(ReturnUrl)) + { + ReturnUrl = null; + } + } + + return Page(); + } + + public virtual Task OnPostAsync() + { + return Task.FromResult(Page()); + } +} diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.js b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.js new file mode 100644 index 000000000..85697d5f9 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/Account/Delete.js @@ -0,0 +1,22 @@ +$(function () { + var l = abp.localization.getResource('AbpGdpr'); + + $('#DeletePersonalAccountButton').click(function (e) { + e.preventDefault(); + abp.message.confirm( + l('DeletePersonalAccountWarning'), + function (confirm) { + if (confirm) { + labp.gdpr.gdprRequest + .deletePersonalAccount() + .then(function () { + abp.notify.success( + l('PersonalAccountDeleteRequestReceived') + ); + $(location).attr('href', '/Account/Login'); + }); + } + } + ); + }); +}); diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/_ViewImports.cshtml b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/ProfileManagement/GdprManagementPageContributor.cs b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/ProfileManagement/GdprManagementPageContributor.cs new file mode 100644 index 000000000..1e843cde9 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/ProfileManagement/GdprManagementPageContributor.cs @@ -0,0 +1,26 @@ +using LINGYUN.Abp.Gdpr.Localization; +using LINGYUN.Abp.Gdpr.Web.Pages.Account.Components.ProfileManagementGroup.Gdpr; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using System.Threading.Tasks; +using Volo.Abp.Account.Web.ProfileManagement; + +namespace LINGYUN.Abp.Gdpr.Web.ProfileManagement; + +public class GdprManagementPageContributor : IProfileManagementPageContributor +{ + public virtual Task ConfigureAsync(ProfileManagementPageCreationContext context) + { + var l = context.ServiceProvider.GetRequiredService>(); + + context.Groups.Add( + new ProfileManagementPageGroup( + "LINGYUN.Abp.Account.Gdpr", + l["PersonalData"], + typeof(AccountProfileGdprManagementGroupViewComponent) + ) + ); + + return Task.CompletedTask; + } +} diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Properties/launchSettings.json b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Properties/launchSettings.json new file mode 100644 index 000000000..aaeb392a6 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "LINGYUN.Abp.Gdpr.Web": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:64471;http://localhost:64472" + } + } +} \ No newline at end of file diff --git a/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/wwwroot/client-proxies/gdpr-proxy.js b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/wwwroot/client-proxies/gdpr-proxy.js new file mode 100644 index 000000000..7ca75c2e5 --- /dev/null +++ b/aspnet-core/modules/gdpr/LINGYUN.Abp.Gdpr.Web/wwwroot/client-proxies/gdpr-proxy.js @@ -0,0 +1,71 @@ +/* This file is automatically generated by ABP framework to use MVC Controllers from javascript. */ + + +// module gdpr + +(function(){ + + // controller labp.gdpr.gdprRequest + + (function(){ + + abp.utils.createNamespace(window, 'labp.gdpr.gdprRequest'); + + labp.gdpr.gdprRequest['delete'] = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests/' + id + '', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + labp.gdpr.gdprRequest.deletePersonalAccount = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests/personal-account', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + labp.gdpr.gdprRequest.deletePersonalData = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests/personal-data', + type: 'DELETE', + dataType: null + }, ajaxParams)); + }; + + labp.gdpr.gdprRequest.get = function(id, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests/' + id + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.gdpr.gdprRequest.getList = function(input, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests' + abp.utils.buildQueryString([{ name: 'creationTime', value: input.creationTime }, { name: 'readyTime', value: input.readyTime }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.gdpr.gdprRequest.downloadPersonalData = function(requestId, ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests/personal-data/download/' + requestId + '', + type: 'GET' + }, ajaxParams)); + }; + + labp.gdpr.gdprRequest.preparePersonalData = function(ajaxParams) { + return abp.ajax($.extend(true, { + url: abp.appPath + 'api/gdpr/requests/personal-data/prepare', + type: 'POST', + dataType: null + }, ajaxParams)); + }; + + })(); + +})(); + + diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/LINGYUN/Abp/IdentityServer/AbpIdentityServerSmsValidatorModule.cs b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/LINGYUN/Abp/IdentityServer/AbpIdentityServerSmsModule.cs similarity index 87% rename from aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/LINGYUN/Abp/IdentityServer/AbpIdentityServerSmsValidatorModule.cs rename to aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/LINGYUN/Abp/IdentityServer/AbpIdentityServerSmsModule.cs index 7fb747160..148c94a96 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/LINGYUN/Abp/IdentityServer/AbpIdentityServerSmsValidatorModule.cs +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/LINGYUN/Abp/IdentityServer/AbpIdentityServerSmsModule.cs @@ -9,7 +9,7 @@ using Volo.Abp.VirtualFileSystem; namespace LINGYUN.Abp.IdentityServer; [DependsOn(typeof(AbpIdentityServerDomainModule))] -public class AbpIdentityServerSmsValidatorModule : AbpModule +public class AbpIdentityServerSmsModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { @@ -23,7 +23,7 @@ public class AbpIdentityServerSmsValidatorModule : AbpModule { Configure(options => { - options.FileSets.AddEmbedded(); + options.FileSets.AddEmbedded(); }); Configure(options => diff --git a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/README.md b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/README.md index e8c684b9b..3b133f8c5 100644 --- a/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/README.md +++ b/aspnet-core/modules/identityServer/LINGYUN.Abp.IdentityServer.SmsValidator/README.md @@ -24,7 +24,7 @@ IdentityServer短信验证模块,提供基于手机号和短信验证码的身 ```csharp [DependsOn( - typeof(AbpIdentityServerSmsValidatorModule) + typeof(AbpIdentityServerSmsModule) )] public class YourModule : AbpModule { diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.BlobStoring.OssManagement/LINGYUN/Abp/BlobStoring/OssManagement/OssManagementBlobProvider.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.BlobStoring.OssManagement/LINGYUN/Abp/BlobStoring/OssManagement/OssManagementBlobProvider.cs index 44b99675a..c14164118 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.BlobStoring.OssManagement/LINGYUN/Abp/BlobStoring/OssManagement/OssManagementBlobProvider.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.BlobStoring.OssManagement/LINGYUN/Abp/BlobStoring/OssManagement/OssManagementBlobProvider.cs @@ -1,4 +1,5 @@ using LINGYUN.Abp.OssManagement; +using LINGYUN.Abp.OssManagement.Integration; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using System; @@ -14,9 +15,9 @@ public class OssManagementBlobProvider : BlobProviderBase, ITransientDependency { public ILogger Logger { protected get; set; } - private readonly IOssObjectAppService _ossObjectAppService; + private readonly IOssObjectIntegrationService _ossObjectAppService; public OssManagementBlobProvider( - IOssObjectAppService ossObjectAppService) + IOssObjectIntegrationService ossObjectAppService) { _ossObjectAppService = ossObjectAppService; @@ -37,47 +38,27 @@ public class OssManagementBlobProvider : BlobProviderBase, ITransientDependency public override async Task ExistsAsync(BlobProviderExistsArgs args) { - try - { - var configuration = args.Configuration.GetOssManagementConfiguration(); - var oss = await _ossObjectAppService.GetAsync(new GetOssObjectInput - { - Bucket = configuration.Bucket, - Path = GetOssPath(args), - Object = GetOssName(args), - }); - return oss != null; - } - catch (Exception ex) + var configuration = args.Configuration.GetOssManagementConfiguration(); + var result = await _ossObjectAppService.ExistsAsync(new GetOssObjectInput { - Logger.LogWarning("An error occurred while getting the OSS object, always returning that the object does not exist"); - Logger.LogWarning(ex.Message); - - return false; - } + Bucket = configuration.Bucket, + Path = GetOssPath(args), + Object = GetOssName(args), + }); + return result.IsExists; } public override async Task GetOrNullAsync(BlobProviderGetArgs args) { - try - { - var configuration = args.Configuration.GetOssManagementConfiguration(); - var content = await _ossObjectAppService.GetContentAsync(new GetOssObjectInput - { - Bucket = configuration.Bucket, - Path = GetOssPath(args), - Object = GetOssName(args), - }); - - return content?.GetStream(); - } - catch (Exception ex) + var configuration = args.Configuration.GetOssManagementConfiguration(); + var content = await _ossObjectAppService.GetAsync(new GetOssObjectInput { - Logger.LogWarning("An error occurred while getting the OSS object and an empty data stream will be returned"); - Logger.LogWarning(ex.Message); + Bucket = configuration.Bucket, + Path = GetOssPath(args), + Object = GetOssName(args), + }); - return null; - } + return content?.GetStream(); } public override async Task SaveAsync(BlobProviderSaveArgs args) diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IFileAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IFileAppService.cs index d32e3b3c9..0f1a2cf8e 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IFileAppService.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/IFileAppService.cs @@ -13,7 +13,7 @@ public interface IFileAppService : IApplicationService Task> GetListAsync(GetFilesInput input); - Task UploadAsync(UploadFileChunkInput input); + Task UploadChunkAsync(UploadFileChunkInput input); Task DeleteAsync(GetPublicFileInput input); } diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Integration/GetOssObjectExistsResult.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Integration/GetOssObjectExistsResult.cs new file mode 100644 index 000000000..5e3b63333 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Integration/GetOssObjectExistsResult.cs @@ -0,0 +1,6 @@ +namespace LINGYUN.Abp.OssManagement.Integration; + +public class GetOssObjectExistsResult +{ + public bool IsExists { get; set; } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Integration/IOssObjectIntegrationService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Integration/IOssObjectIntegrationService.cs new file mode 100644 index 000000000..e66b6f240 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/Integration/IOssObjectIntegrationService.cs @@ -0,0 +1,18 @@ +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Services; +using Volo.Abp.Content; + +namespace LINGYUN.Abp.OssManagement.Integration; + +[IntegrationService] +public interface IOssObjectIntegrationService : IApplicationService +{ + Task CreateAsync(CreateOssObjectInput input); + + Task DeleteAsync(GetOssObjectInput input); + + Task ExistsAsync(GetOssObjectInput input); + + Task GetAsync(GetOssObjectInput input); +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssManagementRemoteServiceConsts.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssManagementRemoteServiceConsts.cs index 2d40aad5b..0c918d364 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssManagementRemoteServiceConsts.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application.Contracts/LINGYUN/Abp/OssManagement/OssManagementRemoteServiceConsts.cs @@ -3,4 +3,6 @@ public static class OssManagementRemoteServiceConsts { public const string RemoteServiceName = "AbpOssManagement"; + + public const string ModuleName = "oss-management"; } diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/FileAppServiceBase.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/FileAppServiceBase.cs index 43deed492..8c8e94a9a 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/FileAppServiceBase.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/FileAppServiceBase.cs @@ -31,7 +31,7 @@ public abstract class FileAppServiceBase : OssManagementApplicationServiceBase, } [RequiresFeature(AbpOssManagementFeatureNames.OssObject.UploadFile)] - public async virtual Task UploadAsync(UploadFileChunkInput input) + public async virtual Task UploadChunkAsync(UploadFileChunkInput input) { input.Bucket = GetCurrentBucket(); input.Path = GetCurrentPath(HttpUtility.UrlDecode(input.Path)); diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/Integration/OssObjectIntegrationService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/Integration/OssObjectIntegrationService.cs new file mode 100644 index 000000000..1c4ec170d --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/Integration/OssObjectIntegrationService.cs @@ -0,0 +1,94 @@ +using System; +using System.IO; +using System.Threading.Tasks; +using System.Web; +using Volo.Abp.Content; + +namespace LINGYUN.Abp.OssManagement.Integration; + +public class OssObjectIntegrationService : OssManagementApplicationServiceBase, IOssObjectIntegrationService +{ + protected FileUploadMerger Merger { get; } + protected IOssContainerFactory OssContainerFactory { get; } + + public OssObjectIntegrationService( + FileUploadMerger merger, + IOssContainerFactory ossContainerFactory) + { + Merger = merger; + OssContainerFactory = ossContainerFactory; + } + + public async virtual Task CreateAsync(CreateOssObjectInput input) + { + // 内容为空时建立目录 + if (input.File == null || !input.File.ContentLength.HasValue) + { + var oss = CreateOssContainer(); + var request = new CreateOssObjectRequest( + HttpUtility.UrlDecode(input.Bucket), + HttpUtility.UrlDecode(input.FileName), + Stream.Null, + HttpUtility.UrlDecode(input.Path)); + var ossObject = await oss.CreateObjectAsync(request); + + return ObjectMapper.Map(ossObject); + } + else + { + var ossObject = await Merger.MergeAsync(input); + + return ObjectMapper.Map(ossObject); + } + } + + public async virtual Task DeleteAsync(GetOssObjectInput input) + { + var oss = CreateOssContainer(); + + await oss.DeleteObjectAsync(input.Bucket, input.Object, input.Path); + } + + public async virtual Task ExistsAsync(GetOssObjectInput input) + { + try + { + var oss = CreateOssContainer(); + + var ossObject = await oss.GetObjectAsync(input.Bucket, input.Object, input.Path, input.MD5); + + return new GetOssObjectExistsResult + { + IsExists = ossObject != null + }; + } + catch (Exception) + { + return new GetOssObjectExistsResult + { + IsExists = false, + }; + } + } + + public async virtual Task GetAsync(GetOssObjectInput input) + { + try + { + var oss = CreateOssContainer(); + + var ossObject = await oss.GetObjectAsync(input.Bucket, input.Object, input.Path, input.MD5); + + return new RemoteStreamContent(ossObject.Content, ossObject.Name); + } + catch (Exception) + { + return new RemoteStreamContent(Stream.Null); + } + } + + protected virtual IOssContainer CreateOssContainer() + { + return OssContainerFactory.Create(); + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/PrivateFileAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/PrivateFileAppService.cs index 8326d3309..9dd60a2ef 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/PrivateFileAppService.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/PrivateFileAppService.cs @@ -93,9 +93,9 @@ public class PrivateFileAppService : FileAppServiceBase, IPrivateFileAppService } [Authorize] - public override async Task UploadAsync(UploadFileChunkInput input) + public override async Task UploadChunkAsync(UploadFileChunkInput input) { - await base.UploadAsync(input); + await base.UploadChunkAsync(input); } [Authorize] diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/PublicFileAppService.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/PublicFileAppService.cs index 1d446c1fe..99929c2e0 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/PublicFileAppService.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Application/LINGYUN/Abp/OssManagement/PublicFileAppService.cs @@ -28,12 +28,12 @@ public class PublicFileAppService : FileAppServiceBase, IPublicFileAppService await base.DeleteAsync(input); } - public override async Task UploadAsync(UploadFileChunkInput input) + public override async Task UploadChunkAsync(UploadFileChunkInput input) { await CheckPublicAccessAsync(); await FeatureChecker.CheckEnabledAsync(AbpOssManagementFeatureNames.OssObject.UploadFile); - await base.UploadAsync(input); + await base.UploadChunkAsync(input); } [RequiresLimitFeature( diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/Integration/OssObjectIntegrationClientProxy.Generated.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/Integration/OssObjectIntegrationClientProxy.Generated.cs new file mode 100644 index 000000000..7e5564ba8 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/Integration/OssObjectIntegrationClientProxy.Generated.cs @@ -0,0 +1,54 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.OssManagement; +using LINGYUN.Abp.OssManagement.Integration; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Content; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.OssManagement.Integration; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IOssObjectIntegrationService), typeof(OssObjectIntegrationClientProxy))] +[IntegrationService] +public partial class OssObjectIntegrationClientProxy : ClientProxyBase, IOssObjectIntegrationService +{ + public virtual async Task CreateAsync(CreateOssObjectInput input) + { + return await RequestAsync(nameof(CreateAsync), new ClientProxyRequestTypeValue + { + { typeof(CreateOssObjectInput), input } + }); + } + + public virtual async Task DeleteAsync(GetOssObjectInput input) + { + await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(GetOssObjectInput), input } + }); + } + + public virtual async Task ExistsAsync(GetOssObjectInput input) + { + return await RequestAsync(nameof(ExistsAsync), new ClientProxyRequestTypeValue + { + { typeof(GetOssObjectInput), input } + }); + } + + public virtual async Task GetAsync(GetOssObjectInput input) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(GetOssObjectInput), input } + }); + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/Integration/OssObjectIntegrationClientProxy.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/Integration/OssObjectIntegrationClientProxy.cs new file mode 100644 index 000000000..49dc5b8b7 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/Integration/OssObjectIntegrationClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of OssObjectIntegrationClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.OssManagement.Integration; + +public partial class OssObjectIntegrationClientProxy +{ +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/OssContainerClientProxy.Generated.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/OssContainerClientProxy.Generated.cs new file mode 100644 index 000000000..919b8d23a --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/OssContainerClientProxy.Generated.cs @@ -0,0 +1,59 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.OssManagement; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.OssManagement; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IOssContainerAppService), typeof(OssContainerClientProxy))] +public partial class OssContainerClientProxy : ClientProxyBase, IOssContainerAppService +{ + public virtual async Task CreateAsync(string name) + { + return await RequestAsync(nameof(CreateAsync), new ClientProxyRequestTypeValue + { + { typeof(string), name } + }); + } + + public virtual async Task DeleteAsync(string name) + { + await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(string), name } + }); + } + + public virtual async Task GetAsync(string name) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(string), name } + }); + } + + public virtual async Task GetListAsync(GetOssContainersInput input) + { + return await RequestAsync(nameof(GetListAsync), new ClientProxyRequestTypeValue + { + { typeof(GetOssContainersInput), input } + }); + } + + public virtual async Task GetObjectListAsync(GetOssObjectsInput input) + { + return await RequestAsync(nameof(GetObjectListAsync), new ClientProxyRequestTypeValue + { + { typeof(GetOssObjectsInput), input } + }); + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/OssContainerClientProxy.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/OssContainerClientProxy.cs new file mode 100644 index 000000000..55ae1dfc5 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/OssContainerClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of OssContainerClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.OssManagement; + +public partial class OssContainerClientProxy +{ +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/OssObjectClientProxy.Generated.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/OssObjectClientProxy.Generated.cs new file mode 100644 index 000000000..6c8fc85ef --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/OssObjectClientProxy.Generated.cs @@ -0,0 +1,60 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.OssManagement; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Content; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.OssManagement; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IOssObjectAppService), typeof(OssObjectClientProxy))] +public partial class OssObjectClientProxy : ClientProxyBase, IOssObjectAppService +{ + public virtual async Task CreateAsync(CreateOssObjectInput input) + { + return await RequestAsync(nameof(CreateAsync), new ClientProxyRequestTypeValue + { + { typeof(CreateOssObjectInput), input } + }); + } + + public virtual async Task BulkDeleteAsync(BulkDeleteOssObjectInput input) + { + await RequestAsync(nameof(BulkDeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(BulkDeleteOssObjectInput), input } + }); + } + + public virtual async Task DeleteAsync(GetOssObjectInput input) + { + await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(GetOssObjectInput), input } + }); + } + + public virtual async Task GetAsync(GetOssObjectInput input) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(GetOssObjectInput), input } + }); + } + + public virtual async Task GetContentAsync(GetOssObjectInput input) + { + return await RequestAsync(nameof(GetContentAsync), new ClientProxyRequestTypeValue + { + { typeof(GetOssObjectInput), input } + }); + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/OssObjectClientProxy.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/OssObjectClientProxy.cs new file mode 100644 index 000000000..8f562ff69 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/OssObjectClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of OssObjectClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.OssManagement; + +public partial class OssObjectClientProxy +{ +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/PrivateFilesClientProxy.Generated.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/PrivateFilesClientProxy.Generated.cs new file mode 100644 index 000000000..8a211c7f2 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/PrivateFilesClientProxy.Generated.cs @@ -0,0 +1,73 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.OssManagement; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Content; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.OssManagement; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IFileAppService), typeof(PrivateFilesClientProxy))] +public partial class PrivateFilesClientProxy : ClientProxyBase, IFileAppService +{ + public virtual async Task UploadAsync(UploadFileInput input) + { + return await RequestAsync(nameof(UploadAsync), new ClientProxyRequestTypeValue + { + { typeof(UploadFileInput), input } + }); + } + + public virtual async Task UploadChunkAsync(UploadFileChunkInput input) + { + await RequestAsync(nameof(UploadChunkAsync), new ClientProxyRequestTypeValue + { + { typeof(UploadFileChunkInput), input } + }); + } + + public virtual async Task> GetListAsync(GetFilesInput input) + { + return await RequestAsync>(nameof(GetListAsync), new ClientProxyRequestTypeValue + { + { typeof(GetFilesInput), input } + }); + } + + public virtual async Task GetAsync(GetPublicFileInput input) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(GetPublicFileInput), input } + }); + } + + public virtual async Task DeleteAsync(GetPublicFileInput input) + { + await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(GetPublicFileInput), input } + }); + } + + public virtual async Task> GetShareListAsync() + { + return await RequestAsync>(nameof(GetShareListAsync)); + } + + public virtual async Task ShareAsync(FileShareInput input) + { + return await RequestAsync(nameof(ShareAsync), new ClientProxyRequestTypeValue + { + { typeof(FileShareInput), input } + }); + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/PrivateFilesClientProxy.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/PrivateFilesClientProxy.cs new file mode 100644 index 000000000..f0773a784 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/PrivateFilesClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of PrivateFilesClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.OssManagement; + +public partial class PrivateFilesClientProxy +{ +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/PublicFilesClientProxy.Generated.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/PublicFilesClientProxy.Generated.cs new file mode 100644 index 000000000..7298889ae --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/PublicFilesClientProxy.Generated.cs @@ -0,0 +1,60 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.OssManagement; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Content; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.OssManagement; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IFileAppService), typeof(PublicFilesClientProxy))] +public partial class PublicFilesClientProxy : ClientProxyBase, IFileAppService +{ + public virtual async Task UploadAsync(UploadFileInput input) + { + return await RequestAsync(nameof(UploadAsync), new ClientProxyRequestTypeValue + { + { typeof(UploadFileInput), input } + }); + } + + public virtual async Task UploadChunkAsync(UploadFileChunkInput input) + { + await RequestAsync(nameof(UploadChunkAsync), new ClientProxyRequestTypeValue + { + { typeof(UploadFileChunkInput), input } + }); + } + + public virtual async Task> GetListAsync(GetFilesInput input) + { + return await RequestAsync>(nameof(GetListAsync), new ClientProxyRequestTypeValue + { + { typeof(GetFilesInput), input } + }); + } + + public virtual async Task GetAsync(GetPublicFileInput input) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(GetPublicFileInput), input } + }); + } + + public virtual async Task DeleteAsync(GetPublicFileInput input) + { + await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(GetPublicFileInput), input } + }); + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/PublicFilesClientProxy.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/PublicFilesClientProxy.cs new file mode 100644 index 000000000..8fdb18270 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/PublicFilesClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of PublicFilesClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.OssManagement; + +public partial class PublicFilesClientProxy +{ +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/StaticFilesClientProxy.Generated.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/StaticFilesClientProxy.Generated.cs new file mode 100644 index 000000000..aa8491289 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/StaticFilesClientProxy.Generated.cs @@ -0,0 +1,28 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.OssManagement; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Content; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.OssManagement; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IStaticFilesAppService), typeof(StaticFilesClientProxy))] +public partial class StaticFilesClientProxy : ClientProxyBase, IStaticFilesAppService +{ + public virtual async Task GetAsync(GetStaticFileInput input) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(GetStaticFileInput), input } + }); + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/StaticFilesClientProxy.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/StaticFilesClientProxy.cs new file mode 100644 index 000000000..bb107d230 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/OssManagement/StaticFilesClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of StaticFilesClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.OssManagement; + +public partial class StaticFilesClientProxy +{ +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/oss-management-generate-proxy.json b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/oss-management-generate-proxy.json new file mode 100644 index 000000000..6349bd2e6 --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/ClientProxies/oss-management-generate-proxy.json @@ -0,0 +1,2834 @@ +{ + "modules": { + "oss-management": { + "rootPath": "oss-management", + "remoteServiceName": "AbpOssManagement", + "controllers": { + "LINGYUN.Abp.OssManagement.Integration.OssObjectIntegrationController": { + "controllerName": "OssObjectIntegration", + "controllerGroupName": "OssObjectIntegration", + "isRemoteService": true, + "isIntegrationService": true, + "apiVersion": null, + "type": "LINGYUN.Abp.OssManagement.Integration.OssObjectIntegrationController", + "interfaces": [ + { + "type": "LINGYUN.Abp.OssManagement.Integration.IOssObjectIntegrationService", + "name": "IOssObjectIntegrationService", + "methods": [ + { + "name": "CreateAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.CreateOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.CreateOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.CreateOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectDto" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "ExistsAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.Integration.GetOssObjectExistsResult", + "typeSimple": "LINGYUN.Abp.OssManagement.Integration.GetOssObjectExistsResult" + } + }, + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + } + } + ] + } + ], + "actions": { + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "integration-api/oss-management/objects", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.CreateOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.CreateOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.CreateOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "FileName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Overwrite", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "File", + "jsonName": null, + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "FormFile", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ExpirationTime", + "jsonName": null, + "type": "System.TimeSpan?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.Integration.IOssObjectIntegrationService" + }, + "DeleteAsyncByInput": { + "uniqueName": "DeleteAsyncByInput", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "integration-api/oss-management/objects", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Object", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MD5", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.Integration.IOssObjectIntegrationService" + }, + "ExistsAsyncByInput": { + "uniqueName": "ExistsAsyncByInput", + "name": "ExistsAsync", + "httpMethod": "GET", + "url": "integration-api/oss-management/objects/exists", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Object", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MD5", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.Integration.GetOssObjectExistsResult", + "typeSimple": "LINGYUN.Abp.OssManagement.Integration.GetOssObjectExistsResult" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.Integration.IOssObjectIntegrationService" + }, + "GetAsyncByInput": { + "uniqueName": "GetAsyncByInput", + "name": "GetAsync", + "httpMethod": "GET", + "url": "integration-api/oss-management/objects/download", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Object", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MD5", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.Integration.IOssObjectIntegrationService" + } + } + }, + "LINGYUN.Abp.OssManagement.OssContainerController": { + "controllerName": "OssContainer", + "controllerGroupName": "OssContainer", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.OssManagement.OssContainerController", + "interfaces": [ + { + "type": "LINGYUN.Abp.OssManagement.IOssContainerAppService", + "name": "IOssContainerAppService", + "methods": [ + { + "name": "CreateAsync", + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssContainerDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssContainerDto" + } + }, + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssContainerDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssContainerDto" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssContainersInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssContainersInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssContainersInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssContainersResultDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssContainersResultDto" + } + }, + { + "name": "GetObjectListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectsInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectsInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectsInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectsResultDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectsResultDto" + } + } + ] + } + ], + "actions": { + "CreateAsyncByName": { + "uniqueName": "CreateAsyncByName", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/oss-management/containes/{name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "name", + "name": "name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssContainerDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssContainerDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IOssContainerAppService" + }, + "DeleteAsyncByName": { + "uniqueName": "DeleteAsyncByName", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/oss-management/containes/{name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "name", + "name": "name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IOssContainerAppService" + }, + "GetAsyncByName": { + "uniqueName": "GetAsyncByName", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/oss-management/containes/{name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "name", + "name": "name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssContainerDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssContainerDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IOssContainerAppService" + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/oss-management/containes", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssContainersInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssContainersInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssContainersInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Prefix", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Marker", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssContainersResultDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssContainersResultDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IOssContainerAppService" + }, + "GetObjectListAsyncByInput": { + "uniqueName": "GetObjectListAsyncByInput", + "name": "GetObjectListAsync", + "httpMethod": "GET", + "url": "api/oss-management/containes/objects", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectsInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectsInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectsInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Prefix", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Delimiter", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Marker", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "EncodingType", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MD5", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectsResultDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectsResultDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IOssContainerAppService" + } + } + }, + "LINGYUN.Abp.OssManagement.OssObjectController": { + "controllerName": "OssObject", + "controllerGroupName": "OssObject", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.OssManagement.OssObjectController", + "interfaces": [ + { + "type": "LINGYUN.Abp.OssManagement.IOssObjectAppService", + "name": "IOssObjectAppService", + "methods": [ + { + "name": "CreateAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.CreateOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.CreateOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.CreateOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectDto" + } + }, + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectDto" + } + }, + { + "name": "GetContentAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "BulkDeleteAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.BulkDeleteOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.BulkDeleteOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.BulkDeleteOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/oss-management/objects", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.CreateOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.CreateOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.CreateOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "FileName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Overwrite", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "File", + "jsonName": null, + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "FormFile", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ExpirationTime", + "jsonName": null, + "type": "System.TimeSpan?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IOssObjectAppService" + }, + "UploadAsyncByInput": { + "uniqueName": "UploadAsyncByInput", + "name": "UploadAsync", + "httpMethod": "POST", + "url": "api/oss-management/objects/upload", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.UploadFileChunkInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "typeSimple": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ChunkSize", + "jsonName": null, + "type": "System.Int64", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "CurrentChunkSize", + "jsonName": null, + "type": "System.Int64", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ChunkNumber", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "TotalChunks", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "File", + "jsonName": null, + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "FormFile", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "TotalSize", + "jsonName": null, + "type": "System.Int64", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "FileName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.OssManagement.OssObjectController" + }, + "BulkDeleteAsyncByInput": { + "uniqueName": "BulkDeleteAsyncByInput", + "name": "BulkDeleteAsync", + "httpMethod": "POST", + "url": "api/oss-management/objects/bulk-delete", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.BulkDeleteOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.BulkDeleteOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.BulkDeleteOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.OssManagement.BulkDeleteOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.BulkDeleteOssObjectInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IOssObjectAppService" + }, + "DeleteAsyncByInput": { + "uniqueName": "DeleteAsyncByInput", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/oss-management/objects", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Object", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MD5", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IOssObjectAppService" + }, + "GetAsyncByInput": { + "uniqueName": "GetAsyncByInput", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/oss-management/objects", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Object", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MD5", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IOssObjectAppService" + }, + "GetContentAsyncByInput": { + "uniqueName": "GetContentAsyncByInput", + "name": "GetContentAsync", + "httpMethod": "GET", + "url": "api/oss-management/objects/download", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Object", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MD5", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IOssObjectAppService" + } + } + }, + "LINGYUN.Abp.OssManagement.PrivateFilesController": { + "controllerName": "PrivateFiles", + "controllerGroupName": "PrivateFiles", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.OssManagement.PrivateFilesController", + "interfaces": [ + { + "type": "LINGYUN.Abp.OssManagement.IPrivateFileAppService", + "name": "IPrivateFileAppService", + "methods": [ + { + "name": "ShareAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.FileShareInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.FileShareInput", + "typeSimple": "LINGYUN.Abp.OssManagement.FileShareInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.FileShareDto", + "typeSimple": "LINGYUN.Abp.OssManagement.FileShareDto" + } + }, + { + "name": "GetShareListAsync", + "parametersOnMethod": [], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + { + "name": "UploadAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.UploadFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.UploadFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.UploadFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectDto" + } + }, + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetPublicFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + } + }, + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetFilesInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetFilesInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetFilesInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + { + "name": "UploadChunkAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.UploadFileChunkInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "typeSimple": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetPublicFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + }, + { + "type": "LINGYUN.Abp.OssManagement.IFileAppService", + "name": "IFileAppService", + "methods": [ + { + "name": "UploadAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.UploadFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.UploadFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.UploadFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectDto" + } + }, + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetPublicFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + } + }, + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetFilesInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetFilesInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetFilesInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + { + "name": "UploadChunkAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.UploadFileChunkInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "typeSimple": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetPublicFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "UploadAsyncByInput": { + "uniqueName": "UploadAsyncByInput", + "name": "UploadAsync", + "httpMethod": "POST", + "url": "api/files/private", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.UploadFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.UploadFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.UploadFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Object", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Overwrite", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "File", + "jsonName": null, + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "FormFile", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IFileAppService" + }, + "UploadChunkAsyncByInput": { + "uniqueName": "UploadChunkAsyncByInput", + "name": "UploadChunkAsync", + "httpMethod": "POST", + "url": "api/files/private/upload", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.UploadFileChunkInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "typeSimple": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ChunkSize", + "jsonName": null, + "type": "System.Int64", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "CurrentChunkSize", + "jsonName": null, + "type": "System.Int64", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ChunkNumber", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "TotalChunks", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "File", + "jsonName": null, + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "FormFile", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "TotalSize", + "jsonName": null, + "type": "System.Int64", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "FileName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IFileAppService" + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/files/private/search", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetFilesInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetFilesInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetFilesInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IFileAppService" + }, + "GetAsyncByInput": { + "uniqueName": "GetAsyncByInput", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/files/private/{Name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetPublicFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IFileAppService" + }, + "DeleteAsyncByInput": { + "uniqueName": "DeleteAsyncByInput", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/files/private", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetPublicFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Process", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "TenantId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IFileAppService" + }, + "GetShareListAsync": { + "uniqueName": "GetShareListAsync", + "name": "GetShareListAsync", + "httpMethod": "GET", + "url": "api/files/private/share", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IPrivateFileAppService" + }, + "ShareAsyncByInput": { + "uniqueName": "ShareAsyncByInput", + "name": "ShareAsync", + "httpMethod": "POST", + "url": "api/files/private/share", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.FileShareInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.FileShareInput", + "typeSimple": "LINGYUN.Abp.OssManagement.FileShareInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.OssManagement.FileShareInput", + "typeSimple": "LINGYUN.Abp.OssManagement.FileShareInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.FileShareDto", + "typeSimple": "LINGYUN.Abp.OssManagement.FileShareDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IPrivateFileAppService" + } + } + }, + "LINGYUN.Abp.OssManagement.PublicFilesController": { + "controllerName": "PublicFiles", + "controllerGroupName": "PublicFiles", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.OssManagement.PublicFilesController", + "interfaces": [ + { + "type": "LINGYUN.Abp.OssManagement.IPublicFileAppService", + "name": "IPublicFileAppService", + "methods": [ + { + "name": "UploadAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.UploadFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.UploadFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.UploadFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectDto" + } + }, + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetPublicFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + } + }, + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetFilesInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetFilesInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetFilesInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + { + "name": "UploadChunkAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.UploadFileChunkInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "typeSimple": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetPublicFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + }, + { + "type": "LINGYUN.Abp.OssManagement.IFileAppService", + "name": "IFileAppService", + "methods": [ + { + "name": "UploadAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.UploadFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.UploadFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.UploadFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectDto" + } + }, + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetPublicFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + } + }, + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetFilesInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetFilesInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetFilesInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + { + "name": "UploadChunkAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.UploadFileChunkInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "typeSimple": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetPublicFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "UploadAsyncByInput": { + "uniqueName": "UploadAsyncByInput", + "name": "UploadAsync", + "httpMethod": "POST", + "url": "api/files/public", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.UploadFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.UploadFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.UploadFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Object", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Overwrite", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "File", + "jsonName": null, + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "FormFile", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IFileAppService" + }, + "UploadChunkAsyncByInput": { + "uniqueName": "UploadChunkAsyncByInput", + "name": "UploadChunkAsync", + "httpMethod": "POST", + "url": "api/files/public/upload", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.UploadFileChunkInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "typeSimple": "LINGYUN.Abp.OssManagement.UploadFileChunkInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ChunkSize", + "jsonName": null, + "type": "System.Int64", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "CurrentChunkSize", + "jsonName": null, + "type": "System.Int64", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ChunkNumber", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "TotalChunks", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "File", + "jsonName": null, + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "FormFile", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "TotalSize", + "jsonName": null, + "type": "System.Int64", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "FileName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IFileAppService" + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/files/public/search", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetFilesInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetFilesInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetFilesInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IFileAppService" + }, + "GetAsyncByInput": { + "uniqueName": "GetAsyncByInput", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/files/public/{Name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetPublicFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IFileAppService" + }, + "DeleteAsyncByInput": { + "uniqueName": "DeleteAsyncByInput", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/files/public", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetPublicFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetPublicFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Process", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "TenantId", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IFileAppService" + } + } + }, + "LINGYUN.Abp.OssManagement.StaticFilesController": { + "controllerName": "StaticFiles", + "controllerGroupName": "StaticFiles", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.OssManagement.StaticFilesController", + "interfaces": [ + { + "type": "LINGYUN.Abp.OssManagement.IStaticFilesAppService", + "name": "IStaticFilesAppService", + "methods": [ + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetStaticFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetStaticFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetStaticFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + } + } + ] + } + ], + "actions": { + "UploadAsyncByInput": { + "uniqueName": "UploadAsyncByInput", + "name": "UploadAsync", + "httpMethod": "POST", + "url": "api/files/static", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.CreateOssObjectInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.CreateOssObjectInput", + "typeSimple": "LINGYUN.Abp.OssManagement.CreateOssObjectInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Path", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "FileName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Overwrite", + "jsonName": null, + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "File", + "jsonName": null, + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "FormFile", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ExpirationTime", + "jsonName": null, + "type": "System.TimeSpan?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Form", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.OssManagement.OssObjectDto", + "typeSimple": "LINGYUN.Abp.OssManagement.OssObjectDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.OssManagement.StaticFilesController" + }, + "GetAsyncByInput": { + "uniqueName": "GetAsyncByInput", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/files/static/{Bucket}/{Name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.OssManagement.GetStaticFileInput, LINGYUN.Abp.OssManagement.Application.Contracts", + "type": "LINGYUN.Abp.OssManagement.GetStaticFileInput", + "typeSimple": "LINGYUN.Abp.OssManagement.GetStaticFileInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Bucket", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Content.IRemoteStreamContent", + "typeSimple": "Volo.Abp.Content.IRemoteStreamContent" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.OssManagement.IStaticFilesAppService" + } + } + } + } + } + }, + "types": {} +} \ No newline at end of file diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/LINGYUN.Abp.OssManagement.HttpApi.Client.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/LINGYUN.Abp.OssManagement.HttpApi.Client.csproj index 010b44479..8eb7c4251 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/LINGYUN.Abp.OssManagement.HttpApi.Client.csproj +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/LINGYUN.Abp.OssManagement.HttpApi.Client.csproj @@ -13,6 +13,14 @@ + + + + + + + + diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/LINGYUN/Abp/OssManagement/AbpOssManagementHttpApiClientModule.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/LINGYUN/Abp/OssManagement/AbpOssManagementHttpApiClientModule.cs index 10fda813c..fb83ae959 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/LINGYUN/Abp/OssManagement/AbpOssManagementHttpApiClientModule.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi.Client/LINGYUN/Abp/OssManagement/AbpOssManagementHttpApiClientModule.cs @@ -11,7 +11,7 @@ public class AbpOssManagementHttpApiClientModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { - context.Services.AddHttpClientProxies( + context.Services.AddStaticHttpClientProxies( typeof(AbpOssManagementApplicationContractsModule).Assembly, OssManagementRemoteServiceConsts.RemoteServiceName ); diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN.Abp.OssManagement.HttpApi.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN.Abp.OssManagement.HttpApi.csproj index df3f1aad0..84222acf2 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN.Abp.OssManagement.HttpApi.csproj +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN.Abp.OssManagement.HttpApi.csproj @@ -1,4 +1,4 @@ - + diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/Integration/OssObjectIntegrationController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/Integration/OssObjectIntegrationController.cs new file mode 100644 index 000000000..38371114c --- /dev/null +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/Integration/OssObjectIntegrationController.cs @@ -0,0 +1,47 @@ +using Asp.Versioning; +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Content; + +namespace LINGYUN.Abp.OssManagement.Integration; + +[Area(OssManagementRemoteServiceConsts.ModuleName)] +[ControllerName("OssObjectIntegration")] +[RemoteService(Name = OssManagementRemoteServiceConsts.RemoteServiceName)] +[Route($"integration-api/{OssManagementRemoteServiceConsts.ModuleName}/objects")] +public class OssObjectIntegrationController : AbpControllerBase, IOssObjectIntegrationService +{ + private readonly IOssObjectIntegrationService _service; + public OssObjectIntegrationController(IOssObjectIntegrationService service) + { + _service = service; + } + + [HttpPost] + public virtual Task CreateAsync([FromForm] CreateOssObjectInput input) + { + return _service.CreateAsync(input); + } + + [HttpDelete] + public virtual Task DeleteAsync(GetOssObjectInput input) + { + return _service.DeleteAsync(input); + } + + [HttpGet] + [Route("exists")] + public virtual Task ExistsAsync(GetOssObjectInput input) + { + return _service.ExistsAsync(input); + } + + [HttpGet] + [Route("download")] + public virtual Task GetAsync(GetOssObjectInput input) + { + return _service.GetAsync(input); + } +} diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PrivateFilesController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PrivateFilesController.cs index ee1b98f90..18dd39183 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PrivateFilesController.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PrivateFilesController.cs @@ -34,9 +34,9 @@ public class PrivateFilesController : AbpControllerBase, IPrivateFileAppService [HttpPost] [Route("upload")] - public async virtual Task UploadAsync([FromForm] UploadFileChunkInput input) + public async virtual Task UploadChunkAsync([FromForm] UploadFileChunkInput input) { - await _service.UploadAsync(input); + await _service.UploadChunkAsync(input); } [HttpGet] diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PublicFilesController.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PublicFilesController.cs index 8e9b6eedc..fe61a59bb 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PublicFilesController.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.HttpApi/LINGYUN/Abp/OssManagement/PublicFilesController.cs @@ -32,9 +32,9 @@ public class PublicFilesController : AbpControllerBase, IPublicFileAppService [HttpPost] [Route("upload")] - public async virtual Task UploadAsync([FromForm] UploadFileChunkInput input) + public async virtual Task UploadChunkAsync([FromForm] UploadFileChunkInput input) { - await _publicFileAppService.UploadAsync(input); + await _publicFileAppService.UploadChunkAsync(input); } [HttpGet] diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Localization/ApplicationContracts/en.json b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Localization/ApplicationContracts/en.json index 79262759c..3e509e876 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Localization/ApplicationContracts/en.json +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Localization/ApplicationContracts/en.json @@ -36,6 +36,7 @@ "Permission:ManageComments": "Manage Comments", "Permission:SmsMessage": "Sms Message", "Permission:EmailMessage": "Email Message", - "Permission:SendMessage": "Send Message" + "Permission:SendMessage": "Send Message", + "Permission:Enterprise": "Enterprise" } } \ No newline at end of file diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Localization/ApplicationContracts/zh-Hans.json b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Localization/ApplicationContracts/zh-Hans.json index 4be53a1a5..675bc1ce9 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Localization/ApplicationContracts/zh-Hans.json +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Localization/ApplicationContracts/zh-Hans.json @@ -36,6 +36,7 @@ "Permission:ManageComments": "评论管理", "Permission:SmsMessage": "短信消息", "Permission:EmailMessage": "邮件消息", - "Permission:SendMessage": "发送消息" + "Permission:SendMessage": "发送消息", + "Permission:Enterprise": "企业关联" } } \ No newline at end of file diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Permissions/PlatformPermissionDefinitionProvider.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Permissions/PlatformPermissionDefinitionProvider.cs index 0ad088bce..2139070c1 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Permissions/PlatformPermissionDefinitionProvider.cs +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Permissions/PlatformPermissionDefinitionProvider.cs @@ -1,6 +1,7 @@ using LINGYUN.Platform.Localization; using Volo.Abp.Authorization.Permissions; using Volo.Abp.Localization; +using Volo.Abp.MultiTenancy; namespace LINGYUN.Platform.Permissions; @@ -43,6 +44,11 @@ public class PlatformPermissionDefinitionProvider : PermissionDefinitionProvider feedback.AddChild(PlatformPermissions.Feedback.ManageAttachments, L("Permission:ManageAttachments")); feedback.AddChild(PlatformPermissions.Feedback.ManageComments, L("Permission:ManageComments")); + var enterprise = platform.AddPermission(PlatformPermissions.Enterprise.Default, L("Permission:Enterprise")); + enterprise.AddChild(PlatformPermissions.Enterprise.Create, L("Permission:Create"), MultiTenancySides.Host); + enterprise.AddChild(PlatformPermissions.Enterprise.Update, L("Permission:Update"), MultiTenancySides.Host); + enterprise.AddChild(PlatformPermissions.Enterprise.Delete, L("Permission:Delete"), MultiTenancySides.Host); + var emailMessage = platform.AddPermission(PlatformPermissions.EmailMessage.Default, L("Permission:EmailMessage")); emailMessage.AddChild(PlatformPermissions.EmailMessage.SendMessage, L("Permission:SendMessage")); emailMessage.AddChild(PlatformPermissions.EmailMessage.Delete, L("Permission:Delete")); diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Permissions/PlatformPermissions.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Permissions/PlatformPermissions.cs index 781c30822..6c48dca93 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Permissions/PlatformPermissions.cs +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Permissions/PlatformPermissions.cs @@ -6,7 +6,7 @@ public static class PlatformPermissions { public const string GroupName = "Platform"; - public class DataDictionary + public static class DataDictionary { public const string Default = GroupName + ".DataDictionary"; @@ -21,7 +21,7 @@ public static class PlatformPermissions public const string ManageItems = Default + ".ManageItems"; } - public class Layout + public static class Layout { public const string Default = GroupName + ".Layout"; @@ -32,7 +32,7 @@ public static class PlatformPermissions public const string Delete = Default + ".Delete"; } - public class Menu + public static class Menu { public const string Default = GroupName + ".Menu"; @@ -53,7 +53,7 @@ public static class PlatformPermissions /// /// 文件系统 /// - public class FileSystem + public static class FileSystem { public const string Default = GroupName + ".FileSystem"; @@ -67,7 +67,7 @@ public static class PlatformPermissions public const string Move = Default + ".Move"; - public class FileManager + public static class FileManager { public const string Default = FileSystem.Default + ".FileManager"; @@ -85,7 +85,7 @@ public static class PlatformPermissions } } - public class Package + public static class Package { public const string Default = GroupName + ".Package"; @@ -98,7 +98,7 @@ public static class PlatformPermissions public const string ManageBlobs = Default + ".ManageBlobs"; } - public class Feedback + public static class Feedback { public const string Default = GroupName + ".Feedback"; @@ -113,7 +113,18 @@ public static class PlatformPermissions public const string ManageAttachments = Default + ".ManageAttachments"; } - public class EmailMessage + public static class Enterprise + { + public const string Default = GroupName + ".Enterprise"; + + public const string Create = Default + ".Create"; + + public const string Delete = Default + ".Delete"; + + public const string Update = Default + ".Update"; + } + + public static class EmailMessage { public const string Default = GroupName + ".EmailMessage"; @@ -122,7 +133,7 @@ public static class PlatformPermissions public const string SendMessage = Default + ".SendMessage"; } - public class SmsMessage + public static class SmsMessage { public const string Default = GroupName + ".SmsMessage"; diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseCreateDto.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseCreateDto.cs new file mode 100644 index 000000000..f2e2fa198 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseCreateDto.cs @@ -0,0 +1,14 @@ +using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; + +namespace LINGYUN.Platform.Portal; + +public class EnterpriseCreateDto : EnterpriseCreateOrUpdateDto +{ + /// + /// 名称 + /// + [Required] + [DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxNameLength))] + public string Name { get; set; } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseCreateOrUpdateDto.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseCreateOrUpdateDto.cs new file mode 100644 index 000000000..777776f85 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseCreateOrUpdateDto.cs @@ -0,0 +1,55 @@ +using System; +using Volo.Abp.Validation; + +namespace LINGYUN.Platform.Portal; + +public abstract class EnterpriseCreateOrUpdateDto +{ + /// + /// 关联租户 + /// + public Guid? TenantId { get; set; } + /// + /// 英文名称 + /// + [DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxEnglishNameLength))] + public string EnglishName { get; set; } + /// + /// Logo + /// + [DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxLogoLength))] + public string Logo { get; set; } + /// + /// 地址 + /// + [DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxAddressLength))] + public string Address { get; set; } + /// + /// 法人代表 + /// + [DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxLegalManLength))] + public string LegalMan { get; set; } + /// + /// 税务登记号 + /// + [DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxTaxCodeLength))] + public string TaxCode { get; set; } + /// + /// 组织机构代码 + /// + [DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxOrganizationCodeLength))] + public string OrganizationCode { get; set; } + /// + /// 注册代码 + /// + [DynamicStringLength(typeof(EnterpriseConsts), nameof(EnterpriseConsts.MaxRegistrationCodeLength))] + public string RegistrationCode { get; set; } + /// + /// 注册日期 + /// + public DateTime? RegistrationDate { get; set; } + /// + /// 过期日期 + /// + public DateTime? ExpirationDate { get; set; } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseDto.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseDto.cs new file mode 100644 index 000000000..1072e502e --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseDto.cs @@ -0,0 +1,21 @@ +using System; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Domain.Entities; + +namespace LINGYUN.Platform.Portal; + +public class EnterpriseDto : ExtensibleAuditedEntityDto, IHasConcurrencyStamp +{ + public Guid? TenantId { get; set; } + public string Name { get; set; } + public string EnglishName { get; set; } + public string Logo { get; set; } + public string Address { get; set; } + public string LegalMan { get; set; } + public string TaxCode { get; set; } + public string OrganizationCode { get; set; } + public string RegistrationCode { get; set; } + public DateTime? RegistrationDate { get; set; } + public DateTime? ExpirationDate { get; set; } + public string ConcurrencyStamp { get; set; } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseGetListInput.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseGetListInput.cs new file mode 100644 index 000000000..ecbea0869 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseGetListInput.cs @@ -0,0 +1,17 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace LINGYUN.Platform.Portal; + +public class EnterpriseGetListInput : PagedAndSortedResultRequestDto +{ + public string Filter { get; set; } + + public DateTime? BeginRegistrationDate { get; set; } + + public DateTime? EndRegistrationDate { get; set; } + + public DateTime? BeginExpirationDate { get; set; } + + public DateTime? EndExpirationDate { get; set; } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseUpdateDto.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseUpdateDto.cs new file mode 100644 index 000000000..fa74414bb --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/Dto/EnterpriseUpdateDto.cs @@ -0,0 +1,8 @@ +using Volo.Abp.Domain.Entities; + +namespace LINGYUN.Platform.Portal; + +public class EnterpriseUpdateDto : EnterpriseCreateOrUpdateDto, IHasConcurrencyStamp +{ + public string ConcurrencyStamp { get; set; } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/IEnterpriseAppService.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/IEnterpriseAppService.cs new file mode 100644 index 000000000..6e7c04e46 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application.Contracts/LINGYUN/Platform/Portal/IEnterpriseAppService.cs @@ -0,0 +1,14 @@ +using System; +using Volo.Abp.Application.Services; + +namespace LINGYUN.Platform.Portal; + +public interface IEnterpriseAppService : + ICrudAppService< + EnterpriseDto, + Guid, + EnterpriseGetListInput, + EnterpriseCreateDto, + EnterpriseUpdateDto> +{ +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationCurdAppServiceBase.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationCurdAppServiceBase.cs new file mode 100644 index 000000000..1dd6d2d61 --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationCurdAppServiceBase.cs @@ -0,0 +1,18 @@ +using LINGYUN.Platform.Localization; +using Volo.Abp.Application.Services; +using Volo.Abp.Domain.Entities; +using Volo.Abp.Domain.Repositories; + +namespace LINGYUN.Platform; + +public abstract class PlatformApplicationCurdAppServiceBase : + CrudAppService + where TEntity : class, IEntity +{ + protected PlatformApplicationCurdAppServiceBase( + IRepository repository) : base(repository) + { + LocalizationResource = typeof(PlatformResource); + ObjectMapperContext = typeof(PlatformApplicationModule); + } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationMappingProfile.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationMappingProfile.cs index 7cf94cc13..6c18a4a22 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationMappingProfile.cs +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationMappingProfile.cs @@ -5,6 +5,7 @@ using LINGYUN.Platform.Layouts; using LINGYUN.Platform.Menus; using LINGYUN.Platform.Messages; using LINGYUN.Platform.Packages; +using LINGYUN.Platform.Portal; namespace LINGYUN.Platform; @@ -32,5 +33,7 @@ public class PlatformApplicationMappingProfile : Profile CreateMap(); CreateMap(); CreateMap(); + + CreateMap(); } } diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationModule.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationModule.cs index ee12a2150..2bd462842 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationModule.cs +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationModule.cs @@ -17,7 +17,7 @@ public class PlatformApplicationModule : AbpModule Configure(options => { - options.AddProfile(validate: true); + options.AddMaps(validate: true); }); } } diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationServiceBase.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationServiceBase.cs index b3961579f..c453a01b5 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationServiceBase.cs +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/PlatformApplicationServiceBase.cs @@ -1,4 +1,5 @@ -using Volo.Abp.Application.Services; +using LINGYUN.Platform.Localization; +using Volo.Abp.Application.Services; namespace LINGYUN.Platform; @@ -6,6 +7,7 @@ public abstract class PlatformApplicationServiceBase : ApplicationService { protected PlatformApplicationServiceBase() { - + LocalizationResource = typeof(PlatformResource); + ObjectMapperContext = typeof(PlatformApplicationModule); } } diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/Portal/EnterpriseAppService.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/Portal/EnterpriseAppService.cs new file mode 100644 index 000000000..970349e8d --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Application/LINGYUN/Platform/Portal/EnterpriseAppService.cs @@ -0,0 +1,147 @@ +using LINGYUN.Platform.Permissions; +using Microsoft.AspNetCore.Authorization; +using System; +using System.Linq; +using System.Linq.Expressions; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Data; + +namespace LINGYUN.Platform.Portal; + +[Authorize(PlatformPermissions.Enterprise.Default)] +public class EnterpriseAppService : + PlatformApplicationCurdAppServiceBase< + Enterprise, + EnterpriseDto, + Guid, + EnterpriseGetListInput, + EnterpriseCreateDto, + EnterpriseUpdateDto>, + IEnterpriseAppService +{ + protected IEnterpriseRepository EnterpriseRepository { get; } + + public EnterpriseAppService(IEnterpriseRepository repository) + : base(repository) + { + EnterpriseRepository = repository; + + CreatePolicyName = PlatformPermissions.Enterprise.Create; + UpdatePolicyName = PlatformPermissions.Enterprise.Update; + DeletePolicyName = PlatformPermissions.Enterprise.Delete; + GetListPolicyName = PlatformPermissions.Enterprise.Default; + GetPolicyName = PlatformPermissions.Enterprise.Default; + } + + protected async override Task MapToEntityAsync(EnterpriseCreateDto createInput) + { + if (await EnterpriseRepository.FindByNameAsync(createInput.Name) != null) + { + throw new BusinessException(PlatformErrorCodes.DuplicateEnterpriseName) + .WithData("Name", createInput.Name); + } + + if (!createInput.EnglishName.IsNullOrWhiteSpace()) + { + if (await EnterpriseRepository.FindByNameAsync(createInput.EnglishName) != null) + { + throw new BusinessException(PlatformErrorCodes.DuplicateEnterpriseName) + .WithData("Name", createInput.EnglishName); + } + } + + var enterprise = new Enterprise( + GuidGenerator.Create(), + createInput.Name, + createInput.Address, + createInput.TaxCode, + createInput.OrganizationCode, + createInput.RegistrationCode, + createInput.RegistrationDate, + createInput.ExpirationDate, + createInput.TenantId); + + UpdateByInput(enterprise, createInput); + + return enterprise; + } + + protected async override Task MapToEntityAsync(EnterpriseUpdateDto updateInput, Enterprise entity) + { + if (!string.Equals(entity.EnglishName, updateInput.EnglishName, StringComparison.InvariantCultureIgnoreCase)) + { + if (await EnterpriseRepository.FindByNameAsync(updateInput.EnglishName) != null) + { + throw new BusinessException(PlatformErrorCodes.DuplicateEnterpriseName) + .WithData("Name", updateInput.EnglishName); + } + } + + UpdateByInput(entity, updateInput); + + entity.SetConcurrencyStampIfNotNull(updateInput.ConcurrencyStamp); + } + + protected override void TryToSetTenantId(Enterprise entity) + { + // ignore tenant + } + + protected async override Task DeleteByIdAsync(Guid id) + { + var enterprise = await Repository.GetAsync(id); + + await Repository.DeleteAsync(enterprise); + } + + protected virtual void UpdateByInput(Enterprise enterprise, EnterpriseCreateOrUpdateDto input) + { + if (!string.Equals(enterprise.EnglishName, input.EnglishName, StringComparison.InvariantCultureIgnoreCase)) + { + enterprise.EnglishName = input.EnglishName; + } + if (!string.Equals(enterprise.Logo, input.Logo, StringComparison.InvariantCultureIgnoreCase)) + { + enterprise.Logo = input.Logo; + } + if (!string.Equals(enterprise.Address, input.Address, StringComparison.InvariantCultureIgnoreCase)) + { + enterprise.Address = input.Address; + } + if (!string.Equals(enterprise.LegalMan, input.LegalMan, StringComparison.InvariantCultureIgnoreCase)) + { + enterprise.LegalMan = input.LegalMan; + } + if (!string.Equals(enterprise.TaxCode, input.TaxCode, StringComparison.InvariantCultureIgnoreCase)) + { + enterprise.TaxCode = input.TaxCode; + } + if (!string.Equals(enterprise.OrganizationCode, input.OrganizationCode, StringComparison.InvariantCultureIgnoreCase)) + { + enterprise.SetOrganization(input.OrganizationCode); + } + if (!string.Equals(enterprise.RegistrationCode, input.RegistrationCode, StringComparison.InvariantCultureIgnoreCase)) + { + enterprise.SetRegistration(input.RegistrationCode, input.RegistrationDate, input.ExpirationDate); + } + } + + protected async override Task> CreateFilteredQueryAsync(EnterpriseGetListInput input) + { + var filteredQuery = await base.CreateFilteredQueryAsync(input); + + Expression> expression = _ => true; + + expression = expression.AndIf(!input.Filter.IsNullOrWhiteSpace(), x => x.Name.Contains(input.Filter) || + x.EnglishName.Contains(input.Filter) || x.Address.Contains(input.Filter) || x.LegalMan.Contains(input.Filter) || + x.TaxCode.Contains(input.Filter)|| x.OrganizationCode.Contains(input.Filter) || x.RegistrationCode.Contains(input.Filter)); + + expression = expression.AndIf(input.BeginRegistrationDate.HasValue, x => x.RegistrationDate >= input.BeginRegistrationDate); + expression = expression.AndIf(input.EndRegistrationDate.HasValue, x => x.RegistrationDate <= input.EndRegistrationDate); + expression = expression.AndIf(input.BeginExpirationDate.HasValue, x => x.ExpirationDate >= input.BeginExpirationDate); + expression = expression.AndIf(input.EndExpirationDate.HasValue, x => x.ExpirationDate <= input.EndExpirationDate); + + return filteredQuery.Where(expression); + } +} diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/Localization/Resources/en.json b/aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/Localization/Resources/en.json index f307df6f9..2ace5ac72 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/Localization/Resources/en.json +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/Localization/Resources/en.json @@ -16,6 +16,7 @@ "Platform:05104": "Attachment {Name} is invalid, please upload again!", "Platform:06101": "Duplicate headers cannot be added {Key}!", "Platform:06102": "Duplicate attachments cannot be added {Name}!", + "Platform:07101": "The enterprise named {Name} already exists!", "UploadFileSizeBeyondLimit": "Upload file size cannot exceed {0} MB!", "NotAllowedFileExtensionName": "Not allowed file extension: {0}!", "DisplayName:VersionFileLimitLength": "File limit size", diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/Localization/Resources/zh-Hans.json b/aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/Localization/Resources/zh-Hans.json index f008eab3f..b35fa0ad7 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/Localization/Resources/zh-Hans.json +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/Localization/Resources/zh-Hans.json @@ -16,6 +16,7 @@ "Platform:05104": "附件 {Name} 已失效, 请重新上传!", "Platform:06101": "不能添加重复的标头 {Key}!", "Platform:06102": "不能添加重复的附件 {Name}!", + "Platform:07101": "已经存在名为 {Name} 的企业信息!", "UploadFileSizeBeyondLimit": "上传文件大小不能超过 {0} MB!", "NotAllowedFileExtensionName": "不被允许的文件扩展名: {0}!", "DisplayName:VersionFileLimitLength": "文件限制大小", diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/PlatformErrorCodes.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/PlatformErrorCodes.cs index 91843acef..114d044c9 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/PlatformErrorCodes.cs +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Domain.Shared/LINGYUN/Platform/PlatformErrorCodes.cs @@ -61,4 +61,8 @@ public static class PlatformErrorCodes /// 不能添加重复的附件 {Name}! /// public const string DuplicateEmailMessageAttachment = Namespace + ":06102"; + /// + /// 已经存在名为 {Name} 的企业信息! + /// + public const string DuplicateEnterpriseName = Namespace + ":07101"; } diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Portal/Enterprise.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Portal/Enterprise.cs index 890c4bdd8..57be08633 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Portal/Enterprise.cs +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Portal/Enterprise.cs @@ -10,7 +10,7 @@ namespace LINGYUN.Platform.Portal; public class Enterprise : FullAuditedAggregateRoot { /// - /// 租户标识 + /// 关联租户 /// public virtual Guid? TenantId { get; protected set; } /// @@ -60,6 +60,7 @@ public class Enterprise : FullAuditedAggregateRoot } public Enterprise( + Guid id, string name, string address, string taxCode, @@ -68,6 +69,7 @@ public class Enterprise : FullAuditedAggregateRoot DateTime? registrationDate = null, DateTime? expirationDate = null, Guid? tenantId = null) + : base(id) { Address = Check.Length(address, nameof(address), EnterpriseConsts.MaxAddressLength); TaxCode = Check.Length(taxCode, nameof(taxCode), EnterpriseConsts.MaxTaxCodeLength); diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Portal/IEnterpriseRepository.cs b/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Portal/IEnterpriseRepository.cs index c816564d4..4a5a6b583 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Portal/IEnterpriseRepository.cs +++ b/aspnet-core/modules/platform/LINGYUN.Platform.Domain/LINGYUN/Platform/Portal/IEnterpriseRepository.cs @@ -5,8 +5,12 @@ using System.Threading.Tasks; using Volo.Abp.Domain.Repositories; namespace LINGYUN.Platform.Portal; -public interface IEnterpriseRepository : IBasicRepository +public interface IEnterpriseRepository : IRepository { + Task FindByNameAsync( + string name, + CancellationToken cancellationToken = default); + Task> GetEnterprisesInTenantListAsync( int maxResultCount = 10, CancellationToken cancellationToken = default); diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.EntityFrameworkCore/LINGYUN/Platform/Portal/EfCoreEnterpriseRepository.cs b/aspnet-core/modules/platform/LINGYUN.Platform.EntityFrameworkCore/LINGYUN/Platform/Portal/EfCoreEnterpriseRepository.cs index 035d8eaeb..abf2ff9cc 100644 --- a/aspnet-core/modules/platform/LINGYUN.Platform.EntityFrameworkCore/LINGYUN/Platform/Portal/EfCoreEnterpriseRepository.cs +++ b/aspnet-core/modules/platform/LINGYUN.Platform.EntityFrameworkCore/LINGYUN/Platform/Portal/EfCoreEnterpriseRepository.cs @@ -17,6 +17,15 @@ public class EfCoreEnterpriseRepository : EfCoreRepository FindByNameAsync( + string name, + CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .Where(x => x.Name == name || x.EnglishName == name) + .FirstOrDefaultAsync(GetCancellationToken(cancellationToken)); + } + public async virtual Task GetEnterpriseInTenantAsync( Guid id, CancellationToken cancellationToken = default) diff --git a/aspnet-core/modules/platform/LINGYUN.Platform.HttpApi/LINGYUN/Platform/Portal/EnterpriseController.cs b/aspnet-core/modules/platform/LINGYUN.Platform.HttpApi/LINGYUN/Platform/Portal/EnterpriseController.cs new file mode 100644 index 000000000..c4a5f0fab --- /dev/null +++ b/aspnet-core/modules/platform/LINGYUN.Platform.HttpApi/LINGYUN/Platform/Portal/EnterpriseController.cs @@ -0,0 +1,59 @@ +using LINGYUN.Platform.Permissions; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.AspNetCore.Mvc; + +namespace LINGYUN.Platform.Portal; + +[Area("platform")] +[Authorize(PlatformPermissions.Enterprise.Default)] +[RemoteService(Name = PlatformRemoteServiceConsts.RemoteServiceName)] +[Route($"api/{PlatformRemoteServiceConsts.ModuleName}/enterprise")] +public class EnterpriseController : AbpControllerBase, IEnterpriseAppService +{ + private readonly IEnterpriseAppService _service; + public EnterpriseController(IEnterpriseAppService service) + { + _service = service; + } + + [HttpPost] + [Authorize(PlatformPermissions.Enterprise.Create)] + public virtual Task CreateAsync(EnterpriseCreateDto input) + { + return _service.CreateAsync(input); + } + + [HttpDelete] + [Route("{id}")] + [Authorize(PlatformPermissions.Enterprise.Delete)] + public virtual Task DeleteAsync(Guid id) + { + return _service.DeleteAsync(id); + } + + [HttpGet] + [Route("{id}")] + public virtual Task GetAsync(Guid id) + { + return _service.GetAsync(id); + } + + [HttpGet] + public virtual Task> GetListAsync(EnterpriseGetListInput input) + { + return _service.GetListAsync(input); + } + + [HttpPut] + [Route("{id}")] + [Authorize(PlatformPermissions.Enterprise.Delete)] + public virtual Task UpdateAsync(Guid id, EnterpriseUpdateDto input) + { + return _service.UpdateAsync(id, input); + } +} diff --git a/aspnet-core/modules/saas/LINGYUN.Abp.Saas.Domain.Shared/LINGYUN/Abp/Saas/Localization/Resources/en.json b/aspnet-core/modules/saas/LINGYUN.Abp.Saas.Domain.Shared/LINGYUN/Abp/Saas/Localization/Resources/en.json index d61e2638c..8d13828e7 100644 --- a/aspnet-core/modules/saas/LINGYUN.Abp.Saas.Domain.Shared/LINGYUN/Abp/Saas/Localization/Resources/en.json +++ b/aspnet-core/modules/saas/LINGYUN.Abp.Saas.Domain.Shared/LINGYUN/Abp/Saas/Localization/Resources/en.json @@ -51,6 +51,7 @@ "UnActived": "UnActived", "RecycleStrategy:Reserve": "Reserve", "RecycleStrategy:Recycle": "Recycle", + "ManageFeatures": "Manage Features", "IfUseCustomDataBaseDefaultConnectionStringIsRequiredMessage": "If you use a custom database, the default connection string must be required!" } } \ No newline at end of file diff --git a/aspnet-core/modules/saas/LINGYUN.Abp.Saas.Domain.Shared/LINGYUN/Abp/Saas/Localization/Resources/zh-Hans.json b/aspnet-core/modules/saas/LINGYUN.Abp.Saas.Domain.Shared/LINGYUN/Abp/Saas/Localization/Resources/zh-Hans.json index 8bdfc083d..26caa8a45 100644 --- a/aspnet-core/modules/saas/LINGYUN.Abp.Saas.Domain.Shared/LINGYUN/Abp/Saas/Localization/Resources/zh-Hans.json +++ b/aspnet-core/modules/saas/LINGYUN.Abp.Saas.Domain.Shared/LINGYUN/Abp/Saas/Localization/Resources/zh-Hans.json @@ -51,6 +51,7 @@ "UnActived": "未启用", "RecycleStrategy:Reserve": "保留", "RecycleStrategy:Recycle": "回收", - "IfUseCustomDataBaseDefaultConnectionStringIsRequiredMessage": "如果使用自定义数据库,默认连接字符串必须输入!" + "ManageFeatures": "管理功能", + "IfUseCustomDataBaseDefaultConnectionStringIsRequiredMessage": "如果使用自定义数据库,默认连接字符串必须输入!" } } \ No newline at end of file diff --git a/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateRenderer.cs b/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateRenderer.cs deleted file mode 100644 index 57f39bf4d..000000000 --- a/aspnet-core/modules/text-templating/LINGYUN.Abp.TextTemplating.Domain/LINGYUN/Abp/TextTemplating/TextTemplateRenderer.cs +++ /dev/null @@ -1,57 +0,0 @@ -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using Volo.Abp; -using Volo.Abp.DependencyInjection; -using Volo.Abp.TextTemplating; - -namespace LINGYUN.Abp.TextTemplating; - -[Dependency(ReplaceServices = true)] -[ExposeServices( - typeof(ITemplateRenderer), - typeof(AbpTemplateRenderer))] -public class TextTemplateRenderer : AbpTemplateRenderer, ITransientDependency -{ - protected ITemplateDefinitionStore TemplateDefinitionStore { get; } - public TextTemplateRenderer( - IServiceScopeFactory serviceScopeFactory, - ITemplateDefinitionManager templateDefinitionManager, - ITemplateDefinitionStore templateDefinitionStore, - IOptions options) - : base(serviceScopeFactory, templateDefinitionManager, options) - { - TemplateDefinitionStore = templateDefinitionStore; - } - - public override async Task RenderAsync( - string templateName, - object model = null, - string cultureName = null, - Dictionary globalContext = null) - { - var templateDefinition = await TemplateDefinitionStore.GetAsync(templateName); - - var renderEngine = templateDefinition.RenderEngine; - - if (renderEngine.IsNullOrWhiteSpace()) - { - renderEngine = Options.DefaultRenderingEngine; - } - - var providerType = Options.RenderingEngines.GetOrDefault(renderEngine); - - if (providerType != null && typeof(ITemplateRenderingEngine).IsAssignableFrom(providerType)) - { - using (var scope = ServiceScopeFactory.CreateScope()) - { - var templateRenderingEngine = (ITemplateRenderingEngine)scope.ServiceProvider.GetRequiredService(providerType); - return await templateRenderingEngine.RenderAsync(templateName, model, cultureName, globalContext); - } - } - - throw new AbpException("There is no rendering engine found with template name: " + templateName); - } -} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.Webhooks.ClientProxies/LINGYUN/Abp/Webhooks/ClientProxies/ClientProxiesWebhookPublisher.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.Webhooks.ClientProxies/LINGYUN/Abp/Webhooks/ClientProxies/ClientProxiesWebhookPublisher.cs index fe15c139e..71f880505 100644 --- a/aspnet-core/modules/webhooks/LINGYUN.Abp.Webhooks.ClientProxies/LINGYUN/Abp/Webhooks/ClientProxies/ClientProxiesWebhookPublisher.cs +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.Webhooks.ClientProxies/LINGYUN/Abp/Webhooks/ClientProxies/ClientProxiesWebhookPublisher.cs @@ -1,4 +1,5 @@ using LINGYUN.Abp.WebhooksManagement; +using LINGYUN.Abp.WebhooksManagement.Integration; using Newtonsoft.Json; using System; using System.Collections.Generic; @@ -11,10 +12,10 @@ namespace LINGYUN.Abp.Webhooks.ClientProxies; [Dependency(ReplaceServices = true)] public class ClientProxiesWebhookPublisher : IWebhookPublisher, ITransientDependency { - protected IWebhookPublishAppService PublishAppService { get; } + protected IWebhookPublishIntegrationService PublishAppService { get; } public ClientProxiesWebhookPublisher( - IWebhookPublishAppService publishAppService) + IWebhookPublishIntegrationService publishAppService) { PublishAppService = publishAppService; } diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.Webhooks.Core/LINGYUN/Abp/Webhooks/WebhooksDefinitionConsts.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.Webhooks.Core/LINGYUN/Abp/Webhooks/WebhooksDefinitionConsts.cs new file mode 100644 index 000000000..da6ea381f --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.Webhooks.Core/LINGYUN/Abp/Webhooks/WebhooksDefinitionConsts.cs @@ -0,0 +1,7 @@ +namespace LINGYUN.Abp.Webhooks; + +public static class WebhooksDefinitionConsts +{ + public static int MinimumTimeoutDuration { get; set; } = 10; + public static int MaximumTimeoutDuration { get; set; } = 300; +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.Webhooks/LINGYUN/Abp/Webhooks/DefaultWebhookSender.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.Webhooks/LINGYUN/Abp/Webhooks/DefaultWebhookSender.cs index ceadcf024..c50c97589 100644 --- a/aspnet-core/modules/webhooks/LINGYUN.Abp.Webhooks/LINGYUN/Abp/Webhooks/DefaultWebhookSender.cs +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.Webhooks/LINGYUN/Abp/Webhooks/DefaultWebhookSender.cs @@ -118,7 +118,8 @@ namespace LINGYUN.Abp.Webhooks { var client = _httpClientFactory.CreateClient(AbpWebhooksModule.WebhooksClient); if (webhookSenderArgs.TimeoutDuration.HasValue && - (webhookSenderArgs.TimeoutDuration >= 10 && webhookSenderArgs.TimeoutDuration <= 300)) + (webhookSenderArgs.TimeoutDuration >= WebhooksDefinitionConsts.MinimumTimeoutDuration && + webhookSenderArgs.TimeoutDuration <= WebhooksDefinitionConsts.MaximumTimeoutDuration)) { client.Timeout = TimeSpan.FromSeconds(webhookSenderArgs.TimeoutDuration.Value); } diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application.Contracts/LINGYUN/Abp/WebhooksManagement/Definitions/IWebhookGroupDefinitionAppService.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application.Contracts/LINGYUN/Abp/WebhooksManagement/Definitions/IWebhookGroupDefinitionAppService.cs index 2a2e5c120..bd8ee78fd 100644 --- a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application.Contracts/LINGYUN/Abp/WebhooksManagement/Definitions/IWebhookGroupDefinitionAppService.cs +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application.Contracts/LINGYUN/Abp/WebhooksManagement/Definitions/IWebhookGroupDefinitionAppService.cs @@ -8,7 +8,7 @@ public interface IWebhookGroupDefinitionAppService : IApplicationService { Task GetAsync(string name); - Task DeleteAysnc(string name); + Task DeleteAsync(string name); Task CreateAsync(WebhookGroupDefinitionCreateDto input); diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application.Contracts/LINGYUN/Abp/WebhooksManagement/Integration/IWebhookPublishIntegrationService.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application.Contracts/LINGYUN/Abp/WebhooksManagement/Integration/IWebhookPublishIntegrationService.cs new file mode 100644 index 000000000..8a5378bbb --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application.Contracts/LINGYUN/Abp/WebhooksManagement/Integration/IWebhookPublishIntegrationService.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Services; + +namespace LINGYUN.Abp.WebhooksManagement.Integration; + +[IntegrationService] +public interface IWebhookPublishIntegrationService : IApplicationService +{ + Task PublishAsync(WebhookPublishInput input); +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionAppService.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionAppService.cs index 4fbd18e35..fff175c71 100644 --- a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionAppService.cs +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionAppService.cs @@ -71,7 +71,7 @@ public class WebhookGroupDefinitionAppService : WebhooksManagementAppServiceBase } [Authorize(WebhooksManagementPermissions.WebhookGroupDefinition.Delete)] - public async virtual Task DeleteAysnc(string name) + public async virtual Task DeleteAsync(string name) { var webhookGroupDefinitionRecord = await _webhookGroupDefinitionRecordRepository.FindByNameAsync(name); if (webhookGroupDefinitionRecord != null) diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application/LINGYUN/Abp/WebhooksManagement/Integration/WebhookPublishIntegrationService.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application/LINGYUN/Abp/WebhooksManagement/Integration/WebhookPublishIntegrationService.cs new file mode 100644 index 000000000..ab6885084 --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application/LINGYUN/Abp/WebhooksManagement/Integration/WebhookPublishIntegrationService.cs @@ -0,0 +1,42 @@ +using LINGYUN.Abp.Webhooks; +using Newtonsoft.Json; +using System.Linq; +using System.Threading.Tasks; + +namespace LINGYUN.Abp.WebhooksManagement.Integration; + +public class WebhookPublishIntegrationService : WebhooksManagementAppServiceBase, IWebhookPublishIntegrationService +{ + protected IWebhookPublisher InnerPublisher { get; } + + public WebhookPublishIntegrationService(IWebhookPublisher innerPublisher) + { + InnerPublisher = innerPublisher; + } + + public async virtual Task PublishAsync(WebhookPublishInput input) + { + var webhookHeader = new WebhookHeader + { + UseOnlyGivenHeaders = input.Header.UseOnlyGivenHeaders, + Headers = input.Header.Headers, + }; + var inputData = JsonConvert.DeserializeObject(input.Data); + + if (input.TenantIds.Any()) + { + await InnerPublisher.PublishAsync( + input.TenantIds.ToArray(), + input.WebhookName, + inputData, + input.SendExactSameData, + webhookHeader); + return; + } + await InnerPublisher.PublishAsync( + input.WebhookName, + inputData, + input.SendExactSameData, + webhookHeader); + } +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/WebhooksManagementDomainModule.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/WebhooksManagementDomainModule.cs index 6b26e5a35..58ccf42e2 100644 --- a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/WebhooksManagementDomainModule.cs +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/WebhooksManagementDomainModule.cs @@ -21,6 +21,7 @@ public class WebhooksManagementDomainModule : AbpModule { private readonly CancellationTokenSource _cancellationTokenSource = new(); private readonly static OneTimeRunner OneTimeRunner = new(); + public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddAutoMapperObjectMapper(); @@ -55,6 +56,9 @@ public class WebhooksManagementDomainModule : AbpModule { OneTimeRunner.Run(() => { + WebhooksDefinitionConsts.MinimumTimeoutDuration = WebhookSubscriptionConsts.TimeoutDurationMinimum; + WebhooksDefinitionConsts.MaximumTimeoutDuration = WebhookSubscriptionConsts.TimeoutDurationMaximum; + // 扩展实体配置 ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( WebhooksManagementModuleExtensionConsts.ModuleName, diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookDefinitionClientProxy.Generated.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookDefinitionClientProxy.Generated.cs new file mode 100644 index 000000000..630330b75 --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookDefinitionClientProxy.Generated.cs @@ -0,0 +1,61 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.WebhooksManagement.Definitions; +using LINGYUN.Abp.WebhooksManagement.Definitions.Dto; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.WebhooksManagement.Definitions; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IWebhookDefinitionAppService), typeof(WebhookDefinitionClientProxy))] +public partial class WebhookDefinitionClientProxy : ClientProxyBase, IWebhookDefinitionAppService +{ + public virtual async Task CreateAsync(WebhookDefinitionCreateDto input) + { + return await RequestAsync(nameof(CreateAsync), new ClientProxyRequestTypeValue + { + { typeof(WebhookDefinitionCreateDto), input } + }); + } + + public virtual async Task DeleteAsync(string name) + { + await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(string), name } + }); + } + + public virtual async Task GetAsync(string name) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(string), name } + }); + } + + public virtual async Task> GetListAsync(WebhookDefinitionGetListInput input) + { + return await RequestAsync>(nameof(GetListAsync), new ClientProxyRequestTypeValue + { + { typeof(WebhookDefinitionGetListInput), input } + }); + } + + public virtual async Task UpdateAsync(string name, WebhookDefinitionUpdateDto input) + { + return await RequestAsync(nameof(UpdateAsync), new ClientProxyRequestTypeValue + { + { typeof(string), name }, + { typeof(WebhookDefinitionUpdateDto), input } + }); + } +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookDefinitionClientProxy.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookDefinitionClientProxy.cs new file mode 100644 index 000000000..86bbd225b --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookDefinitionClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of WebhookDefinitionClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.WebhooksManagement.Definitions; + +public partial class WebhookDefinitionClientProxy +{ +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionClientProxy.Generated.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionClientProxy.Generated.cs new file mode 100644 index 000000000..a37250874 --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionClientProxy.Generated.cs @@ -0,0 +1,60 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.WebhooksManagement.Definitions; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.WebhooksManagement.Definitions; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IWebhookGroupDefinitionAppService), typeof(WebhookGroupDefinitionClientProxy))] +public partial class WebhookGroupDefinitionClientProxy : ClientProxyBase, IWebhookGroupDefinitionAppService +{ + public virtual async Task CreateAsync(WebhookGroupDefinitionCreateDto input) + { + return await RequestAsync(nameof(CreateAsync), new ClientProxyRequestTypeValue + { + { typeof(WebhookGroupDefinitionCreateDto), input } + }); + } + + public virtual async Task DeleteAsync(string name) + { + await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(string), name } + }); + } + + public virtual async Task GetAsync(string name) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(string), name } + }); + } + + public virtual async Task> GetListAsync(WebhookGroupDefinitionGetListInput input) + { + return await RequestAsync>(nameof(GetListAsync), new ClientProxyRequestTypeValue + { + { typeof(WebhookGroupDefinitionGetListInput), input } + }); + } + + public virtual async Task UpdateAsync(string name, WebhookGroupDefinitionUpdateDto input) + { + return await RequestAsync(nameof(UpdateAsync), new ClientProxyRequestTypeValue + { + { typeof(string), name }, + { typeof(WebhookGroupDefinitionUpdateDto), input } + }); + } +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionClientProxy.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionClientProxy.cs new file mode 100644 index 000000000..1f5e835be --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of WebhookGroupDefinitionClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.WebhooksManagement.Definitions; + +public partial class WebhookGroupDefinitionClientProxy +{ +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Integration/WebhookPublishIntegrationClientProxy.Generated.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Integration/WebhookPublishIntegrationClientProxy.Generated.cs new file mode 100644 index 000000000..753ad4a8e --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Integration/WebhookPublishIntegrationClientProxy.Generated.cs @@ -0,0 +1,29 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.WebhooksManagement; +using LINGYUN.Abp.WebhooksManagement.Integration; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.WebhooksManagement.Integration; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IWebhookPublishIntegrationService), typeof(WebhookPublishIntegrationClientProxy))] +[IntegrationService] +public partial class WebhookPublishIntegrationClientProxy : ClientProxyBase, IWebhookPublishIntegrationService +{ + public virtual async Task PublishAsync(WebhookPublishInput input) + { + await RequestAsync(nameof(PublishAsync), new ClientProxyRequestTypeValue + { + { typeof(WebhookPublishInput), input } + }); + } +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Integration/WebhookPublishIntegrationClientProxy.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Integration/WebhookPublishIntegrationClientProxy.cs new file mode 100644 index 000000000..a1200c16c --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/Integration/WebhookPublishIntegrationClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of WebhookPublishIntegrationClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.WebhooksManagement.Integration; + +public partial class WebhookPublishIntegrationClientProxy +{ +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookPublishClientProxy.Generated.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookPublishClientProxy.Generated.cs new file mode 100644 index 000000000..b45a864ce --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookPublishClientProxy.Generated.cs @@ -0,0 +1,27 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.WebhooksManagement; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.WebhooksManagement; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IWebhookPublishAppService), typeof(WebhookPublishClientProxy))] +public partial class WebhookPublishClientProxy : ClientProxyBase, IWebhookPublishAppService +{ + public virtual async Task PublishAsync(WebhookPublishInput input) + { + await RequestAsync(nameof(PublishAsync), new ClientProxyRequestTypeValue + { + { typeof(WebhookPublishInput), input } + }); + } +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookPublishClientProxy.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookPublishClientProxy.cs new file mode 100644 index 000000000..93d71eb2a --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookPublishClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of WebhookPublishClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.WebhooksManagement; + +public partial class WebhookPublishClientProxy +{ +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookSendRecordClientProxy.Generated.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookSendRecordClientProxy.Generated.cs new file mode 100644 index 000000000..9d6613197 --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookSendRecordClientProxy.Generated.cs @@ -0,0 +1,67 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.WebhooksManagement; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.WebhooksManagement; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IWebhookSendRecordAppService), typeof(WebhookSendRecordClientProxy))] +public partial class WebhookSendRecordClientProxy : ClientProxyBase, IWebhookSendRecordAppService +{ + public virtual async Task GetAsync(Guid id) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task DeleteAsync(Guid id) + { + await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task DeleteManyAsync(WebhookSendRecordDeleteManyInput input) + { + await RequestAsync(nameof(DeleteManyAsync), new ClientProxyRequestTypeValue + { + { typeof(WebhookSendRecordDeleteManyInput), input } + }); + } + + public virtual async Task> GetListAsync(WebhookSendRecordGetListInput input) + { + return await RequestAsync>(nameof(GetListAsync), new ClientProxyRequestTypeValue + { + { typeof(WebhookSendRecordGetListInput), input } + }); + } + + public virtual async Task ResendAsync(Guid id) + { + await RequestAsync(nameof(ResendAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task ResendManyAsync(WebhookSendRecordResendManyInput input) + { + await RequestAsync(nameof(ResendManyAsync), new ClientProxyRequestTypeValue + { + { typeof(WebhookSendRecordResendManyInput), input } + }); + } +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookSendRecordClientProxy.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookSendRecordClientProxy.cs new file mode 100644 index 000000000..0a2b1b17d --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookSendRecordClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of WebhookSendRecordClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.WebhooksManagement; + +public partial class WebhookSendRecordClientProxy +{ +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookSubscriptionClientProxy.Generated.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookSubscriptionClientProxy.Generated.cs new file mode 100644 index 000000000..eef75887e --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookSubscriptionClientProxy.Generated.cs @@ -0,0 +1,73 @@ +// This file is automatically generated by ABP framework to use MVC Controllers from CSharp +using LINGYUN.Abp.WebhooksManagement; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.ClientProxying; +using Volo.Abp.Http.Modeling; + +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.WebhooksManagement; + +[Dependency(ReplaceServices = true)] +[ExposeServices(typeof(IWebhookSubscriptionAppService), typeof(WebhookSubscriptionClientProxy))] +public partial class WebhookSubscriptionClientProxy : ClientProxyBase, IWebhookSubscriptionAppService +{ + public virtual async Task CreateAsync(WebhookSubscriptionCreateInput input) + { + return await RequestAsync(nameof(CreateAsync), new ClientProxyRequestTypeValue + { + { typeof(WebhookSubscriptionCreateInput), input } + }); + } + + public virtual async Task DeleteAsync(Guid id) + { + await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task DeleteManyAsync(WebhookSubscriptionDeleteManyInput input) + { + await RequestAsync(nameof(DeleteManyAsync), new ClientProxyRequestTypeValue + { + { typeof(WebhookSubscriptionDeleteManyInput), input } + }); + } + + public virtual async Task GetAsync(Guid id) + { + return await RequestAsync(nameof(GetAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id } + }); + } + + public virtual async Task> GetListAsync(WebhookSubscriptionGetListInput input) + { + return await RequestAsync>(nameof(GetListAsync), new ClientProxyRequestTypeValue + { + { typeof(WebhookSubscriptionGetListInput), input } + }); + } + + public virtual async Task UpdateAsync(Guid id, WebhookSubscriptionUpdateInput input) + { + return await RequestAsync(nameof(UpdateAsync), new ClientProxyRequestTypeValue + { + { typeof(Guid), id }, + { typeof(WebhookSubscriptionUpdateInput), input } + }); + } + + public virtual async Task> GetAllAvailableWebhooksAsync() + { + return await RequestAsync>(nameof(GetAllAvailableWebhooksAsync)); + } +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookSubscriptionClientProxy.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookSubscriptionClientProxy.cs new file mode 100644 index 000000000..a301c50c1 --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/LINGYUN/Abp/WebhooksManagement/WebhookSubscriptionClientProxy.cs @@ -0,0 +1,7 @@ +// This file is part of WebhookSubscriptionClientProxy, you can customize it here +// ReSharper disable once CheckNamespace +namespace LINGYUN.Abp.WebhooksManagement; + +public partial class WebhookSubscriptionClientProxy +{ +} diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/webhooks-management-generate-proxy.json b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/webhooks-management-generate-proxy.json new file mode 100644 index 000000000..641500e03 --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/ClientProxies/webhooks-management-generate-proxy.json @@ -0,0 +1,1774 @@ +{ + "modules": { + "webhooks-management": { + "rootPath": "webhooks-management", + "remoteServiceName": "WebhooksManagement", + "controllers": { + "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionController": { + "controllerName": "WebhookDefinition", + "controllerGroupName": "WebhookDefinition", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionController", + "interfaces": [ + { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.IWebhookDefinitionAppService", + "name": "IWebhookDefinitionAppService", + "methods": [ + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.Dto.WebhookDefinitionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.Dto.WebhookDefinitionDto" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "CreateAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionCreateDto, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionCreateDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.Dto.WebhookDefinitionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.Dto.WebhookDefinitionDto" + } + }, + { + "name": "UpdateAsync", + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionUpdateDto, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionUpdateDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.Dto.WebhookDefinitionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.Dto.WebhookDefinitionDto" + } + }, + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionGetListInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionGetListInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionGetListInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + } + ] + } + ], + "actions": { + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/webhooks/definitions", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionCreateDto, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionCreateDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionCreateDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionCreateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.Dto.WebhookDefinitionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.Dto.WebhookDefinitionDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.Definitions.IWebhookDefinitionAppService" + }, + "DeleteAsyncByName": { + "uniqueName": "DeleteAsyncByName", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/webhooks/definitions/{name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "name", + "name": "name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.Definitions.IWebhookDefinitionAppService" + }, + "GetAsyncByName": { + "uniqueName": "GetAsyncByName", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/webhooks/definitions/{name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "name", + "name": "name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.Dto.WebhookDefinitionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.Dto.WebhookDefinitionDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.Definitions.IWebhookDefinitionAppService" + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/webhooks/definitions", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionGetListInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionGetListInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionGetListInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "GroupName", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.Definitions.IWebhookDefinitionAppService" + }, + "UpdateAsyncByNameAndInput": { + "uniqueName": "UpdateAsyncByNameAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/webhooks/definitions/{name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionUpdateDto, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionUpdateDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "name", + "name": "name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionUpdateDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookDefinitionUpdateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.Dto.WebhookDefinitionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.Dto.WebhookDefinitionDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.Definitions.IWebhookDefinitionAppService" + } + } + }, + "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionController": { + "controllerName": "WebhookGroupDefinition", + "controllerGroupName": "WebhookGroupDefinition", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionController", + "interfaces": [ + { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.IWebhookGroupDefinitionAppService", + "name": "IWebhookGroupDefinitionAppService", + "methods": [ + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionDto" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "CreateAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionCreateDto, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionCreateDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionDto" + } + }, + { + "name": "UpdateAsync", + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionUpdateDto, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionUpdateDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionDto" + } + }, + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionGetListInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionGetListInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionGetListInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + } + ] + } + ], + "actions": { + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/webhooks/definitions/groups", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionCreateDto, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionCreateDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionCreateDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionCreateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.Definitions.IWebhookGroupDefinitionAppService" + }, + "DeleteAsyncByName": { + "uniqueName": "DeleteAsyncByName", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/webhooks/definitions/groups/{name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "name", + "name": "name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.Definitions.IWebhookGroupDefinitionAppService" + }, + "GetAsyncByName": { + "uniqueName": "GetAsyncByName", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/webhooks/definitions/groups/{name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "name", + "name": "name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.Definitions.IWebhookGroupDefinitionAppService" + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/webhooks/definitions/groups", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionGetListInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionGetListInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionGetListInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.Definitions.IWebhookGroupDefinitionAppService" + }, + "UpdateAsyncByNameAndInput": { + "uniqueName": "UpdateAsyncByNameAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/webhooks/definitions/groups/{name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionUpdateDto, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionUpdateDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "name", + "name": "name", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionUpdateDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionUpdateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.Definitions.WebhookGroupDefinitionDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.Definitions.IWebhookGroupDefinitionAppService" + } + } + }, + "LINGYUN.Abp.WebhooksManagement.Integration.WebhookPublishIntegrationController": { + "controllerName": "WebhookPublishIntegration", + "controllerGroupName": "WebhookPublishIntegration", + "isRemoteService": true, + "isIntegrationService": true, + "apiVersion": null, + "type": "LINGYUN.Abp.WebhooksManagement.Integration.WebhookPublishIntegrationController", + "interfaces": [ + { + "type": "LINGYUN.Abp.WebhooksManagement.Integration.IWebhookPublishIntegrationService", + "name": "IWebhookPublishIntegrationService", + "methods": [ + { + "name": "PublishAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "PublishAsyncByInput": { + "uniqueName": "PublishAsyncByInput", + "name": "PublishAsync", + "httpMethod": "POST", + "url": "integration-api/webhooks-management/webhooks/publish", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": null, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.Integration.IWebhookPublishIntegrationService" + } + } + }, + "LINGYUN.Abp.WebhooksManagement.WebhookPublishController": { + "controllerName": "WebhookPublish", + "controllerGroupName": "WebhookPublish", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.WebhooksManagement.WebhookPublishController", + "interfaces": [ + { + "type": "LINGYUN.Abp.WebhooksManagement.IWebhookPublishAppService", + "name": "IWebhookPublishAppService", + "methods": [ + { + "name": "PublishAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "PublishAsyncByInput": { + "uniqueName": "PublishAsyncByInput", + "name": "PublishAsync", + "httpMethod": "POST", + "url": "api/webhooks/publish", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookPublishInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.IWebhookPublishAppService" + } + } + }, + "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordController": { + "controllerName": "WebhookSendRecord", + "controllerGroupName": "WebhookSendRecord", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordController", + "interfaces": [ + { + "type": "LINGYUN.Abp.WebhooksManagement.IWebhookSendRecordAppService", + "name": "IWebhookSendRecordAppService", + "methods": [ + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordDto" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "DeleteManyAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordDeleteManyInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordDeleteManyInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordDeleteManyInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "ResendAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "ResendManyAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordResendManyInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordResendManyInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordResendManyInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordGetListInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordGetListInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordGetListInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + } + ] + } + ], + "actions": { + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/webhooks/send-attempts/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.IWebhookSendRecordAppService" + }, + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/webhooks/send-attempts/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.IWebhookSendRecordAppService" + }, + "DeleteManyAsyncByInput": { + "uniqueName": "DeleteManyAsyncByInput", + "name": "DeleteManyAsync", + "httpMethod": "DELETE", + "url": "api/webhooks/send-attempts/delete-many", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordDeleteManyInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordDeleteManyInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordDeleteManyInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordDeleteManyInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordDeleteManyInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.IWebhookSendRecordAppService" + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/webhooks/send-attempts", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordGetListInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordGetListInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordGetListInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "TenantId", + "jsonName": null, + "type": "System.Guid?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "State", + "jsonName": null, + "type": "System.Boolean?", + "typeSimple": "boolean?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "WebhookEventId", + "jsonName": null, + "type": "System.Guid?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SubscriptionId", + "jsonName": null, + "type": "System.Guid?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "ResponseStatusCode", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "BeginCreationTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "EndCreationTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.IWebhookSendRecordAppService" + }, + "ResendAsyncById": { + "uniqueName": "ResendAsyncById", + "name": "ResendAsync", + "httpMethod": "POST", + "url": "api/webhooks/send-attempts/{id}/resend", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.IWebhookSendRecordAppService" + }, + "ResendManyAsyncByInput": { + "uniqueName": "ResendManyAsyncByInput", + "name": "ResendManyAsync", + "httpMethod": "POST", + "url": "api/webhooks/send-attempts/resend-many", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordResendManyInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordResendManyInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordResendManyInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordResendManyInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSendRecordResendManyInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.IWebhookSendRecordAppService" + } + } + }, + "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionController": { + "controllerName": "WebhookSubscription", + "controllerGroupName": "WebhookSubscription", + "isRemoteService": true, + "isIntegrationService": false, + "apiVersion": null, + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionController", + "interfaces": [ + { + "type": "LINGYUN.Abp.WebhooksManagement.IWebhookSubscriptionAppService", + "name": "IWebhookSubscriptionAppService", + "methods": [ + { + "name": "DeleteManyAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDeleteManyInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDeleteManyInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDeleteManyInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + { + "name": "GetAllAvailableWebhooksAsync", + "parametersOnMethod": [], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + { + "name": "GetAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDto" + } + }, + { + "name": "GetListAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionGetListInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionGetListInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionGetListInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + { + "name": "CreateAsync", + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionCreateInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionCreateInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionCreateInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDto" + } + }, + { + "name": "UpdateAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionUpdateInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionUpdateInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionUpdateInput", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDto" + } + }, + { + "name": "DeleteAsync", + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + ] + } + ], + "actions": { + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/webhooks/subscriptions", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionCreateInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionCreateInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionCreateInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionCreateInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionCreateInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDto" + }, + "allowAnonymous": false, + "implementFrom": "Volo.Abp.Application.Services.ICreateAppService" + }, + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/webhooks/subscriptions/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "Volo.Abp.Application.Services.IDeleteAppService" + }, + "DeleteManyAsyncByInput": { + "uniqueName": "DeleteManyAsyncByInput", + "name": "DeleteManyAsync", + "httpMethod": "DELETE", + "url": "api/webhooks/subscriptions/delete-many", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDeleteManyInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDeleteManyInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDeleteManyInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDeleteManyInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDeleteManyInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.IWebhookSubscriptionAppService" + }, + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/webhooks/subscriptions/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDto" + }, + "allowAnonymous": false, + "implementFrom": "Volo.Abp.Application.Services.IReadOnlyAppService" + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/webhooks/subscriptions", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionGetListInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionGetListInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionGetListInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "TenantId", + "jsonName": null, + "type": "System.Guid?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "WebhookUri", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Secret", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "IsActive", + "jsonName": null, + "type": "System.Boolean?", + "typeSimple": "boolean?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Webhooks", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "BeginCreationTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "EndCreationTime", + "jsonName": null, + "type": "System.DateTime?", + "typeSimple": "string?", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "jsonName": null, + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + }, + "allowAnonymous": false, + "implementFrom": "Volo.Abp.Application.Services.IReadOnlyAppService" + }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/webhooks/subscriptions/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionUpdateInput, LINGYUN.Abp.WebhooksManagement.Application.Contracts", + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionUpdateInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionUpdateInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "jsonName": null, + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "jsonName": null, + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionUpdateInput", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionUpdateInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDto", + "typeSimple": "LINGYUN.Abp.WebhooksManagement.WebhookSubscriptionDto" + }, + "allowAnonymous": false, + "implementFrom": "Volo.Abp.Application.Services.IUpdateAppService" + }, + "GetAllAvailableWebhooksAsync": { + "uniqueName": "GetAllAvailableWebhooksAsync", + "name": "GetAllAvailableWebhooksAsync", + "httpMethod": "GET", + "url": "api/webhooks/subscriptions/availables", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + }, + "allowAnonymous": false, + "implementFrom": "LINGYUN.Abp.WebhooksManagement.IWebhookSubscriptionAppService" + } + } + } + } + } + }, + "types": {} +} \ No newline at end of file diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/LINGYUN.Abp.WebhooksManagement.HttpApi.Client.csproj b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/LINGYUN.Abp.WebhooksManagement.HttpApi.Client.csproj index 95f1891bf..e9bf18518 100644 --- a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/LINGYUN.Abp.WebhooksManagement.HttpApi.Client.csproj +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/LINGYUN.Abp.WebhooksManagement.HttpApi.Client.csproj @@ -13,6 +13,14 @@ + + + + + + + + diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/LINGYUN/Abp/WebhooksManagement/WebhooksManagementHttpApiClientModule.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/LINGYUN/Abp/WebhooksManagement/WebhooksManagementHttpApiClientModule.cs index 1fff62168..96b75b4dd 100644 --- a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/LINGYUN/Abp/WebhooksManagement/WebhooksManagementHttpApiClientModule.cs +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi.Client/LINGYUN/Abp/WebhooksManagement/WebhooksManagementHttpApiClientModule.cs @@ -11,7 +11,7 @@ public class WebhooksManagementHttpApiClientModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { - context.Services.AddHttpClientProxies( + context.Services.AddStaticHttpClientProxies( typeof(WebhooksManagementApplicationContractsModule).Assembly, WebhooksManagementRemoteServiceConsts.RemoteServiceName); } diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionController.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionController.cs index 18fc573b5..41426b74c 100644 --- a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionController.cs +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi/LINGYUN/Abp/WebhooksManagement/Definitions/WebhookGroupDefinitionController.cs @@ -30,9 +30,9 @@ public class WebhookGroupDefinitionController : WebhooksManagementControllerBase [HttpDelete] [Route("{name}")] [Authorize(WebhooksManagementPermissions.WebhookGroupDefinition.Delete)] - public virtual Task DeleteAysnc(string name) + public virtual Task DeleteAsync(string name) { - return _service.DeleteAysnc(name); + return _service.DeleteAsync(name); } [HttpGet] diff --git a/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi/LINGYUN/Abp/WebhooksManagement/Integration/WebhookPublishIntegrationController.cs b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi/LINGYUN/Abp/WebhooksManagement/Integration/WebhookPublishIntegrationController.cs new file mode 100644 index 000000000..36d26c89b --- /dev/null +++ b/aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.HttpApi/LINGYUN/Abp/WebhooksManagement/Integration/WebhookPublishIntegrationController.cs @@ -0,0 +1,26 @@ +using Asp.Versioning; +using Microsoft.AspNetCore.Mvc; +using System.Threading.Tasks; +using Volo.Abp; + +namespace LINGYUN.Abp.WebhooksManagement.Integration; + +[Area(WebhooksManagementRemoteServiceConsts.ModuleName)] +[ControllerName("WebhookPublishIntegration")] +[RemoteService(Name = WebhooksManagementRemoteServiceConsts.RemoteServiceName)] +[Route($"integration-api/{WebhooksManagementRemoteServiceConsts.ModuleName}/webhooks/publish")] +public class WebhookPublishIntegrationController : WebhooksManagementControllerBase, IWebhookPublishIntegrationService +{ + protected IWebhookPublishIntegrationService PublishAppService { get; } + + public WebhookPublishIntegrationController(IWebhookPublishIntegrationService publishAppService) + { + PublishAppService = publishAppService; + } + + [HttpPost] + public virtual Task PublishAsync(WebhookPublishInput input) + { + return PublishAppService.PublishAsync(input); + } +} diff --git a/aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json b/aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json index 72508643d..05c826ae1 100644 --- a/aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json @@ -48,6 +48,9 @@ "Password": "123456", "ExchangeName": "LINGYUN.Abp.Application", "VirtualHost": "/" + }, + "Redis": { + "Configuration": "127.0.0.1" } }, "DistributedCache": { diff --git a/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/AuthServerHttpApiHostModule.Configure.cs b/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/AuthServerHttpApiHostModule.Configure.cs index 5e49108c7..295d86437 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/AuthServerHttpApiHostModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/AuthServerHttpApiHostModule.Configure.cs @@ -1,6 +1,7 @@ using DotNetCore.CAP; using LINGYUN.Abp.ExceptionHandling; using LINGYUN.Abp.ExceptionHandling.Emailing; +using LINGYUN.Abp.Gdpr.Localization; using LINGYUN.Abp.Identity.Session; using LINGYUN.Abp.Localization.CultureMap; using LINGYUN.Abp.OpenIddict.Permissions; @@ -33,6 +34,7 @@ using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Auditing; using Volo.Abp.Authorization.Permissions; using Volo.Abp.Caching; +using Volo.Abp.Data; using Volo.Abp.Domain.Entities.Events.Distributed; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement; @@ -127,6 +129,36 @@ public partial class AuthServerHttpApiHostModule mysql.TranslateParameterizedCollectionsToConstants(); }); }); + + Configure(options => + { + options.Databases.Configure("Platform", database => + { + database.MapConnection("AbpSaas"); + database.MapConnection("Workflow"); + database.MapConnection("AppPlatform"); + database.MapConnection("TaskManagement"); + database.MapConnection("AbpAuditLogging"); + database.MapConnection("AbpTextTemplating"); + database.MapConnection("AbpSettingManagement"); + database.MapConnection("AbpFeatureManagement"); + database.MapConnection("AbpPermissionManagement"); + database.MapConnection("AbpLocalizationManagement"); + database.MapConnection("AbpDataProtectionManagement"); + }); + options.Databases.Configure("Identity", database => + { + database.MapConnection("AbpGdpr"); + database.MapConnection("AbpIdentity"); + database.MapConnection("AbpOpenIddict"); + database.MapConnection("AbpIdentityServer"); + }); + options.Databases.Configure("Realtime", database => + { + database.MapConnection("Notifications"); + database.MapConnection("MessageService"); + }); + }); } private void ConfigureJsonSerializer(IConfiguration configuration) @@ -406,6 +438,7 @@ public partial class AuthServerHttpApiHostModule options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); options.UsePersistences( + typeof(GdprResource), typeof(IdentityResource), typeof(AbpOpenIddictResource)); }); diff --git a/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/AuthServerHttpApiHostModule.cs b/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/AuthServerHttpApiHostModule.cs index e381b8e98..5893145dc 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/AuthServerHttpApiHostModule.cs +++ b/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/AuthServerHttpApiHostModule.cs @@ -5,8 +5,13 @@ using LINGYUN.Abp.AspNetCore.Mvc.Wrapper; using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.Authorization.OrganizationUnits; using LINGYUN.Abp.Claims.Mapping; +using LINGYUN.Abp.Emailing.Platform; using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.ExceptionHandling.Emailing; +using LINGYUN.Abp.Exporter.MiniExcel; +using LINGYUN.Abp.Gdpr; +using LINGYUN.Abp.Gdpr.EntityFrameworkCore; +using LINGYUN.Abp.Gdpr.Identity; using LINGYUN.Abp.Identity; using LINGYUN.Abp.Identity.EntityFrameworkCore; using LINGYUN.Abp.Identity.Session.AspNetCore; @@ -16,7 +21,7 @@ using LINGYUN.Abp.OpenIddict; using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; -using LINGYUN.Abp.Sms.Aliyun; +using LINGYUN.Abp.Sms.Platform; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; @@ -30,7 +35,6 @@ using Volo.Abp.Caching.StackExchangeRedis; using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Http.Client; -using Volo.Abp.MailKit; using Volo.Abp.Modularity; using Volo.Abp.OpenIddict.EntityFrameworkCore; using Volo.Abp.PermissionManagement.EntityFrameworkCore; @@ -52,6 +56,10 @@ namespace LY.MicroService.AuthServer; typeof(AbpOpenIddictApplicationModule), typeof(AbpOpenIddictHttpApiModule), typeof(AbpOpenIddictEntityFrameworkCoreModule), + typeof(AbpGdprApplicationModule), + typeof(AbpGdprHttpApiModule), + typeof(AbpGdprDomainIdentityModule), + typeof(AbpGdprEntityFrameworkCoreModule), typeof(AbpEntityFrameworkCoreMySQLModule), typeof(AbpSaasEntityFrameworkCoreModule), typeof(AbpFeatureManagementEntityFrameworkCoreModule), @@ -63,14 +71,15 @@ namespace LY.MicroService.AuthServer; typeof(AbpEmailingExceptionHandlingModule), typeof(AbpCAPEventBusModule), typeof(AbpHttpClientModule), - typeof(AbpAliyunSmsModule), - typeof(AbpMailKitModule), + typeof(AbpSmsPlatformModule), + typeof(AbpEmailingPlatformModule), typeof(AbpCachingStackExchangeRedisModule), typeof(AbpLocalizationCultureMapModule), typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpIdentitySessionAspNetCoreModule), typeof(AbpAspNetCoreHttpOverridesModule), typeof(AbpAspNetCoreMvcWrapperModule), + typeof(AbpExporterMiniExcelModule), typeof(AbpClaimsMappingModule), typeof(AbpAutofacModule) )] diff --git a/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/LY.MicroService.AuthServer.HttpApi.Host.csproj b/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/LY.MicroService.AuthServer.HttpApi.Host.csproj index 3d6e80a9d..84143c4f1 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/LY.MicroService.AuthServer.HttpApi.Host.csproj +++ b/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/LY.MicroService.AuthServer.HttpApi.Host.csproj @@ -1,4 +1,4 @@ - + @@ -48,7 +48,6 @@ - @@ -63,7 +62,7 @@ - + @@ -75,6 +74,10 @@ + + + + @@ -82,6 +85,8 @@ + + diff --git a/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/appsettings.Development.json b/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/appsettings.Development.json index 75ea7083a..686ffb482 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.AuthServer.HttpApi.Host/appsettings.Development.json @@ -6,7 +6,8 @@ "secret": "1q2w3E*", "nodes": "http://127.0.0.1:5000", "name": "AuthServer.Admin", - "tag": "AuthServer.Admin" + "tag": "AuthServer.Admin", + "configCacheEncrypt": true }, "App": { "ShowPii": true, @@ -45,15 +46,10 @@ } }, "ConnectionStrings": { - "Default": "Server=127.0.0.1;Database=AuthServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=AuthServer-v70;User Id=root;Password=123456;SslMode=None", - "OpenIddict": "Server=127.0.0.1;Database=AuthServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None" + "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=AuthServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "CAP": { "EventBus": { @@ -86,6 +82,12 @@ "Configuration": "127.0.0.1,defaultDatabase=10", "InstanceName": "LINGYUN.Abp.Application" }, + "RemoteServices": { + "Platform": { + "BaseUrl": "http://127.0.0.1:30025", + "UseCurrentAccessToken": false + } + }, "AuthServer": { "Authority": "http://127.0.0.1:44385", "Audience": "lingyun-abp-application", diff --git a/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.Configure.cs b/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.Configure.cs index ff1ea9a9c..199d7f641 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.Configure.cs @@ -1,4 +1,6 @@ using DotNetCore.CAP; +using LINGYUN.Abp.Account.Web; +using LINGYUN.Abp.Account.Web.OpenIddict; using LINGYUN.Abp.Localization.CultureMap; using LINGYUN.Abp.OpenIddict.AspNetCore.Session; using LINGYUN.Abp.OpenIddict.LinkUser; @@ -23,6 +25,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Hosting.Internal; using Microsoft.IdentityModel.Logging; using OpenTelemetry.Metrics; using OpenTelemetry.Resources; @@ -48,6 +51,7 @@ using Volo.Abp.Localization; using Volo.Abp.MultiTenancy; using Volo.Abp.OpenIddict; using Volo.Abp.Security.Claims; +using Volo.Abp.SettingManagement; using Volo.Abp.Threading; using Volo.Abp.Timing; using Volo.Abp.UI.Navigation.Urls; @@ -225,6 +229,14 @@ public partial class AuthServerModule }); } + private void ConfigureSettingManagement() + { + Configure(options => + { + options.IsDynamicSettingStoreEnabled = true; + }); + } + private void ConfigureJsonSerializer(IConfiguration configuration) { // 统一时间日期格式 diff --git a/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.cs b/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.cs index d430685df..39e3158b7 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.cs +++ b/aspnet-core/services/LY.MicroService.AuthServer/AuthServerModule.cs @@ -1,47 +1,41 @@ using LINGYUN.Abp.Account; +using LINGYUN.Abp.Account.Web.OpenIddict; using LINGYUN.Abp.AspNetCore.HttpOverrides; using LINGYUN.Abp.AspNetCore.Mvc.Wrapper; using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.Authentication.QQ; using LINGYUN.Abp.Authentication.WeChat; using LINGYUN.Abp.Data.DbMigrator; +using LINGYUN.Abp.Emailing.Platform; using LINGYUN.Abp.EventBus.CAP; +using LINGYUN.Abp.Exporter.MiniExcel; +using LINGYUN.Abp.Gdpr; +using LINGYUN.Abp.Gdpr.Web; using LINGYUN.Abp.Identity.AspNetCore.Session; -using LINGYUN.Abp.Identity.EntityFrameworkCore; using LINGYUN.Abp.Identity.OrganizaztionUnits; using LINGYUN.Abp.Identity.Session.AspNetCore; using LINGYUN.Abp.Localization.CultureMap; -using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; using LINGYUN.Abp.OpenIddict.AspNetCore.Session; using LINGYUN.Abp.OpenIddict.LinkUser; using LINGYUN.Abp.OpenIddict.Portal; using LINGYUN.Abp.OpenIddict.Sms; using LINGYUN.Abp.OpenIddict.WeChat; using LINGYUN.Abp.OpenIddict.WeChat.Work; -using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; -using LINGYUN.Abp.Sms.Aliyun; -using LINGYUN.Platform.EntityFrameworkCore; +using LINGYUN.Abp.Sms.Platform; using LY.MicroService.AuthServer.EntityFrameworkCore; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Volo.Abp; -using Volo.Abp.Account.Web; using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite; using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.Autofac; using Volo.Abp.Caching.StackExchangeRedis; -using Volo.Abp.FeatureManagement.EntityFrameworkCore; -using Volo.Abp.Identity; -using Volo.Abp.MailKit; using Volo.Abp.Modularity; -using Volo.Abp.OpenIddict.EntityFrameworkCore; -using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.PermissionManagement.Identity; -using Volo.Abp.SettingManagement.EntityFrameworkCore; namespace LY.MicroService.AuthServer; @@ -49,16 +43,18 @@ namespace LY.MicroService.AuthServer; typeof(AbpSerilogEnrichersApplicationModule), typeof(AbpSerilogEnrichersUniqueIdModule), typeof(AbpAspNetCoreSerilogModule), - typeof(AbpAccountWebOpenIddictModule), typeof(AbpAccountApplicationModule), + typeof(AbpAccountHttpApiModule), + typeof(AbpAccountWebOpenIddictModule), + typeof(AbpGdprApplicationModule), + typeof(AbpGdprHttpApiModule), + typeof(AbpGdprWebModule), typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule), typeof(AbpAutofacModule), typeof(AbpCachingStackExchangeRedisModule), - typeof(AbpIdentityEntityFrameworkCoreModule), - typeof(AbpIdentityApplicationModule), typeof(AbpIdentityAspNetCoreSessionModule), typeof(AbpOpenIddictAspNetCoreSessionModule), - typeof(AbpOpenIddictEntityFrameworkCoreModule), + typeof(AbpIdentitySessionAspNetCoreModule), typeof(AbpOpenIddictSmsModule), typeof(AbpOpenIddictWeChatModule), typeof(AbpOpenIddictLinkUserModule), @@ -67,22 +63,17 @@ namespace LY.MicroService.AuthServer; typeof(AbpAuthenticationQQModule), typeof(AbpAuthenticationWeChatModule), typeof(AbpIdentityOrganizaztionUnitsModule), - typeof(PlatformEntityFrameworkCoreModule), - typeof(AbpLocalizationManagementEntityFrameworkCoreModule), typeof(AbpPermissionManagementDomainIdentityModule), - typeof(AbpPermissionManagementEntityFrameworkCoreModule), - typeof(AbpSettingManagementEntityFrameworkCoreModule), - typeof(AbpFeatureManagementEntityFrameworkCoreModule), - typeof(AbpSaasEntityFrameworkCoreModule), typeof(AuthServerMigrationsEntityFrameworkCoreModule), typeof(AbpDataDbMigratorModule), typeof(AbpAuditLoggingElasticsearchModule), // 放在 AbpIdentity 模块之后,避免被覆盖 typeof(AbpLocalizationCultureMapModule), typeof(AbpAspNetCoreMvcWrapperModule), typeof(AbpAspNetCoreHttpOverridesModule), - typeof(AbpMailKitModule), - typeof(AbpCAPEventBusModule), - typeof(AbpAliyunSmsModule) + typeof(AbpExporterMiniExcelModule), + typeof(AbpEmailingPlatformModule), + typeof(AbpSmsPlatformModule), + typeof(AbpCAPEventBusModule) )] public partial class AuthServerModule : AbpModule { @@ -110,6 +101,7 @@ public partial class AuthServerModule : AbpModule ConfigureIdentity(configuration); ConfigureVirtualFileSystem(); ConfigureFeatureManagement(); + ConfigureSettingManagement(); ConfigureLocalization(); ConfigureDataSeeder(); ConfigureUrls(configuration); diff --git a/aspnet-core/services/LY.MicroService.AuthServer/DataSeeder/AuthServerDataSeedContributor.cs b/aspnet-core/services/LY.MicroService.AuthServer/DataSeeder/AuthServerDataSeedContributor.cs index 1f1fdf5ae..4953aa03a 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/DataSeeder/AuthServerDataSeedContributor.cs +++ b/aspnet-core/services/LY.MicroService.AuthServer/DataSeeder/AuthServerDataSeedContributor.cs @@ -2,42 +2,52 @@ using LINGYUN.Abp.OpenIddict.LinkUser; using LINGYUN.Abp.OpenIddict.Sms; using LINGYUN.Abp.OpenIddict.WeChat; -using OpenIddict.Abstractions; +using OpenIddict.Abstractions; using System; -using System.Globalization; +using System.Globalization; using System.Threading.Tasks; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; using Volo.Abp.Guids; using Volo.Abp.Identity; -using Volo.Abp.MultiTenancy; - -namespace LY.MicroService.AuthServer.DataSeeder; - -public class ServerDataSeedContributor : IDataSeedContributor, ITransientDependency -{ - private readonly ICurrentTenant _currentTenant; - private readonly IGuidGenerator _guidGenerator; - private readonly IOpenIddictApplicationManager _applicationManager; - private readonly IOpenIddictScopeManager _scopeManager; - private readonly IIdentityClaimTypeRepository _claimTypeRepository; - - public ServerDataSeedContributor( - ICurrentTenant currentTenant, - IGuidGenerator guidGenerator, - IOpenIddictScopeManager scopeManager, - IOpenIddictApplicationManager applicationManager, - IIdentityClaimTypeRepository identityClaimTypeRepository) - { - _currentTenant = currentTenant; - _guidGenerator = guidGenerator; - _scopeManager = scopeManager; - _applicationManager = applicationManager; - _claimTypeRepository = identityClaimTypeRepository; - } - - public async Task SeedAsync(DataSeedContext context) - { +using Volo.Abp.MultiTenancy; +using Volo.Abp.OpenIddict.Applications; +using Volo.Abp.OpenIddict.Scopes; + +namespace LY.MicroService.AuthServer.DataSeeder; + +public class ServerDataSeedContributor : IDataSeedContributor, ITransientDependency +{ + private readonly ICurrentTenant _currentTenant; + private readonly IGuidGenerator _guidGenerator; + private readonly IOpenIddictApplicationManager _applicationManager; + private readonly IOpenIddictApplicationRepository _applicationRepository; + + private readonly IOpenIddictScopeManager _scopeManager; + private readonly IOpenIddictScopeRepository _scopeRepository; + + private readonly IIdentityClaimTypeRepository _claimTypeRepository; + + public ServerDataSeedContributor( + ICurrentTenant currentTenant, + IGuidGenerator guidGenerator, + IOpenIddictScopeManager scopeManager, + IOpenIddictScopeRepository scopeRepository, + IOpenIddictApplicationManager applicationManager, + IOpenIddictApplicationRepository applicationRepository, + IIdentityClaimTypeRepository identityClaimTypeRepository) + { + _currentTenant = currentTenant; + _guidGenerator = guidGenerator; + _scopeManager = scopeManager; + _scopeRepository = scopeRepository; + _applicationManager = applicationManager; + _applicationRepository = applicationRepository; + _claimTypeRepository = identityClaimTypeRepository; + } + + public async Task SeedAsync(DataSeedContext context) + { if (!await _claimTypeRepository.AnyAsync(IdentityConsts.ClaimType.Avatar.Name)) { await _claimTypeRepository.InsertAsync( @@ -47,129 +57,129 @@ public class ServerDataSeedContributor : IDataSeedContributor, ITransientDepende isStatic: true ) ); - } - - if (await _scopeManager.FindByNameAsync("lingyun-abp-application") == null) - { - await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor() - { - Name = "lingyun-abp-application", - DisplayName = "lingyun-abp-application", - DisplayNames = - { - [CultureInfo.GetCultureInfo("en")] = "abp application", - [CultureInfo.GetCultureInfo("zh-Hans")] = "abp application", - }, - Resources = - { - "lingyun-abp-application" - } - }); - } - - if (await _applicationManager.FindByClientIdAsync("vue-admin-client") == null) - { - await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor - { - ClientId = "vue-admin-client", - ClientSecret = "1q2w3e*", - ConsentType = OpenIddictConstants.ConsentTypes.Explicit, - DisplayName = "Vue Vben Admin Abp Application", - PostLogoutRedirectUris = - { - new Uri("https://127.0.0.1:3100/signout-callback-oidc"), - new Uri("http://127.0.0.1:3100") - }, - RedirectUris = - { - new Uri("https://127.0.0.1:3100/signin-oidc"), - new Uri("http://127.0.0.1:3100") - }, - Permissions = - { - OpenIddictConstants.Permissions.Endpoints.Authorization, - OpenIddictConstants.Permissions.Endpoints.Token, - OpenIddictConstants.Permissions.Endpoints.Device, - OpenIddictConstants.Permissions.Endpoints.Introspection, - OpenIddictConstants.Permissions.Endpoints.Revocation, - OpenIddictConstants.Permissions.Endpoints.Logout, - - OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, - OpenIddictConstants.Permissions.GrantTypes.Implicit, - OpenIddictConstants.Permissions.GrantTypes.Password, - OpenIddictConstants.Permissions.GrantTypes.RefreshToken, - OpenIddictConstants.Permissions.GrantTypes.DeviceCode, - OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, - OpenIddictConstants.Permissions.Prefixes.GrantType + WeChatTokenExtensionGrantConsts.OfficialGrantType, - OpenIddictConstants.Permissions.Prefixes.GrantType + WeChatTokenExtensionGrantConsts.MiniProgramGrantType, - OpenIddictConstants.Permissions.Prefixes.GrantType + SmsTokenExtensionGrantConsts.GrantType, - OpenIddictConstants.Permissions.Prefixes.GrantType + LinkUserTokenExtensionGrantConsts.GrantType, - - OpenIddictConstants.Permissions.ResponseTypes.Code, - OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, - OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, - OpenIddictConstants.Permissions.ResponseTypes.CodeToken, - OpenIddictConstants.Permissions.ResponseTypes.IdToken, - OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, - OpenIddictConstants.Permissions.ResponseTypes.None, - OpenIddictConstants.Permissions.ResponseTypes.Token, - - OpenIddictConstants.Permissions.Scopes.Roles, - OpenIddictConstants.Permissions.Scopes.Profile, - OpenIddictConstants.Permissions.Scopes.Email, - OpenIddictConstants.Permissions.Scopes.Address, - OpenIddictConstants.Permissions.Scopes.Phone, - OpenIddictConstants.Permissions.Prefixes.Scope + WeChatTokenExtensionGrantConsts.ProfileKey, - OpenIddictConstants.Permissions.Prefixes.Scope + "lingyun-abp-application" - } - }); - } - - if (await _applicationManager.FindByClientIdAsync("InternalServiceClient") == null) - { - await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor - { - ClientId = "InternalServiceClient", - ClientSecret = "1q2w3e*", - ClientType = OpenIddictConstants.ClientTypes.Confidential, - ConsentType = OpenIddictConstants.ConsentTypes.Explicit, - DisplayName = "Internal Service Client", - PostLogoutRedirectUris = {}, - RedirectUris = {}, - Permissions = - { - OpenIddictConstants.Permissions.Endpoints.Authorization, - OpenIddictConstants.Permissions.Endpoints.Token, - OpenIddictConstants.Permissions.Endpoints.Device, - OpenIddictConstants.Permissions.Endpoints.Introspection, - OpenIddictConstants.Permissions.Endpoints.Revocation, - OpenIddictConstants.Permissions.Endpoints.Logout, - - OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, - OpenIddictConstants.Permissions.GrantTypes.Implicit, - OpenIddictConstants.Permissions.GrantTypes.Password, - OpenIddictConstants.Permissions.GrantTypes.RefreshToken, - OpenIddictConstants.Permissions.GrantTypes.DeviceCode, - OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, - - OpenIddictConstants.Permissions.ResponseTypes.Code, - OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, - OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, - OpenIddictConstants.Permissions.ResponseTypes.CodeToken, - OpenIddictConstants.Permissions.ResponseTypes.IdToken, - OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, - OpenIddictConstants.Permissions.ResponseTypes.None, - OpenIddictConstants.Permissions.ResponseTypes.Token, - - OpenIddictConstants.Permissions.Scopes.Roles, - OpenIddictConstants.Permissions.Scopes.Profile, - OpenIddictConstants.Permissions.Scopes.Email, - OpenIddictConstants.Permissions.Scopes.Address, - OpenIddictConstants.Permissions.Scopes.Phone, - - OpenIddictConstants.Permissions.Prefixes.Scope + "lingyun-abp-application" - } - }); - } - } -} + } + + if (await _scopeRepository.FindByNameAsync("lingyun-abp-application") == null) + { + await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor() + { + Name = "lingyun-abp-application", + DisplayName = "lingyun-abp-application", + DisplayNames = + { + [CultureInfo.GetCultureInfo("en")] = "abp application", + [CultureInfo.GetCultureInfo("zh-Hans")] = "abp application", + }, + Resources = + { + "lingyun-abp-application" + } + }); + } + + if (await _applicationRepository.FindByClientIdAsync("vue-admin-client") == null) + { + await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor + { + ClientId = "vue-admin-client", + ClientSecret = "1q2w3e*", + ConsentType = OpenIddictConstants.ConsentTypes.Explicit, + DisplayName = "Vue Vben Admin Abp Application", + PostLogoutRedirectUris = + { + new Uri("https://127.0.0.1:3100/signout-callback-oidc"), + new Uri("http://127.0.0.1:3100") + }, + RedirectUris = + { + new Uri("https://127.0.0.1:3100/signin-oidc"), + new Uri("http://127.0.0.1:3100") + }, + Permissions = + { + OpenIddictConstants.Permissions.Endpoints.Authorization, + OpenIddictConstants.Permissions.Endpoints.Token, + OpenIddictConstants.Permissions.Endpoints.Device, + OpenIddictConstants.Permissions.Endpoints.Introspection, + OpenIddictConstants.Permissions.Endpoints.Revocation, + OpenIddictConstants.Permissions.Endpoints.Logout, + + OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, + OpenIddictConstants.Permissions.GrantTypes.Implicit, + OpenIddictConstants.Permissions.GrantTypes.Password, + OpenIddictConstants.Permissions.GrantTypes.RefreshToken, + OpenIddictConstants.Permissions.GrantTypes.DeviceCode, + OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, + OpenIddictConstants.Permissions.Prefixes.GrantType + WeChatTokenExtensionGrantConsts.OfficialGrantType, + OpenIddictConstants.Permissions.Prefixes.GrantType + WeChatTokenExtensionGrantConsts.MiniProgramGrantType, + OpenIddictConstants.Permissions.Prefixes.GrantType + SmsTokenExtensionGrantConsts.GrantType, + OpenIddictConstants.Permissions.Prefixes.GrantType + LinkUserTokenExtensionGrantConsts.GrantType, + + OpenIddictConstants.Permissions.ResponseTypes.Code, + OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, + OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, + OpenIddictConstants.Permissions.ResponseTypes.CodeToken, + OpenIddictConstants.Permissions.ResponseTypes.IdToken, + OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, + OpenIddictConstants.Permissions.ResponseTypes.None, + OpenIddictConstants.Permissions.ResponseTypes.Token, + + OpenIddictConstants.Permissions.Scopes.Roles, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Prefixes.Scope + WeChatTokenExtensionGrantConsts.ProfileKey, + OpenIddictConstants.Permissions.Prefixes.Scope + "lingyun-abp-application" + } + }); + } + + if (await _applicationRepository.FindByClientIdAsync("InternalServiceClient") == null) + { + await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor + { + ClientId = "InternalServiceClient", + ClientSecret = "1q2w3e*", + ClientType = OpenIddictConstants.ClientTypes.Confidential, + ConsentType = OpenIddictConstants.ConsentTypes.Explicit, + DisplayName = "Internal Service Client", + PostLogoutRedirectUris = {}, + RedirectUris = {}, + Permissions = + { + OpenIddictConstants.Permissions.Endpoints.Authorization, + OpenIddictConstants.Permissions.Endpoints.Token, + OpenIddictConstants.Permissions.Endpoints.Device, + OpenIddictConstants.Permissions.Endpoints.Introspection, + OpenIddictConstants.Permissions.Endpoints.Revocation, + OpenIddictConstants.Permissions.Endpoints.Logout, + + OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, + OpenIddictConstants.Permissions.GrantTypes.Implicit, + OpenIddictConstants.Permissions.GrantTypes.Password, + OpenIddictConstants.Permissions.GrantTypes.RefreshToken, + OpenIddictConstants.Permissions.GrantTypes.DeviceCode, + OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, + + OpenIddictConstants.Permissions.ResponseTypes.Code, + OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, + OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, + OpenIddictConstants.Permissions.ResponseTypes.CodeToken, + OpenIddictConstants.Permissions.ResponseTypes.IdToken, + OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, + OpenIddictConstants.Permissions.ResponseTypes.None, + OpenIddictConstants.Permissions.ResponseTypes.Token, + + OpenIddictConstants.Permissions.Scopes.Roles, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Phone, + + OpenIddictConstants.Permissions.Prefixes.Scope + "lingyun-abp-application" + } + }); + } + } +} diff --git a/aspnet-core/services/LY.MicroService.AuthServer/LY.MicroService.AuthServer.csproj b/aspnet-core/services/LY.MicroService.AuthServer/LY.MicroService.AuthServer.csproj index 65737ee4a..d9e175fb3 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/LY.MicroService.AuthServer.csproj +++ b/aspnet-core/services/LY.MicroService.AuthServer/LY.MicroService.AuthServer.csproj @@ -1,4 +1,4 @@ - + @@ -44,20 +44,13 @@ runtime; build; native; contentfiles; analyzers; buildtransitive --> - - - - - - - @@ -67,7 +60,7 @@ - + @@ -77,20 +70,23 @@ + + + + + - - - - + + diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/UseRecoveryCode.cshtml b/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/UseRecoveryCode.cshtml deleted file mode 100644 index 8311a8ea5..000000000 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/UseRecoveryCode.cshtml +++ /dev/null @@ -1,4 +0,0 @@ -@page -@model LY.MicroService.AuthServer.Pages.Account.UseRecoveryCodeModel -@{ -} diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/UseRecoveryCode.cshtml.cs b/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/UseRecoveryCode.cshtml.cs deleted file mode 100644 index a66a74b31..000000000 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Account/UseRecoveryCode.cshtml.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.RazorPages; - -namespace LY.MicroService.AuthServer.Pages.Account -{ - public class UseRecoveryCodeModel : PageModel - { - public void OnGet() - { - } - } -} diff --git a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Index.cshtml.cs b/aspnet-core/services/LY.MicroService.AuthServer/Pages/Index.cshtml.cs index 063b7fc9f..7e54f99fd 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/Pages/Index.cshtml.cs +++ b/aspnet-core/services/LY.MicroService.AuthServer/Pages/Index.cshtml.cs @@ -1,11 +1,10 @@ using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; -namespace LY.MicroService.AuthServer.Pages +namespace LY.MicroService.AuthServer.Pages; + +public class IndexModel : AbpPageModel { - public class IndexModel : AbpPageModel + public void OnGet() { - public void OnGet() - { - } } } \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.AuthServer/appsettings.Development.json b/aspnet-core/services/LY.MicroService.AuthServer/appsettings.Development.json index 5934155fe..bc78dbb5d 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.AuthServer/appsettings.Development.json @@ -6,7 +6,8 @@ "secret": "1q2w3E*", "nodes": "http://127.0.0.1:15000", "name": "AuthServer", - "tag": "AuthServer" + "tag": "AuthServer", + "configCacheEncrypt": true }, "App": { "CorsOrigins": "http://127.0.0.1:3100", @@ -44,16 +45,10 @@ } }, "ConnectionStrings": { - "Default": "Server=127.0.0.1;Database=AuthServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=AuthServer-v70;User Id=root;Password=123456;SslMode=None", - "OpenIddict": "Server=127.0.0.1;Database=AuthServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-V70;User Id=root;Password=123456;SslMode=None", - "AppPlatform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None" + "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=AuthServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "CAP": { "EventBus": { @@ -86,6 +81,12 @@ "Configuration": "127.0.0.1,defaultDatabase=10", "InstanceName": "LINGYUN.Abp.Application" }, + "RemoteServices": { + "Platform": { + "BaseUrl": "http://127.0.0.1:30025", + "UseCurrentAccessToken": false + } + }, "AuthServer": { "Authority": "http://127.0.0.1:44385/", "Audience": "lingyun-abp-application", @@ -134,11 +135,11 @@ }, "Serilog": { "MinimumLevel": { - "Default": "Debug", + "Default": "Information", "Override": { "System": "Warning", "Microsoft": "Warning", - "DotNetCore": "Debug" + "DotNetCore": "Information" } }, "WriteTo": [ diff --git a/aspnet-core/services/LY.MicroService.AuthServer/appsettings.json b/aspnet-core/services/LY.MicroService.AuthServer/appsettings.json index 4c8758024..f792656a8 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/appsettings.json +++ b/aspnet-core/services/LY.MicroService.AuthServer/appsettings.json @@ -11,7 +11,6 @@ "DefaultSalt": "sf&5)s3#" }, "Json": { - "OutputDateTimeFormat": "yyyy-MM-dd HH:mm:ss", "InputDateTimeFormats": [ "yyyy-MM-dd HH:mm:ss", "yyyy-MM-ddTHH:mm:ss" @@ -19,7 +18,7 @@ }, "Serilog": { "MinimumLevel": { - "Default": "Debug", + "Default": "Information", "Override": { "System": "Warning", "Microsoft": "Warning", diff --git a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.cs b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.cs index 98c554fdd..cabb6e104 100644 --- a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.cs +++ b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.cs @@ -9,6 +9,7 @@ using LINGYUN.Abp.CachingManagement.StackExchangeRedis; using LINGYUN.Abp.Claims.Mapping; using LINGYUN.Abp.Data.DbMigrator; using LINGYUN.Abp.DataProtectionManagement; +using LINGYUN.Abp.Emailing.Platform; using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.ExceptionHandling.Emailing; using LINGYUN.Abp.FeatureManagement; @@ -27,7 +28,7 @@ using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; using LINGYUN.Abp.SettingManagement; -using LINGYUN.Abp.Sms.Aliyun; +using LINGYUN.Abp.Sms.Platform; using LINGYUN.Abp.Tencent.SettingManagement; using LINGYUN.Abp.TextTemplating; using LINGYUN.Abp.TextTemplating.EntityFrameworkCore; @@ -44,11 +45,9 @@ using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy; using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.Autofac; using Volo.Abp.Caching.StackExchangeRedis; -using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Http.Client; using Volo.Abp.IdentityServer.EntityFrameworkCore; -using Volo.Abp.MailKit; using Volo.Abp.Modularity; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.PermissionManagement.Identity; @@ -114,8 +113,8 @@ namespace LY.MicroService.BackendAdmin; typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpEmailingExceptionHandlingModule), typeof(AbpHttpClientModule), - typeof(AbpMailKitModule), - typeof(AbpAliyunSmsModule), + typeof(AbpSmsPlatformModule), + typeof(AbpEmailingPlatformModule), typeof(AbpCachingStackExchangeRedisModule), typeof(AbpLocalizationCultureMapModule), typeof(AbpAspNetCoreMvcWrapperModule), diff --git a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/LY.MicroService.BackendAdmin.HttpApi.Host.csproj b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/LY.MicroService.BackendAdmin.HttpApi.Host.csproj index 911141e45..9f59d4959 100644 --- a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/LY.MicroService.BackendAdmin.HttpApi.Host.csproj +++ b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/LY.MicroService.BackendAdmin.HttpApi.Host.csproj @@ -51,7 +51,6 @@ - @@ -75,7 +74,6 @@ - @@ -101,6 +99,8 @@ + + diff --git a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.Development.json b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.Development.json index 099a28f3f..4a878629e 100644 --- a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.Development.json @@ -6,7 +6,8 @@ "secret": "1q2w3E*", "nodes": "http://127.0.0.1:5000", "name": "BackendAdmin", - "tag": "BackendAdmin" + "tag": "BackendAdmin", + "configCacheEncrypt": true }, "App": { "CorsOrigins": "http://127.0.0.1:3100", @@ -26,14 +27,9 @@ }, "ConnectionStrings": { "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None" + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=AuthServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "CAP": { "EventBus": { @@ -72,6 +68,12 @@ "MapInboundClaims": false, "RequireHttpsMetadata": false }, + "RemoteServices": { + "Platform": { + "BaseUrl": "http://127.0.0.1:30025", + "UseCurrentAccessToken": false + } + }, "Logging": { "Serilog": { "Elasticsearch": { diff --git a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.Configure.cs b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.Configure.cs index a6bc0c37e..1610ea5f7 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.Configure.cs @@ -33,6 +33,7 @@ using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Auditing; using Volo.Abp.Authorization.Permissions; using Volo.Abp.Caching; +using Volo.Abp.Data; using Volo.Abp.Domain.Entities.Events.Distributed; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement; @@ -126,6 +127,36 @@ public partial class IdentityServerHttpApiHostModule mysql.TranslateParameterizedCollectionsToConstants(); }); }); + + Configure(options => + { + options.Databases.Configure("Platform", database => + { + database.MapConnection("AbpSaas"); + database.MapConnection("Workflow"); + database.MapConnection("AppPlatform"); + database.MapConnection("TaskManagement"); + database.MapConnection("AbpAuditLogging"); + database.MapConnection("AbpTextTemplating"); + database.MapConnection("AbpSettingManagement"); + database.MapConnection("AbpFeatureManagement"); + database.MapConnection("AbpPermissionManagement"); + database.MapConnection("AbpLocalizationManagement"); + database.MapConnection("AbpDataProtectionManagement"); + }); + options.Databases.Configure("Identity", database => + { + database.MapConnection("AbpGdpr"); + database.MapConnection("AbpIdentity"); + database.MapConnection("AbpOpenIddict"); + database.MapConnection("AbpIdentityServer"); + }); + options.Databases.Configure("Realtime", database => + { + database.MapConnection("Notifications"); + database.MapConnection("MessageService"); + }); + }); } private void ConfigureJsonSerializer(IConfiguration configuration) diff --git a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.cs b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.cs index f49e7f647..6c9189f00 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.cs +++ b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.cs @@ -4,15 +4,20 @@ using LINGYUN.Abp.AspNetCore.Mvc.Wrapper; using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.Authorization.OrganizationUnits; using LINGYUN.Abp.Claims.Mapping; +using LINGYUN.Abp.Emailing.Platform; using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.ExceptionHandling.Emailing; +using LINGYUN.Abp.Exporter.MiniExcel; +using LINGYUN.Abp.Gdpr.EntityFrameworkCore; +using LINGYUN.Abp.Gdpr.Identity; +using LINGYUN.Abp.Gdpr; using LINGYUN.Abp.Identity.Session.AspNetCore; using LINGYUN.Abp.Localization.CultureMap; using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; -using LINGYUN.Abp.Sms.Aliyun; +using LINGYUN.Abp.Sms.Platform; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; @@ -26,7 +31,6 @@ using Volo.Abp.Caching.StackExchangeRedis; using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Http.Client; -using Volo.Abp.MailKit; using Volo.Abp.Modularity; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore; @@ -39,6 +43,10 @@ namespace LY.MicroService.IdentityServer; typeof(AbpAspNetCoreSerilogModule), typeof(AbpAspNetCoreMultiTenancyModule), typeof(AbpAspNetCoreMvcLocalizationModule), + typeof(AbpGdprApplicationModule), + typeof(AbpGdprHttpApiModule), + typeof(AbpGdprDomainIdentityModule), + typeof(AbpGdprEntityFrameworkCoreModule), typeof(LINGYUN.Abp.Account.AbpAccountApplicationModule), typeof(LINGYUN.Abp.Account.AbpAccountHttpApiModule), typeof(LINGYUN.Abp.Identity.AbpIdentityApplicationModule), @@ -57,16 +65,17 @@ namespace LY.MicroService.IdentityServer; typeof(AbpAuthorizationOrganizationUnitsModule), typeof(AbpAuditLoggingElasticsearchModule), typeof(AbpEmailingExceptionHandlingModule), + typeof(AbpEmailingPlatformModule), + typeof(AbpSmsPlatformModule), typeof(AbpCAPEventBusModule), typeof(AbpHttpClientModule), - typeof(AbpAliyunSmsModule), - typeof(AbpMailKitModule), typeof(AbpCachingStackExchangeRedisModule), + typeof(AbpAspNetCoreHttpOverridesModule), typeof(AbpLocalizationCultureMapModule), typeof(AbpIdentitySessionAspNetCoreModule), typeof(AbpAspNetCoreMvcWrapperModule), + typeof(AbpExporterMiniExcelModule), typeof(AbpClaimsMappingModule), - typeof(AbpAspNetCoreHttpOverridesModule), typeof(AbpAutofacModule) )] public partial class IdentityServerHttpApiHostModule : AbpModule diff --git a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/LY.MicroService.identityServer.HttpApi.Host.csproj b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/LY.MicroService.identityServer.HttpApi.Host.csproj index bb477b54f..491b2ea05 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/LY.MicroService.identityServer.HttpApi.Host.csproj +++ b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/LY.MicroService.identityServer.HttpApi.Host.csproj @@ -1,4 +1,4 @@ - + @@ -69,7 +69,7 @@ - + @@ -81,6 +81,10 @@ + + + + @@ -89,6 +93,8 @@ + + diff --git a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.Development.json b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.Development.json index 7db7bc633..14e25e590 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.Development.json @@ -6,7 +6,8 @@ "secret": "1q2w3E*", "nodes": "http://127.0.0.1:5000", "name": "IdentityServer.Admin", - "tag": "IdentityServer.Admin" + "tag": "IdentityServer.Admin", + "configCacheEncrypt": true }, "App": { "ShowPii": true, @@ -45,15 +46,10 @@ } }, "ConnectionStrings": { - "Default": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None" + "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "CAP": { "EventBus": { @@ -86,6 +82,12 @@ "Configuration": "127.0.0.1,defaultDatabase=10", "InstanceName": "LINGYUN.Abp.Application" }, + "RemoteServices": { + "Platform": { + "BaseUrl": "http://127.0.0.1:30025", + "UseCurrentAccessToken": false + } + }, "AuthServer": { "Authority": "http://127.0.0.1:44385/", "Audience": "lingyun-abp-application", diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.Configure.cs b/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.Configure.cs index be26d0d63..e8082f4b6 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.Configure.cs @@ -1,4 +1,6 @@ using DotNetCore.CAP; +using LINGYUN.Abp.Account.Web; +using LINGYUN.Abp.Account.Web.IdentityServer; using LINGYUN.Abp.Identity.Session; using LINGYUN.Abp.IdentityServer.IdentityResources; using LINGYUN.Abp.Localization.CultureMap; @@ -20,6 +22,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Hosting.Internal; using Microsoft.IdentityModel.Logging; using OpenTelemetry.Metrics; using OpenTelemetry.Resources; @@ -47,6 +50,7 @@ using Volo.Abp.Json.SystemTextJson; using Volo.Abp.Localization; using Volo.Abp.MultiTenancy; using Volo.Abp.Security.Claims; +using Volo.Abp.SettingManagement; using Volo.Abp.Threading; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.VirtualFileSystem; @@ -165,6 +169,14 @@ public partial class IdentityServerModule }); } + private void ConfigureSettingManagement() + { + Configure(options => + { + options.IsDynamicSettingStoreEnabled = true; + }); + } + private void ConfigureJsonSerializer(IConfiguration configuration) { // 统一时间日期格式 @@ -272,12 +284,21 @@ public partial class IdentityServerModule options.IsRemoteRefreshEnabled = false; }); } - private void ConfigureVirtualFileSystem() + private void ConfigureVirtualFileSystem(IWebHostEnvironment hostingEnvironment) { Configure(options => { options.FileSets.AddEmbedded("LY.MicroService.IdentityServer"); }); + + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical(hostingEnvironment.ContentRootPath); + options.FileSets.ReplaceEmbeddedByPhysical(hostingEnvironment.ContentRootPath); + }); + } } private void ConfigureMvcUiTheme() diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.cs b/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.cs index b2bcd80e6..3e67e66ee 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.cs +++ b/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.cs @@ -1,48 +1,41 @@ using LINGYUN.Abp.Account; +using LINGYUN.Abp.Account.Web.IdentityServer; using LINGYUN.Abp.AspNetCore.HttpOverrides; using LINGYUN.Abp.AspNetCore.Mvc.Wrapper; using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.Authentication.QQ; using LINGYUN.Abp.Authentication.WeChat; using LINGYUN.Abp.Data.DbMigrator; +using LINGYUN.Abp.Emailing.Platform; using LINGYUN.Abp.EventBus.CAP; -using LINGYUN.Abp.Http.Client.Wrapper; +using LINGYUN.Abp.Exporter.MiniExcel; +using LINGYUN.Abp.Gdpr; +using LINGYUN.Abp.Gdpr.Web; using LINGYUN.Abp.Identity.AspNetCore.Session; -using LINGYUN.Abp.Identity.EntityFrameworkCore; using LINGYUN.Abp.Identity.OrganizaztionUnits; using LINGYUN.Abp.Identity.Session.AspNetCore; using LINGYUN.Abp.IdentityServer; -using LINGYUN.Abp.IdentityServer.EntityFrameworkCore; using LINGYUN.Abp.IdentityServer.LinkUser; using LINGYUN.Abp.IdentityServer.Portal; using LINGYUN.Abp.IdentityServer.Session; using LINGYUN.Abp.IdentityServer.WeChat.Work; using LINGYUN.Abp.Localization.CultureMap; -using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; -using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; -using LINGYUN.Abp.Sms.Aliyun; -using LINGYUN.Platform.EntityFrameworkCore; +using LINGYUN.Abp.Sms.Platform; using LY.MicroService.IdentityServer.EntityFrameworkCore; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Volo.Abp; -using Volo.Abp.Account.Web; using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.Autofac; using Volo.Abp.Caching.StackExchangeRedis; -using Volo.Abp.FeatureManagement.EntityFrameworkCore; -using Volo.Abp.Identity; -using Volo.Abp.MailKit; using Volo.Abp.Modularity; -using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.PermissionManagement.Identity; -using Volo.Abp.SettingManagement.EntityFrameworkCore; namespace LY.MicroService.IdentityServer; @@ -50,47 +43,36 @@ namespace LY.MicroService.IdentityServer; typeof(AbpSerilogEnrichersApplicationModule), typeof(AbpSerilogEnrichersUniqueIdModule), typeof(AbpAspNetCoreSerilogModule), - typeof(AbpAccountWebIdentityServerModule), typeof(AbpAccountApplicationModule), + typeof(AbpAccountHttpApiModule), + typeof(AbpAccountWebIdentityServerModule), + typeof(AbpGdprApplicationModule), + typeof(AbpGdprHttpApiModule), + typeof(AbpGdprWebModule), typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule), typeof(AbpAutofacModule), typeof(AbpCachingStackExchangeRedisModule), - typeof(AbpIdentityEntityFrameworkCoreModule), - typeof(AbpIdentityApplicationModule), - - // 请勿混淆这两个模块, 他们各自都自己的职能 - // 此模块仅用于认证中心 typeof(AbpIdentityAspNetCoreSessionModule), - // 此模块可用于所有微服务 + typeof(AbpIdentityServerSessionModule), typeof(AbpIdentitySessionAspNetCoreModule), - - typeof(AbpIdentityServerEntityFrameworkCoreModule), - typeof(AbpIdentityServerSmsValidatorModule), + typeof(AbpIdentityServerSmsModule), typeof(AbpIdentityServerLinkUserModule), typeof(AbpIdentityServerPortalModule), typeof(AbpIdentityServerWeChatWorkModule), - typeof(AbpIdentityServerSessionModule), - typeof(AbpAuthenticationWeChatModule), typeof(AbpAuthenticationQQModule), + typeof(AbpAuthenticationWeChatModule), typeof(AbpIdentityOrganizaztionUnitsModule), - typeof(PlatformEntityFrameworkCoreModule), - typeof(AbpLocalizationManagementEntityFrameworkCoreModule), typeof(AbpPermissionManagementDomainIdentityModule), - typeof(AbpPermissionManagementEntityFrameworkCoreModule), - typeof(AbpSettingManagementEntityFrameworkCoreModule), - typeof(AbpFeatureManagementEntityFrameworkCoreModule), - typeof(AbpSaasEntityFrameworkCoreModule), typeof(IdentityServerMigrationsEntityFrameworkCoreModule), typeof(AbpDataDbMigratorModule), - //typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpAuditLoggingElasticsearchModule), // 放在 AbpIdentity 模块之后,避免被覆盖 typeof(AbpLocalizationCultureMapModule), - typeof(AbpCAPEventBusModule), - typeof(AbpMailKitModule), - typeof(AbpHttpClientWrapperModule), typeof(AbpAspNetCoreMvcWrapperModule), typeof(AbpAspNetCoreHttpOverridesModule), - typeof(AbpAliyunSmsModule) + typeof(AbpExporterMiniExcelModule), + typeof(AbpEmailingPlatformModule), + typeof(AbpSmsPlatformModule), + typeof(AbpCAPEventBusModule) )] public partial class IdentityServerModule : AbpModule { @@ -115,8 +97,8 @@ public partial class IdentityServerModule : AbpModule ConfigureCaching(configuration); ConfigureIdentity(configuration); - ConfigureVirtualFileSystem(); ConfigureFeatureManagement(); + ConfigureSettingManagement(); ConfigureLocalization(); ConfigureAuditing(configuration); ConfigureDataSeeder(); diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/LY.MicroService.IdentityServer.csproj b/aspnet-core/services/LY.MicroService.IdentityServer/LY.MicroService.IdentityServer.csproj index 80d242109..6454c49fe 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/LY.MicroService.IdentityServer.csproj +++ b/aspnet-core/services/LY.MicroService.IdentityServer/LY.MicroService.IdentityServer.csproj @@ -1,4 +1,4 @@ - + @@ -41,20 +41,13 @@ - - - - - - - @@ -65,29 +58,31 @@ - + + - - + + + + + - - - - + + diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml deleted file mode 100644 index 7172ddd34..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml +++ /dev/null @@ -1,103 +0,0 @@ -@using Volo.Abp.Account.Localization -@using Volo.Abp.Users -@using Microsoft.AspNetCore.Mvc.Localization -@using Microsoft.Extensions.Localization -@using Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.PersonalInfo -@using Volo.Abp.AspNetCore.Mvc.UI.Theming -@using Volo.Abp.Data -@using Volo.Abp.Identity.Settings -@using Volo.Abp.Localization -@using Volo.Abp.Settings -@using Volo.Abp.ObjectExtending -@inject IHtmlLocalizer L -@inject ICurrentUser CurrentUser -@inject ISettingProvider SettingManager -@inject IThemeManager ThemeManager -@inject IStringLocalizerFactory StringLocalizerFactory -@model Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.PersonalInfo.AccountProfilePersonalInfoManagementGroupViewComponent.PersonalInfoModel -@{ - var isUserNameUpdateEnabled = string.Equals(await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsUserNameUpdateEnabled), "true", - StringComparison.OrdinalIgnoreCase); - - var isEmailUpdateEnabled = string.Equals(await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsEmailUpdateEnabled), "true", - StringComparison.OrdinalIgnoreCase); -} - -

@L["PersonalSettings"]


- - - - - - - - - - - - - - - - - - - - - - @if (CurrentUser.EmailVerified) - { - - } - else - { - @L["Validation"].Value - } - - - - - - @foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties()) - { - var isAllowed = propertyInfo.Configuration.GetOrDefault(IdentityModuleExtensionConsts.ConfigurationNames.AllowUserToEdit); - - if (isAllowed == null || !isAllowed.Equals(true)) - { - continue; - } - - if (!propertyInfo.Name.EndsWith("_Text")) - { - if (propertyInfo.Type.IsEnum || !propertyInfo.Lookup.Url.IsNullOrEmpty()) - { - if (propertyInfo.Type.IsEnum) - { - Model.ExtraProperties.ToEnum(propertyInfo.Name, propertyInfo.Type); - } - - - } - else - { - - } - } - } - - - diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js deleted file mode 100644 index 55a88e52e..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js +++ /dev/null @@ -1,28 +0,0 @@ -(function ($) { - $(function () { - var l = abp.localization.getResource("AbpAccount"); - - $('#PersonalSettingsForm').submit(function (e) { - e.preventDefault(); - - if (!$('#PersonalSettingsForm').valid()) { - return false; - } - - var input = $('#PersonalSettingsForm').serializeFormToObject(); - - volo.abp.account.profile.update(input).then(function (result) { - abp.notify.success(l('PersonalSettingsSaved')); - updateConcurrencyStamp(); - }); - }); - }); - - abp.event.on('passwordChanged', updateConcurrencyStamp); - - function updateConcurrencyStamp(){ - volo.abp.account.profile.get().then(function(profile){ - $("#ConcurrencyStamp").val(profile.concurrencyStamp); - }); - } -})(jQuery); diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml deleted file mode 100644 index 783ab7bb1..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml +++ /dev/null @@ -1,17 +0,0 @@ -@page -@inject IHtmlLocalizer L -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.IdentityServer.Pages.Account.EmailConfirmModel -@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout -
-
-

@L["EmailConfirm"]

-
- - - @L["Cancel"] - @L["Submit"] - -
-
diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml.cs deleted file mode 100644 index a971f0df8..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml.cs +++ /dev/null @@ -1,74 +0,0 @@ -using LINGYUN.Abp.Account; -using Microsoft.AspNetCore.Mvc; -using System; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.Identity; -using Volo.Abp.Validation; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - public class EmailConfirmModel : AccountPageModel - { - [Required] - [HiddenInput] - [BindProperty(SupportsGet = true)] - public Guid UserId { get; set; } - - [Required] - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ConfirmToken { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - public IMyProfileAppService MyProfileAppService { get; set; } - - public EmailConfirmModel() - { - LocalizationResourceType = typeof(AccountResource); - } - - public async virtual Task OnPostAsync() - { - try - { - ValidateModel(); - - await MyProfileAppService.ConfirmEmailAsync( - new ConfirmEmailInput - { - ConfirmToken = ConfirmToken, - }); - } - catch (AbpIdentityResultException e) - { - if (!string.IsNullOrWhiteSpace(e.Message)) - { - Alerts.Warning(GetLocalizeExceptionMessage(e)); - return Page(); - } - - throw; - } - catch (AbpValidationException) - { - return Page(); - } - - return RedirectToPage("EmailConfirmConfirmation", new - { - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash - }); - } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml deleted file mode 100644 index 39b14ef6b..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml +++ /dev/null @@ -1,13 +0,0 @@ -@page -@model LY.MicroService.IdentityServer.Pages.Account.EmailConfirmConfirmationModel -@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@inject IHtmlLocalizer L -
-
-

@L["EmailConfirm"]

-

@L["YourEmailIsSuccessfullyConfirm"]

- @L["GoToTheApplication"] -
-
diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs deleted file mode 100644 index 57084736e..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using System; -using System.Threading.Tasks; -using Volo.Abp.Account.Web.Pages.Account; - -namespace LY.MicroService.IdentityServer.Pages.Account; - -[AllowAnonymous] -public class EmailConfirmConfirmationModel : AccountPageModel -{ - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml deleted file mode 100644 index 96de45e7a..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml +++ /dev/null @@ -1,26 +0,0 @@ -@page -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.IdentityServer.Pages.Account.SendCodeModel -@inject IHtmlLocalizer L - -
-
-

@L["TwoFactor"]

-
- - - -
- -
-
- @L["SendVerifyCode"] -
- - @L["Login"] - - -
-
- diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml.cs deleted file mode 100644 index ed8c6efc4..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml.cs +++ /dev/null @@ -1,128 +0,0 @@ -using LINGYUN.Abp.Account.Emailing; -using LINGYUN.Abp.Identity.Settings; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Rendering; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Volo.Abp; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.Sms; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - public class SendCodeModel : AccountPageModel - { - [BindProperty] - public SendCodeInputModel Input { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public bool RememberMe { get; set; } - - public IEnumerable Providers { get; set; } - - protected ISmsSender SmsSender { get; } - - protected IAccountEmailVerifySender AccountEmailVerifySender { get; } - - public SendCodeModel( - ISmsSender smsSender, - IAccountEmailVerifySender accountEmailVerifySender) - { - SmsSender = smsSender; - AccountEmailVerifySender = accountEmailVerifySender; - - LocalizationResourceType = typeof(AccountResource); - } - - public async virtual Task OnGetAsync() - { - Input = new SendCodeInputModel(); - - var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); - if (user == null) - { - // ˫Ϣ֤ʧ,һ㶼dzʱ˻ûϢ - Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); - return Page(); - } - var userFactors = await UserManager.GetValidTwoFactorProvidersAsync(user); - Providers = userFactors.Select(purpose => new SelectListItem { Text = purpose, Value = purpose }).ToList(); - - return Page(); - } - - public async virtual Task OnPostAsync() - { - var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); - if (user == null) - { - Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); - return Page(); - } - - if (Input.SelectedProvider == "Authenticator") - { - // ûͨʼ/ӽȨҳ - return RedirectToPage("VerifyAuthenticatorCode", new - { - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash, - rememberMe = RememberMe - }); - } - // ֤ - var code = await UserManager.GenerateTwoFactorTokenAsync(user, Input.SelectedProvider); - if (string.IsNullOrWhiteSpace(code)) - { - Alerts.Warning(L["InvaidGenerateTwoFactorToken"]); - return Page(); - } - - if (Input.SelectedProvider == "Email") - { - await AccountEmailVerifySender - .SendMailLoginVerifyCodeAsync( - code, - user.UserName, - user.Email); - } - else if (Input.SelectedProvider == "Phone") - { - var phoneNumber = await UserManager.GetPhoneNumberAsync(user); - var templateCode = await SettingProvider.GetOrNullAsync(IdentitySettingNames.User.SmsUserSignin); - Check.NotNullOrWhiteSpace(templateCode, nameof(IdentitySettingNames.User.SmsUserSignin)); - - // TODO: Ժչģ巢 - var smsMessage = new SmsMessage(phoneNumber, code); - smsMessage.Properties.Add("code", code); - smsMessage.Properties.Add("TemplateCode", templateCode); - - await SmsSender.SendAsync(smsMessage); - } - - return RedirectToPage("VerifyCode", new - { - provider = Input.SelectedProvider, - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash, - rememberMe = RememberMe - }); - } - } - - public class SendCodeInputModel - { - public string SelectedProvider { get; set; } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml deleted file mode 100644 index 7c4e9e79e..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml +++ /dev/null @@ -1,16 +0,0 @@ -@page -@inject IHtmlLocalizer L -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.IdentityServer.Pages.Account.SendEmailConfirmModel -@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout -
-
-

@L["EmailConfirm"]

-
- - @L["Cancel"] - - -
-
diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml.cs deleted file mode 100644 index 8db8a73e9..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml.cs +++ /dev/null @@ -1,75 +0,0 @@ -using LINGYUN.Abp.Account; -using Microsoft.AspNetCore.Mvc; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.Identity; -using Volo.Abp.Validation; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - public class SendEmailConfirmModel : AccountPageModel - { - [BindProperty(SupportsGet = true)] - public string Email { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - public IMyProfileAppService MyProfileAppService { get; set; } - - public SendEmailConfirmModel() - { - LocalizationResourceType = typeof(AccountResource); - } - - public virtual Task OnGetAsync() - { - Email = CurrentUser.Email; - - return Task.FromResult(Page()); - } - - public async virtual Task OnPostAsync() - { - try - { - ValidateModel(); - - await MyProfileAppService.SendEmailConfirmLinkAsync( - new SendEmailConfirmCodeDto - { - Email = Email, - AppName = "MVC", - ReturnUrl = ReturnUrl, - ReturnUrlHash = ReturnUrlHash - }); - } - catch (AbpIdentityResultException e) - { - if (!string.IsNullOrWhiteSpace(e.Message)) - { - Alerts.Warning(GetLocalizeExceptionMessage(e)); - return Page(); - } - - throw; - } - catch (AbpValidationException) - { - return Page(); - } - - return RedirectToPage("~/Account/Manage", new - { - returnUrl = ReturnUrl - }); - } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml deleted file mode 100644 index 479fd4aa2..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml +++ /dev/null @@ -1,4 +0,0 @@ -@page -@model LY.MicroService.IdentityServer.Pages.Account.UseRecoveryCodeModel -@{ -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml.cs deleted file mode 100644 index 14ab35f03..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.RazorPages; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - public class UseRecoveryCodeModel : PageModel - { - public void OnGet() - { - } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml deleted file mode 100644 index 9a9b65122..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml +++ /dev/null @@ -1,26 +0,0 @@ -@page -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.IdentityServer.Pages.Account.VerifyAuthenticatorCodeModel -@inject IHtmlLocalizer L -
-
-
- - -
- - - -
-
- - -
- @L["VerifyAuthenticatorCode"] - - @L["Login"] - -
-
-
\ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs deleted file mode 100644 index 659d676fd..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Web.Pages.Account; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - public class VerifyAuthenticatorCodeModel : AccountPageModel - { - [BindProperty] - public VerifyAuthenticatorCodeInputModel Input { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - [BindProperty(SupportsGet = true)] - public bool RememberBrowser { get; set; } - - [HiddenInput] - public bool RememberMe { get; set; } - - public virtual IActionResult OnGet() - { - Input = new VerifyAuthenticatorCodeInputModel(); - - return Page(); - } - - public async virtual Task OnPostAsync() - { - var result = await SignInManager.TwoFactorAuthenticatorSignInAsync(Input.VerifyCode, RememberMe, RememberBrowser); - if (result.Succeeded) - { - return await RedirectSafelyAsync(ReturnUrl, ReturnUrlHash); - } - if (result.IsLockedOut) - { - Logger.LogWarning(7, "User account locked out."); - Alerts.Warning(L["UserLockedOutMessage"]); - return Page(); - } - else - { - Alerts.Danger(L["TwoFactorAuthenticationInvaidUser"]);// TODO: ״̬Ľ - return Page(); - } - } - } - - public class VerifyAuthenticatorCodeInputModel - { - [Required] - public string VerifyCode { get; set; } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml deleted file mode 100644 index 3f3d1f91d..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml +++ /dev/null @@ -1,29 +0,0 @@ -@page -@inject IHtmlLocalizer L -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.IdentityServer.Pages.Account.VerifyCodeModel -
-
-
- - - - -
- -
- - - - - -
- @L["VerifyAuthenticatorCode"] -
- - @L["ReSendVerifyCode"] - -
-
-
diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml.cs deleted file mode 100644 index f11728bbf..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml.cs +++ /dev/null @@ -1,92 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - public class VerifyCodeModel : AccountPageModel - { - [BindProperty] - public VerifyCodeInputModel Input { get; set; } - /// - /// ˫֤ṩ - /// - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string Provider { get; set; } - /// - /// ضUrl - /// - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - /// - /// - /// - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - /// - /// Ƿס¼״̬ - /// - [HiddenInput] - [BindProperty(SupportsGet = true)] - public bool RememberMe { get; set; } - - public VerifyCodeModel() - { - LocalizationResourceType = typeof(AccountResource); - } - - public virtual IActionResult OnGet() - { - Input = new VerifyCodeInputModel(); - - return Page(); - } - - public async virtual Task OnPostAsync() - { - // ֤û¼״̬ - var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); - if (user == null) - { - Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); - return Page(); - } - // ˫ص¼ - var result = await SignInManager.TwoFactorSignInAsync(Provider, Input.VerifyCode, RememberMe, Input.RememberBrowser); - if (result.Succeeded) - { - return await RedirectSafelyAsync(ReturnUrl, ReturnUrlHash); - } - if (result.IsLockedOut) - { - Logger.LogWarning(7, "User account locked out."); - Alerts.Warning(L["UserLockedOutMessage"]); - return Page(); - } - else - { - Alerts.Danger(L["TwoFactorAuthenticationInvaidUser"]);// TODO: ״̬Ľ - return Page(); - } - } - } - - public class VerifyCodeInputModel - { - /// - /// Ƿмס¼״̬ - /// - public bool RememberBrowser { get; set; } - /// - /// ͵֤ - /// - [Required] - public string VerifyCode { get; set; } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Index.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Index.cshtml.cs index 63dfb2273..111c7c4c9 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Index.cshtml.cs +++ b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Index.cshtml.cs @@ -1,11 +1,10 @@ using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; -namespace LY.MicroService.IdentityServer.Pages +namespace LY.MicroService.IdentityServer.Pages; + +public class IndexModel : AbpPageModel { - public class IndexModel : AbpPageModel + public void OnGet() { - public void OnGet() - { - } } } \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/_ViewImports.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/_ViewImports.cshtml index 33a021db4..c1da1f5f1 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/_ViewImports.cshtml +++ b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/_ViewImports.cshtml @@ -1,5 +1,4 @@ -@using Microsoft.Extensions.Configuration -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI @addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap @addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.Development.json b/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.Development.json index 4e7fbafda..3233664d0 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.Development.json @@ -6,7 +6,8 @@ "secret": "1q2w3E*", "nodes": "http://127.0.0.1:5000", "name": "AuthServer", - "tag": "AuthServer" + "tag": "AuthServer", + "configCacheEncrypt": true }, "App": { "CorsOrigins": "http://127.0.0.1:3100", @@ -44,16 +45,10 @@ } }, "ConnectionStrings": { - "Default": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AppPlatform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None" + "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "CAP": { "EventBus": { @@ -86,6 +81,12 @@ "Configuration": "127.0.0.1,defaultDatabase=10", "InstanceName": "LINGYUN.Abp.Application" }, + "RemoteServices": { + "Platform": { + "BaseUrl": "http://127.0.0.1:30025", + "UseCurrentAccessToken": false + } + }, "AuthServer": { "Authority": "http://127.0.0.1:44385/", "Audience": "lingyun-abp-application", @@ -132,11 +133,11 @@ }, "Serilog": { "MinimumLevel": { - "Default": "Debug", + "Default": "Information", "Override": { - "System": "Debug", - "Microsoft": "Debug", - "DotNetCore": "Debug" + "System": "Warning", + "Microsoft": "Warning", + "DotNetCore": "Information" } }, "WriteTo": [ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.json b/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.json index 4c8758024..f792656a8 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.json +++ b/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.json @@ -11,7 +11,6 @@ "DefaultSalt": "sf&5)s3#" }, "Json": { - "OutputDateTimeFormat": "yyyy-MM-dd HH:mm:ss", "InputDateTimeFormats": [ "yyyy-MM-dd HH:mm:ss", "yyyy-MM-ddTHH:mm:ss" @@ -19,7 +18,7 @@ }, "Serilog": { "MinimumLevel": { - "Default": "Debug", + "Default": "Information", "Override": { "System": "Warning", "Microsoft": "Warning", diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/gulpfile.js b/aspnet-core/services/LY.MicroService.IdentityServer/gulpfile.js deleted file mode 100644 index 8ff19f245..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/gulpfile.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; - -var gulp = require("gulp"), - path = require('path'), - copyResources = require('./node_modules/@abp/aspnetcore.mvc.ui/gulp/copy-resources.js'); - -exports.default = function(done){ - copyResources(path.resolve('./')) - done(); -}; \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/package.json b/aspnet-core/services/LY.MicroService.IdentityServer/package.json index b5eab08c6..0703f2037 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/package.json +++ b/aspnet-core/services/LY.MicroService.IdentityServer/package.json @@ -3,6 +3,7 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.0.4" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.0.4", + "@abp/qrcode": "~9.0.4" } } \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css index 7e4dfe1e8..ffdf0f023 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css @@ -1,5 +1,5 @@ /*! - * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */ @@ -7,15 +7,13 @@ font-family: var(--fa-style-family, "Font Awesome 6 Free"); font-weight: var(--fa-style, 900); } -.fa, -.fa-classic, -.fa-sharp, .fas, -.fa-solid, .far, -.fa-regular, .fab, -.fa-brands { +.fa-solid, +.fa-regular, +.fa-brands, +.fa { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: var(--fa-display, inline-block); @@ -24,15 +22,24 @@ line-height: 1; text-rendering: auto; } -.fas, +.fas::before, +.far::before, +.fab::before, +.fa-solid::before, +.fa-regular::before, +.fa-brands::before, +.fa::before { + content: var(--fa); } + .fa-classic, +.fas, .fa-solid, .far, .fa-regular { font-family: 'Font Awesome 6 Free'; } -.fab, -.fa-brands { +.fa-brands, +.fab { font-family: 'Font Awesome 6 Brands'; } .fa-1x { @@ -107,7 +114,7 @@ position: relative; } .fa-li { - left: calc(var(--fa-li-width, 2em) * -1); + left: calc(-1 * var(--fa-li-width, 2em)); position: absolute; text-align: center; width: var(--fa-li-width, 2em); @@ -129,118 +136,71 @@ margin-left: var(--fa-pull-margin, 0.3em); } .fa-beat { - -webkit-animation-name: fa-beat; - animation-name: fa-beat; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); - animation-timing-function: var(--fa-animation-timing, ease-in-out); } + animation-name: fa-beat; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } .fa-bounce { - -webkit-animation-name: fa-bounce; - animation-name: fa-bounce; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + animation-name: fa-bounce; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } .fa-fade { - -webkit-animation-name: fa-fade; - animation-name: fa-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + animation-name: fa-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } .fa-beat-fade { - -webkit-animation-name: fa-beat-fade; - animation-name: fa-beat-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + animation-name: fa-beat-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } .fa-flip { - -webkit-animation-name: fa-flip; - animation-name: fa-flip; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); - animation-timing-function: var(--fa-animation-timing, ease-in-out); } + animation-name: fa-flip; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } .fa-shake { - -webkit-animation-name: fa-shake; - animation-name: fa-shake; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, linear); - animation-timing-function: var(--fa-animation-timing, linear); } + animation-name: fa-shake; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); } .fa-spin { - -webkit-animation-name: fa-spin; - animation-name: fa-spin; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 2s); - animation-duration: var(--fa-animation-duration, 2s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, linear); - animation-timing-function: var(--fa-animation-timing, linear); } + animation-name: fa-spin; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 2s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); } .fa-spin-reverse { --fa-animation-direction: reverse; } .fa-pulse, .fa-spin-pulse { - -webkit-animation-name: fa-spin; - animation-name: fa-spin; - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); - animation-timing-function: var(--fa-animation-timing, steps(8)); } + animation-name: fa-spin; + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, steps(8)); } @media (prefers-reduced-motion: reduce) { .fa-beat, @@ -252,219 +212,97 @@ .fa-shake, .fa-spin, .fa-spin-pulse { - -webkit-animation-delay: -1ms; - animation-delay: -1ms; - -webkit-animation-duration: 1ms; - animation-duration: 1ms; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; - -webkit-transition-delay: 0s; - transition-delay: 0s; - -webkit-transition-duration: 0s; - transition-duration: 0s; } } - -@-webkit-keyframes fa-beat { - 0%, 90% { - -webkit-transform: scale(1); - transform: scale(1); } - 45% { - -webkit-transform: scale(var(--fa-beat-scale, 1.25)); - transform: scale(var(--fa-beat-scale, 1.25)); } } + animation-delay: -1ms; + animation-duration: 1ms; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; } } @keyframes fa-beat { 0%, 90% { - -webkit-transform: scale(1); - transform: scale(1); } + transform: scale(1); } 45% { - -webkit-transform: scale(var(--fa-beat-scale, 1.25)); - transform: scale(var(--fa-beat-scale, 1.25)); } } - -@-webkit-keyframes fa-bounce { - 0% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } - 10% { - -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } - 30% { - -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } - 50% { - -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } - 57% { - -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } - 64% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } - 100% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } } + transform: scale(var(--fa-beat-scale, 1.25)); } } @keyframes fa-bounce { 0% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } + transform: scale(1, 1) translateY(0); } 10% { - -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } 30% { - -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } 50% { - -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } 57% { - -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } 64% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } + transform: scale(1, 1) translateY(0); } 100% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } } - -@-webkit-keyframes fa-fade { - 50% { - opacity: var(--fa-fade-opacity, 0.4); } } + transform: scale(1, 1) translateY(0); } } @keyframes fa-fade { 50% { opacity: var(--fa-fade-opacity, 0.4); } } -@-webkit-keyframes fa-beat-fade { - 0%, 100% { - opacity: var(--fa-beat-fade-opacity, 0.4); - -webkit-transform: scale(1); - transform: scale(1); } - 50% { - opacity: 1; - -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); - transform: scale(var(--fa-beat-fade-scale, 1.125)); } } - @keyframes fa-beat-fade { 0%, 100% { opacity: var(--fa-beat-fade-opacity, 0.4); - -webkit-transform: scale(1); - transform: scale(1); } + transform: scale(1); } 50% { opacity: 1; - -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); - transform: scale(var(--fa-beat-fade-scale, 1.125)); } } - -@-webkit-keyframes fa-flip { - 50% { - -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } @keyframes fa-flip { 50% { - -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } - -@-webkit-keyframes fa-shake { - 0% { - -webkit-transform: rotate(-15deg); - transform: rotate(-15deg); } - 4% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); } - 8%, 24% { - -webkit-transform: rotate(-18deg); - transform: rotate(-18deg); } - 12%, 28% { - -webkit-transform: rotate(18deg); - transform: rotate(18deg); } - 16% { - -webkit-transform: rotate(-22deg); - transform: rotate(-22deg); } - 20% { - -webkit-transform: rotate(22deg); - transform: rotate(22deg); } - 32% { - -webkit-transform: rotate(-12deg); - transform: rotate(-12deg); } - 36% { - -webkit-transform: rotate(12deg); - transform: rotate(12deg); } - 40%, 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } } + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } @keyframes fa-shake { 0% { - -webkit-transform: rotate(-15deg); - transform: rotate(-15deg); } + transform: rotate(-15deg); } 4% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); } + transform: rotate(15deg); } 8%, 24% { - -webkit-transform: rotate(-18deg); - transform: rotate(-18deg); } + transform: rotate(-18deg); } 12%, 28% { - -webkit-transform: rotate(18deg); - transform: rotate(18deg); } + transform: rotate(18deg); } 16% { - -webkit-transform: rotate(-22deg); - transform: rotate(-22deg); } + transform: rotate(-22deg); } 20% { - -webkit-transform: rotate(22deg); - transform: rotate(22deg); } + transform: rotate(22deg); } 32% { - -webkit-transform: rotate(-12deg); - transform: rotate(-12deg); } + transform: rotate(-12deg); } 36% { - -webkit-transform: rotate(12deg); - transform: rotate(12deg); } + transform: rotate(12deg); } 40%, 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } } - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } + transform: rotate(0deg); } } @keyframes fa-spin { 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } + transform: rotate(0deg); } 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } + transform: rotate(360deg); } } .fa-rotate-90 { - -webkit-transform: rotate(90deg); - transform: rotate(90deg); } + transform: rotate(90deg); } .fa-rotate-180 { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); } + transform: rotate(180deg); } .fa-rotate-270 { - -webkit-transform: rotate(270deg); - transform: rotate(270deg); } + transform: rotate(270deg); } .fa-flip-horizontal { - -webkit-transform: scale(-1, 1); - transform: scale(-1, 1); } + transform: scale(-1, 1); } .fa-flip-vertical { - -webkit-transform: scale(1, -1); - transform: scale(1, -1); } + transform: scale(1, -1); } .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { - -webkit-transform: scale(-1, -1); - transform: scale(-1, -1); } + transform: scale(-1, -1); } .fa-rotate-by { - -webkit-transform: rotate(var(--fa-rotate-angle, 0)); - transform: rotate(var(--fa-rotate-angle, 0)); } + transform: rotate(var(--fa-rotate-angle, 0)); } .fa-stack { display: inline-block; @@ -494,5861 +332,5891 @@ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ -.fa-0::before { - content: "\30"; } +.fa-0 { + --fa: "\30"; } -.fa-1::before { - content: "\31"; } +.fa-1 { + --fa: "\31"; } -.fa-2::before { - content: "\32"; } +.fa-2 { + --fa: "\32"; } -.fa-3::before { - content: "\33"; } +.fa-3 { + --fa: "\33"; } -.fa-4::before { - content: "\34"; } +.fa-4 { + --fa: "\34"; } -.fa-5::before { - content: "\35"; } +.fa-5 { + --fa: "\35"; } -.fa-6::before { - content: "\36"; } +.fa-6 { + --fa: "\36"; } -.fa-7::before { - content: "\37"; } +.fa-7 { + --fa: "\37"; } -.fa-8::before { - content: "\38"; } +.fa-8 { + --fa: "\38"; } -.fa-9::before { - content: "\39"; } +.fa-9 { + --fa: "\39"; } -.fa-fill-drip::before { - content: "\f576"; } +.fa-fill-drip { + --fa: "\f576"; } -.fa-arrows-to-circle::before { - content: "\e4bd"; } +.fa-arrows-to-circle { + --fa: "\e4bd"; } -.fa-circle-chevron-right::before { - content: "\f138"; } +.fa-circle-chevron-right { + --fa: "\f138"; } -.fa-chevron-circle-right::before { - content: "\f138"; } +.fa-chevron-circle-right { + --fa: "\f138"; } -.fa-at::before { - content: "\40"; } +.fa-at { + --fa: "\40"; } -.fa-trash-can::before { - content: "\f2ed"; } +.fa-trash-can { + --fa: "\f2ed"; } -.fa-trash-alt::before { - content: "\f2ed"; } +.fa-trash-alt { + --fa: "\f2ed"; } -.fa-text-height::before { - content: "\f034"; } +.fa-text-height { + --fa: "\f034"; } -.fa-user-xmark::before { - content: "\f235"; } +.fa-user-xmark { + --fa: "\f235"; } -.fa-user-times::before { - content: "\f235"; } +.fa-user-times { + --fa: "\f235"; } -.fa-stethoscope::before { - content: "\f0f1"; } +.fa-stethoscope { + --fa: "\f0f1"; } -.fa-message::before { - content: "\f27a"; } +.fa-message { + --fa: "\f27a"; } -.fa-comment-alt::before { - content: "\f27a"; } +.fa-comment-alt { + --fa: "\f27a"; } -.fa-info::before { - content: "\f129"; } +.fa-info { + --fa: "\f129"; } -.fa-down-left-and-up-right-to-center::before { - content: "\f422"; } +.fa-down-left-and-up-right-to-center { + --fa: "\f422"; } -.fa-compress-alt::before { - content: "\f422"; } +.fa-compress-alt { + --fa: "\f422"; } -.fa-explosion::before { - content: "\e4e9"; } +.fa-explosion { + --fa: "\e4e9"; } -.fa-file-lines::before { - content: "\f15c"; } +.fa-file-lines { + --fa: "\f15c"; } -.fa-file-alt::before { - content: "\f15c"; } +.fa-file-alt { + --fa: "\f15c"; } -.fa-file-text::before { - content: "\f15c"; } +.fa-file-text { + --fa: "\f15c"; } -.fa-wave-square::before { - content: "\f83e"; } +.fa-wave-square { + --fa: "\f83e"; } -.fa-ring::before { - content: "\f70b"; } +.fa-ring { + --fa: "\f70b"; } -.fa-building-un::before { - content: "\e4d9"; } +.fa-building-un { + --fa: "\e4d9"; } -.fa-dice-three::before { - content: "\f527"; } +.fa-dice-three { + --fa: "\f527"; } -.fa-calendar-days::before { - content: "\f073"; } +.fa-calendar-days { + --fa: "\f073"; } -.fa-calendar-alt::before { - content: "\f073"; } +.fa-calendar-alt { + --fa: "\f073"; } -.fa-anchor-circle-check::before { - content: "\e4aa"; } +.fa-anchor-circle-check { + --fa: "\e4aa"; } -.fa-building-circle-arrow-right::before { - content: "\e4d1"; } +.fa-building-circle-arrow-right { + --fa: "\e4d1"; } -.fa-volleyball::before { - content: "\f45f"; } +.fa-volleyball { + --fa: "\f45f"; } -.fa-volleyball-ball::before { - content: "\f45f"; } +.fa-volleyball-ball { + --fa: "\f45f"; } -.fa-arrows-up-to-line::before { - content: "\e4c2"; } +.fa-arrows-up-to-line { + --fa: "\e4c2"; } -.fa-sort-down::before { - content: "\f0dd"; } +.fa-sort-down { + --fa: "\f0dd"; } -.fa-sort-desc::before { - content: "\f0dd"; } +.fa-sort-desc { + --fa: "\f0dd"; } -.fa-circle-minus::before { - content: "\f056"; } +.fa-circle-minus { + --fa: "\f056"; } -.fa-minus-circle::before { - content: "\f056"; } +.fa-minus-circle { + --fa: "\f056"; } -.fa-door-open::before { - content: "\f52b"; } +.fa-door-open { + --fa: "\f52b"; } -.fa-right-from-bracket::before { - content: "\f2f5"; } +.fa-right-from-bracket { + --fa: "\f2f5"; } -.fa-sign-out-alt::before { - content: "\f2f5"; } +.fa-sign-out-alt { + --fa: "\f2f5"; } -.fa-atom::before { - content: "\f5d2"; } +.fa-atom { + --fa: "\f5d2"; } -.fa-soap::before { - content: "\e06e"; } +.fa-soap { + --fa: "\e06e"; } -.fa-icons::before { - content: "\f86d"; } +.fa-icons { + --fa: "\f86d"; } -.fa-heart-music-camera-bolt::before { - content: "\f86d"; } +.fa-heart-music-camera-bolt { + --fa: "\f86d"; } -.fa-microphone-lines-slash::before { - content: "\f539"; } +.fa-microphone-lines-slash { + --fa: "\f539"; } -.fa-microphone-alt-slash::before { - content: "\f539"; } +.fa-microphone-alt-slash { + --fa: "\f539"; } -.fa-bridge-circle-check::before { - content: "\e4c9"; } +.fa-bridge-circle-check { + --fa: "\e4c9"; } -.fa-pump-medical::before { - content: "\e06a"; } +.fa-pump-medical { + --fa: "\e06a"; } -.fa-fingerprint::before { - content: "\f577"; } +.fa-fingerprint { + --fa: "\f577"; } -.fa-hand-point-right::before { - content: "\f0a4"; } +.fa-hand-point-right { + --fa: "\f0a4"; } -.fa-magnifying-glass-location::before { - content: "\f689"; } +.fa-magnifying-glass-location { + --fa: "\f689"; } -.fa-search-location::before { - content: "\f689"; } +.fa-search-location { + --fa: "\f689"; } -.fa-forward-step::before { - content: "\f051"; } +.fa-forward-step { + --fa: "\f051"; } -.fa-step-forward::before { - content: "\f051"; } +.fa-step-forward { + --fa: "\f051"; } -.fa-face-smile-beam::before { - content: "\f5b8"; } +.fa-face-smile-beam { + --fa: "\f5b8"; } -.fa-smile-beam::before { - content: "\f5b8"; } +.fa-smile-beam { + --fa: "\f5b8"; } -.fa-flag-checkered::before { - content: "\f11e"; } +.fa-flag-checkered { + --fa: "\f11e"; } -.fa-football::before { - content: "\f44e"; } +.fa-football { + --fa: "\f44e"; } -.fa-football-ball::before { - content: "\f44e"; } +.fa-football-ball { + --fa: "\f44e"; } -.fa-school-circle-exclamation::before { - content: "\e56c"; } +.fa-school-circle-exclamation { + --fa: "\e56c"; } -.fa-crop::before { - content: "\f125"; } +.fa-crop { + --fa: "\f125"; } -.fa-angles-down::before { - content: "\f103"; } +.fa-angles-down { + --fa: "\f103"; } -.fa-angle-double-down::before { - content: "\f103"; } +.fa-angle-double-down { + --fa: "\f103"; } -.fa-users-rectangle::before { - content: "\e594"; } +.fa-users-rectangle { + --fa: "\e594"; } -.fa-people-roof::before { - content: "\e537"; } +.fa-people-roof { + --fa: "\e537"; } -.fa-people-line::before { - content: "\e534"; } +.fa-people-line { + --fa: "\e534"; } -.fa-beer-mug-empty::before { - content: "\f0fc"; } +.fa-beer-mug-empty { + --fa: "\f0fc"; } -.fa-beer::before { - content: "\f0fc"; } +.fa-beer { + --fa: "\f0fc"; } -.fa-diagram-predecessor::before { - content: "\e477"; } +.fa-diagram-predecessor { + --fa: "\e477"; } -.fa-arrow-up-long::before { - content: "\f176"; } +.fa-arrow-up-long { + --fa: "\f176"; } -.fa-long-arrow-up::before { - content: "\f176"; } +.fa-long-arrow-up { + --fa: "\f176"; } -.fa-fire-flame-simple::before { - content: "\f46a"; } +.fa-fire-flame-simple { + --fa: "\f46a"; } -.fa-burn::before { - content: "\f46a"; } +.fa-burn { + --fa: "\f46a"; } -.fa-person::before { - content: "\f183"; } +.fa-person { + --fa: "\f183"; } -.fa-male::before { - content: "\f183"; } +.fa-male { + --fa: "\f183"; } -.fa-laptop::before { - content: "\f109"; } +.fa-laptop { + --fa: "\f109"; } -.fa-file-csv::before { - content: "\f6dd"; } +.fa-file-csv { + --fa: "\f6dd"; } -.fa-menorah::before { - content: "\f676"; } +.fa-menorah { + --fa: "\f676"; } -.fa-truck-plane::before { - content: "\e58f"; } +.fa-truck-plane { + --fa: "\e58f"; } -.fa-record-vinyl::before { - content: "\f8d9"; } +.fa-record-vinyl { + --fa: "\f8d9"; } -.fa-face-grin-stars::before { - content: "\f587"; } +.fa-face-grin-stars { + --fa: "\f587"; } -.fa-grin-stars::before { - content: "\f587"; } +.fa-grin-stars { + --fa: "\f587"; } -.fa-bong::before { - content: "\f55c"; } +.fa-bong { + --fa: "\f55c"; } -.fa-spaghetti-monster-flying::before { - content: "\f67b"; } +.fa-spaghetti-monster-flying { + --fa: "\f67b"; } -.fa-pastafarianism::before { - content: "\f67b"; } +.fa-pastafarianism { + --fa: "\f67b"; } -.fa-arrow-down-up-across-line::before { - content: "\e4af"; } +.fa-arrow-down-up-across-line { + --fa: "\e4af"; } -.fa-spoon::before { - content: "\f2e5"; } +.fa-spoon { + --fa: "\f2e5"; } -.fa-utensil-spoon::before { - content: "\f2e5"; } +.fa-utensil-spoon { + --fa: "\f2e5"; } -.fa-jar-wheat::before { - content: "\e517"; } +.fa-jar-wheat { + --fa: "\e517"; } -.fa-envelopes-bulk::before { - content: "\f674"; } +.fa-envelopes-bulk { + --fa: "\f674"; } -.fa-mail-bulk::before { - content: "\f674"; } +.fa-mail-bulk { + --fa: "\f674"; } -.fa-file-circle-exclamation::before { - content: "\e4eb"; } +.fa-file-circle-exclamation { + --fa: "\e4eb"; } -.fa-circle-h::before { - content: "\f47e"; } +.fa-circle-h { + --fa: "\f47e"; } -.fa-hospital-symbol::before { - content: "\f47e"; } +.fa-hospital-symbol { + --fa: "\f47e"; } -.fa-pager::before { - content: "\f815"; } +.fa-pager { + --fa: "\f815"; } -.fa-address-book::before { - content: "\f2b9"; } +.fa-address-book { + --fa: "\f2b9"; } -.fa-contact-book::before { - content: "\f2b9"; } +.fa-contact-book { + --fa: "\f2b9"; } -.fa-strikethrough::before { - content: "\f0cc"; } +.fa-strikethrough { + --fa: "\f0cc"; } -.fa-k::before { - content: "\4b"; } +.fa-k { + --fa: "\4b"; } -.fa-landmark-flag::before { - content: "\e51c"; } +.fa-landmark-flag { + --fa: "\e51c"; } -.fa-pencil::before { - content: "\f303"; } +.fa-pencil { + --fa: "\f303"; } -.fa-pencil-alt::before { - content: "\f303"; } +.fa-pencil-alt { + --fa: "\f303"; } -.fa-backward::before { - content: "\f04a"; } +.fa-backward { + --fa: "\f04a"; } -.fa-caret-right::before { - content: "\f0da"; } +.fa-caret-right { + --fa: "\f0da"; } -.fa-comments::before { - content: "\f086"; } +.fa-comments { + --fa: "\f086"; } -.fa-paste::before { - content: "\f0ea"; } +.fa-paste { + --fa: "\f0ea"; } -.fa-file-clipboard::before { - content: "\f0ea"; } +.fa-file-clipboard { + --fa: "\f0ea"; } -.fa-code-pull-request::before { - content: "\e13c"; } +.fa-code-pull-request { + --fa: "\e13c"; } -.fa-clipboard-list::before { - content: "\f46d"; } +.fa-clipboard-list { + --fa: "\f46d"; } -.fa-truck-ramp-box::before { - content: "\f4de"; } +.fa-truck-ramp-box { + --fa: "\f4de"; } -.fa-truck-loading::before { - content: "\f4de"; } +.fa-truck-loading { + --fa: "\f4de"; } -.fa-user-check::before { - content: "\f4fc"; } +.fa-user-check { + --fa: "\f4fc"; } -.fa-vial-virus::before { - content: "\e597"; } +.fa-vial-virus { + --fa: "\e597"; } -.fa-sheet-plastic::before { - content: "\e571"; } +.fa-sheet-plastic { + --fa: "\e571"; } -.fa-blog::before { - content: "\f781"; } +.fa-blog { + --fa: "\f781"; } -.fa-user-ninja::before { - content: "\f504"; } +.fa-user-ninja { + --fa: "\f504"; } -.fa-person-arrow-up-from-line::before { - content: "\e539"; } +.fa-person-arrow-up-from-line { + --fa: "\e539"; } -.fa-scroll-torah::before { - content: "\f6a0"; } +.fa-scroll-torah { + --fa: "\f6a0"; } -.fa-torah::before { - content: "\f6a0"; } +.fa-torah { + --fa: "\f6a0"; } -.fa-broom-ball::before { - content: "\f458"; } +.fa-broom-ball { + --fa: "\f458"; } -.fa-quidditch::before { - content: "\f458"; } +.fa-quidditch { + --fa: "\f458"; } -.fa-quidditch-broom-ball::before { - content: "\f458"; } +.fa-quidditch-broom-ball { + --fa: "\f458"; } -.fa-toggle-off::before { - content: "\f204"; } +.fa-toggle-off { + --fa: "\f204"; } -.fa-box-archive::before { - content: "\f187"; } +.fa-box-archive { + --fa: "\f187"; } -.fa-archive::before { - content: "\f187"; } +.fa-archive { + --fa: "\f187"; } -.fa-person-drowning::before { - content: "\e545"; } +.fa-person-drowning { + --fa: "\e545"; } -.fa-arrow-down-9-1::before { - content: "\f886"; } +.fa-arrow-down-9-1 { + --fa: "\f886"; } -.fa-sort-numeric-desc::before { - content: "\f886"; } +.fa-sort-numeric-desc { + --fa: "\f886"; } -.fa-sort-numeric-down-alt::before { - content: "\f886"; } +.fa-sort-numeric-down-alt { + --fa: "\f886"; } -.fa-face-grin-tongue-squint::before { - content: "\f58a"; } +.fa-face-grin-tongue-squint { + --fa: "\f58a"; } -.fa-grin-tongue-squint::before { - content: "\f58a"; } +.fa-grin-tongue-squint { + --fa: "\f58a"; } -.fa-spray-can::before { - content: "\f5bd"; } +.fa-spray-can { + --fa: "\f5bd"; } -.fa-truck-monster::before { - content: "\f63b"; } +.fa-truck-monster { + --fa: "\f63b"; } -.fa-w::before { - content: "\57"; } +.fa-w { + --fa: "\57"; } -.fa-earth-africa::before { - content: "\f57c"; } +.fa-earth-africa { + --fa: "\f57c"; } -.fa-globe-africa::before { - content: "\f57c"; } +.fa-globe-africa { + --fa: "\f57c"; } -.fa-rainbow::before { - content: "\f75b"; } +.fa-rainbow { + --fa: "\f75b"; } -.fa-circle-notch::before { - content: "\f1ce"; } +.fa-circle-notch { + --fa: "\f1ce"; } -.fa-tablet-screen-button::before { - content: "\f3fa"; } +.fa-tablet-screen-button { + --fa: "\f3fa"; } -.fa-tablet-alt::before { - content: "\f3fa"; } +.fa-tablet-alt { + --fa: "\f3fa"; } -.fa-paw::before { - content: "\f1b0"; } +.fa-paw { + --fa: "\f1b0"; } -.fa-cloud::before { - content: "\f0c2"; } +.fa-cloud { + --fa: "\f0c2"; } -.fa-trowel-bricks::before { - content: "\e58a"; } +.fa-trowel-bricks { + --fa: "\e58a"; } -.fa-face-flushed::before { - content: "\f579"; } +.fa-face-flushed { + --fa: "\f579"; } -.fa-flushed::before { - content: "\f579"; } +.fa-flushed { + --fa: "\f579"; } -.fa-hospital-user::before { - content: "\f80d"; } +.fa-hospital-user { + --fa: "\f80d"; } -.fa-tent-arrow-left-right::before { - content: "\e57f"; } +.fa-tent-arrow-left-right { + --fa: "\e57f"; } -.fa-gavel::before { - content: "\f0e3"; } +.fa-gavel { + --fa: "\f0e3"; } -.fa-legal::before { - content: "\f0e3"; } +.fa-legal { + --fa: "\f0e3"; } -.fa-binoculars::before { - content: "\f1e5"; } +.fa-binoculars { + --fa: "\f1e5"; } -.fa-microphone-slash::before { - content: "\f131"; } +.fa-microphone-slash { + --fa: "\f131"; } -.fa-box-tissue::before { - content: "\e05b"; } +.fa-box-tissue { + --fa: "\e05b"; } -.fa-motorcycle::before { - content: "\f21c"; } +.fa-motorcycle { + --fa: "\f21c"; } -.fa-bell-concierge::before { - content: "\f562"; } +.fa-bell-concierge { + --fa: "\f562"; } -.fa-concierge-bell::before { - content: "\f562"; } +.fa-concierge-bell { + --fa: "\f562"; } -.fa-pen-ruler::before { - content: "\f5ae"; } +.fa-pen-ruler { + --fa: "\f5ae"; } -.fa-pencil-ruler::before { - content: "\f5ae"; } +.fa-pencil-ruler { + --fa: "\f5ae"; } -.fa-people-arrows::before { - content: "\e068"; } +.fa-people-arrows { + --fa: "\e068"; } -.fa-people-arrows-left-right::before { - content: "\e068"; } +.fa-people-arrows-left-right { + --fa: "\e068"; } -.fa-mars-and-venus-burst::before { - content: "\e523"; } +.fa-mars-and-venus-burst { + --fa: "\e523"; } -.fa-square-caret-right::before { - content: "\f152"; } +.fa-square-caret-right { + --fa: "\f152"; } -.fa-caret-square-right::before { - content: "\f152"; } +.fa-caret-square-right { + --fa: "\f152"; } -.fa-scissors::before { - content: "\f0c4"; } +.fa-scissors { + --fa: "\f0c4"; } -.fa-cut::before { - content: "\f0c4"; } +.fa-cut { + --fa: "\f0c4"; } -.fa-sun-plant-wilt::before { - content: "\e57a"; } +.fa-sun-plant-wilt { + --fa: "\e57a"; } -.fa-toilets-portable::before { - content: "\e584"; } +.fa-toilets-portable { + --fa: "\e584"; } -.fa-hockey-puck::before { - content: "\f453"; } +.fa-hockey-puck { + --fa: "\f453"; } -.fa-table::before { - content: "\f0ce"; } +.fa-table { + --fa: "\f0ce"; } -.fa-magnifying-glass-arrow-right::before { - content: "\e521"; } +.fa-magnifying-glass-arrow-right { + --fa: "\e521"; } -.fa-tachograph-digital::before { - content: "\f566"; } +.fa-tachograph-digital { + --fa: "\f566"; } -.fa-digital-tachograph::before { - content: "\f566"; } +.fa-digital-tachograph { + --fa: "\f566"; } -.fa-users-slash::before { - content: "\e073"; } +.fa-users-slash { + --fa: "\e073"; } -.fa-clover::before { - content: "\e139"; } +.fa-clover { + --fa: "\e139"; } -.fa-reply::before { - content: "\f3e5"; } +.fa-reply { + --fa: "\f3e5"; } -.fa-mail-reply::before { - content: "\f3e5"; } +.fa-mail-reply { + --fa: "\f3e5"; } -.fa-star-and-crescent::before { - content: "\f699"; } +.fa-star-and-crescent { + --fa: "\f699"; } -.fa-house-fire::before { - content: "\e50c"; } +.fa-house-fire { + --fa: "\e50c"; } -.fa-square-minus::before { - content: "\f146"; } +.fa-square-minus { + --fa: "\f146"; } -.fa-minus-square::before { - content: "\f146"; } +.fa-minus-square { + --fa: "\f146"; } -.fa-helicopter::before { - content: "\f533"; } +.fa-helicopter { + --fa: "\f533"; } -.fa-compass::before { - content: "\f14e"; } +.fa-compass { + --fa: "\f14e"; } -.fa-square-caret-down::before { - content: "\f150"; } +.fa-square-caret-down { + --fa: "\f150"; } -.fa-caret-square-down::before { - content: "\f150"; } +.fa-caret-square-down { + --fa: "\f150"; } -.fa-file-circle-question::before { - content: "\e4ef"; } +.fa-file-circle-question { + --fa: "\e4ef"; } -.fa-laptop-code::before { - content: "\f5fc"; } +.fa-laptop-code { + --fa: "\f5fc"; } -.fa-swatchbook::before { - content: "\f5c3"; } +.fa-swatchbook { + --fa: "\f5c3"; } -.fa-prescription-bottle::before { - content: "\f485"; } +.fa-prescription-bottle { + --fa: "\f485"; } -.fa-bars::before { - content: "\f0c9"; } +.fa-bars { + --fa: "\f0c9"; } -.fa-navicon::before { - content: "\f0c9"; } +.fa-navicon { + --fa: "\f0c9"; } -.fa-people-group::before { - content: "\e533"; } +.fa-people-group { + --fa: "\e533"; } -.fa-hourglass-end::before { - content: "\f253"; } +.fa-hourglass-end { + --fa: "\f253"; } -.fa-hourglass-3::before { - content: "\f253"; } +.fa-hourglass-3 { + --fa: "\f253"; } -.fa-heart-crack::before { - content: "\f7a9"; } +.fa-heart-crack { + --fa: "\f7a9"; } -.fa-heart-broken::before { - content: "\f7a9"; } +.fa-heart-broken { + --fa: "\f7a9"; } -.fa-square-up-right::before { - content: "\f360"; } +.fa-square-up-right { + --fa: "\f360"; } -.fa-external-link-square-alt::before { - content: "\f360"; } +.fa-external-link-square-alt { + --fa: "\f360"; } -.fa-face-kiss-beam::before { - content: "\f597"; } +.fa-face-kiss-beam { + --fa: "\f597"; } -.fa-kiss-beam::before { - content: "\f597"; } +.fa-kiss-beam { + --fa: "\f597"; } -.fa-film::before { - content: "\f008"; } +.fa-film { + --fa: "\f008"; } -.fa-ruler-horizontal::before { - content: "\f547"; } +.fa-ruler-horizontal { + --fa: "\f547"; } -.fa-people-robbery::before { - content: "\e536"; } +.fa-people-robbery { + --fa: "\e536"; } -.fa-lightbulb::before { - content: "\f0eb"; } +.fa-lightbulb { + --fa: "\f0eb"; } -.fa-caret-left::before { - content: "\f0d9"; } +.fa-caret-left { + --fa: "\f0d9"; } -.fa-circle-exclamation::before { - content: "\f06a"; } +.fa-circle-exclamation { + --fa: "\f06a"; } -.fa-exclamation-circle::before { - content: "\f06a"; } +.fa-exclamation-circle { + --fa: "\f06a"; } -.fa-school-circle-xmark::before { - content: "\e56d"; } +.fa-school-circle-xmark { + --fa: "\e56d"; } -.fa-arrow-right-from-bracket::before { - content: "\f08b"; } +.fa-arrow-right-from-bracket { + --fa: "\f08b"; } -.fa-sign-out::before { - content: "\f08b"; } +.fa-sign-out { + --fa: "\f08b"; } -.fa-circle-chevron-down::before { - content: "\f13a"; } +.fa-circle-chevron-down { + --fa: "\f13a"; } -.fa-chevron-circle-down::before { - content: "\f13a"; } +.fa-chevron-circle-down { + --fa: "\f13a"; } -.fa-unlock-keyhole::before { - content: "\f13e"; } +.fa-unlock-keyhole { + --fa: "\f13e"; } -.fa-unlock-alt::before { - content: "\f13e"; } +.fa-unlock-alt { + --fa: "\f13e"; } -.fa-cloud-showers-heavy::before { - content: "\f740"; } +.fa-cloud-showers-heavy { + --fa: "\f740"; } -.fa-headphones-simple::before { - content: "\f58f"; } +.fa-headphones-simple { + --fa: "\f58f"; } -.fa-headphones-alt::before { - content: "\f58f"; } +.fa-headphones-alt { + --fa: "\f58f"; } -.fa-sitemap::before { - content: "\f0e8"; } +.fa-sitemap { + --fa: "\f0e8"; } -.fa-circle-dollar-to-slot::before { - content: "\f4b9"; } +.fa-circle-dollar-to-slot { + --fa: "\f4b9"; } -.fa-donate::before { - content: "\f4b9"; } +.fa-donate { + --fa: "\f4b9"; } -.fa-memory::before { - content: "\f538"; } +.fa-memory { + --fa: "\f538"; } -.fa-road-spikes::before { - content: "\e568"; } +.fa-road-spikes { + --fa: "\e568"; } -.fa-fire-burner::before { - content: "\e4f1"; } +.fa-fire-burner { + --fa: "\e4f1"; } -.fa-flag::before { - content: "\f024"; } +.fa-flag { + --fa: "\f024"; } -.fa-hanukiah::before { - content: "\f6e6"; } +.fa-hanukiah { + --fa: "\f6e6"; } -.fa-feather::before { - content: "\f52d"; } +.fa-feather { + --fa: "\f52d"; } -.fa-volume-low::before { - content: "\f027"; } +.fa-volume-low { + --fa: "\f027"; } -.fa-volume-down::before { - content: "\f027"; } +.fa-volume-down { + --fa: "\f027"; } -.fa-comment-slash::before { - content: "\f4b3"; } +.fa-comment-slash { + --fa: "\f4b3"; } -.fa-cloud-sun-rain::before { - content: "\f743"; } +.fa-cloud-sun-rain { + --fa: "\f743"; } -.fa-compress::before { - content: "\f066"; } +.fa-compress { + --fa: "\f066"; } -.fa-wheat-awn::before { - content: "\e2cd"; } +.fa-wheat-awn { + --fa: "\e2cd"; } -.fa-wheat-alt::before { - content: "\e2cd"; } +.fa-wheat-alt { + --fa: "\e2cd"; } -.fa-ankh::before { - content: "\f644"; } +.fa-ankh { + --fa: "\f644"; } -.fa-hands-holding-child::before { - content: "\e4fa"; } +.fa-hands-holding-child { + --fa: "\e4fa"; } -.fa-asterisk::before { - content: "\2a"; } +.fa-asterisk { + --fa: "\2a"; } -.fa-square-check::before { - content: "\f14a"; } +.fa-square-check { + --fa: "\f14a"; } -.fa-check-square::before { - content: "\f14a"; } +.fa-check-square { + --fa: "\f14a"; } -.fa-peseta-sign::before { - content: "\e221"; } +.fa-peseta-sign { + --fa: "\e221"; } -.fa-heading::before { - content: "\f1dc"; } +.fa-heading { + --fa: "\f1dc"; } -.fa-header::before { - content: "\f1dc"; } +.fa-header { + --fa: "\f1dc"; } -.fa-ghost::before { - content: "\f6e2"; } +.fa-ghost { + --fa: "\f6e2"; } -.fa-list::before { - content: "\f03a"; } +.fa-list { + --fa: "\f03a"; } -.fa-list-squares::before { - content: "\f03a"; } +.fa-list-squares { + --fa: "\f03a"; } -.fa-square-phone-flip::before { - content: "\f87b"; } +.fa-square-phone-flip { + --fa: "\f87b"; } -.fa-phone-square-alt::before { - content: "\f87b"; } +.fa-phone-square-alt { + --fa: "\f87b"; } -.fa-cart-plus::before { - content: "\f217"; } +.fa-cart-plus { + --fa: "\f217"; } -.fa-gamepad::before { - content: "\f11b"; } +.fa-gamepad { + --fa: "\f11b"; } -.fa-circle-dot::before { - content: "\f192"; } +.fa-circle-dot { + --fa: "\f192"; } -.fa-dot-circle::before { - content: "\f192"; } +.fa-dot-circle { + --fa: "\f192"; } -.fa-face-dizzy::before { - content: "\f567"; } +.fa-face-dizzy { + --fa: "\f567"; } -.fa-dizzy::before { - content: "\f567"; } +.fa-dizzy { + --fa: "\f567"; } -.fa-egg::before { - content: "\f7fb"; } +.fa-egg { + --fa: "\f7fb"; } -.fa-house-medical-circle-xmark::before { - content: "\e513"; } +.fa-house-medical-circle-xmark { + --fa: "\e513"; } -.fa-campground::before { - content: "\f6bb"; } +.fa-campground { + --fa: "\f6bb"; } -.fa-folder-plus::before { - content: "\f65e"; } +.fa-folder-plus { + --fa: "\f65e"; } -.fa-futbol::before { - content: "\f1e3"; } +.fa-futbol { + --fa: "\f1e3"; } -.fa-futbol-ball::before { - content: "\f1e3"; } +.fa-futbol-ball { + --fa: "\f1e3"; } -.fa-soccer-ball::before { - content: "\f1e3"; } +.fa-soccer-ball { + --fa: "\f1e3"; } -.fa-paintbrush::before { - content: "\f1fc"; } +.fa-paintbrush { + --fa: "\f1fc"; } -.fa-paint-brush::before { - content: "\f1fc"; } +.fa-paint-brush { + --fa: "\f1fc"; } -.fa-lock::before { - content: "\f023"; } +.fa-lock { + --fa: "\f023"; } -.fa-gas-pump::before { - content: "\f52f"; } +.fa-gas-pump { + --fa: "\f52f"; } -.fa-hot-tub-person::before { - content: "\f593"; } +.fa-hot-tub-person { + --fa: "\f593"; } -.fa-hot-tub::before { - content: "\f593"; } +.fa-hot-tub { + --fa: "\f593"; } -.fa-map-location::before { - content: "\f59f"; } +.fa-map-location { + --fa: "\f59f"; } -.fa-map-marked::before { - content: "\f59f"; } +.fa-map-marked { + --fa: "\f59f"; } -.fa-house-flood-water::before { - content: "\e50e"; } +.fa-house-flood-water { + --fa: "\e50e"; } -.fa-tree::before { - content: "\f1bb"; } +.fa-tree { + --fa: "\f1bb"; } -.fa-bridge-lock::before { - content: "\e4cc"; } +.fa-bridge-lock { + --fa: "\e4cc"; } -.fa-sack-dollar::before { - content: "\f81d"; } +.fa-sack-dollar { + --fa: "\f81d"; } -.fa-pen-to-square::before { - content: "\f044"; } +.fa-pen-to-square { + --fa: "\f044"; } -.fa-edit::before { - content: "\f044"; } +.fa-edit { + --fa: "\f044"; } -.fa-car-side::before { - content: "\f5e4"; } +.fa-car-side { + --fa: "\f5e4"; } -.fa-share-nodes::before { - content: "\f1e0"; } +.fa-share-nodes { + --fa: "\f1e0"; } -.fa-share-alt::before { - content: "\f1e0"; } +.fa-share-alt { + --fa: "\f1e0"; } -.fa-heart-circle-minus::before { - content: "\e4ff"; } +.fa-heart-circle-minus { + --fa: "\e4ff"; } -.fa-hourglass-half::before { - content: "\f252"; } +.fa-hourglass-half { + --fa: "\f252"; } -.fa-hourglass-2::before { - content: "\f252"; } +.fa-hourglass-2 { + --fa: "\f252"; } -.fa-microscope::before { - content: "\f610"; } +.fa-microscope { + --fa: "\f610"; } -.fa-sink::before { - content: "\e06d"; } +.fa-sink { + --fa: "\e06d"; } -.fa-bag-shopping::before { - content: "\f290"; } +.fa-bag-shopping { + --fa: "\f290"; } -.fa-shopping-bag::before { - content: "\f290"; } +.fa-shopping-bag { + --fa: "\f290"; } -.fa-arrow-down-z-a::before { - content: "\f881"; } +.fa-arrow-down-z-a { + --fa: "\f881"; } -.fa-sort-alpha-desc::before { - content: "\f881"; } +.fa-sort-alpha-desc { + --fa: "\f881"; } -.fa-sort-alpha-down-alt::before { - content: "\f881"; } +.fa-sort-alpha-down-alt { + --fa: "\f881"; } -.fa-mitten::before { - content: "\f7b5"; } +.fa-mitten { + --fa: "\f7b5"; } -.fa-person-rays::before { - content: "\e54d"; } +.fa-person-rays { + --fa: "\e54d"; } -.fa-users::before { - content: "\f0c0"; } +.fa-users { + --fa: "\f0c0"; } -.fa-eye-slash::before { - content: "\f070"; } +.fa-eye-slash { + --fa: "\f070"; } -.fa-flask-vial::before { - content: "\e4f3"; } +.fa-flask-vial { + --fa: "\e4f3"; } -.fa-hand::before { - content: "\f256"; } +.fa-hand { + --fa: "\f256"; } -.fa-hand-paper::before { - content: "\f256"; } +.fa-hand-paper { + --fa: "\f256"; } -.fa-om::before { - content: "\f679"; } +.fa-om { + --fa: "\f679"; } -.fa-worm::before { - content: "\e599"; } +.fa-worm { + --fa: "\e599"; } -.fa-house-circle-xmark::before { - content: "\e50b"; } +.fa-house-circle-xmark { + --fa: "\e50b"; } -.fa-plug::before { - content: "\f1e6"; } +.fa-plug { + --fa: "\f1e6"; } -.fa-chevron-up::before { - content: "\f077"; } +.fa-chevron-up { + --fa: "\f077"; } -.fa-hand-spock::before { - content: "\f259"; } +.fa-hand-spock { + --fa: "\f259"; } -.fa-stopwatch::before { - content: "\f2f2"; } +.fa-stopwatch { + --fa: "\f2f2"; } -.fa-face-kiss::before { - content: "\f596"; } +.fa-face-kiss { + --fa: "\f596"; } -.fa-kiss::before { - content: "\f596"; } +.fa-kiss { + --fa: "\f596"; } -.fa-bridge-circle-xmark::before { - content: "\e4cb"; } +.fa-bridge-circle-xmark { + --fa: "\e4cb"; } -.fa-face-grin-tongue::before { - content: "\f589"; } +.fa-face-grin-tongue { + --fa: "\f589"; } -.fa-grin-tongue::before { - content: "\f589"; } +.fa-grin-tongue { + --fa: "\f589"; } -.fa-chess-bishop::before { - content: "\f43a"; } +.fa-chess-bishop { + --fa: "\f43a"; } -.fa-face-grin-wink::before { - content: "\f58c"; } +.fa-face-grin-wink { + --fa: "\f58c"; } -.fa-grin-wink::before { - content: "\f58c"; } +.fa-grin-wink { + --fa: "\f58c"; } -.fa-ear-deaf::before { - content: "\f2a4"; } +.fa-ear-deaf { + --fa: "\f2a4"; } -.fa-deaf::before { - content: "\f2a4"; } +.fa-deaf { + --fa: "\f2a4"; } -.fa-deafness::before { - content: "\f2a4"; } +.fa-deafness { + --fa: "\f2a4"; } -.fa-hard-of-hearing::before { - content: "\f2a4"; } +.fa-hard-of-hearing { + --fa: "\f2a4"; } -.fa-road-circle-check::before { - content: "\e564"; } +.fa-road-circle-check { + --fa: "\e564"; } -.fa-dice-five::before { - content: "\f523"; } +.fa-dice-five { + --fa: "\f523"; } -.fa-square-rss::before { - content: "\f143"; } +.fa-square-rss { + --fa: "\f143"; } -.fa-rss-square::before { - content: "\f143"; } +.fa-rss-square { + --fa: "\f143"; } -.fa-land-mine-on::before { - content: "\e51b"; } +.fa-land-mine-on { + --fa: "\e51b"; } -.fa-i-cursor::before { - content: "\f246"; } +.fa-i-cursor { + --fa: "\f246"; } -.fa-stamp::before { - content: "\f5bf"; } +.fa-stamp { + --fa: "\f5bf"; } -.fa-stairs::before { - content: "\e289"; } +.fa-stairs { + --fa: "\e289"; } -.fa-i::before { - content: "\49"; } +.fa-i { + --fa: "\49"; } -.fa-hryvnia-sign::before { - content: "\f6f2"; } +.fa-hryvnia-sign { + --fa: "\f6f2"; } -.fa-hryvnia::before { - content: "\f6f2"; } +.fa-hryvnia { + --fa: "\f6f2"; } -.fa-pills::before { - content: "\f484"; } +.fa-pills { + --fa: "\f484"; } -.fa-face-grin-wide::before { - content: "\f581"; } +.fa-face-grin-wide { + --fa: "\f581"; } -.fa-grin-alt::before { - content: "\f581"; } +.fa-grin-alt { + --fa: "\f581"; } -.fa-tooth::before { - content: "\f5c9"; } +.fa-tooth { + --fa: "\f5c9"; } -.fa-v::before { - content: "\56"; } +.fa-v { + --fa: "\56"; } -.fa-bangladeshi-taka-sign::before { - content: "\e2e6"; } +.fa-bangladeshi-taka-sign { + --fa: "\e2e6"; } -.fa-bicycle::before { - content: "\f206"; } +.fa-bicycle { + --fa: "\f206"; } -.fa-staff-snake::before { - content: "\e579"; } +.fa-staff-snake { + --fa: "\e579"; } -.fa-rod-asclepius::before { - content: "\e579"; } +.fa-rod-asclepius { + --fa: "\e579"; } -.fa-rod-snake::before { - content: "\e579"; } +.fa-rod-snake { + --fa: "\e579"; } -.fa-staff-aesculapius::before { - content: "\e579"; } +.fa-staff-aesculapius { + --fa: "\e579"; } -.fa-head-side-cough-slash::before { - content: "\e062"; } +.fa-head-side-cough-slash { + --fa: "\e062"; } -.fa-truck-medical::before { - content: "\f0f9"; } +.fa-truck-medical { + --fa: "\f0f9"; } -.fa-ambulance::before { - content: "\f0f9"; } +.fa-ambulance { + --fa: "\f0f9"; } -.fa-wheat-awn-circle-exclamation::before { - content: "\e598"; } +.fa-wheat-awn-circle-exclamation { + --fa: "\e598"; } -.fa-snowman::before { - content: "\f7d0"; } +.fa-snowman { + --fa: "\f7d0"; } -.fa-mortar-pestle::before { - content: "\f5a7"; } +.fa-mortar-pestle { + --fa: "\f5a7"; } -.fa-road-barrier::before { - content: "\e562"; } +.fa-road-barrier { + --fa: "\e562"; } -.fa-school::before { - content: "\f549"; } +.fa-school { + --fa: "\f549"; } -.fa-igloo::before { - content: "\f7ae"; } +.fa-igloo { + --fa: "\f7ae"; } -.fa-joint::before { - content: "\f595"; } +.fa-joint { + --fa: "\f595"; } -.fa-angle-right::before { - content: "\f105"; } +.fa-angle-right { + --fa: "\f105"; } -.fa-horse::before { - content: "\f6f0"; } +.fa-horse { + --fa: "\f6f0"; } -.fa-q::before { - content: "\51"; } +.fa-q { + --fa: "\51"; } -.fa-g::before { - content: "\47"; } +.fa-g { + --fa: "\47"; } -.fa-notes-medical::before { - content: "\f481"; } +.fa-notes-medical { + --fa: "\f481"; } -.fa-temperature-half::before { - content: "\f2c9"; } +.fa-temperature-half { + --fa: "\f2c9"; } -.fa-temperature-2::before { - content: "\f2c9"; } +.fa-temperature-2 { + --fa: "\f2c9"; } -.fa-thermometer-2::before { - content: "\f2c9"; } +.fa-thermometer-2 { + --fa: "\f2c9"; } -.fa-thermometer-half::before { - content: "\f2c9"; } +.fa-thermometer-half { + --fa: "\f2c9"; } -.fa-dong-sign::before { - content: "\e169"; } +.fa-dong-sign { + --fa: "\e169"; } -.fa-capsules::before { - content: "\f46b"; } +.fa-capsules { + --fa: "\f46b"; } -.fa-poo-storm::before { - content: "\f75a"; } +.fa-poo-storm { + --fa: "\f75a"; } -.fa-poo-bolt::before { - content: "\f75a"; } +.fa-poo-bolt { + --fa: "\f75a"; } -.fa-face-frown-open::before { - content: "\f57a"; } +.fa-face-frown-open { + --fa: "\f57a"; } -.fa-frown-open::before { - content: "\f57a"; } +.fa-frown-open { + --fa: "\f57a"; } -.fa-hand-point-up::before { - content: "\f0a6"; } +.fa-hand-point-up { + --fa: "\f0a6"; } -.fa-money-bill::before { - content: "\f0d6"; } +.fa-money-bill { + --fa: "\f0d6"; } -.fa-bookmark::before { - content: "\f02e"; } +.fa-bookmark { + --fa: "\f02e"; } -.fa-align-justify::before { - content: "\f039"; } +.fa-align-justify { + --fa: "\f039"; } -.fa-umbrella-beach::before { - content: "\f5ca"; } +.fa-umbrella-beach { + --fa: "\f5ca"; } -.fa-helmet-un::before { - content: "\e503"; } +.fa-helmet-un { + --fa: "\e503"; } -.fa-bullseye::before { - content: "\f140"; } +.fa-bullseye { + --fa: "\f140"; } -.fa-bacon::before { - content: "\f7e5"; } +.fa-bacon { + --fa: "\f7e5"; } -.fa-hand-point-down::before { - content: "\f0a7"; } +.fa-hand-point-down { + --fa: "\f0a7"; } -.fa-arrow-up-from-bracket::before { - content: "\e09a"; } +.fa-arrow-up-from-bracket { + --fa: "\e09a"; } -.fa-folder::before { - content: "\f07b"; } +.fa-folder { + --fa: "\f07b"; } -.fa-folder-blank::before { - content: "\f07b"; } +.fa-folder-blank { + --fa: "\f07b"; } -.fa-file-waveform::before { - content: "\f478"; } +.fa-file-waveform { + --fa: "\f478"; } -.fa-file-medical-alt::before { - content: "\f478"; } +.fa-file-medical-alt { + --fa: "\f478"; } -.fa-radiation::before { - content: "\f7b9"; } +.fa-radiation { + --fa: "\f7b9"; } -.fa-chart-simple::before { - content: "\e473"; } +.fa-chart-simple { + --fa: "\e473"; } -.fa-mars-stroke::before { - content: "\f229"; } +.fa-mars-stroke { + --fa: "\f229"; } -.fa-vial::before { - content: "\f492"; } +.fa-vial { + --fa: "\f492"; } -.fa-gauge::before { - content: "\f624"; } +.fa-gauge { + --fa: "\f624"; } -.fa-dashboard::before { - content: "\f624"; } +.fa-dashboard { + --fa: "\f624"; } -.fa-gauge-med::before { - content: "\f624"; } +.fa-gauge-med { + --fa: "\f624"; } -.fa-tachometer-alt-average::before { - content: "\f624"; } +.fa-tachometer-alt-average { + --fa: "\f624"; } -.fa-wand-magic-sparkles::before { - content: "\e2ca"; } +.fa-wand-magic-sparkles { + --fa: "\e2ca"; } -.fa-magic-wand-sparkles::before { - content: "\e2ca"; } +.fa-magic-wand-sparkles { + --fa: "\e2ca"; } -.fa-e::before { - content: "\45"; } +.fa-e { + --fa: "\45"; } -.fa-pen-clip::before { - content: "\f305"; } +.fa-pen-clip { + --fa: "\f305"; } -.fa-pen-alt::before { - content: "\f305"; } +.fa-pen-alt { + --fa: "\f305"; } -.fa-bridge-circle-exclamation::before { - content: "\e4ca"; } +.fa-bridge-circle-exclamation { + --fa: "\e4ca"; } -.fa-user::before { - content: "\f007"; } +.fa-user { + --fa: "\f007"; } -.fa-school-circle-check::before { - content: "\e56b"; } +.fa-school-circle-check { + --fa: "\e56b"; } -.fa-dumpster::before { - content: "\f793"; } +.fa-dumpster { + --fa: "\f793"; } -.fa-van-shuttle::before { - content: "\f5b6"; } +.fa-van-shuttle { + --fa: "\f5b6"; } -.fa-shuttle-van::before { - content: "\f5b6"; } +.fa-shuttle-van { + --fa: "\f5b6"; } -.fa-building-user::before { - content: "\e4da"; } +.fa-building-user { + --fa: "\e4da"; } -.fa-square-caret-left::before { - content: "\f191"; } +.fa-square-caret-left { + --fa: "\f191"; } -.fa-caret-square-left::before { - content: "\f191"; } +.fa-caret-square-left { + --fa: "\f191"; } -.fa-highlighter::before { - content: "\f591"; } +.fa-highlighter { + --fa: "\f591"; } -.fa-key::before { - content: "\f084"; } +.fa-key { + --fa: "\f084"; } -.fa-bullhorn::before { - content: "\f0a1"; } +.fa-bullhorn { + --fa: "\f0a1"; } -.fa-globe::before { - content: "\f0ac"; } +.fa-globe { + --fa: "\f0ac"; } -.fa-synagogue::before { - content: "\f69b"; } +.fa-synagogue { + --fa: "\f69b"; } -.fa-person-half-dress::before { - content: "\e548"; } +.fa-person-half-dress { + --fa: "\e548"; } -.fa-road-bridge::before { - content: "\e563"; } +.fa-road-bridge { + --fa: "\e563"; } -.fa-location-arrow::before { - content: "\f124"; } +.fa-location-arrow { + --fa: "\f124"; } -.fa-c::before { - content: "\43"; } +.fa-c { + --fa: "\43"; } -.fa-tablet-button::before { - content: "\f10a"; } +.fa-tablet-button { + --fa: "\f10a"; } -.fa-building-lock::before { - content: "\e4d6"; } +.fa-building-lock { + --fa: "\e4d6"; } -.fa-pizza-slice::before { - content: "\f818"; } +.fa-pizza-slice { + --fa: "\f818"; } -.fa-money-bill-wave::before { - content: "\f53a"; } +.fa-money-bill-wave { + --fa: "\f53a"; } -.fa-chart-area::before { - content: "\f1fe"; } +.fa-chart-area { + --fa: "\f1fe"; } -.fa-area-chart::before { - content: "\f1fe"; } +.fa-area-chart { + --fa: "\f1fe"; } -.fa-house-flag::before { - content: "\e50d"; } +.fa-house-flag { + --fa: "\e50d"; } -.fa-person-circle-minus::before { - content: "\e540"; } +.fa-person-circle-minus { + --fa: "\e540"; } -.fa-ban::before { - content: "\f05e"; } +.fa-ban { + --fa: "\f05e"; } -.fa-cancel::before { - content: "\f05e"; } +.fa-cancel { + --fa: "\f05e"; } -.fa-camera-rotate::before { - content: "\e0d8"; } +.fa-camera-rotate { + --fa: "\e0d8"; } -.fa-spray-can-sparkles::before { - content: "\f5d0"; } +.fa-spray-can-sparkles { + --fa: "\f5d0"; } -.fa-air-freshener::before { - content: "\f5d0"; } +.fa-air-freshener { + --fa: "\f5d0"; } -.fa-star::before { - content: "\f005"; } +.fa-star { + --fa: "\f005"; } -.fa-repeat::before { - content: "\f363"; } +.fa-repeat { + --fa: "\f363"; } -.fa-cross::before { - content: "\f654"; } +.fa-cross { + --fa: "\f654"; } -.fa-box::before { - content: "\f466"; } +.fa-box { + --fa: "\f466"; } -.fa-venus-mars::before { - content: "\f228"; } +.fa-venus-mars { + --fa: "\f228"; } -.fa-arrow-pointer::before { - content: "\f245"; } +.fa-arrow-pointer { + --fa: "\f245"; } -.fa-mouse-pointer::before { - content: "\f245"; } +.fa-mouse-pointer { + --fa: "\f245"; } -.fa-maximize::before { - content: "\f31e"; } +.fa-maximize { + --fa: "\f31e"; } -.fa-expand-arrows-alt::before { - content: "\f31e"; } +.fa-expand-arrows-alt { + --fa: "\f31e"; } -.fa-charging-station::before { - content: "\f5e7"; } +.fa-charging-station { + --fa: "\f5e7"; } -.fa-shapes::before { - content: "\f61f"; } +.fa-shapes { + --fa: "\f61f"; } -.fa-triangle-circle-square::before { - content: "\f61f"; } +.fa-triangle-circle-square { + --fa: "\f61f"; } -.fa-shuffle::before { - content: "\f074"; } +.fa-shuffle { + --fa: "\f074"; } -.fa-random::before { - content: "\f074"; } +.fa-random { + --fa: "\f074"; } -.fa-person-running::before { - content: "\f70c"; } +.fa-person-running { + --fa: "\f70c"; } -.fa-running::before { - content: "\f70c"; } +.fa-running { + --fa: "\f70c"; } -.fa-mobile-retro::before { - content: "\e527"; } +.fa-mobile-retro { + --fa: "\e527"; } -.fa-grip-lines-vertical::before { - content: "\f7a5"; } +.fa-grip-lines-vertical { + --fa: "\f7a5"; } -.fa-spider::before { - content: "\f717"; } +.fa-spider { + --fa: "\f717"; } -.fa-hands-bound::before { - content: "\e4f9"; } +.fa-hands-bound { + --fa: "\e4f9"; } -.fa-file-invoice-dollar::before { - content: "\f571"; } +.fa-file-invoice-dollar { + --fa: "\f571"; } -.fa-plane-circle-exclamation::before { - content: "\e556"; } +.fa-plane-circle-exclamation { + --fa: "\e556"; } -.fa-x-ray::before { - content: "\f497"; } +.fa-x-ray { + --fa: "\f497"; } -.fa-spell-check::before { - content: "\f891"; } +.fa-spell-check { + --fa: "\f891"; } -.fa-slash::before { - content: "\f715"; } +.fa-slash { + --fa: "\f715"; } -.fa-computer-mouse::before { - content: "\f8cc"; } +.fa-computer-mouse { + --fa: "\f8cc"; } -.fa-mouse::before { - content: "\f8cc"; } +.fa-mouse { + --fa: "\f8cc"; } -.fa-arrow-right-to-bracket::before { - content: "\f090"; } +.fa-arrow-right-to-bracket { + --fa: "\f090"; } -.fa-sign-in::before { - content: "\f090"; } +.fa-sign-in { + --fa: "\f090"; } -.fa-shop-slash::before { - content: "\e070"; } +.fa-shop-slash { + --fa: "\e070"; } -.fa-store-alt-slash::before { - content: "\e070"; } +.fa-store-alt-slash { + --fa: "\e070"; } -.fa-server::before { - content: "\f233"; } +.fa-server { + --fa: "\f233"; } -.fa-virus-covid-slash::before { - content: "\e4a9"; } +.fa-virus-covid-slash { + --fa: "\e4a9"; } -.fa-shop-lock::before { - content: "\e4a5"; } +.fa-shop-lock { + --fa: "\e4a5"; } -.fa-hourglass-start::before { - content: "\f251"; } +.fa-hourglass-start { + --fa: "\f251"; } -.fa-hourglass-1::before { - content: "\f251"; } +.fa-hourglass-1 { + --fa: "\f251"; } -.fa-blender-phone::before { - content: "\f6b6"; } +.fa-blender-phone { + --fa: "\f6b6"; } -.fa-building-wheat::before { - content: "\e4db"; } +.fa-building-wheat { + --fa: "\e4db"; } -.fa-person-breastfeeding::before { - content: "\e53a"; } +.fa-person-breastfeeding { + --fa: "\e53a"; } -.fa-right-to-bracket::before { - content: "\f2f6"; } +.fa-right-to-bracket { + --fa: "\f2f6"; } -.fa-sign-in-alt::before { - content: "\f2f6"; } +.fa-sign-in-alt { + --fa: "\f2f6"; } -.fa-venus::before { - content: "\f221"; } +.fa-venus { + --fa: "\f221"; } -.fa-passport::before { - content: "\f5ab"; } +.fa-passport { + --fa: "\f5ab"; } -.fa-heart-pulse::before { - content: "\f21e"; } +.fa-thumbtack-slash { + --fa: "\e68f"; } -.fa-heartbeat::before { - content: "\f21e"; } +.fa-thumb-tack-slash { + --fa: "\e68f"; } -.fa-people-carry-box::before { - content: "\f4ce"; } +.fa-heart-pulse { + --fa: "\f21e"; } -.fa-people-carry::before { - content: "\f4ce"; } +.fa-heartbeat { + --fa: "\f21e"; } -.fa-temperature-high::before { - content: "\f769"; } +.fa-people-carry-box { + --fa: "\f4ce"; } -.fa-microchip::before { - content: "\f2db"; } +.fa-people-carry { + --fa: "\f4ce"; } -.fa-crown::before { - content: "\f521"; } +.fa-temperature-high { + --fa: "\f769"; } -.fa-weight-hanging::before { - content: "\f5cd"; } +.fa-microchip { + --fa: "\f2db"; } -.fa-xmarks-lines::before { - content: "\e59a"; } +.fa-crown { + --fa: "\f521"; } -.fa-file-prescription::before { - content: "\f572"; } +.fa-weight-hanging { + --fa: "\f5cd"; } -.fa-weight-scale::before { - content: "\f496"; } +.fa-xmarks-lines { + --fa: "\e59a"; } -.fa-weight::before { - content: "\f496"; } +.fa-file-prescription { + --fa: "\f572"; } -.fa-user-group::before { - content: "\f500"; } +.fa-weight-scale { + --fa: "\f496"; } -.fa-user-friends::before { - content: "\f500"; } +.fa-weight { + --fa: "\f496"; } -.fa-arrow-up-a-z::before { - content: "\f15e"; } +.fa-user-group { + --fa: "\f500"; } -.fa-sort-alpha-up::before { - content: "\f15e"; } +.fa-user-friends { + --fa: "\f500"; } -.fa-chess-knight::before { - content: "\f441"; } +.fa-arrow-up-a-z { + --fa: "\f15e"; } -.fa-face-laugh-squint::before { - content: "\f59b"; } +.fa-sort-alpha-up { + --fa: "\f15e"; } -.fa-laugh-squint::before { - content: "\f59b"; } +.fa-chess-knight { + --fa: "\f441"; } -.fa-wheelchair::before { - content: "\f193"; } +.fa-face-laugh-squint { + --fa: "\f59b"; } -.fa-circle-arrow-up::before { - content: "\f0aa"; } +.fa-laugh-squint { + --fa: "\f59b"; } -.fa-arrow-circle-up::before { - content: "\f0aa"; } +.fa-wheelchair { + --fa: "\f193"; } -.fa-toggle-on::before { - content: "\f205"; } +.fa-circle-arrow-up { + --fa: "\f0aa"; } -.fa-person-walking::before { - content: "\f554"; } +.fa-arrow-circle-up { + --fa: "\f0aa"; } -.fa-walking::before { - content: "\f554"; } +.fa-toggle-on { + --fa: "\f205"; } -.fa-l::before { - content: "\4c"; } +.fa-person-walking { + --fa: "\f554"; } -.fa-fire::before { - content: "\f06d"; } +.fa-walking { + --fa: "\f554"; } -.fa-bed-pulse::before { - content: "\f487"; } +.fa-l { + --fa: "\4c"; } -.fa-procedures::before { - content: "\f487"; } +.fa-fire { + --fa: "\f06d"; } -.fa-shuttle-space::before { - content: "\f197"; } +.fa-bed-pulse { + --fa: "\f487"; } -.fa-space-shuttle::before { - content: "\f197"; } +.fa-procedures { + --fa: "\f487"; } -.fa-face-laugh::before { - content: "\f599"; } +.fa-shuttle-space { + --fa: "\f197"; } -.fa-laugh::before { - content: "\f599"; } +.fa-space-shuttle { + --fa: "\f197"; } -.fa-folder-open::before { - content: "\f07c"; } +.fa-face-laugh { + --fa: "\f599"; } -.fa-heart-circle-plus::before { - content: "\e500"; } +.fa-laugh { + --fa: "\f599"; } -.fa-code-fork::before { - content: "\e13b"; } +.fa-folder-open { + --fa: "\f07c"; } -.fa-city::before { - content: "\f64f"; } +.fa-heart-circle-plus { + --fa: "\e500"; } -.fa-microphone-lines::before { - content: "\f3c9"; } +.fa-code-fork { + --fa: "\e13b"; } -.fa-microphone-alt::before { - content: "\f3c9"; } +.fa-city { + --fa: "\f64f"; } -.fa-pepper-hot::before { - content: "\f816"; } +.fa-microphone-lines { + --fa: "\f3c9"; } -.fa-unlock::before { - content: "\f09c"; } +.fa-microphone-alt { + --fa: "\f3c9"; } -.fa-colon-sign::before { - content: "\e140"; } +.fa-pepper-hot { + --fa: "\f816"; } -.fa-headset::before { - content: "\f590"; } +.fa-unlock { + --fa: "\f09c"; } -.fa-store-slash::before { - content: "\e071"; } +.fa-colon-sign { + --fa: "\e140"; } -.fa-road-circle-xmark::before { - content: "\e566"; } +.fa-headset { + --fa: "\f590"; } -.fa-user-minus::before { - content: "\f503"; } +.fa-store-slash { + --fa: "\e071"; } -.fa-mars-stroke-up::before { - content: "\f22a"; } +.fa-road-circle-xmark { + --fa: "\e566"; } -.fa-mars-stroke-v::before { - content: "\f22a"; } +.fa-user-minus { + --fa: "\f503"; } -.fa-champagne-glasses::before { - content: "\f79f"; } +.fa-mars-stroke-up { + --fa: "\f22a"; } -.fa-glass-cheers::before { - content: "\f79f"; } +.fa-mars-stroke-v { + --fa: "\f22a"; } -.fa-clipboard::before { - content: "\f328"; } +.fa-champagne-glasses { + --fa: "\f79f"; } -.fa-house-circle-exclamation::before { - content: "\e50a"; } +.fa-glass-cheers { + --fa: "\f79f"; } -.fa-file-arrow-up::before { - content: "\f574"; } +.fa-clipboard { + --fa: "\f328"; } -.fa-file-upload::before { - content: "\f574"; } +.fa-house-circle-exclamation { + --fa: "\e50a"; } -.fa-wifi::before { - content: "\f1eb"; } +.fa-file-arrow-up { + --fa: "\f574"; } -.fa-wifi-3::before { - content: "\f1eb"; } +.fa-file-upload { + --fa: "\f574"; } -.fa-wifi-strong::before { - content: "\f1eb"; } +.fa-wifi { + --fa: "\f1eb"; } -.fa-bath::before { - content: "\f2cd"; } +.fa-wifi-3 { + --fa: "\f1eb"; } -.fa-bathtub::before { - content: "\f2cd"; } +.fa-wifi-strong { + --fa: "\f1eb"; } -.fa-underline::before { - content: "\f0cd"; } +.fa-bath { + --fa: "\f2cd"; } -.fa-user-pen::before { - content: "\f4ff"; } +.fa-bathtub { + --fa: "\f2cd"; } -.fa-user-edit::before { - content: "\f4ff"; } +.fa-underline { + --fa: "\f0cd"; } -.fa-signature::before { - content: "\f5b7"; } +.fa-user-pen { + --fa: "\f4ff"; } -.fa-stroopwafel::before { - content: "\f551"; } +.fa-user-edit { + --fa: "\f4ff"; } -.fa-bold::before { - content: "\f032"; } +.fa-signature { + --fa: "\f5b7"; } -.fa-anchor-lock::before { - content: "\e4ad"; } +.fa-stroopwafel { + --fa: "\f551"; } -.fa-building-ngo::before { - content: "\e4d7"; } +.fa-bold { + --fa: "\f032"; } -.fa-manat-sign::before { - content: "\e1d5"; } +.fa-anchor-lock { + --fa: "\e4ad"; } -.fa-not-equal::before { - content: "\f53e"; } +.fa-building-ngo { + --fa: "\e4d7"; } -.fa-border-top-left::before { - content: "\f853"; } +.fa-manat-sign { + --fa: "\e1d5"; } -.fa-border-style::before { - content: "\f853"; } +.fa-not-equal { + --fa: "\f53e"; } -.fa-map-location-dot::before { - content: "\f5a0"; } +.fa-border-top-left { + --fa: "\f853"; } -.fa-map-marked-alt::before { - content: "\f5a0"; } +.fa-border-style { + --fa: "\f853"; } -.fa-jedi::before { - content: "\f669"; } +.fa-map-location-dot { + --fa: "\f5a0"; } -.fa-square-poll-vertical::before { - content: "\f681"; } +.fa-map-marked-alt { + --fa: "\f5a0"; } -.fa-poll::before { - content: "\f681"; } +.fa-jedi { + --fa: "\f669"; } -.fa-mug-hot::before { - content: "\f7b6"; } +.fa-square-poll-vertical { + --fa: "\f681"; } -.fa-car-battery::before { - content: "\f5df"; } +.fa-poll { + --fa: "\f681"; } -.fa-battery-car::before { - content: "\f5df"; } +.fa-mug-hot { + --fa: "\f7b6"; } -.fa-gift::before { - content: "\f06b"; } +.fa-car-battery { + --fa: "\f5df"; } -.fa-dice-two::before { - content: "\f528"; } +.fa-battery-car { + --fa: "\f5df"; } -.fa-chess-queen::before { - content: "\f445"; } +.fa-gift { + --fa: "\f06b"; } -.fa-glasses::before { - content: "\f530"; } +.fa-dice-two { + --fa: "\f528"; } -.fa-chess-board::before { - content: "\f43c"; } +.fa-chess-queen { + --fa: "\f445"; } -.fa-building-circle-check::before { - content: "\e4d2"; } +.fa-glasses { + --fa: "\f530"; } -.fa-person-chalkboard::before { - content: "\e53d"; } +.fa-chess-board { + --fa: "\f43c"; } -.fa-mars-stroke-right::before { - content: "\f22b"; } +.fa-building-circle-check { + --fa: "\e4d2"; } -.fa-mars-stroke-h::before { - content: "\f22b"; } +.fa-person-chalkboard { + --fa: "\e53d"; } -.fa-hand-back-fist::before { - content: "\f255"; } +.fa-mars-stroke-right { + --fa: "\f22b"; } -.fa-hand-rock::before { - content: "\f255"; } +.fa-mars-stroke-h { + --fa: "\f22b"; } -.fa-square-caret-up::before { - content: "\f151"; } +.fa-hand-back-fist { + --fa: "\f255"; } -.fa-caret-square-up::before { - content: "\f151"; } +.fa-hand-rock { + --fa: "\f255"; } -.fa-cloud-showers-water::before { - content: "\e4e4"; } +.fa-square-caret-up { + --fa: "\f151"; } -.fa-chart-bar::before { - content: "\f080"; } +.fa-caret-square-up { + --fa: "\f151"; } -.fa-bar-chart::before { - content: "\f080"; } +.fa-cloud-showers-water { + --fa: "\e4e4"; } -.fa-hands-bubbles::before { - content: "\e05e"; } +.fa-chart-bar { + --fa: "\f080"; } -.fa-hands-wash::before { - content: "\e05e"; } +.fa-bar-chart { + --fa: "\f080"; } -.fa-less-than-equal::before { - content: "\f537"; } +.fa-hands-bubbles { + --fa: "\e05e"; } -.fa-train::before { - content: "\f238"; } +.fa-hands-wash { + --fa: "\e05e"; } -.fa-eye-low-vision::before { - content: "\f2a8"; } +.fa-less-than-equal { + --fa: "\f537"; } -.fa-low-vision::before { - content: "\f2a8"; } +.fa-train { + --fa: "\f238"; } -.fa-crow::before { - content: "\f520"; } +.fa-eye-low-vision { + --fa: "\f2a8"; } -.fa-sailboat::before { - content: "\e445"; } +.fa-low-vision { + --fa: "\f2a8"; } -.fa-window-restore::before { - content: "\f2d2"; } +.fa-crow { + --fa: "\f520"; } -.fa-square-plus::before { - content: "\f0fe"; } +.fa-sailboat { + --fa: "\e445"; } -.fa-plus-square::before { - content: "\f0fe"; } +.fa-window-restore { + --fa: "\f2d2"; } -.fa-torii-gate::before { - content: "\f6a1"; } +.fa-square-plus { + --fa: "\f0fe"; } -.fa-frog::before { - content: "\f52e"; } +.fa-plus-square { + --fa: "\f0fe"; } -.fa-bucket::before { - content: "\e4cf"; } +.fa-torii-gate { + --fa: "\f6a1"; } -.fa-image::before { - content: "\f03e"; } +.fa-frog { + --fa: "\f52e"; } -.fa-microphone::before { - content: "\f130"; } +.fa-bucket { + --fa: "\e4cf"; } -.fa-cow::before { - content: "\f6c8"; } +.fa-image { + --fa: "\f03e"; } -.fa-caret-up::before { - content: "\f0d8"; } +.fa-microphone { + --fa: "\f130"; } -.fa-screwdriver::before { - content: "\f54a"; } +.fa-cow { + --fa: "\f6c8"; } -.fa-folder-closed::before { - content: "\e185"; } +.fa-caret-up { + --fa: "\f0d8"; } -.fa-house-tsunami::before { - content: "\e515"; } +.fa-screwdriver { + --fa: "\f54a"; } -.fa-square-nfi::before { - content: "\e576"; } +.fa-folder-closed { + --fa: "\e185"; } -.fa-arrow-up-from-ground-water::before { - content: "\e4b5"; } +.fa-house-tsunami { + --fa: "\e515"; } -.fa-martini-glass::before { - content: "\f57b"; } +.fa-square-nfi { + --fa: "\e576"; } -.fa-glass-martini-alt::before { - content: "\f57b"; } +.fa-arrow-up-from-ground-water { + --fa: "\e4b5"; } -.fa-rotate-left::before { - content: "\f2ea"; } +.fa-martini-glass { + --fa: "\f57b"; } -.fa-rotate-back::before { - content: "\f2ea"; } +.fa-glass-martini-alt { + --fa: "\f57b"; } -.fa-rotate-backward::before { - content: "\f2ea"; } +.fa-square-binary { + --fa: "\e69b"; } -.fa-undo-alt::before { - content: "\f2ea"; } +.fa-rotate-left { + --fa: "\f2ea"; } -.fa-table-columns::before { - content: "\f0db"; } +.fa-rotate-back { + --fa: "\f2ea"; } -.fa-columns::before { - content: "\f0db"; } +.fa-rotate-backward { + --fa: "\f2ea"; } -.fa-lemon::before { - content: "\f094"; } +.fa-undo-alt { + --fa: "\f2ea"; } -.fa-head-side-mask::before { - content: "\e063"; } +.fa-table-columns { + --fa: "\f0db"; } -.fa-handshake::before { - content: "\f2b5"; } +.fa-columns { + --fa: "\f0db"; } -.fa-gem::before { - content: "\f3a5"; } +.fa-lemon { + --fa: "\f094"; } -.fa-dolly::before { - content: "\f472"; } +.fa-head-side-mask { + --fa: "\e063"; } -.fa-dolly-box::before { - content: "\f472"; } +.fa-handshake { + --fa: "\f2b5"; } -.fa-smoking::before { - content: "\f48d"; } +.fa-gem { + --fa: "\f3a5"; } -.fa-minimize::before { - content: "\f78c"; } +.fa-dolly { + --fa: "\f472"; } -.fa-compress-arrows-alt::before { - content: "\f78c"; } +.fa-dolly-box { + --fa: "\f472"; } -.fa-monument::before { - content: "\f5a6"; } +.fa-smoking { + --fa: "\f48d"; } -.fa-snowplow::before { - content: "\f7d2"; } +.fa-minimize { + --fa: "\f78c"; } -.fa-angles-right::before { - content: "\f101"; } +.fa-compress-arrows-alt { + --fa: "\f78c"; } -.fa-angle-double-right::before { - content: "\f101"; } +.fa-monument { + --fa: "\f5a6"; } -.fa-cannabis::before { - content: "\f55f"; } +.fa-snowplow { + --fa: "\f7d2"; } -.fa-circle-play::before { - content: "\f144"; } +.fa-angles-right { + --fa: "\f101"; } -.fa-play-circle::before { - content: "\f144"; } +.fa-angle-double-right { + --fa: "\f101"; } -.fa-tablets::before { - content: "\f490"; } +.fa-cannabis { + --fa: "\f55f"; } -.fa-ethernet::before { - content: "\f796"; } +.fa-circle-play { + --fa: "\f144"; } -.fa-euro-sign::before { - content: "\f153"; } +.fa-play-circle { + --fa: "\f144"; } -.fa-eur::before { - content: "\f153"; } +.fa-tablets { + --fa: "\f490"; } -.fa-euro::before { - content: "\f153"; } +.fa-ethernet { + --fa: "\f796"; } -.fa-chair::before { - content: "\f6c0"; } +.fa-euro-sign { + --fa: "\f153"; } -.fa-circle-check::before { - content: "\f058"; } +.fa-eur { + --fa: "\f153"; } -.fa-check-circle::before { - content: "\f058"; } +.fa-euro { + --fa: "\f153"; } -.fa-circle-stop::before { - content: "\f28d"; } +.fa-chair { + --fa: "\f6c0"; } -.fa-stop-circle::before { - content: "\f28d"; } +.fa-circle-check { + --fa: "\f058"; } -.fa-compass-drafting::before { - content: "\f568"; } +.fa-check-circle { + --fa: "\f058"; } -.fa-drafting-compass::before { - content: "\f568"; } +.fa-circle-stop { + --fa: "\f28d"; } -.fa-plate-wheat::before { - content: "\e55a"; } +.fa-stop-circle { + --fa: "\f28d"; } -.fa-icicles::before { - content: "\f7ad"; } +.fa-compass-drafting { + --fa: "\f568"; } -.fa-person-shelter::before { - content: "\e54f"; } +.fa-drafting-compass { + --fa: "\f568"; } -.fa-neuter::before { - content: "\f22c"; } +.fa-plate-wheat { + --fa: "\e55a"; } -.fa-id-badge::before { - content: "\f2c1"; } +.fa-icicles { + --fa: "\f7ad"; } -.fa-marker::before { - content: "\f5a1"; } +.fa-person-shelter { + --fa: "\e54f"; } -.fa-face-laugh-beam::before { - content: "\f59a"; } +.fa-neuter { + --fa: "\f22c"; } -.fa-laugh-beam::before { - content: "\f59a"; } +.fa-id-badge { + --fa: "\f2c1"; } -.fa-helicopter-symbol::before { - content: "\e502"; } +.fa-marker { + --fa: "\f5a1"; } -.fa-universal-access::before { - content: "\f29a"; } +.fa-face-laugh-beam { + --fa: "\f59a"; } -.fa-circle-chevron-up::before { - content: "\f139"; } +.fa-laugh-beam { + --fa: "\f59a"; } -.fa-chevron-circle-up::before { - content: "\f139"; } +.fa-helicopter-symbol { + --fa: "\e502"; } -.fa-lari-sign::before { - content: "\e1c8"; } +.fa-universal-access { + --fa: "\f29a"; } -.fa-volcano::before { - content: "\f770"; } +.fa-circle-chevron-up { + --fa: "\f139"; } -.fa-person-walking-dashed-line-arrow-right::before { - content: "\e553"; } +.fa-chevron-circle-up { + --fa: "\f139"; } -.fa-sterling-sign::before { - content: "\f154"; } +.fa-lari-sign { + --fa: "\e1c8"; } -.fa-gbp::before { - content: "\f154"; } +.fa-volcano { + --fa: "\f770"; } -.fa-pound-sign::before { - content: "\f154"; } +.fa-person-walking-dashed-line-arrow-right { + --fa: "\e553"; } -.fa-viruses::before { - content: "\e076"; } +.fa-sterling-sign { + --fa: "\f154"; } -.fa-square-person-confined::before { - content: "\e577"; } +.fa-gbp { + --fa: "\f154"; } -.fa-user-tie::before { - content: "\f508"; } +.fa-pound-sign { + --fa: "\f154"; } -.fa-arrow-down-long::before { - content: "\f175"; } +.fa-viruses { + --fa: "\e076"; } -.fa-long-arrow-down::before { - content: "\f175"; } +.fa-square-person-confined { + --fa: "\e577"; } -.fa-tent-arrow-down-to-line::before { - content: "\e57e"; } +.fa-user-tie { + --fa: "\f508"; } -.fa-certificate::before { - content: "\f0a3"; } +.fa-arrow-down-long { + --fa: "\f175"; } -.fa-reply-all::before { - content: "\f122"; } +.fa-long-arrow-down { + --fa: "\f175"; } -.fa-mail-reply-all::before { - content: "\f122"; } +.fa-tent-arrow-down-to-line { + --fa: "\e57e"; } -.fa-suitcase::before { - content: "\f0f2"; } +.fa-certificate { + --fa: "\f0a3"; } -.fa-person-skating::before { - content: "\f7c5"; } +.fa-reply-all { + --fa: "\f122"; } -.fa-skating::before { - content: "\f7c5"; } +.fa-mail-reply-all { + --fa: "\f122"; } -.fa-filter-circle-dollar::before { - content: "\f662"; } +.fa-suitcase { + --fa: "\f0f2"; } -.fa-funnel-dollar::before { - content: "\f662"; } +.fa-person-skating { + --fa: "\f7c5"; } -.fa-camera-retro::before { - content: "\f083"; } +.fa-skating { + --fa: "\f7c5"; } -.fa-circle-arrow-down::before { - content: "\f0ab"; } +.fa-filter-circle-dollar { + --fa: "\f662"; } -.fa-arrow-circle-down::before { - content: "\f0ab"; } +.fa-funnel-dollar { + --fa: "\f662"; } -.fa-file-import::before { - content: "\f56f"; } +.fa-camera-retro { + --fa: "\f083"; } -.fa-arrow-right-to-file::before { - content: "\f56f"; } +.fa-circle-arrow-down { + --fa: "\f0ab"; } -.fa-square-arrow-up-right::before { - content: "\f14c"; } +.fa-arrow-circle-down { + --fa: "\f0ab"; } -.fa-external-link-square::before { - content: "\f14c"; } +.fa-file-import { + --fa: "\f56f"; } -.fa-box-open::before { - content: "\f49e"; } +.fa-arrow-right-to-file { + --fa: "\f56f"; } -.fa-scroll::before { - content: "\f70e"; } +.fa-square-arrow-up-right { + --fa: "\f14c"; } -.fa-spa::before { - content: "\f5bb"; } +.fa-external-link-square { + --fa: "\f14c"; } -.fa-location-pin-lock::before { - content: "\e51f"; } +.fa-box-open { + --fa: "\f49e"; } -.fa-pause::before { - content: "\f04c"; } +.fa-scroll { + --fa: "\f70e"; } -.fa-hill-avalanche::before { - content: "\e507"; } +.fa-spa { + --fa: "\f5bb"; } -.fa-temperature-empty::before { - content: "\f2cb"; } +.fa-location-pin-lock { + --fa: "\e51f"; } -.fa-temperature-0::before { - content: "\f2cb"; } +.fa-pause { + --fa: "\f04c"; } -.fa-thermometer-0::before { - content: "\f2cb"; } +.fa-hill-avalanche { + --fa: "\e507"; } -.fa-thermometer-empty::before { - content: "\f2cb"; } +.fa-temperature-empty { + --fa: "\f2cb"; } -.fa-bomb::before { - content: "\f1e2"; } +.fa-temperature-0 { + --fa: "\f2cb"; } -.fa-registered::before { - content: "\f25d"; } +.fa-thermometer-0 { + --fa: "\f2cb"; } -.fa-address-card::before { - content: "\f2bb"; } +.fa-thermometer-empty { + --fa: "\f2cb"; } -.fa-contact-card::before { - content: "\f2bb"; } +.fa-bomb { + --fa: "\f1e2"; } -.fa-vcard::before { - content: "\f2bb"; } +.fa-registered { + --fa: "\f25d"; } -.fa-scale-unbalanced-flip::before { - content: "\f516"; } +.fa-address-card { + --fa: "\f2bb"; } -.fa-balance-scale-right::before { - content: "\f516"; } +.fa-contact-card { + --fa: "\f2bb"; } -.fa-subscript::before { - content: "\f12c"; } +.fa-vcard { + --fa: "\f2bb"; } -.fa-diamond-turn-right::before { - content: "\f5eb"; } +.fa-scale-unbalanced-flip { + --fa: "\f516"; } -.fa-directions::before { - content: "\f5eb"; } +.fa-balance-scale-right { + --fa: "\f516"; } -.fa-burst::before { - content: "\e4dc"; } +.fa-subscript { + --fa: "\f12c"; } -.fa-house-laptop::before { - content: "\e066"; } +.fa-diamond-turn-right { + --fa: "\f5eb"; } -.fa-laptop-house::before { - content: "\e066"; } +.fa-directions { + --fa: "\f5eb"; } -.fa-face-tired::before { - content: "\f5c8"; } +.fa-burst { + --fa: "\e4dc"; } -.fa-tired::before { - content: "\f5c8"; } +.fa-house-laptop { + --fa: "\e066"; } -.fa-money-bills::before { - content: "\e1f3"; } +.fa-laptop-house { + --fa: "\e066"; } -.fa-smog::before { - content: "\f75f"; } +.fa-face-tired { + --fa: "\f5c8"; } -.fa-crutch::before { - content: "\f7f7"; } +.fa-tired { + --fa: "\f5c8"; } -.fa-cloud-arrow-up::before { - content: "\f0ee"; } +.fa-money-bills { + --fa: "\e1f3"; } -.fa-cloud-upload::before { - content: "\f0ee"; } +.fa-smog { + --fa: "\f75f"; } -.fa-cloud-upload-alt::before { - content: "\f0ee"; } +.fa-crutch { + --fa: "\f7f7"; } -.fa-palette::before { - content: "\f53f"; } +.fa-cloud-arrow-up { + --fa: "\f0ee"; } -.fa-arrows-turn-right::before { - content: "\e4c0"; } +.fa-cloud-upload { + --fa: "\f0ee"; } -.fa-vest::before { - content: "\e085"; } +.fa-cloud-upload-alt { + --fa: "\f0ee"; } -.fa-ferry::before { - content: "\e4ea"; } +.fa-palette { + --fa: "\f53f"; } -.fa-arrows-down-to-people::before { - content: "\e4b9"; } +.fa-arrows-turn-right { + --fa: "\e4c0"; } -.fa-seedling::before { - content: "\f4d8"; } +.fa-vest { + --fa: "\e085"; } -.fa-sprout::before { - content: "\f4d8"; } +.fa-ferry { + --fa: "\e4ea"; } -.fa-left-right::before { - content: "\f337"; } +.fa-arrows-down-to-people { + --fa: "\e4b9"; } -.fa-arrows-alt-h::before { - content: "\f337"; } +.fa-seedling { + --fa: "\f4d8"; } -.fa-boxes-packing::before { - content: "\e4c7"; } +.fa-sprout { + --fa: "\f4d8"; } -.fa-circle-arrow-left::before { - content: "\f0a8"; } +.fa-left-right { + --fa: "\f337"; } -.fa-arrow-circle-left::before { - content: "\f0a8"; } +.fa-arrows-alt-h { + --fa: "\f337"; } -.fa-group-arrows-rotate::before { - content: "\e4f6"; } +.fa-boxes-packing { + --fa: "\e4c7"; } -.fa-bowl-food::before { - content: "\e4c6"; } +.fa-circle-arrow-left { + --fa: "\f0a8"; } -.fa-candy-cane::before { - content: "\f786"; } +.fa-arrow-circle-left { + --fa: "\f0a8"; } -.fa-arrow-down-wide-short::before { - content: "\f160"; } +.fa-group-arrows-rotate { + --fa: "\e4f6"; } -.fa-sort-amount-asc::before { - content: "\f160"; } +.fa-bowl-food { + --fa: "\e4c6"; } -.fa-sort-amount-down::before { - content: "\f160"; } +.fa-candy-cane { + --fa: "\f786"; } -.fa-cloud-bolt::before { - content: "\f76c"; } +.fa-arrow-down-wide-short { + --fa: "\f160"; } -.fa-thunderstorm::before { - content: "\f76c"; } +.fa-sort-amount-asc { + --fa: "\f160"; } -.fa-text-slash::before { - content: "\f87d"; } +.fa-sort-amount-down { + --fa: "\f160"; } -.fa-remove-format::before { - content: "\f87d"; } +.fa-cloud-bolt { + --fa: "\f76c"; } -.fa-face-smile-wink::before { - content: "\f4da"; } +.fa-thunderstorm { + --fa: "\f76c"; } -.fa-smile-wink::before { - content: "\f4da"; } +.fa-text-slash { + --fa: "\f87d"; } -.fa-file-word::before { - content: "\f1c2"; } +.fa-remove-format { + --fa: "\f87d"; } -.fa-file-powerpoint::before { - content: "\f1c4"; } +.fa-face-smile-wink { + --fa: "\f4da"; } -.fa-arrows-left-right::before { - content: "\f07e"; } +.fa-smile-wink { + --fa: "\f4da"; } -.fa-arrows-h::before { - content: "\f07e"; } +.fa-file-word { + --fa: "\f1c2"; } -.fa-house-lock::before { - content: "\e510"; } +.fa-file-powerpoint { + --fa: "\f1c4"; } -.fa-cloud-arrow-down::before { - content: "\f0ed"; } +.fa-arrows-left-right { + --fa: "\f07e"; } -.fa-cloud-download::before { - content: "\f0ed"; } +.fa-arrows-h { + --fa: "\f07e"; } -.fa-cloud-download-alt::before { - content: "\f0ed"; } +.fa-house-lock { + --fa: "\e510"; } -.fa-children::before { - content: "\e4e1"; } +.fa-cloud-arrow-down { + --fa: "\f0ed"; } -.fa-chalkboard::before { - content: "\f51b"; } +.fa-cloud-download { + --fa: "\f0ed"; } -.fa-blackboard::before { - content: "\f51b"; } +.fa-cloud-download-alt { + --fa: "\f0ed"; } -.fa-user-large-slash::before { - content: "\f4fa"; } +.fa-children { + --fa: "\e4e1"; } -.fa-user-alt-slash::before { - content: "\f4fa"; } +.fa-chalkboard { + --fa: "\f51b"; } -.fa-envelope-open::before { - content: "\f2b6"; } +.fa-blackboard { + --fa: "\f51b"; } -.fa-handshake-simple-slash::before { - content: "\e05f"; } +.fa-user-large-slash { + --fa: "\f4fa"; } -.fa-handshake-alt-slash::before { - content: "\e05f"; } +.fa-user-alt-slash { + --fa: "\f4fa"; } -.fa-mattress-pillow::before { - content: "\e525"; } +.fa-envelope-open { + --fa: "\f2b6"; } -.fa-guarani-sign::before { - content: "\e19a"; } +.fa-handshake-simple-slash { + --fa: "\e05f"; } -.fa-arrows-rotate::before { - content: "\f021"; } +.fa-handshake-alt-slash { + --fa: "\e05f"; } -.fa-refresh::before { - content: "\f021"; } +.fa-mattress-pillow { + --fa: "\e525"; } -.fa-sync::before { - content: "\f021"; } +.fa-guarani-sign { + --fa: "\e19a"; } -.fa-fire-extinguisher::before { - content: "\f134"; } +.fa-arrows-rotate { + --fa: "\f021"; } -.fa-cruzeiro-sign::before { - content: "\e152"; } +.fa-refresh { + --fa: "\f021"; } -.fa-greater-than-equal::before { - content: "\f532"; } +.fa-sync { + --fa: "\f021"; } -.fa-shield-halved::before { - content: "\f3ed"; } +.fa-fire-extinguisher { + --fa: "\f134"; } -.fa-shield-alt::before { - content: "\f3ed"; } +.fa-cruzeiro-sign { + --fa: "\e152"; } -.fa-book-atlas::before { - content: "\f558"; } +.fa-greater-than-equal { + --fa: "\f532"; } -.fa-atlas::before { - content: "\f558"; } +.fa-shield-halved { + --fa: "\f3ed"; } -.fa-virus::before { - content: "\e074"; } +.fa-shield-alt { + --fa: "\f3ed"; } -.fa-envelope-circle-check::before { - content: "\e4e8"; } +.fa-book-atlas { + --fa: "\f558"; } -.fa-layer-group::before { - content: "\f5fd"; } +.fa-atlas { + --fa: "\f558"; } -.fa-arrows-to-dot::before { - content: "\e4be"; } +.fa-virus { + --fa: "\e074"; } -.fa-archway::before { - content: "\f557"; } +.fa-envelope-circle-check { + --fa: "\e4e8"; } -.fa-heart-circle-check::before { - content: "\e4fd"; } +.fa-layer-group { + --fa: "\f5fd"; } -.fa-house-chimney-crack::before { - content: "\f6f1"; } +.fa-arrows-to-dot { + --fa: "\e4be"; } -.fa-house-damage::before { - content: "\f6f1"; } +.fa-archway { + --fa: "\f557"; } -.fa-file-zipper::before { - content: "\f1c6"; } +.fa-heart-circle-check { + --fa: "\e4fd"; } -.fa-file-archive::before { - content: "\f1c6"; } +.fa-house-chimney-crack { + --fa: "\f6f1"; } -.fa-square::before { - content: "\f0c8"; } +.fa-house-damage { + --fa: "\f6f1"; } -.fa-martini-glass-empty::before { - content: "\f000"; } +.fa-file-zipper { + --fa: "\f1c6"; } -.fa-glass-martini::before { - content: "\f000"; } +.fa-file-archive { + --fa: "\f1c6"; } -.fa-couch::before { - content: "\f4b8"; } +.fa-square { + --fa: "\f0c8"; } -.fa-cedi-sign::before { - content: "\e0df"; } +.fa-martini-glass-empty { + --fa: "\f000"; } -.fa-italic::before { - content: "\f033"; } +.fa-glass-martini { + --fa: "\f000"; } -.fa-table-cells-column-lock::before { - content: "\e678"; } +.fa-couch { + --fa: "\f4b8"; } -.fa-church::before { - content: "\f51d"; } +.fa-cedi-sign { + --fa: "\e0df"; } -.fa-comments-dollar::before { - content: "\f653"; } +.fa-italic { + --fa: "\f033"; } -.fa-democrat::before { - content: "\f747"; } +.fa-table-cells-column-lock { + --fa: "\e678"; } -.fa-z::before { - content: "\5a"; } +.fa-church { + --fa: "\f51d"; } -.fa-person-skiing::before { - content: "\f7c9"; } +.fa-comments-dollar { + --fa: "\f653"; } -.fa-skiing::before { - content: "\f7c9"; } +.fa-democrat { + --fa: "\f747"; } -.fa-road-lock::before { - content: "\e567"; } +.fa-z { + --fa: "\5a"; } -.fa-a::before { - content: "\41"; } +.fa-person-skiing { + --fa: "\f7c9"; } -.fa-temperature-arrow-down::before { - content: "\e03f"; } +.fa-skiing { + --fa: "\f7c9"; } -.fa-temperature-down::before { - content: "\e03f"; } +.fa-road-lock { + --fa: "\e567"; } -.fa-feather-pointed::before { - content: "\f56b"; } +.fa-a { + --fa: "\41"; } -.fa-feather-alt::before { - content: "\f56b"; } +.fa-temperature-arrow-down { + --fa: "\e03f"; } -.fa-p::before { - content: "\50"; } +.fa-temperature-down { + --fa: "\e03f"; } -.fa-snowflake::before { - content: "\f2dc"; } +.fa-feather-pointed { + --fa: "\f56b"; } -.fa-newspaper::before { - content: "\f1ea"; } +.fa-feather-alt { + --fa: "\f56b"; } -.fa-rectangle-ad::before { - content: "\f641"; } +.fa-p { + --fa: "\50"; } -.fa-ad::before { - content: "\f641"; } +.fa-snowflake { + --fa: "\f2dc"; } -.fa-circle-arrow-right::before { - content: "\f0a9"; } +.fa-newspaper { + --fa: "\f1ea"; } -.fa-arrow-circle-right::before { - content: "\f0a9"; } +.fa-rectangle-ad { + --fa: "\f641"; } -.fa-filter-circle-xmark::before { - content: "\e17b"; } +.fa-ad { + --fa: "\f641"; } -.fa-locust::before { - content: "\e520"; } +.fa-circle-arrow-right { + --fa: "\f0a9"; } -.fa-sort::before { - content: "\f0dc"; } +.fa-arrow-circle-right { + --fa: "\f0a9"; } -.fa-unsorted::before { - content: "\f0dc"; } +.fa-filter-circle-xmark { + --fa: "\e17b"; } -.fa-list-ol::before { - content: "\f0cb"; } +.fa-locust { + --fa: "\e520"; } -.fa-list-1-2::before { - content: "\f0cb"; } +.fa-sort { + --fa: "\f0dc"; } -.fa-list-numeric::before { - content: "\f0cb"; } +.fa-unsorted { + --fa: "\f0dc"; } -.fa-person-dress-burst::before { - content: "\e544"; } +.fa-list-ol { + --fa: "\f0cb"; } -.fa-money-check-dollar::before { - content: "\f53d"; } +.fa-list-1-2 { + --fa: "\f0cb"; } -.fa-money-check-alt::before { - content: "\f53d"; } +.fa-list-numeric { + --fa: "\f0cb"; } -.fa-vector-square::before { - content: "\f5cb"; } +.fa-person-dress-burst { + --fa: "\e544"; } -.fa-bread-slice::before { - content: "\f7ec"; } +.fa-money-check-dollar { + --fa: "\f53d"; } -.fa-language::before { - content: "\f1ab"; } +.fa-money-check-alt { + --fa: "\f53d"; } -.fa-face-kiss-wink-heart::before { - content: "\f598"; } +.fa-vector-square { + --fa: "\f5cb"; } -.fa-kiss-wink-heart::before { - content: "\f598"; } +.fa-bread-slice { + --fa: "\f7ec"; } -.fa-filter::before { - content: "\f0b0"; } +.fa-language { + --fa: "\f1ab"; } -.fa-question::before { - content: "\3f"; } +.fa-face-kiss-wink-heart { + --fa: "\f598"; } -.fa-file-signature::before { - content: "\f573"; } +.fa-kiss-wink-heart { + --fa: "\f598"; } -.fa-up-down-left-right::before { - content: "\f0b2"; } +.fa-filter { + --fa: "\f0b0"; } -.fa-arrows-alt::before { - content: "\f0b2"; } +.fa-question { + --fa: "\3f"; } -.fa-house-chimney-user::before { - content: "\e065"; } +.fa-file-signature { + --fa: "\f573"; } -.fa-hand-holding-heart::before { - content: "\f4be"; } +.fa-up-down-left-right { + --fa: "\f0b2"; } -.fa-puzzle-piece::before { - content: "\f12e"; } +.fa-arrows-alt { + --fa: "\f0b2"; } -.fa-money-check::before { - content: "\f53c"; } +.fa-house-chimney-user { + --fa: "\e065"; } -.fa-star-half-stroke::before { - content: "\f5c0"; } +.fa-hand-holding-heart { + --fa: "\f4be"; } -.fa-star-half-alt::before { - content: "\f5c0"; } +.fa-puzzle-piece { + --fa: "\f12e"; } -.fa-code::before { - content: "\f121"; } +.fa-money-check { + --fa: "\f53c"; } -.fa-whiskey-glass::before { - content: "\f7a0"; } +.fa-star-half-stroke { + --fa: "\f5c0"; } -.fa-glass-whiskey::before { - content: "\f7a0"; } +.fa-star-half-alt { + --fa: "\f5c0"; } -.fa-building-circle-exclamation::before { - content: "\e4d3"; } +.fa-code { + --fa: "\f121"; } -.fa-magnifying-glass-chart::before { - content: "\e522"; } +.fa-whiskey-glass { + --fa: "\f7a0"; } -.fa-arrow-up-right-from-square::before { - content: "\f08e"; } +.fa-glass-whiskey { + --fa: "\f7a0"; } -.fa-external-link::before { - content: "\f08e"; } +.fa-building-circle-exclamation { + --fa: "\e4d3"; } -.fa-cubes-stacked::before { - content: "\e4e6"; } +.fa-magnifying-glass-chart { + --fa: "\e522"; } -.fa-won-sign::before { - content: "\f159"; } +.fa-arrow-up-right-from-square { + --fa: "\f08e"; } -.fa-krw::before { - content: "\f159"; } +.fa-external-link { + --fa: "\f08e"; } -.fa-won::before { - content: "\f159"; } +.fa-cubes-stacked { + --fa: "\e4e6"; } -.fa-virus-covid::before { - content: "\e4a8"; } +.fa-won-sign { + --fa: "\f159"; } -.fa-austral-sign::before { - content: "\e0a9"; } +.fa-krw { + --fa: "\f159"; } -.fa-f::before { - content: "\46"; } +.fa-won { + --fa: "\f159"; } -.fa-leaf::before { - content: "\f06c"; } +.fa-virus-covid { + --fa: "\e4a8"; } -.fa-road::before { - content: "\f018"; } +.fa-austral-sign { + --fa: "\e0a9"; } -.fa-taxi::before { - content: "\f1ba"; } +.fa-f { + --fa: "\46"; } -.fa-cab::before { - content: "\f1ba"; } +.fa-leaf { + --fa: "\f06c"; } -.fa-person-circle-plus::before { - content: "\e541"; } +.fa-road { + --fa: "\f018"; } -.fa-chart-pie::before { - content: "\f200"; } +.fa-taxi { + --fa: "\f1ba"; } -.fa-pie-chart::before { - content: "\f200"; } +.fa-cab { + --fa: "\f1ba"; } -.fa-bolt-lightning::before { - content: "\e0b7"; } +.fa-person-circle-plus { + --fa: "\e541"; } -.fa-sack-xmark::before { - content: "\e56a"; } +.fa-chart-pie { + --fa: "\f200"; } -.fa-file-excel::before { - content: "\f1c3"; } +.fa-pie-chart { + --fa: "\f200"; } -.fa-file-contract::before { - content: "\f56c"; } +.fa-bolt-lightning { + --fa: "\e0b7"; } -.fa-fish-fins::before { - content: "\e4f2"; } +.fa-sack-xmark { + --fa: "\e56a"; } -.fa-building-flag::before { - content: "\e4d5"; } +.fa-file-excel { + --fa: "\f1c3"; } -.fa-face-grin-beam::before { - content: "\f582"; } +.fa-file-contract { + --fa: "\f56c"; } -.fa-grin-beam::before { - content: "\f582"; } +.fa-fish-fins { + --fa: "\e4f2"; } -.fa-object-ungroup::before { - content: "\f248"; } +.fa-building-flag { + --fa: "\e4d5"; } -.fa-poop::before { - content: "\f619"; } +.fa-face-grin-beam { + --fa: "\f582"; } -.fa-location-pin::before { - content: "\f041"; } +.fa-grin-beam { + --fa: "\f582"; } -.fa-map-marker::before { - content: "\f041"; } +.fa-object-ungroup { + --fa: "\f248"; } -.fa-kaaba::before { - content: "\f66b"; } +.fa-poop { + --fa: "\f619"; } -.fa-toilet-paper::before { - content: "\f71e"; } +.fa-location-pin { + --fa: "\f041"; } -.fa-helmet-safety::before { - content: "\f807"; } +.fa-map-marker { + --fa: "\f041"; } -.fa-hard-hat::before { - content: "\f807"; } +.fa-kaaba { + --fa: "\f66b"; } -.fa-hat-hard::before { - content: "\f807"; } +.fa-toilet-paper { + --fa: "\f71e"; } -.fa-eject::before { - content: "\f052"; } +.fa-helmet-safety { + --fa: "\f807"; } -.fa-circle-right::before { - content: "\f35a"; } +.fa-hard-hat { + --fa: "\f807"; } -.fa-arrow-alt-circle-right::before { - content: "\f35a"; } +.fa-hat-hard { + --fa: "\f807"; } -.fa-plane-circle-check::before { - content: "\e555"; } +.fa-eject { + --fa: "\f052"; } -.fa-face-rolling-eyes::before { - content: "\f5a5"; } +.fa-circle-right { + --fa: "\f35a"; } -.fa-meh-rolling-eyes::before { - content: "\f5a5"; } +.fa-arrow-alt-circle-right { + --fa: "\f35a"; } -.fa-object-group::before { - content: "\f247"; } +.fa-plane-circle-check { + --fa: "\e555"; } -.fa-chart-line::before { - content: "\f201"; } +.fa-face-rolling-eyes { + --fa: "\f5a5"; } -.fa-line-chart::before { - content: "\f201"; } +.fa-meh-rolling-eyes { + --fa: "\f5a5"; } -.fa-mask-ventilator::before { - content: "\e524"; } +.fa-object-group { + --fa: "\f247"; } -.fa-arrow-right::before { - content: "\f061"; } +.fa-chart-line { + --fa: "\f201"; } -.fa-signs-post::before { - content: "\f277"; } +.fa-line-chart { + --fa: "\f201"; } -.fa-map-signs::before { - content: "\f277"; } +.fa-mask-ventilator { + --fa: "\e524"; } -.fa-cash-register::before { - content: "\f788"; } +.fa-arrow-right { + --fa: "\f061"; } -.fa-person-circle-question::before { - content: "\e542"; } +.fa-signs-post { + --fa: "\f277"; } -.fa-h::before { - content: "\48"; } +.fa-map-signs { + --fa: "\f277"; } -.fa-tarp::before { - content: "\e57b"; } +.fa-cash-register { + --fa: "\f788"; } -.fa-screwdriver-wrench::before { - content: "\f7d9"; } +.fa-person-circle-question { + --fa: "\e542"; } -.fa-tools::before { - content: "\f7d9"; } +.fa-h { + --fa: "\48"; } -.fa-arrows-to-eye::before { - content: "\e4bf"; } +.fa-tarp { + --fa: "\e57b"; } -.fa-plug-circle-bolt::before { - content: "\e55b"; } +.fa-screwdriver-wrench { + --fa: "\f7d9"; } -.fa-heart::before { - content: "\f004"; } +.fa-tools { + --fa: "\f7d9"; } -.fa-mars-and-venus::before { - content: "\f224"; } +.fa-arrows-to-eye { + --fa: "\e4bf"; } -.fa-house-user::before { - content: "\e1b0"; } +.fa-plug-circle-bolt { + --fa: "\e55b"; } -.fa-home-user::before { - content: "\e1b0"; } +.fa-heart { + --fa: "\f004"; } -.fa-dumpster-fire::before { - content: "\f794"; } +.fa-mars-and-venus { + --fa: "\f224"; } -.fa-house-crack::before { - content: "\e3b1"; } +.fa-house-user { + --fa: "\e1b0"; } -.fa-martini-glass-citrus::before { - content: "\f561"; } +.fa-home-user { + --fa: "\e1b0"; } -.fa-cocktail::before { - content: "\f561"; } +.fa-dumpster-fire { + --fa: "\f794"; } -.fa-face-surprise::before { - content: "\f5c2"; } +.fa-house-crack { + --fa: "\e3b1"; } -.fa-surprise::before { - content: "\f5c2"; } +.fa-martini-glass-citrus { + --fa: "\f561"; } -.fa-bottle-water::before { - content: "\e4c5"; } +.fa-cocktail { + --fa: "\f561"; } -.fa-circle-pause::before { - content: "\f28b"; } +.fa-face-surprise { + --fa: "\f5c2"; } -.fa-pause-circle::before { - content: "\f28b"; } +.fa-surprise { + --fa: "\f5c2"; } -.fa-toilet-paper-slash::before { - content: "\e072"; } +.fa-bottle-water { + --fa: "\e4c5"; } -.fa-apple-whole::before { - content: "\f5d1"; } +.fa-circle-pause { + --fa: "\f28b"; } -.fa-apple-alt::before { - content: "\f5d1"; } +.fa-pause-circle { + --fa: "\f28b"; } -.fa-kitchen-set::before { - content: "\e51a"; } +.fa-toilet-paper-slash { + --fa: "\e072"; } -.fa-r::before { - content: "\52"; } +.fa-apple-whole { + --fa: "\f5d1"; } -.fa-temperature-quarter::before { - content: "\f2ca"; } +.fa-apple-alt { + --fa: "\f5d1"; } -.fa-temperature-1::before { - content: "\f2ca"; } +.fa-kitchen-set { + --fa: "\e51a"; } -.fa-thermometer-1::before { - content: "\f2ca"; } +.fa-r { + --fa: "\52"; } -.fa-thermometer-quarter::before { - content: "\f2ca"; } +.fa-temperature-quarter { + --fa: "\f2ca"; } -.fa-cube::before { - content: "\f1b2"; } +.fa-temperature-1 { + --fa: "\f2ca"; } -.fa-bitcoin-sign::before { - content: "\e0b4"; } +.fa-thermometer-1 { + --fa: "\f2ca"; } -.fa-shield-dog::before { - content: "\e573"; } +.fa-thermometer-quarter { + --fa: "\f2ca"; } -.fa-solar-panel::before { - content: "\f5ba"; } +.fa-cube { + --fa: "\f1b2"; } -.fa-lock-open::before { - content: "\f3c1"; } +.fa-bitcoin-sign { + --fa: "\e0b4"; } -.fa-elevator::before { - content: "\e16d"; } +.fa-shield-dog { + --fa: "\e573"; } -.fa-money-bill-transfer::before { - content: "\e528"; } +.fa-solar-panel { + --fa: "\f5ba"; } -.fa-money-bill-trend-up::before { - content: "\e529"; } +.fa-lock-open { + --fa: "\f3c1"; } -.fa-house-flood-water-circle-arrow-right::before { - content: "\e50f"; } +.fa-elevator { + --fa: "\e16d"; } -.fa-square-poll-horizontal::before { - content: "\f682"; } +.fa-money-bill-transfer { + --fa: "\e528"; } -.fa-poll-h::before { - content: "\f682"; } +.fa-money-bill-trend-up { + --fa: "\e529"; } -.fa-circle::before { - content: "\f111"; } +.fa-house-flood-water-circle-arrow-right { + --fa: "\e50f"; } -.fa-backward-fast::before { - content: "\f049"; } +.fa-square-poll-horizontal { + --fa: "\f682"; } -.fa-fast-backward::before { - content: "\f049"; } +.fa-poll-h { + --fa: "\f682"; } -.fa-recycle::before { - content: "\f1b8"; } +.fa-circle { + --fa: "\f111"; } -.fa-user-astronaut::before { - content: "\f4fb"; } +.fa-backward-fast { + --fa: "\f049"; } -.fa-plane-slash::before { - content: "\e069"; } +.fa-fast-backward { + --fa: "\f049"; } -.fa-trademark::before { - content: "\f25c"; } +.fa-recycle { + --fa: "\f1b8"; } -.fa-basketball::before { - content: "\f434"; } +.fa-user-astronaut { + --fa: "\f4fb"; } -.fa-basketball-ball::before { - content: "\f434"; } +.fa-plane-slash { + --fa: "\e069"; } -.fa-satellite-dish::before { - content: "\f7c0"; } +.fa-trademark { + --fa: "\f25c"; } -.fa-circle-up::before { - content: "\f35b"; } +.fa-basketball { + --fa: "\f434"; } -.fa-arrow-alt-circle-up::before { - content: "\f35b"; } +.fa-basketball-ball { + --fa: "\f434"; } -.fa-mobile-screen-button::before { - content: "\f3cd"; } +.fa-satellite-dish { + --fa: "\f7c0"; } -.fa-mobile-alt::before { - content: "\f3cd"; } +.fa-circle-up { + --fa: "\f35b"; } -.fa-volume-high::before { - content: "\f028"; } +.fa-arrow-alt-circle-up { + --fa: "\f35b"; } -.fa-volume-up::before { - content: "\f028"; } +.fa-mobile-screen-button { + --fa: "\f3cd"; } -.fa-users-rays::before { - content: "\e593"; } +.fa-mobile-alt { + --fa: "\f3cd"; } -.fa-wallet::before { - content: "\f555"; } +.fa-volume-high { + --fa: "\f028"; } -.fa-clipboard-check::before { - content: "\f46c"; } +.fa-volume-up { + --fa: "\f028"; } -.fa-file-audio::before { - content: "\f1c7"; } +.fa-users-rays { + --fa: "\e593"; } -.fa-burger::before { - content: "\f805"; } +.fa-wallet { + --fa: "\f555"; } -.fa-hamburger::before { - content: "\f805"; } +.fa-clipboard-check { + --fa: "\f46c"; } -.fa-wrench::before { - content: "\f0ad"; } +.fa-file-audio { + --fa: "\f1c7"; } -.fa-bugs::before { - content: "\e4d0"; } +.fa-burger { + --fa: "\f805"; } -.fa-rupee-sign::before { - content: "\f156"; } +.fa-hamburger { + --fa: "\f805"; } -.fa-rupee::before { - content: "\f156"; } +.fa-wrench { + --fa: "\f0ad"; } -.fa-file-image::before { - content: "\f1c5"; } +.fa-bugs { + --fa: "\e4d0"; } -.fa-circle-question::before { - content: "\f059"; } +.fa-rupee-sign { + --fa: "\f156"; } -.fa-question-circle::before { - content: "\f059"; } +.fa-rupee { + --fa: "\f156"; } -.fa-plane-departure::before { - content: "\f5b0"; } +.fa-file-image { + --fa: "\f1c5"; } -.fa-handshake-slash::before { - content: "\e060"; } +.fa-circle-question { + --fa: "\f059"; } -.fa-book-bookmark::before { - content: "\e0bb"; } +.fa-question-circle { + --fa: "\f059"; } -.fa-code-branch::before { - content: "\f126"; } +.fa-plane-departure { + --fa: "\f5b0"; } -.fa-hat-cowboy::before { - content: "\f8c0"; } +.fa-handshake-slash { + --fa: "\e060"; } -.fa-bridge::before { - content: "\e4c8"; } +.fa-book-bookmark { + --fa: "\e0bb"; } -.fa-phone-flip::before { - content: "\f879"; } +.fa-code-branch { + --fa: "\f126"; } -.fa-phone-alt::before { - content: "\f879"; } +.fa-hat-cowboy { + --fa: "\f8c0"; } -.fa-truck-front::before { - content: "\e2b7"; } +.fa-bridge { + --fa: "\e4c8"; } -.fa-cat::before { - content: "\f6be"; } +.fa-phone-flip { + --fa: "\f879"; } -.fa-anchor-circle-exclamation::before { - content: "\e4ab"; } +.fa-phone-alt { + --fa: "\f879"; } -.fa-truck-field::before { - content: "\e58d"; } +.fa-truck-front { + --fa: "\e2b7"; } -.fa-route::before { - content: "\f4d7"; } +.fa-cat { + --fa: "\f6be"; } -.fa-clipboard-question::before { - content: "\e4e3"; } +.fa-anchor-circle-exclamation { + --fa: "\e4ab"; } -.fa-panorama::before { - content: "\e209"; } +.fa-truck-field { + --fa: "\e58d"; } -.fa-comment-medical::before { - content: "\f7f5"; } +.fa-route { + --fa: "\f4d7"; } -.fa-teeth-open::before { - content: "\f62f"; } +.fa-clipboard-question { + --fa: "\e4e3"; } -.fa-file-circle-minus::before { - content: "\e4ed"; } +.fa-panorama { + --fa: "\e209"; } -.fa-tags::before { - content: "\f02c"; } +.fa-comment-medical { + --fa: "\f7f5"; } -.fa-wine-glass::before { - content: "\f4e3"; } +.fa-teeth-open { + --fa: "\f62f"; } -.fa-forward-fast::before { - content: "\f050"; } +.fa-file-circle-minus { + --fa: "\e4ed"; } -.fa-fast-forward::before { - content: "\f050"; } +.fa-tags { + --fa: "\f02c"; } -.fa-face-meh-blank::before { - content: "\f5a4"; } +.fa-wine-glass { + --fa: "\f4e3"; } -.fa-meh-blank::before { - content: "\f5a4"; } +.fa-forward-fast { + --fa: "\f050"; } -.fa-square-parking::before { - content: "\f540"; } +.fa-fast-forward { + --fa: "\f050"; } -.fa-parking::before { - content: "\f540"; } +.fa-face-meh-blank { + --fa: "\f5a4"; } -.fa-house-signal::before { - content: "\e012"; } +.fa-meh-blank { + --fa: "\f5a4"; } -.fa-bars-progress::before { - content: "\f828"; } +.fa-square-parking { + --fa: "\f540"; } -.fa-tasks-alt::before { - content: "\f828"; } +.fa-parking { + --fa: "\f540"; } -.fa-faucet-drip::before { - content: "\e006"; } +.fa-house-signal { + --fa: "\e012"; } -.fa-cart-flatbed::before { - content: "\f474"; } +.fa-bars-progress { + --fa: "\f828"; } -.fa-dolly-flatbed::before { - content: "\f474"; } +.fa-tasks-alt { + --fa: "\f828"; } -.fa-ban-smoking::before { - content: "\f54d"; } +.fa-faucet-drip { + --fa: "\e006"; } -.fa-smoking-ban::before { - content: "\f54d"; } +.fa-cart-flatbed { + --fa: "\f474"; } -.fa-terminal::before { - content: "\f120"; } +.fa-dolly-flatbed { + --fa: "\f474"; } -.fa-mobile-button::before { - content: "\f10b"; } +.fa-ban-smoking { + --fa: "\f54d"; } -.fa-house-medical-flag::before { - content: "\e514"; } +.fa-smoking-ban { + --fa: "\f54d"; } -.fa-basket-shopping::before { - content: "\f291"; } +.fa-terminal { + --fa: "\f120"; } -.fa-shopping-basket::before { - content: "\f291"; } +.fa-mobile-button { + --fa: "\f10b"; } -.fa-tape::before { - content: "\f4db"; } +.fa-house-medical-flag { + --fa: "\e514"; } -.fa-bus-simple::before { - content: "\f55e"; } +.fa-basket-shopping { + --fa: "\f291"; } -.fa-bus-alt::before { - content: "\f55e"; } +.fa-shopping-basket { + --fa: "\f291"; } -.fa-eye::before { - content: "\f06e"; } +.fa-tape { + --fa: "\f4db"; } -.fa-face-sad-cry::before { - content: "\f5b3"; } +.fa-bus-simple { + --fa: "\f55e"; } -.fa-sad-cry::before { - content: "\f5b3"; } +.fa-bus-alt { + --fa: "\f55e"; } -.fa-audio-description::before { - content: "\f29e"; } +.fa-eye { + --fa: "\f06e"; } -.fa-person-military-to-person::before { - content: "\e54c"; } +.fa-face-sad-cry { + --fa: "\f5b3"; } -.fa-file-shield::before { - content: "\e4f0"; } +.fa-sad-cry { + --fa: "\f5b3"; } -.fa-user-slash::before { - content: "\f506"; } +.fa-audio-description { + --fa: "\f29e"; } -.fa-pen::before { - content: "\f304"; } +.fa-person-military-to-person { + --fa: "\e54c"; } -.fa-tower-observation::before { - content: "\e586"; } +.fa-file-shield { + --fa: "\e4f0"; } -.fa-file-code::before { - content: "\f1c9"; } +.fa-user-slash { + --fa: "\f506"; } -.fa-signal::before { - content: "\f012"; } +.fa-pen { + --fa: "\f304"; } -.fa-signal-5::before { - content: "\f012"; } +.fa-tower-observation { + --fa: "\e586"; } -.fa-signal-perfect::before { - content: "\f012"; } +.fa-file-code { + --fa: "\f1c9"; } -.fa-bus::before { - content: "\f207"; } +.fa-signal { + --fa: "\f012"; } -.fa-heart-circle-xmark::before { - content: "\e501"; } +.fa-signal-5 { + --fa: "\f012"; } -.fa-house-chimney::before { - content: "\e3af"; } +.fa-signal-perfect { + --fa: "\f012"; } -.fa-home-lg::before { - content: "\e3af"; } +.fa-bus { + --fa: "\f207"; } -.fa-window-maximize::before { - content: "\f2d0"; } +.fa-heart-circle-xmark { + --fa: "\e501"; } -.fa-face-frown::before { - content: "\f119"; } +.fa-house-chimney { + --fa: "\e3af"; } -.fa-frown::before { - content: "\f119"; } +.fa-home-lg { + --fa: "\e3af"; } -.fa-prescription::before { - content: "\f5b1"; } +.fa-window-maximize { + --fa: "\f2d0"; } -.fa-shop::before { - content: "\f54f"; } +.fa-face-frown { + --fa: "\f119"; } -.fa-store-alt::before { - content: "\f54f"; } +.fa-frown { + --fa: "\f119"; } -.fa-floppy-disk::before { - content: "\f0c7"; } +.fa-prescription { + --fa: "\f5b1"; } -.fa-save::before { - content: "\f0c7"; } +.fa-shop { + --fa: "\f54f"; } -.fa-vihara::before { - content: "\f6a7"; } +.fa-store-alt { + --fa: "\f54f"; } -.fa-scale-unbalanced::before { - content: "\f515"; } +.fa-floppy-disk { + --fa: "\f0c7"; } -.fa-balance-scale-left::before { - content: "\f515"; } +.fa-save { + --fa: "\f0c7"; } -.fa-sort-up::before { - content: "\f0de"; } +.fa-vihara { + --fa: "\f6a7"; } -.fa-sort-asc::before { - content: "\f0de"; } +.fa-scale-unbalanced { + --fa: "\f515"; } -.fa-comment-dots::before { - content: "\f4ad"; } +.fa-balance-scale-left { + --fa: "\f515"; } -.fa-commenting::before { - content: "\f4ad"; } +.fa-sort-up { + --fa: "\f0de"; } -.fa-plant-wilt::before { - content: "\e5aa"; } +.fa-sort-asc { + --fa: "\f0de"; } -.fa-diamond::before { - content: "\f219"; } +.fa-comment-dots { + --fa: "\f4ad"; } -.fa-face-grin-squint::before { - content: "\f585"; } +.fa-commenting { + --fa: "\f4ad"; } -.fa-grin-squint::before { - content: "\f585"; } +.fa-plant-wilt { + --fa: "\e5aa"; } -.fa-hand-holding-dollar::before { - content: "\f4c0"; } +.fa-diamond { + --fa: "\f219"; } -.fa-hand-holding-usd::before { - content: "\f4c0"; } +.fa-face-grin-squint { + --fa: "\f585"; } -.fa-bacterium::before { - content: "\e05a"; } +.fa-grin-squint { + --fa: "\f585"; } -.fa-hand-pointer::before { - content: "\f25a"; } +.fa-hand-holding-dollar { + --fa: "\f4c0"; } -.fa-drum-steelpan::before { - content: "\f56a"; } +.fa-hand-holding-usd { + --fa: "\f4c0"; } -.fa-hand-scissors::before { - content: "\f257"; } +.fa-chart-diagram { + --fa: "\e695"; } -.fa-hands-praying::before { - content: "\f684"; } +.fa-bacterium { + --fa: "\e05a"; } -.fa-praying-hands::before { - content: "\f684"; } +.fa-hand-pointer { + --fa: "\f25a"; } -.fa-arrow-rotate-right::before { - content: "\f01e"; } +.fa-drum-steelpan { + --fa: "\f56a"; } -.fa-arrow-right-rotate::before { - content: "\f01e"; } +.fa-hand-scissors { + --fa: "\f257"; } -.fa-arrow-rotate-forward::before { - content: "\f01e"; } +.fa-hands-praying { + --fa: "\f684"; } -.fa-redo::before { - content: "\f01e"; } +.fa-praying-hands { + --fa: "\f684"; } -.fa-biohazard::before { - content: "\f780"; } +.fa-arrow-rotate-right { + --fa: "\f01e"; } -.fa-location-crosshairs::before { - content: "\f601"; } +.fa-arrow-right-rotate { + --fa: "\f01e"; } -.fa-location::before { - content: "\f601"; } +.fa-arrow-rotate-forward { + --fa: "\f01e"; } -.fa-mars-double::before { - content: "\f227"; } +.fa-redo { + --fa: "\f01e"; } -.fa-child-dress::before { - content: "\e59c"; } +.fa-biohazard { + --fa: "\f780"; } -.fa-users-between-lines::before { - content: "\e591"; } +.fa-location-crosshairs { + --fa: "\f601"; } -.fa-lungs-virus::before { - content: "\e067"; } +.fa-location { + --fa: "\f601"; } -.fa-face-grin-tears::before { - content: "\f588"; } +.fa-mars-double { + --fa: "\f227"; } -.fa-grin-tears::before { - content: "\f588"; } +.fa-child-dress { + --fa: "\e59c"; } -.fa-phone::before { - content: "\f095"; } +.fa-users-between-lines { + --fa: "\e591"; } -.fa-calendar-xmark::before { - content: "\f273"; } +.fa-lungs-virus { + --fa: "\e067"; } -.fa-calendar-times::before { - content: "\f273"; } +.fa-face-grin-tears { + --fa: "\f588"; } -.fa-child-reaching::before { - content: "\e59d"; } +.fa-grin-tears { + --fa: "\f588"; } -.fa-head-side-virus::before { - content: "\e064"; } +.fa-phone { + --fa: "\f095"; } -.fa-user-gear::before { - content: "\f4fe"; } +.fa-calendar-xmark { + --fa: "\f273"; } -.fa-user-cog::before { - content: "\f4fe"; } +.fa-calendar-times { + --fa: "\f273"; } -.fa-arrow-up-1-9::before { - content: "\f163"; } +.fa-child-reaching { + --fa: "\e59d"; } -.fa-sort-numeric-up::before { - content: "\f163"; } +.fa-head-side-virus { + --fa: "\e064"; } -.fa-door-closed::before { - content: "\f52a"; } +.fa-user-gear { + --fa: "\f4fe"; } -.fa-shield-virus::before { - content: "\e06c"; } +.fa-user-cog { + --fa: "\f4fe"; } -.fa-dice-six::before { - content: "\f526"; } +.fa-arrow-up-1-9 { + --fa: "\f163"; } -.fa-mosquito-net::before { - content: "\e52c"; } +.fa-sort-numeric-up { + --fa: "\f163"; } -.fa-bridge-water::before { - content: "\e4ce"; } +.fa-door-closed { + --fa: "\f52a"; } -.fa-person-booth::before { - content: "\f756"; } +.fa-shield-virus { + --fa: "\e06c"; } -.fa-text-width::before { - content: "\f035"; } +.fa-dice-six { + --fa: "\f526"; } -.fa-hat-wizard::before { - content: "\f6e8"; } +.fa-mosquito-net { + --fa: "\e52c"; } -.fa-pen-fancy::before { - content: "\f5ac"; } +.fa-file-fragment { + --fa: "\e697"; } -.fa-person-digging::before { - content: "\f85e"; } +.fa-bridge-water { + --fa: "\e4ce"; } -.fa-digging::before { - content: "\f85e"; } +.fa-person-booth { + --fa: "\f756"; } -.fa-trash::before { - content: "\f1f8"; } +.fa-text-width { + --fa: "\f035"; } -.fa-gauge-simple::before { - content: "\f629"; } +.fa-hat-wizard { + --fa: "\f6e8"; } -.fa-gauge-simple-med::before { - content: "\f629"; } +.fa-pen-fancy { + --fa: "\f5ac"; } -.fa-tachometer-average::before { - content: "\f629"; } +.fa-person-digging { + --fa: "\f85e"; } -.fa-book-medical::before { - content: "\f7e6"; } +.fa-digging { + --fa: "\f85e"; } -.fa-poo::before { - content: "\f2fe"; } +.fa-trash { + --fa: "\f1f8"; } -.fa-quote-right::before { - content: "\f10e"; } +.fa-gauge-simple { + --fa: "\f629"; } -.fa-quote-right-alt::before { - content: "\f10e"; } +.fa-gauge-simple-med { + --fa: "\f629"; } -.fa-shirt::before { - content: "\f553"; } +.fa-tachometer-average { + --fa: "\f629"; } -.fa-t-shirt::before { - content: "\f553"; } +.fa-book-medical { + --fa: "\f7e6"; } -.fa-tshirt::before { - content: "\f553"; } +.fa-poo { + --fa: "\f2fe"; } -.fa-cubes::before { - content: "\f1b3"; } +.fa-quote-right { + --fa: "\f10e"; } -.fa-divide::before { - content: "\f529"; } +.fa-quote-right-alt { + --fa: "\f10e"; } -.fa-tenge-sign::before { - content: "\f7d7"; } +.fa-shirt { + --fa: "\f553"; } -.fa-tenge::before { - content: "\f7d7"; } +.fa-t-shirt { + --fa: "\f553"; } -.fa-headphones::before { - content: "\f025"; } +.fa-tshirt { + --fa: "\f553"; } -.fa-hands-holding::before { - content: "\f4c2"; } +.fa-cubes { + --fa: "\f1b3"; } -.fa-hands-clapping::before { - content: "\e1a8"; } +.fa-divide { + --fa: "\f529"; } -.fa-republican::before { - content: "\f75e"; } +.fa-tenge-sign { + --fa: "\f7d7"; } -.fa-arrow-left::before { - content: "\f060"; } +.fa-tenge { + --fa: "\f7d7"; } -.fa-person-circle-xmark::before { - content: "\e543"; } +.fa-headphones { + --fa: "\f025"; } -.fa-ruler::before { - content: "\f545"; } +.fa-hands-holding { + --fa: "\f4c2"; } -.fa-align-left::before { - content: "\f036"; } +.fa-hands-clapping { + --fa: "\e1a8"; } -.fa-dice-d6::before { - content: "\f6d1"; } +.fa-republican { + --fa: "\f75e"; } -.fa-restroom::before { - content: "\f7bd"; } +.fa-arrow-left { + --fa: "\f060"; } -.fa-j::before { - content: "\4a"; } +.fa-person-circle-xmark { + --fa: "\e543"; } -.fa-users-viewfinder::before { - content: "\e595"; } +.fa-ruler { + --fa: "\f545"; } -.fa-file-video::before { - content: "\f1c8"; } +.fa-align-left { + --fa: "\f036"; } -.fa-up-right-from-square::before { - content: "\f35d"; } +.fa-dice-d6 { + --fa: "\f6d1"; } -.fa-external-link-alt::before { - content: "\f35d"; } +.fa-restroom { + --fa: "\f7bd"; } -.fa-table-cells::before { - content: "\f00a"; } +.fa-j { + --fa: "\4a"; } -.fa-th::before { - content: "\f00a"; } +.fa-users-viewfinder { + --fa: "\e595"; } -.fa-file-pdf::before { - content: "\f1c1"; } +.fa-file-video { + --fa: "\f1c8"; } -.fa-book-bible::before { - content: "\f647"; } +.fa-up-right-from-square { + --fa: "\f35d"; } -.fa-bible::before { - content: "\f647"; } +.fa-external-link-alt { + --fa: "\f35d"; } -.fa-o::before { - content: "\4f"; } +.fa-table-cells { + --fa: "\f00a"; } -.fa-suitcase-medical::before { - content: "\f0fa"; } +.fa-th { + --fa: "\f00a"; } -.fa-medkit::before { - content: "\f0fa"; } +.fa-file-pdf { + --fa: "\f1c1"; } -.fa-user-secret::before { - content: "\f21b"; } +.fa-book-bible { + --fa: "\f647"; } -.fa-otter::before { - content: "\f700"; } +.fa-bible { + --fa: "\f647"; } -.fa-person-dress::before { - content: "\f182"; } +.fa-o { + --fa: "\4f"; } -.fa-female::before { - content: "\f182"; } +.fa-suitcase-medical { + --fa: "\f0fa"; } -.fa-comment-dollar::before { - content: "\f651"; } +.fa-medkit { + --fa: "\f0fa"; } -.fa-business-time::before { - content: "\f64a"; } +.fa-user-secret { + --fa: "\f21b"; } -.fa-briefcase-clock::before { - content: "\f64a"; } +.fa-otter { + --fa: "\f700"; } -.fa-table-cells-large::before { - content: "\f009"; } +.fa-person-dress { + --fa: "\f182"; } -.fa-th-large::before { - content: "\f009"; } +.fa-female { + --fa: "\f182"; } -.fa-book-tanakh::before { - content: "\f827"; } +.fa-comment-dollar { + --fa: "\f651"; } -.fa-tanakh::before { - content: "\f827"; } +.fa-business-time { + --fa: "\f64a"; } -.fa-phone-volume::before { - content: "\f2a0"; } +.fa-briefcase-clock { + --fa: "\f64a"; } -.fa-volume-control-phone::before { - content: "\f2a0"; } +.fa-table-cells-large { + --fa: "\f009"; } -.fa-hat-cowboy-side::before { - content: "\f8c1"; } +.fa-th-large { + --fa: "\f009"; } -.fa-clipboard-user::before { - content: "\f7f3"; } +.fa-book-tanakh { + --fa: "\f827"; } -.fa-child::before { - content: "\f1ae"; } +.fa-tanakh { + --fa: "\f827"; } -.fa-lira-sign::before { - content: "\f195"; } +.fa-phone-volume { + --fa: "\f2a0"; } -.fa-satellite::before { - content: "\f7bf"; } +.fa-volume-control-phone { + --fa: "\f2a0"; } -.fa-plane-lock::before { - content: "\e558"; } +.fa-hat-cowboy-side { + --fa: "\f8c1"; } -.fa-tag::before { - content: "\f02b"; } +.fa-clipboard-user { + --fa: "\f7f3"; } -.fa-comment::before { - content: "\f075"; } +.fa-child { + --fa: "\f1ae"; } -.fa-cake-candles::before { - content: "\f1fd"; } +.fa-lira-sign { + --fa: "\f195"; } -.fa-birthday-cake::before { - content: "\f1fd"; } +.fa-satellite { + --fa: "\f7bf"; } -.fa-cake::before { - content: "\f1fd"; } +.fa-plane-lock { + --fa: "\e558"; } -.fa-envelope::before { - content: "\f0e0"; } +.fa-tag { + --fa: "\f02b"; } -.fa-angles-up::before { - content: "\f102"; } +.fa-comment { + --fa: "\f075"; } -.fa-angle-double-up::before { - content: "\f102"; } +.fa-cake-candles { + --fa: "\f1fd"; } -.fa-paperclip::before { - content: "\f0c6"; } +.fa-birthday-cake { + --fa: "\f1fd"; } -.fa-arrow-right-to-city::before { - content: "\e4b3"; } +.fa-cake { + --fa: "\f1fd"; } -.fa-ribbon::before { - content: "\f4d6"; } +.fa-envelope { + --fa: "\f0e0"; } -.fa-lungs::before { - content: "\f604"; } +.fa-angles-up { + --fa: "\f102"; } -.fa-arrow-up-9-1::before { - content: "\f887"; } +.fa-angle-double-up { + --fa: "\f102"; } -.fa-sort-numeric-up-alt::before { - content: "\f887"; } +.fa-paperclip { + --fa: "\f0c6"; } -.fa-litecoin-sign::before { - content: "\e1d3"; } +.fa-arrow-right-to-city { + --fa: "\e4b3"; } -.fa-border-none::before { - content: "\f850"; } +.fa-ribbon { + --fa: "\f4d6"; } -.fa-circle-nodes::before { - content: "\e4e2"; } +.fa-lungs { + --fa: "\f604"; } -.fa-parachute-box::before { - content: "\f4cd"; } +.fa-arrow-up-9-1 { + --fa: "\f887"; } -.fa-indent::before { - content: "\f03c"; } +.fa-sort-numeric-up-alt { + --fa: "\f887"; } -.fa-truck-field-un::before { - content: "\e58e"; } +.fa-litecoin-sign { + --fa: "\e1d3"; } -.fa-hourglass::before { - content: "\f254"; } +.fa-border-none { + --fa: "\f850"; } -.fa-hourglass-empty::before { - content: "\f254"; } +.fa-circle-nodes { + --fa: "\e4e2"; } -.fa-mountain::before { - content: "\f6fc"; } +.fa-parachute-box { + --fa: "\f4cd"; } -.fa-user-doctor::before { - content: "\f0f0"; } +.fa-indent { + --fa: "\f03c"; } -.fa-user-md::before { - content: "\f0f0"; } +.fa-truck-field-un { + --fa: "\e58e"; } -.fa-circle-info::before { - content: "\f05a"; } +.fa-hourglass { + --fa: "\f254"; } -.fa-info-circle::before { - content: "\f05a"; } +.fa-hourglass-empty { + --fa: "\f254"; } -.fa-cloud-meatball::before { - content: "\f73b"; } +.fa-mountain { + --fa: "\f6fc"; } -.fa-camera::before { - content: "\f030"; } +.fa-user-doctor { + --fa: "\f0f0"; } -.fa-camera-alt::before { - content: "\f030"; } +.fa-user-md { + --fa: "\f0f0"; } -.fa-square-virus::before { - content: "\e578"; } +.fa-circle-info { + --fa: "\f05a"; } -.fa-meteor::before { - content: "\f753"; } +.fa-info-circle { + --fa: "\f05a"; } -.fa-car-on::before { - content: "\e4dd"; } +.fa-cloud-meatball { + --fa: "\f73b"; } -.fa-sleigh::before { - content: "\f7cc"; } +.fa-camera { + --fa: "\f030"; } -.fa-arrow-down-1-9::before { - content: "\f162"; } +.fa-camera-alt { + --fa: "\f030"; } -.fa-sort-numeric-asc::before { - content: "\f162"; } +.fa-square-virus { + --fa: "\e578"; } -.fa-sort-numeric-down::before { - content: "\f162"; } +.fa-meteor { + --fa: "\f753"; } -.fa-hand-holding-droplet::before { - content: "\f4c1"; } +.fa-car-on { + --fa: "\e4dd"; } -.fa-hand-holding-water::before { - content: "\f4c1"; } +.fa-sleigh { + --fa: "\f7cc"; } -.fa-water::before { - content: "\f773"; } +.fa-arrow-down-1-9 { + --fa: "\f162"; } -.fa-calendar-check::before { - content: "\f274"; } +.fa-sort-numeric-asc { + --fa: "\f162"; } -.fa-braille::before { - content: "\f2a1"; } +.fa-sort-numeric-down { + --fa: "\f162"; } -.fa-prescription-bottle-medical::before { - content: "\f486"; } +.fa-hand-holding-droplet { + --fa: "\f4c1"; } -.fa-prescription-bottle-alt::before { - content: "\f486"; } +.fa-hand-holding-water { + --fa: "\f4c1"; } -.fa-landmark::before { - content: "\f66f"; } +.fa-water { + --fa: "\f773"; } -.fa-truck::before { - content: "\f0d1"; } +.fa-calendar-check { + --fa: "\f274"; } -.fa-crosshairs::before { - content: "\f05b"; } +.fa-braille { + --fa: "\f2a1"; } -.fa-person-cane::before { - content: "\e53c"; } +.fa-prescription-bottle-medical { + --fa: "\f486"; } -.fa-tent::before { - content: "\e57d"; } +.fa-prescription-bottle-alt { + --fa: "\f486"; } -.fa-vest-patches::before { - content: "\e086"; } +.fa-landmark { + --fa: "\f66f"; } -.fa-check-double::before { - content: "\f560"; } +.fa-truck { + --fa: "\f0d1"; } -.fa-arrow-down-a-z::before { - content: "\f15d"; } +.fa-crosshairs { + --fa: "\f05b"; } -.fa-sort-alpha-asc::before { - content: "\f15d"; } +.fa-person-cane { + --fa: "\e53c"; } -.fa-sort-alpha-down::before { - content: "\f15d"; } +.fa-tent { + --fa: "\e57d"; } -.fa-money-bill-wheat::before { - content: "\e52a"; } +.fa-vest-patches { + --fa: "\e086"; } -.fa-cookie::before { - content: "\f563"; } +.fa-check-double { + --fa: "\f560"; } -.fa-arrow-rotate-left::before { - content: "\f0e2"; } +.fa-arrow-down-a-z { + --fa: "\f15d"; } -.fa-arrow-left-rotate::before { - content: "\f0e2"; } +.fa-sort-alpha-asc { + --fa: "\f15d"; } -.fa-arrow-rotate-back::before { - content: "\f0e2"; } +.fa-sort-alpha-down { + --fa: "\f15d"; } -.fa-arrow-rotate-backward::before { - content: "\f0e2"; } +.fa-money-bill-wheat { + --fa: "\e52a"; } -.fa-undo::before { - content: "\f0e2"; } +.fa-cookie { + --fa: "\f563"; } -.fa-hard-drive::before { - content: "\f0a0"; } +.fa-arrow-rotate-left { + --fa: "\f0e2"; } -.fa-hdd::before { - content: "\f0a0"; } +.fa-arrow-left-rotate { + --fa: "\f0e2"; } -.fa-face-grin-squint-tears::before { - content: "\f586"; } +.fa-arrow-rotate-back { + --fa: "\f0e2"; } -.fa-grin-squint-tears::before { - content: "\f586"; } +.fa-arrow-rotate-backward { + --fa: "\f0e2"; } -.fa-dumbbell::before { - content: "\f44b"; } +.fa-undo { + --fa: "\f0e2"; } -.fa-rectangle-list::before { - content: "\f022"; } +.fa-hard-drive { + --fa: "\f0a0"; } -.fa-list-alt::before { - content: "\f022"; } +.fa-hdd { + --fa: "\f0a0"; } -.fa-tarp-droplet::before { - content: "\e57c"; } +.fa-face-grin-squint-tears { + --fa: "\f586"; } -.fa-house-medical-circle-check::before { - content: "\e511"; } +.fa-grin-squint-tears { + --fa: "\f586"; } -.fa-person-skiing-nordic::before { - content: "\f7ca"; } +.fa-dumbbell { + --fa: "\f44b"; } -.fa-skiing-nordic::before { - content: "\f7ca"; } +.fa-rectangle-list { + --fa: "\f022"; } -.fa-calendar-plus::before { - content: "\f271"; } +.fa-list-alt { + --fa: "\f022"; } -.fa-plane-arrival::before { - content: "\f5af"; } +.fa-tarp-droplet { + --fa: "\e57c"; } -.fa-circle-left::before { - content: "\f359"; } +.fa-house-medical-circle-check { + --fa: "\e511"; } -.fa-arrow-alt-circle-left::before { - content: "\f359"; } +.fa-person-skiing-nordic { + --fa: "\f7ca"; } -.fa-train-subway::before { - content: "\f239"; } +.fa-skiing-nordic { + --fa: "\f7ca"; } -.fa-subway::before { - content: "\f239"; } +.fa-calendar-plus { + --fa: "\f271"; } -.fa-chart-gantt::before { - content: "\e0e4"; } +.fa-plane-arrival { + --fa: "\f5af"; } -.fa-indian-rupee-sign::before { - content: "\e1bc"; } +.fa-circle-left { + --fa: "\f359"; } -.fa-indian-rupee::before { - content: "\e1bc"; } +.fa-arrow-alt-circle-left { + --fa: "\f359"; } -.fa-inr::before { - content: "\e1bc"; } +.fa-train-subway { + --fa: "\f239"; } -.fa-crop-simple::before { - content: "\f565"; } +.fa-subway { + --fa: "\f239"; } -.fa-crop-alt::before { - content: "\f565"; } +.fa-chart-gantt { + --fa: "\e0e4"; } -.fa-money-bill-1::before { - content: "\f3d1"; } +.fa-indian-rupee-sign { + --fa: "\e1bc"; } -.fa-money-bill-alt::before { - content: "\f3d1"; } +.fa-indian-rupee { + --fa: "\e1bc"; } -.fa-left-long::before { - content: "\f30a"; } +.fa-inr { + --fa: "\e1bc"; } -.fa-long-arrow-alt-left::before { - content: "\f30a"; } +.fa-crop-simple { + --fa: "\f565"; } -.fa-dna::before { - content: "\f471"; } +.fa-crop-alt { + --fa: "\f565"; } -.fa-virus-slash::before { - content: "\e075"; } +.fa-money-bill-1 { + --fa: "\f3d1"; } -.fa-minus::before { - content: "\f068"; } +.fa-money-bill-alt { + --fa: "\f3d1"; } -.fa-subtract::before { - content: "\f068"; } +.fa-left-long { + --fa: "\f30a"; } -.fa-chess::before { - content: "\f439"; } +.fa-long-arrow-alt-left { + --fa: "\f30a"; } -.fa-arrow-left-long::before { - content: "\f177"; } +.fa-dna { + --fa: "\f471"; } -.fa-long-arrow-left::before { - content: "\f177"; } +.fa-virus-slash { + --fa: "\e075"; } -.fa-plug-circle-check::before { - content: "\e55c"; } +.fa-minus { + --fa: "\f068"; } -.fa-street-view::before { - content: "\f21d"; } +.fa-subtract { + --fa: "\f068"; } -.fa-franc-sign::before { - content: "\e18f"; } +.fa-chess { + --fa: "\f439"; } -.fa-volume-off::before { - content: "\f026"; } +.fa-arrow-left-long { + --fa: "\f177"; } -.fa-hands-asl-interpreting::before { - content: "\f2a3"; } +.fa-long-arrow-left { + --fa: "\f177"; } -.fa-american-sign-language-interpreting::before { - content: "\f2a3"; } +.fa-plug-circle-check { + --fa: "\e55c"; } -.fa-asl-interpreting::before { - content: "\f2a3"; } +.fa-street-view { + --fa: "\f21d"; } -.fa-hands-american-sign-language-interpreting::before { - content: "\f2a3"; } +.fa-franc-sign { + --fa: "\e18f"; } -.fa-gear::before { - content: "\f013"; } +.fa-volume-off { + --fa: "\f026"; } -.fa-cog::before { - content: "\f013"; } +.fa-hands-asl-interpreting { + --fa: "\f2a3"; } -.fa-droplet-slash::before { - content: "\f5c7"; } +.fa-american-sign-language-interpreting { + --fa: "\f2a3"; } -.fa-tint-slash::before { - content: "\f5c7"; } +.fa-asl-interpreting { + --fa: "\f2a3"; } -.fa-mosque::before { - content: "\f678"; } +.fa-hands-american-sign-language-interpreting { + --fa: "\f2a3"; } -.fa-mosquito::before { - content: "\e52b"; } +.fa-gear { + --fa: "\f013"; } -.fa-star-of-david::before { - content: "\f69a"; } +.fa-cog { + --fa: "\f013"; } -.fa-person-military-rifle::before { - content: "\e54b"; } +.fa-droplet-slash { + --fa: "\f5c7"; } -.fa-cart-shopping::before { - content: "\f07a"; } +.fa-tint-slash { + --fa: "\f5c7"; } -.fa-shopping-cart::before { - content: "\f07a"; } +.fa-mosque { + --fa: "\f678"; } -.fa-vials::before { - content: "\f493"; } +.fa-mosquito { + --fa: "\e52b"; } -.fa-plug-circle-plus::before { - content: "\e55f"; } +.fa-star-of-david { + --fa: "\f69a"; } -.fa-place-of-worship::before { - content: "\f67f"; } +.fa-person-military-rifle { + --fa: "\e54b"; } -.fa-grip-vertical::before { - content: "\f58e"; } +.fa-cart-shopping { + --fa: "\f07a"; } -.fa-arrow-turn-up::before { - content: "\f148"; } +.fa-shopping-cart { + --fa: "\f07a"; } -.fa-level-up::before { - content: "\f148"; } +.fa-vials { + --fa: "\f493"; } -.fa-u::before { - content: "\55"; } +.fa-plug-circle-plus { + --fa: "\e55f"; } -.fa-square-root-variable::before { - content: "\f698"; } +.fa-place-of-worship { + --fa: "\f67f"; } -.fa-square-root-alt::before { - content: "\f698"; } +.fa-grip-vertical { + --fa: "\f58e"; } -.fa-clock::before { - content: "\f017"; } +.fa-hexagon-nodes { + --fa: "\e699"; } -.fa-clock-four::before { - content: "\f017"; } +.fa-arrow-turn-up { + --fa: "\f148"; } -.fa-backward-step::before { - content: "\f048"; } +.fa-level-up { + --fa: "\f148"; } -.fa-step-backward::before { - content: "\f048"; } +.fa-u { + --fa: "\55"; } -.fa-pallet::before { - content: "\f482"; } +.fa-square-root-variable { + --fa: "\f698"; } -.fa-faucet::before { - content: "\e005"; } +.fa-square-root-alt { + --fa: "\f698"; } -.fa-baseball-bat-ball::before { - content: "\f432"; } +.fa-clock { + --fa: "\f017"; } -.fa-s::before { - content: "\53"; } +.fa-clock-four { + --fa: "\f017"; } -.fa-timeline::before { - content: "\e29c"; } +.fa-backward-step { + --fa: "\f048"; } -.fa-keyboard::before { - content: "\f11c"; } +.fa-step-backward { + --fa: "\f048"; } -.fa-caret-down::before { - content: "\f0d7"; } +.fa-pallet { + --fa: "\f482"; } -.fa-house-chimney-medical::before { - content: "\f7f2"; } +.fa-faucet { + --fa: "\e005"; } -.fa-clinic-medical::before { - content: "\f7f2"; } +.fa-baseball-bat-ball { + --fa: "\f432"; } -.fa-temperature-three-quarters::before { - content: "\f2c8"; } +.fa-s { + --fa: "\53"; } -.fa-temperature-3::before { - content: "\f2c8"; } +.fa-timeline { + --fa: "\e29c"; } -.fa-thermometer-3::before { - content: "\f2c8"; } +.fa-keyboard { + --fa: "\f11c"; } -.fa-thermometer-three-quarters::before { - content: "\f2c8"; } +.fa-caret-down { + --fa: "\f0d7"; } -.fa-mobile-screen::before { - content: "\f3cf"; } +.fa-house-chimney-medical { + --fa: "\f7f2"; } -.fa-mobile-android-alt::before { - content: "\f3cf"; } +.fa-clinic-medical { + --fa: "\f7f2"; } -.fa-plane-up::before { - content: "\e22d"; } +.fa-temperature-three-quarters { + --fa: "\f2c8"; } -.fa-piggy-bank::before { - content: "\f4d3"; } +.fa-temperature-3 { + --fa: "\f2c8"; } -.fa-battery-half::before { - content: "\f242"; } +.fa-thermometer-3 { + --fa: "\f2c8"; } -.fa-battery-3::before { - content: "\f242"; } +.fa-thermometer-three-quarters { + --fa: "\f2c8"; } -.fa-mountain-city::before { - content: "\e52e"; } +.fa-mobile-screen { + --fa: "\f3cf"; } -.fa-coins::before { - content: "\f51e"; } +.fa-mobile-android-alt { + --fa: "\f3cf"; } -.fa-khanda::before { - content: "\f66d"; } +.fa-plane-up { + --fa: "\e22d"; } -.fa-sliders::before { - content: "\f1de"; } +.fa-piggy-bank { + --fa: "\f4d3"; } -.fa-sliders-h::before { - content: "\f1de"; } +.fa-battery-half { + --fa: "\f242"; } -.fa-folder-tree::before { - content: "\f802"; } +.fa-battery-3 { + --fa: "\f242"; } -.fa-network-wired::before { - content: "\f6ff"; } +.fa-mountain-city { + --fa: "\e52e"; } -.fa-map-pin::before { - content: "\f276"; } +.fa-coins { + --fa: "\f51e"; } -.fa-hamsa::before { - content: "\f665"; } +.fa-khanda { + --fa: "\f66d"; } -.fa-cent-sign::before { - content: "\e3f5"; } +.fa-sliders { + --fa: "\f1de"; } -.fa-flask::before { - content: "\f0c3"; } +.fa-sliders-h { + --fa: "\f1de"; } -.fa-person-pregnant::before { - content: "\e31e"; } +.fa-folder-tree { + --fa: "\f802"; } -.fa-wand-sparkles::before { - content: "\f72b"; } +.fa-network-wired { + --fa: "\f6ff"; } -.fa-ellipsis-vertical::before { - content: "\f142"; } +.fa-map-pin { + --fa: "\f276"; } -.fa-ellipsis-v::before { - content: "\f142"; } +.fa-hamsa { + --fa: "\f665"; } -.fa-ticket::before { - content: "\f145"; } +.fa-cent-sign { + --fa: "\e3f5"; } -.fa-power-off::before { - content: "\f011"; } +.fa-flask { + --fa: "\f0c3"; } -.fa-right-long::before { - content: "\f30b"; } +.fa-person-pregnant { + --fa: "\e31e"; } -.fa-long-arrow-alt-right::before { - content: "\f30b"; } +.fa-wand-sparkles { + --fa: "\f72b"; } -.fa-flag-usa::before { - content: "\f74d"; } +.fa-ellipsis-vertical { + --fa: "\f142"; } -.fa-laptop-file::before { - content: "\e51d"; } +.fa-ellipsis-v { + --fa: "\f142"; } -.fa-tty::before { - content: "\f1e4"; } +.fa-ticket { + --fa: "\f145"; } -.fa-teletype::before { - content: "\f1e4"; } +.fa-power-off { + --fa: "\f011"; } -.fa-diagram-next::before { - content: "\e476"; } +.fa-right-long { + --fa: "\f30b"; } -.fa-person-rifle::before { - content: "\e54e"; } +.fa-long-arrow-alt-right { + --fa: "\f30b"; } -.fa-house-medical-circle-exclamation::before { - content: "\e512"; } +.fa-flag-usa { + --fa: "\f74d"; } -.fa-closed-captioning::before { - content: "\f20a"; } +.fa-laptop-file { + --fa: "\e51d"; } -.fa-person-hiking::before { - content: "\f6ec"; } +.fa-tty { + --fa: "\f1e4"; } -.fa-hiking::before { - content: "\f6ec"; } +.fa-teletype { + --fa: "\f1e4"; } -.fa-venus-double::before { - content: "\f226"; } +.fa-diagram-next { + --fa: "\e476"; } -.fa-images::before { - content: "\f302"; } +.fa-person-rifle { + --fa: "\e54e"; } -.fa-calculator::before { - content: "\f1ec"; } +.fa-house-medical-circle-exclamation { + --fa: "\e512"; } -.fa-people-pulling::before { - content: "\e535"; } +.fa-closed-captioning { + --fa: "\f20a"; } -.fa-n::before { - content: "\4e"; } +.fa-person-hiking { + --fa: "\f6ec"; } -.fa-cable-car::before { - content: "\f7da"; } +.fa-hiking { + --fa: "\f6ec"; } -.fa-tram::before { - content: "\f7da"; } +.fa-venus-double { + --fa: "\f226"; } -.fa-cloud-rain::before { - content: "\f73d"; } +.fa-images { + --fa: "\f302"; } -.fa-building-circle-xmark::before { - content: "\e4d4"; } +.fa-calculator { + --fa: "\f1ec"; } -.fa-ship::before { - content: "\f21a"; } +.fa-people-pulling { + --fa: "\e535"; } -.fa-arrows-down-to-line::before { - content: "\e4b8"; } +.fa-n { + --fa: "\4e"; } -.fa-download::before { - content: "\f019"; } +.fa-cable-car { + --fa: "\f7da"; } -.fa-face-grin::before { - content: "\f580"; } +.fa-tram { + --fa: "\f7da"; } -.fa-grin::before { - content: "\f580"; } +.fa-cloud-rain { + --fa: "\f73d"; } -.fa-delete-left::before { - content: "\f55a"; } +.fa-building-circle-xmark { + --fa: "\e4d4"; } -.fa-backspace::before { - content: "\f55a"; } +.fa-ship { + --fa: "\f21a"; } -.fa-eye-dropper::before { - content: "\f1fb"; } +.fa-arrows-down-to-line { + --fa: "\e4b8"; } -.fa-eye-dropper-empty::before { - content: "\f1fb"; } +.fa-download { + --fa: "\f019"; } -.fa-eyedropper::before { - content: "\f1fb"; } +.fa-face-grin { + --fa: "\f580"; } -.fa-file-circle-check::before { - content: "\e5a0"; } +.fa-grin { + --fa: "\f580"; } -.fa-forward::before { - content: "\f04e"; } +.fa-delete-left { + --fa: "\f55a"; } -.fa-mobile::before { - content: "\f3ce"; } +.fa-backspace { + --fa: "\f55a"; } -.fa-mobile-android::before { - content: "\f3ce"; } +.fa-eye-dropper { + --fa: "\f1fb"; } -.fa-mobile-phone::before { - content: "\f3ce"; } +.fa-eye-dropper-empty { + --fa: "\f1fb"; } -.fa-face-meh::before { - content: "\f11a"; } +.fa-eyedropper { + --fa: "\f1fb"; } -.fa-meh::before { - content: "\f11a"; } +.fa-file-circle-check { + --fa: "\e5a0"; } -.fa-align-center::before { - content: "\f037"; } +.fa-forward { + --fa: "\f04e"; } -.fa-book-skull::before { - content: "\f6b7"; } +.fa-mobile { + --fa: "\f3ce"; } -.fa-book-dead::before { - content: "\f6b7"; } +.fa-mobile-android { + --fa: "\f3ce"; } -.fa-id-card::before { - content: "\f2c2"; } +.fa-mobile-phone { + --fa: "\f3ce"; } -.fa-drivers-license::before { - content: "\f2c2"; } +.fa-face-meh { + --fa: "\f11a"; } -.fa-outdent::before { - content: "\f03b"; } +.fa-meh { + --fa: "\f11a"; } -.fa-dedent::before { - content: "\f03b"; } +.fa-align-center { + --fa: "\f037"; } -.fa-heart-circle-exclamation::before { - content: "\e4fe"; } +.fa-book-skull { + --fa: "\f6b7"; } -.fa-house::before { - content: "\f015"; } +.fa-book-dead { + --fa: "\f6b7"; } -.fa-home::before { - content: "\f015"; } +.fa-id-card { + --fa: "\f2c2"; } -.fa-home-alt::before { - content: "\f015"; } +.fa-drivers-license { + --fa: "\f2c2"; } -.fa-home-lg-alt::before { - content: "\f015"; } +.fa-outdent { + --fa: "\f03b"; } -.fa-calendar-week::before { - content: "\f784"; } +.fa-dedent { + --fa: "\f03b"; } -.fa-laptop-medical::before { - content: "\f812"; } +.fa-heart-circle-exclamation { + --fa: "\e4fe"; } -.fa-b::before { - content: "\42"; } +.fa-house { + --fa: "\f015"; } -.fa-file-medical::before { - content: "\f477"; } +.fa-home { + --fa: "\f015"; } -.fa-dice-one::before { - content: "\f525"; } +.fa-home-alt { + --fa: "\f015"; } -.fa-kiwi-bird::before { - content: "\f535"; } +.fa-home-lg-alt { + --fa: "\f015"; } -.fa-arrow-right-arrow-left::before { - content: "\f0ec"; } +.fa-calendar-week { + --fa: "\f784"; } -.fa-exchange::before { - content: "\f0ec"; } +.fa-laptop-medical { + --fa: "\f812"; } -.fa-rotate-right::before { - content: "\f2f9"; } +.fa-b { + --fa: "\42"; } -.fa-redo-alt::before { - content: "\f2f9"; } +.fa-file-medical { + --fa: "\f477"; } -.fa-rotate-forward::before { - content: "\f2f9"; } +.fa-dice-one { + --fa: "\f525"; } -.fa-utensils::before { - content: "\f2e7"; } +.fa-kiwi-bird { + --fa: "\f535"; } -.fa-cutlery::before { - content: "\f2e7"; } +.fa-arrow-right-arrow-left { + --fa: "\f0ec"; } -.fa-arrow-up-wide-short::before { - content: "\f161"; } +.fa-exchange { + --fa: "\f0ec"; } -.fa-sort-amount-up::before { - content: "\f161"; } +.fa-rotate-right { + --fa: "\f2f9"; } -.fa-mill-sign::before { - content: "\e1ed"; } +.fa-redo-alt { + --fa: "\f2f9"; } -.fa-bowl-rice::before { - content: "\e2eb"; } +.fa-rotate-forward { + --fa: "\f2f9"; } -.fa-skull::before { - content: "\f54c"; } +.fa-utensils { + --fa: "\f2e7"; } -.fa-tower-broadcast::before { - content: "\f519"; } +.fa-cutlery { + --fa: "\f2e7"; } -.fa-broadcast-tower::before { - content: "\f519"; } +.fa-arrow-up-wide-short { + --fa: "\f161"; } -.fa-truck-pickup::before { - content: "\f63c"; } +.fa-sort-amount-up { + --fa: "\f161"; } -.fa-up-long::before { - content: "\f30c"; } +.fa-mill-sign { + --fa: "\e1ed"; } -.fa-long-arrow-alt-up::before { - content: "\f30c"; } +.fa-bowl-rice { + --fa: "\e2eb"; } -.fa-stop::before { - content: "\f04d"; } +.fa-skull { + --fa: "\f54c"; } -.fa-code-merge::before { - content: "\f387"; } +.fa-tower-broadcast { + --fa: "\f519"; } -.fa-upload::before { - content: "\f093"; } +.fa-broadcast-tower { + --fa: "\f519"; } -.fa-hurricane::before { - content: "\f751"; } +.fa-truck-pickup { + --fa: "\f63c"; } -.fa-mound::before { - content: "\e52d"; } +.fa-up-long { + --fa: "\f30c"; } -.fa-toilet-portable::before { - content: "\e583"; } +.fa-long-arrow-alt-up { + --fa: "\f30c"; } -.fa-compact-disc::before { - content: "\f51f"; } +.fa-stop { + --fa: "\f04d"; } -.fa-file-arrow-down::before { - content: "\f56d"; } +.fa-code-merge { + --fa: "\f387"; } -.fa-file-download::before { - content: "\f56d"; } +.fa-upload { + --fa: "\f093"; } -.fa-caravan::before { - content: "\f8ff"; } +.fa-hurricane { + --fa: "\f751"; } -.fa-shield-cat::before { - content: "\e572"; } +.fa-mound { + --fa: "\e52d"; } -.fa-bolt::before { - content: "\f0e7"; } +.fa-toilet-portable { + --fa: "\e583"; } -.fa-zap::before { - content: "\f0e7"; } +.fa-compact-disc { + --fa: "\f51f"; } -.fa-glass-water::before { - content: "\e4f4"; } +.fa-file-arrow-down { + --fa: "\f56d"; } -.fa-oil-well::before { - content: "\e532"; } +.fa-file-download { + --fa: "\f56d"; } -.fa-vault::before { - content: "\e2c5"; } +.fa-caravan { + --fa: "\f8ff"; } -.fa-mars::before { - content: "\f222"; } +.fa-shield-cat { + --fa: "\e572"; } -.fa-toilet::before { - content: "\f7d8"; } +.fa-bolt { + --fa: "\f0e7"; } -.fa-plane-circle-xmark::before { - content: "\e557"; } +.fa-zap { + --fa: "\f0e7"; } -.fa-yen-sign::before { - content: "\f157"; } +.fa-glass-water { + --fa: "\e4f4"; } -.fa-cny::before { - content: "\f157"; } +.fa-oil-well { + --fa: "\e532"; } -.fa-jpy::before { - content: "\f157"; } +.fa-vault { + --fa: "\e2c5"; } -.fa-rmb::before { - content: "\f157"; } +.fa-mars { + --fa: "\f222"; } -.fa-yen::before { - content: "\f157"; } +.fa-toilet { + --fa: "\f7d8"; } -.fa-ruble-sign::before { - content: "\f158"; } +.fa-plane-circle-xmark { + --fa: "\e557"; } -.fa-rouble::before { - content: "\f158"; } +.fa-yen-sign { + --fa: "\f157"; } -.fa-rub::before { - content: "\f158"; } +.fa-cny { + --fa: "\f157"; } -.fa-ruble::before { - content: "\f158"; } +.fa-jpy { + --fa: "\f157"; } -.fa-sun::before { - content: "\f185"; } +.fa-rmb { + --fa: "\f157"; } -.fa-guitar::before { - content: "\f7a6"; } +.fa-yen { + --fa: "\f157"; } -.fa-face-laugh-wink::before { - content: "\f59c"; } +.fa-ruble-sign { + --fa: "\f158"; } -.fa-laugh-wink::before { - content: "\f59c"; } +.fa-rouble { + --fa: "\f158"; } -.fa-horse-head::before { - content: "\f7ab"; } +.fa-rub { + --fa: "\f158"; } -.fa-bore-hole::before { - content: "\e4c3"; } +.fa-ruble { + --fa: "\f158"; } -.fa-industry::before { - content: "\f275"; } +.fa-sun { + --fa: "\f185"; } -.fa-circle-down::before { - content: "\f358"; } +.fa-guitar { + --fa: "\f7a6"; } -.fa-arrow-alt-circle-down::before { - content: "\f358"; } +.fa-face-laugh-wink { + --fa: "\f59c"; } -.fa-arrows-turn-to-dots::before { - content: "\e4c1"; } +.fa-laugh-wink { + --fa: "\f59c"; } -.fa-florin-sign::before { - content: "\e184"; } +.fa-horse-head { + --fa: "\f7ab"; } -.fa-arrow-down-short-wide::before { - content: "\f884"; } +.fa-bore-hole { + --fa: "\e4c3"; } -.fa-sort-amount-desc::before { - content: "\f884"; } +.fa-industry { + --fa: "\f275"; } -.fa-sort-amount-down-alt::before { - content: "\f884"; } +.fa-circle-down { + --fa: "\f358"; } -.fa-less-than::before { - content: "\3c"; } +.fa-arrow-alt-circle-down { + --fa: "\f358"; } -.fa-angle-down::before { - content: "\f107"; } +.fa-arrows-turn-to-dots { + --fa: "\e4c1"; } -.fa-car-tunnel::before { - content: "\e4de"; } +.fa-florin-sign { + --fa: "\e184"; } -.fa-head-side-cough::before { - content: "\e061"; } +.fa-arrow-down-short-wide { + --fa: "\f884"; } -.fa-grip-lines::before { - content: "\f7a4"; } +.fa-sort-amount-desc { + --fa: "\f884"; } -.fa-thumbs-down::before { - content: "\f165"; } +.fa-sort-amount-down-alt { + --fa: "\f884"; } -.fa-user-lock::before { - content: "\f502"; } +.fa-less-than { + --fa: "\3c"; } -.fa-arrow-right-long::before { - content: "\f178"; } +.fa-angle-down { + --fa: "\f107"; } -.fa-long-arrow-right::before { - content: "\f178"; } +.fa-car-tunnel { + --fa: "\e4de"; } -.fa-anchor-circle-xmark::before { - content: "\e4ac"; } +.fa-head-side-cough { + --fa: "\e061"; } -.fa-ellipsis::before { - content: "\f141"; } +.fa-grip-lines { + --fa: "\f7a4"; } -.fa-ellipsis-h::before { - content: "\f141"; } +.fa-thumbs-down { + --fa: "\f165"; } -.fa-chess-pawn::before { - content: "\f443"; } +.fa-user-lock { + --fa: "\f502"; } -.fa-kit-medical::before { - content: "\f479"; } +.fa-arrow-right-long { + --fa: "\f178"; } -.fa-first-aid::before { - content: "\f479"; } +.fa-long-arrow-right { + --fa: "\f178"; } -.fa-person-through-window::before { - content: "\e5a9"; } +.fa-anchor-circle-xmark { + --fa: "\e4ac"; } -.fa-toolbox::before { - content: "\f552"; } +.fa-ellipsis { + --fa: "\f141"; } -.fa-hands-holding-circle::before { - content: "\e4fb"; } +.fa-ellipsis-h { + --fa: "\f141"; } -.fa-bug::before { - content: "\f188"; } +.fa-chess-pawn { + --fa: "\f443"; } -.fa-credit-card::before { - content: "\f09d"; } +.fa-kit-medical { + --fa: "\f479"; } -.fa-credit-card-alt::before { - content: "\f09d"; } +.fa-first-aid { + --fa: "\f479"; } -.fa-car::before { - content: "\f1b9"; } +.fa-person-through-window { + --fa: "\e5a9"; } -.fa-automobile::before { - content: "\f1b9"; } +.fa-toolbox { + --fa: "\f552"; } -.fa-hand-holding-hand::before { - content: "\e4f7"; } +.fa-hands-holding-circle { + --fa: "\e4fb"; } -.fa-book-open-reader::before { - content: "\f5da"; } +.fa-bug { + --fa: "\f188"; } -.fa-book-reader::before { - content: "\f5da"; } +.fa-credit-card { + --fa: "\f09d"; } -.fa-mountain-sun::before { - content: "\e52f"; } +.fa-credit-card-alt { + --fa: "\f09d"; } -.fa-arrows-left-right-to-line::before { - content: "\e4ba"; } +.fa-car { + --fa: "\f1b9"; } -.fa-dice-d20::before { - content: "\f6cf"; } +.fa-automobile { + --fa: "\f1b9"; } -.fa-truck-droplet::before { - content: "\e58c"; } +.fa-hand-holding-hand { + --fa: "\e4f7"; } -.fa-file-circle-xmark::before { - content: "\e5a1"; } +.fa-book-open-reader { + --fa: "\f5da"; } -.fa-temperature-arrow-up::before { - content: "\e040"; } +.fa-book-reader { + --fa: "\f5da"; } -.fa-temperature-up::before { - content: "\e040"; } +.fa-mountain-sun { + --fa: "\e52f"; } -.fa-medal::before { - content: "\f5a2"; } +.fa-arrows-left-right-to-line { + --fa: "\e4ba"; } -.fa-bed::before { - content: "\f236"; } +.fa-dice-d20 { + --fa: "\f6cf"; } -.fa-square-h::before { - content: "\f0fd"; } +.fa-truck-droplet { + --fa: "\e58c"; } -.fa-h-square::before { - content: "\f0fd"; } +.fa-file-circle-xmark { + --fa: "\e5a1"; } -.fa-podcast::before { - content: "\f2ce"; } +.fa-temperature-arrow-up { + --fa: "\e040"; } -.fa-temperature-full::before { - content: "\f2c7"; } +.fa-temperature-up { + --fa: "\e040"; } -.fa-temperature-4::before { - content: "\f2c7"; } +.fa-medal { + --fa: "\f5a2"; } -.fa-thermometer-4::before { - content: "\f2c7"; } +.fa-bed { + --fa: "\f236"; } -.fa-thermometer-full::before { - content: "\f2c7"; } +.fa-square-h { + --fa: "\f0fd"; } -.fa-bell::before { - content: "\f0f3"; } +.fa-h-square { + --fa: "\f0fd"; } -.fa-superscript::before { - content: "\f12b"; } +.fa-podcast { + --fa: "\f2ce"; } -.fa-plug-circle-xmark::before { - content: "\e560"; } +.fa-temperature-full { + --fa: "\f2c7"; } -.fa-star-of-life::before { - content: "\f621"; } +.fa-temperature-4 { + --fa: "\f2c7"; } -.fa-phone-slash::before { - content: "\f3dd"; } +.fa-thermometer-4 { + --fa: "\f2c7"; } -.fa-paint-roller::before { - content: "\f5aa"; } +.fa-thermometer-full { + --fa: "\f2c7"; } -.fa-handshake-angle::before { - content: "\f4c4"; } +.fa-bell { + --fa: "\f0f3"; } -.fa-hands-helping::before { - content: "\f4c4"; } +.fa-superscript { + --fa: "\f12b"; } -.fa-location-dot::before { - content: "\f3c5"; } +.fa-plug-circle-xmark { + --fa: "\e560"; } -.fa-map-marker-alt::before { - content: "\f3c5"; } +.fa-star-of-life { + --fa: "\f621"; } -.fa-file::before { - content: "\f15b"; } +.fa-phone-slash { + --fa: "\f3dd"; } -.fa-greater-than::before { - content: "\3e"; } +.fa-paint-roller { + --fa: "\f5aa"; } -.fa-person-swimming::before { - content: "\f5c4"; } +.fa-handshake-angle { + --fa: "\f4c4"; } -.fa-swimmer::before { - content: "\f5c4"; } +.fa-hands-helping { + --fa: "\f4c4"; } -.fa-arrow-down::before { - content: "\f063"; } +.fa-location-dot { + --fa: "\f3c5"; } -.fa-droplet::before { - content: "\f043"; } +.fa-map-marker-alt { + --fa: "\f3c5"; } -.fa-tint::before { - content: "\f043"; } +.fa-file { + --fa: "\f15b"; } -.fa-eraser::before { - content: "\f12d"; } +.fa-greater-than { + --fa: "\3e"; } -.fa-earth-americas::before { - content: "\f57d"; } +.fa-person-swimming { + --fa: "\f5c4"; } -.fa-earth::before { - content: "\f57d"; } +.fa-swimmer { + --fa: "\f5c4"; } -.fa-earth-america::before { - content: "\f57d"; } +.fa-arrow-down { + --fa: "\f063"; } -.fa-globe-americas::before { - content: "\f57d"; } +.fa-droplet { + --fa: "\f043"; } -.fa-person-burst::before { - content: "\e53b"; } +.fa-tint { + --fa: "\f043"; } -.fa-dove::before { - content: "\f4ba"; } +.fa-eraser { + --fa: "\f12d"; } -.fa-battery-empty::before { - content: "\f244"; } +.fa-earth-americas { + --fa: "\f57d"; } -.fa-battery-0::before { - content: "\f244"; } +.fa-earth { + --fa: "\f57d"; } -.fa-socks::before { - content: "\f696"; } +.fa-earth-america { + --fa: "\f57d"; } -.fa-inbox::before { - content: "\f01c"; } +.fa-globe-americas { + --fa: "\f57d"; } -.fa-section::before { - content: "\e447"; } +.fa-person-burst { + --fa: "\e53b"; } -.fa-gauge-high::before { - content: "\f625"; } +.fa-dove { + --fa: "\f4ba"; } -.fa-tachometer-alt::before { - content: "\f625"; } +.fa-battery-empty { + --fa: "\f244"; } -.fa-tachometer-alt-fast::before { - content: "\f625"; } +.fa-battery-0 { + --fa: "\f244"; } -.fa-envelope-open-text::before { - content: "\f658"; } +.fa-socks { + --fa: "\f696"; } -.fa-hospital::before { - content: "\f0f8"; } +.fa-inbox { + --fa: "\f01c"; } -.fa-hospital-alt::before { - content: "\f0f8"; } +.fa-section { + --fa: "\e447"; } -.fa-hospital-wide::before { - content: "\f0f8"; } +.fa-gauge-high { + --fa: "\f625"; } -.fa-wine-bottle::before { - content: "\f72f"; } +.fa-tachometer-alt { + --fa: "\f625"; } -.fa-chess-rook::before { - content: "\f447"; } +.fa-tachometer-alt-fast { + --fa: "\f625"; } -.fa-bars-staggered::before { - content: "\f550"; } +.fa-envelope-open-text { + --fa: "\f658"; } -.fa-reorder::before { - content: "\f550"; } +.fa-hospital { + --fa: "\f0f8"; } -.fa-stream::before { - content: "\f550"; } +.fa-hospital-alt { + --fa: "\f0f8"; } -.fa-dharmachakra::before { - content: "\f655"; } +.fa-hospital-wide { + --fa: "\f0f8"; } -.fa-hotdog::before { - content: "\f80f"; } +.fa-wine-bottle { + --fa: "\f72f"; } -.fa-person-walking-with-cane::before { - content: "\f29d"; } +.fa-chess-rook { + --fa: "\f447"; } -.fa-blind::before { - content: "\f29d"; } +.fa-bars-staggered { + --fa: "\f550"; } -.fa-drum::before { - content: "\f569"; } +.fa-reorder { + --fa: "\f550"; } -.fa-ice-cream::before { - content: "\f810"; } +.fa-stream { + --fa: "\f550"; } -.fa-heart-circle-bolt::before { - content: "\e4fc"; } +.fa-dharmachakra { + --fa: "\f655"; } -.fa-fax::before { - content: "\f1ac"; } +.fa-hotdog { + --fa: "\f80f"; } -.fa-paragraph::before { - content: "\f1dd"; } +.fa-person-walking-with-cane { + --fa: "\f29d"; } -.fa-check-to-slot::before { - content: "\f772"; } +.fa-blind { + --fa: "\f29d"; } -.fa-vote-yea::before { - content: "\f772"; } +.fa-drum { + --fa: "\f569"; } -.fa-star-half::before { - content: "\f089"; } +.fa-ice-cream { + --fa: "\f810"; } -.fa-boxes-stacked::before { - content: "\f468"; } +.fa-heart-circle-bolt { + --fa: "\e4fc"; } -.fa-boxes::before { - content: "\f468"; } +.fa-fax { + --fa: "\f1ac"; } -.fa-boxes-alt::before { - content: "\f468"; } +.fa-paragraph { + --fa: "\f1dd"; } -.fa-link::before { - content: "\f0c1"; } +.fa-check-to-slot { + --fa: "\f772"; } -.fa-chain::before { - content: "\f0c1"; } +.fa-vote-yea { + --fa: "\f772"; } -.fa-ear-listen::before { - content: "\f2a2"; } +.fa-star-half { + --fa: "\f089"; } -.fa-assistive-listening-systems::before { - content: "\f2a2"; } +.fa-boxes-stacked { + --fa: "\f468"; } -.fa-tree-city::before { - content: "\e587"; } +.fa-boxes { + --fa: "\f468"; } -.fa-play::before { - content: "\f04b"; } +.fa-boxes-alt { + --fa: "\f468"; } -.fa-font::before { - content: "\f031"; } +.fa-link { + --fa: "\f0c1"; } -.fa-table-cells-row-lock::before { - content: "\e67a"; } +.fa-chain { + --fa: "\f0c1"; } -.fa-rupiah-sign::before { - content: "\e23d"; } +.fa-ear-listen { + --fa: "\f2a2"; } -.fa-magnifying-glass::before { - content: "\f002"; } +.fa-assistive-listening-systems { + --fa: "\f2a2"; } -.fa-search::before { - content: "\f002"; } +.fa-tree-city { + --fa: "\e587"; } -.fa-table-tennis-paddle-ball::before { - content: "\f45d"; } +.fa-play { + --fa: "\f04b"; } -.fa-ping-pong-paddle-ball::before { - content: "\f45d"; } +.fa-font { + --fa: "\f031"; } -.fa-table-tennis::before { - content: "\f45d"; } +.fa-table-cells-row-lock { + --fa: "\e67a"; } -.fa-person-dots-from-line::before { - content: "\f470"; } +.fa-rupiah-sign { + --fa: "\e23d"; } -.fa-diagnoses::before { - content: "\f470"; } +.fa-magnifying-glass { + --fa: "\f002"; } -.fa-trash-can-arrow-up::before { - content: "\f82a"; } +.fa-search { + --fa: "\f002"; } -.fa-trash-restore-alt::before { - content: "\f82a"; } +.fa-table-tennis-paddle-ball { + --fa: "\f45d"; } -.fa-naira-sign::before { - content: "\e1f6"; } +.fa-ping-pong-paddle-ball { + --fa: "\f45d"; } -.fa-cart-arrow-down::before { - content: "\f218"; } +.fa-table-tennis { + --fa: "\f45d"; } -.fa-walkie-talkie::before { - content: "\f8ef"; } +.fa-person-dots-from-line { + --fa: "\f470"; } -.fa-file-pen::before { - content: "\f31c"; } +.fa-diagnoses { + --fa: "\f470"; } -.fa-file-edit::before { - content: "\f31c"; } +.fa-trash-can-arrow-up { + --fa: "\f82a"; } -.fa-receipt::before { - content: "\f543"; } +.fa-trash-restore-alt { + --fa: "\f82a"; } -.fa-square-pen::before { - content: "\f14b"; } +.fa-naira-sign { + --fa: "\e1f6"; } -.fa-pen-square::before { - content: "\f14b"; } +.fa-cart-arrow-down { + --fa: "\f218"; } -.fa-pencil-square::before { - content: "\f14b"; } +.fa-walkie-talkie { + --fa: "\f8ef"; } -.fa-suitcase-rolling::before { - content: "\f5c1"; } +.fa-file-pen { + --fa: "\f31c"; } -.fa-person-circle-exclamation::before { - content: "\e53f"; } +.fa-file-edit { + --fa: "\f31c"; } -.fa-chevron-down::before { - content: "\f078"; } +.fa-receipt { + --fa: "\f543"; } -.fa-battery-full::before { - content: "\f240"; } +.fa-square-pen { + --fa: "\f14b"; } -.fa-battery::before { - content: "\f240"; } +.fa-pen-square { + --fa: "\f14b"; } -.fa-battery-5::before { - content: "\f240"; } +.fa-pencil-square { + --fa: "\f14b"; } -.fa-skull-crossbones::before { - content: "\f714"; } +.fa-suitcase-rolling { + --fa: "\f5c1"; } -.fa-code-compare::before { - content: "\e13a"; } +.fa-person-circle-exclamation { + --fa: "\e53f"; } -.fa-list-ul::before { - content: "\f0ca"; } +.fa-chevron-down { + --fa: "\f078"; } -.fa-list-dots::before { - content: "\f0ca"; } +.fa-battery-full { + --fa: "\f240"; } -.fa-school-lock::before { - content: "\e56f"; } +.fa-battery { + --fa: "\f240"; } -.fa-tower-cell::before { - content: "\e585"; } +.fa-battery-5 { + --fa: "\f240"; } -.fa-down-long::before { - content: "\f309"; } +.fa-skull-crossbones { + --fa: "\f714"; } -.fa-long-arrow-alt-down::before { - content: "\f309"; } +.fa-code-compare { + --fa: "\e13a"; } -.fa-ranking-star::before { - content: "\e561"; } +.fa-list-ul { + --fa: "\f0ca"; } -.fa-chess-king::before { - content: "\f43f"; } +.fa-list-dots { + --fa: "\f0ca"; } -.fa-person-harassing::before { - content: "\e549"; } +.fa-school-lock { + --fa: "\e56f"; } -.fa-brazilian-real-sign::before { - content: "\e46c"; } +.fa-tower-cell { + --fa: "\e585"; } -.fa-landmark-dome::before { - content: "\f752"; } +.fa-down-long { + --fa: "\f309"; } -.fa-landmark-alt::before { - content: "\f752"; } +.fa-long-arrow-alt-down { + --fa: "\f309"; } -.fa-arrow-up::before { - content: "\f062"; } +.fa-ranking-star { + --fa: "\e561"; } -.fa-tv::before { - content: "\f26c"; } +.fa-chess-king { + --fa: "\f43f"; } -.fa-television::before { - content: "\f26c"; } +.fa-person-harassing { + --fa: "\e549"; } -.fa-tv-alt::before { - content: "\f26c"; } +.fa-brazilian-real-sign { + --fa: "\e46c"; } -.fa-shrimp::before { - content: "\e448"; } +.fa-landmark-dome { + --fa: "\f752"; } -.fa-list-check::before { - content: "\f0ae"; } +.fa-landmark-alt { + --fa: "\f752"; } -.fa-tasks::before { - content: "\f0ae"; } +.fa-arrow-up { + --fa: "\f062"; } -.fa-jug-detergent::before { - content: "\e519"; } +.fa-tv { + --fa: "\f26c"; } -.fa-circle-user::before { - content: "\f2bd"; } +.fa-television { + --fa: "\f26c"; } -.fa-user-circle::before { - content: "\f2bd"; } +.fa-tv-alt { + --fa: "\f26c"; } -.fa-user-shield::before { - content: "\f505"; } +.fa-shrimp { + --fa: "\e448"; } -.fa-wind::before { - content: "\f72e"; } +.fa-list-check { + --fa: "\f0ae"; } -.fa-car-burst::before { - content: "\f5e1"; } +.fa-tasks { + --fa: "\f0ae"; } -.fa-car-crash::before { - content: "\f5e1"; } +.fa-jug-detergent { + --fa: "\e519"; } -.fa-y::before { - content: "\59"; } +.fa-circle-user { + --fa: "\f2bd"; } -.fa-person-snowboarding::before { - content: "\f7ce"; } +.fa-user-circle { + --fa: "\f2bd"; } -.fa-snowboarding::before { - content: "\f7ce"; } +.fa-user-shield { + --fa: "\f505"; } -.fa-truck-fast::before { - content: "\f48b"; } +.fa-wind { + --fa: "\f72e"; } -.fa-shipping-fast::before { - content: "\f48b"; } +.fa-car-burst { + --fa: "\f5e1"; } -.fa-fish::before { - content: "\f578"; } +.fa-car-crash { + --fa: "\f5e1"; } -.fa-user-graduate::before { - content: "\f501"; } +.fa-y { + --fa: "\59"; } -.fa-circle-half-stroke::before { - content: "\f042"; } +.fa-person-snowboarding { + --fa: "\f7ce"; } -.fa-adjust::before { - content: "\f042"; } +.fa-snowboarding { + --fa: "\f7ce"; } -.fa-clapperboard::before { - content: "\e131"; } +.fa-truck-fast { + --fa: "\f48b"; } -.fa-circle-radiation::before { - content: "\f7ba"; } +.fa-shipping-fast { + --fa: "\f48b"; } -.fa-radiation-alt::before { - content: "\f7ba"; } +.fa-fish { + --fa: "\f578"; } -.fa-baseball::before { - content: "\f433"; } +.fa-user-graduate { + --fa: "\f501"; } -.fa-baseball-ball::before { - content: "\f433"; } +.fa-circle-half-stroke { + --fa: "\f042"; } -.fa-jet-fighter-up::before { - content: "\e518"; } +.fa-adjust { + --fa: "\f042"; } -.fa-diagram-project::before { - content: "\f542"; } +.fa-clapperboard { + --fa: "\e131"; } -.fa-project-diagram::before { - content: "\f542"; } +.fa-circle-radiation { + --fa: "\f7ba"; } -.fa-copy::before { - content: "\f0c5"; } +.fa-radiation-alt { + --fa: "\f7ba"; } -.fa-volume-xmark::before { - content: "\f6a9"; } +.fa-baseball { + --fa: "\f433"; } -.fa-volume-mute::before { - content: "\f6a9"; } +.fa-baseball-ball { + --fa: "\f433"; } -.fa-volume-times::before { - content: "\f6a9"; } +.fa-jet-fighter-up { + --fa: "\e518"; } -.fa-hand-sparkles::before { - content: "\e05d"; } +.fa-diagram-project { + --fa: "\f542"; } -.fa-grip::before { - content: "\f58d"; } +.fa-project-diagram { + --fa: "\f542"; } -.fa-grip-horizontal::before { - content: "\f58d"; } +.fa-copy { + --fa: "\f0c5"; } -.fa-share-from-square::before { - content: "\f14d"; } +.fa-volume-xmark { + --fa: "\f6a9"; } -.fa-share-square::before { - content: "\f14d"; } +.fa-volume-mute { + --fa: "\f6a9"; } -.fa-child-combatant::before { - content: "\e4e0"; } +.fa-volume-times { + --fa: "\f6a9"; } -.fa-child-rifle::before { - content: "\e4e0"; } +.fa-hand-sparkles { + --fa: "\e05d"; } -.fa-gun::before { - content: "\e19b"; } +.fa-grip { + --fa: "\f58d"; } -.fa-square-phone::before { - content: "\f098"; } +.fa-grip-horizontal { + --fa: "\f58d"; } -.fa-phone-square::before { - content: "\f098"; } +.fa-share-from-square { + --fa: "\f14d"; } -.fa-plus::before { - content: "\2b"; } +.fa-share-square { + --fa: "\f14d"; } -.fa-add::before { - content: "\2b"; } +.fa-child-combatant { + --fa: "\e4e0"; } -.fa-expand::before { - content: "\f065"; } +.fa-child-rifle { + --fa: "\e4e0"; } -.fa-computer::before { - content: "\e4e5"; } +.fa-gun { + --fa: "\e19b"; } -.fa-xmark::before { - content: "\f00d"; } +.fa-square-phone { + --fa: "\f098"; } -.fa-close::before { - content: "\f00d"; } +.fa-phone-square { + --fa: "\f098"; } -.fa-multiply::before { - content: "\f00d"; } +.fa-plus { + --fa: "\2b"; } -.fa-remove::before { - content: "\f00d"; } +.fa-add { + --fa: "\2b"; } -.fa-times::before { - content: "\f00d"; } +.fa-expand { + --fa: "\f065"; } -.fa-arrows-up-down-left-right::before { - content: "\f047"; } +.fa-computer { + --fa: "\e4e5"; } -.fa-arrows::before { - content: "\f047"; } +.fa-xmark { + --fa: "\f00d"; } -.fa-chalkboard-user::before { - content: "\f51c"; } +.fa-close { + --fa: "\f00d"; } -.fa-chalkboard-teacher::before { - content: "\f51c"; } +.fa-multiply { + --fa: "\f00d"; } -.fa-peso-sign::before { - content: "\e222"; } +.fa-remove { + --fa: "\f00d"; } -.fa-building-shield::before { - content: "\e4d8"; } +.fa-times { + --fa: "\f00d"; } -.fa-baby::before { - content: "\f77c"; } +.fa-arrows-up-down-left-right { + --fa: "\f047"; } -.fa-users-line::before { - content: "\e592"; } +.fa-arrows { + --fa: "\f047"; } -.fa-quote-left::before { - content: "\f10d"; } +.fa-chalkboard-user { + --fa: "\f51c"; } -.fa-quote-left-alt::before { - content: "\f10d"; } +.fa-chalkboard-teacher { + --fa: "\f51c"; } -.fa-tractor::before { - content: "\f722"; } +.fa-peso-sign { + --fa: "\e222"; } -.fa-trash-arrow-up::before { - content: "\f829"; } +.fa-building-shield { + --fa: "\e4d8"; } -.fa-trash-restore::before { - content: "\f829"; } +.fa-baby { + --fa: "\f77c"; } -.fa-arrow-down-up-lock::before { - content: "\e4b0"; } +.fa-users-line { + --fa: "\e592"; } -.fa-lines-leaning::before { - content: "\e51e"; } +.fa-quote-left { + --fa: "\f10d"; } -.fa-ruler-combined::before { - content: "\f546"; } +.fa-quote-left-alt { + --fa: "\f10d"; } -.fa-copyright::before { - content: "\f1f9"; } +.fa-tractor { + --fa: "\f722"; } -.fa-equals::before { - content: "\3d"; } +.fa-trash-arrow-up { + --fa: "\f829"; } -.fa-blender::before { - content: "\f517"; } +.fa-trash-restore { + --fa: "\f829"; } -.fa-teeth::before { - content: "\f62e"; } +.fa-arrow-down-up-lock { + --fa: "\e4b0"; } -.fa-shekel-sign::before { - content: "\f20b"; } +.fa-lines-leaning { + --fa: "\e51e"; } -.fa-ils::before { - content: "\f20b"; } +.fa-ruler-combined { + --fa: "\f546"; } -.fa-shekel::before { - content: "\f20b"; } +.fa-copyright { + --fa: "\f1f9"; } -.fa-sheqel::before { - content: "\f20b"; } +.fa-equals { + --fa: "\3d"; } -.fa-sheqel-sign::before { - content: "\f20b"; } +.fa-blender { + --fa: "\f517"; } -.fa-map::before { - content: "\f279"; } +.fa-teeth { + --fa: "\f62e"; } -.fa-rocket::before { - content: "\f135"; } +.fa-shekel-sign { + --fa: "\f20b"; } -.fa-photo-film::before { - content: "\f87c"; } +.fa-ils { + --fa: "\f20b"; } -.fa-photo-video::before { - content: "\f87c"; } +.fa-shekel { + --fa: "\f20b"; } -.fa-folder-minus::before { - content: "\f65d"; } +.fa-sheqel { + --fa: "\f20b"; } -.fa-store::before { - content: "\f54e"; } +.fa-sheqel-sign { + --fa: "\f20b"; } -.fa-arrow-trend-up::before { - content: "\e098"; } +.fa-map { + --fa: "\f279"; } -.fa-plug-circle-minus::before { - content: "\e55e"; } +.fa-rocket { + --fa: "\f135"; } -.fa-sign-hanging::before { - content: "\f4d9"; } +.fa-photo-film { + --fa: "\f87c"; } -.fa-sign::before { - content: "\f4d9"; } +.fa-photo-video { + --fa: "\f87c"; } -.fa-bezier-curve::before { - content: "\f55b"; } +.fa-folder-minus { + --fa: "\f65d"; } -.fa-bell-slash::before { - content: "\f1f6"; } +.fa-hexagon-nodes-bolt { + --fa: "\e69a"; } -.fa-tablet::before { - content: "\f3fb"; } +.fa-store { + --fa: "\f54e"; } -.fa-tablet-android::before { - content: "\f3fb"; } +.fa-arrow-trend-up { + --fa: "\e098"; } -.fa-school-flag::before { - content: "\e56e"; } +.fa-plug-circle-minus { + --fa: "\e55e"; } -.fa-fill::before { - content: "\f575"; } +.fa-sign-hanging { + --fa: "\f4d9"; } -.fa-angle-up::before { - content: "\f106"; } +.fa-sign { + --fa: "\f4d9"; } -.fa-drumstick-bite::before { - content: "\f6d7"; } +.fa-bezier-curve { + --fa: "\f55b"; } -.fa-holly-berry::before { - content: "\f7aa"; } +.fa-bell-slash { + --fa: "\f1f6"; } -.fa-chevron-left::before { - content: "\f053"; } +.fa-tablet { + --fa: "\f3fb"; } -.fa-bacteria::before { - content: "\e059"; } +.fa-tablet-android { + --fa: "\f3fb"; } -.fa-hand-lizard::before { - content: "\f258"; } +.fa-school-flag { + --fa: "\e56e"; } -.fa-notdef::before { - content: "\e1fe"; } +.fa-fill { + --fa: "\f575"; } -.fa-disease::before { - content: "\f7fa"; } +.fa-angle-up { + --fa: "\f106"; } -.fa-briefcase-medical::before { - content: "\f469"; } +.fa-drumstick-bite { + --fa: "\f6d7"; } -.fa-genderless::before { - content: "\f22d"; } +.fa-holly-berry { + --fa: "\f7aa"; } -.fa-chevron-right::before { - content: "\f054"; } +.fa-chevron-left { + --fa: "\f053"; } -.fa-retweet::before { - content: "\f079"; } +.fa-bacteria { + --fa: "\e059"; } -.fa-car-rear::before { - content: "\f5de"; } +.fa-hand-lizard { + --fa: "\f258"; } -.fa-car-alt::before { - content: "\f5de"; } +.fa-notdef { + --fa: "\e1fe"; } -.fa-pump-soap::before { - content: "\e06b"; } +.fa-disease { + --fa: "\f7fa"; } -.fa-video-slash::before { - content: "\f4e2"; } +.fa-briefcase-medical { + --fa: "\f469"; } -.fa-battery-quarter::before { - content: "\f243"; } +.fa-genderless { + --fa: "\f22d"; } -.fa-battery-2::before { - content: "\f243"; } +.fa-chevron-right { + --fa: "\f054"; } -.fa-radio::before { - content: "\f8d7"; } +.fa-retweet { + --fa: "\f079"; } -.fa-baby-carriage::before { - content: "\f77d"; } +.fa-car-rear { + --fa: "\f5de"; } -.fa-carriage-baby::before { - content: "\f77d"; } +.fa-car-alt { + --fa: "\f5de"; } -.fa-traffic-light::before { - content: "\f637"; } +.fa-pump-soap { + --fa: "\e06b"; } -.fa-thermometer::before { - content: "\f491"; } +.fa-video-slash { + --fa: "\f4e2"; } -.fa-vr-cardboard::before { - content: "\f729"; } +.fa-battery-quarter { + --fa: "\f243"; } -.fa-hand-middle-finger::before { - content: "\f806"; } +.fa-battery-2 { + --fa: "\f243"; } -.fa-percent::before { - content: "\25"; } +.fa-radio { + --fa: "\f8d7"; } -.fa-percentage::before { - content: "\25"; } +.fa-baby-carriage { + --fa: "\f77d"; } -.fa-truck-moving::before { - content: "\f4df"; } +.fa-carriage-baby { + --fa: "\f77d"; } -.fa-glass-water-droplet::before { - content: "\e4f5"; } +.fa-traffic-light { + --fa: "\f637"; } -.fa-display::before { - content: "\e163"; } +.fa-thermometer { + --fa: "\f491"; } -.fa-face-smile::before { - content: "\f118"; } +.fa-vr-cardboard { + --fa: "\f729"; } -.fa-smile::before { - content: "\f118"; } +.fa-hand-middle-finger { + --fa: "\f806"; } -.fa-thumbtack::before { - content: "\f08d"; } +.fa-percent { + --fa: "\25"; } -.fa-thumb-tack::before { - content: "\f08d"; } +.fa-percentage { + --fa: "\25"; } -.fa-trophy::before { - content: "\f091"; } +.fa-truck-moving { + --fa: "\f4df"; } -.fa-person-praying::before { - content: "\f683"; } +.fa-glass-water-droplet { + --fa: "\e4f5"; } -.fa-pray::before { - content: "\f683"; } +.fa-display { + --fa: "\e163"; } -.fa-hammer::before { - content: "\f6e3"; } +.fa-face-smile { + --fa: "\f118"; } -.fa-hand-peace::before { - content: "\f25b"; } +.fa-smile { + --fa: "\f118"; } -.fa-rotate::before { - content: "\f2f1"; } +.fa-thumbtack { + --fa: "\f08d"; } -.fa-sync-alt::before { - content: "\f2f1"; } +.fa-thumb-tack { + --fa: "\f08d"; } -.fa-spinner::before { - content: "\f110"; } +.fa-trophy { + --fa: "\f091"; } -.fa-robot::before { - content: "\f544"; } +.fa-person-praying { + --fa: "\f683"; } -.fa-peace::before { - content: "\f67c"; } +.fa-pray { + --fa: "\f683"; } -.fa-gears::before { - content: "\f085"; } +.fa-hammer { + --fa: "\f6e3"; } -.fa-cogs::before { - content: "\f085"; } +.fa-hand-peace { + --fa: "\f25b"; } -.fa-warehouse::before { - content: "\f494"; } +.fa-rotate { + --fa: "\f2f1"; } -.fa-arrow-up-right-dots::before { - content: "\e4b7"; } +.fa-sync-alt { + --fa: "\f2f1"; } -.fa-splotch::before { - content: "\f5bc"; } +.fa-spinner { + --fa: "\f110"; } -.fa-face-grin-hearts::before { - content: "\f584"; } +.fa-robot { + --fa: "\f544"; } -.fa-grin-hearts::before { - content: "\f584"; } +.fa-peace { + --fa: "\f67c"; } -.fa-dice-four::before { - content: "\f524"; } +.fa-gears { + --fa: "\f085"; } -.fa-sim-card::before { - content: "\f7c4"; } +.fa-cogs { + --fa: "\f085"; } -.fa-transgender::before { - content: "\f225"; } +.fa-warehouse { + --fa: "\f494"; } -.fa-transgender-alt::before { - content: "\f225"; } +.fa-arrow-up-right-dots { + --fa: "\e4b7"; } -.fa-mercury::before { - content: "\f223"; } +.fa-splotch { + --fa: "\f5bc"; } -.fa-arrow-turn-down::before { - content: "\f149"; } +.fa-face-grin-hearts { + --fa: "\f584"; } -.fa-level-down::before { - content: "\f149"; } +.fa-grin-hearts { + --fa: "\f584"; } -.fa-person-falling-burst::before { - content: "\e547"; } +.fa-dice-four { + --fa: "\f524"; } -.fa-award::before { - content: "\f559"; } +.fa-sim-card { + --fa: "\f7c4"; } -.fa-ticket-simple::before { - content: "\f3ff"; } +.fa-transgender { + --fa: "\f225"; } -.fa-ticket-alt::before { - content: "\f3ff"; } +.fa-transgender-alt { + --fa: "\f225"; } -.fa-building::before { - content: "\f1ad"; } +.fa-mercury { + --fa: "\f223"; } -.fa-angles-left::before { - content: "\f100"; } +.fa-arrow-turn-down { + --fa: "\f149"; } -.fa-angle-double-left::before { - content: "\f100"; } +.fa-level-down { + --fa: "\f149"; } -.fa-qrcode::before { - content: "\f029"; } +.fa-person-falling-burst { + --fa: "\e547"; } -.fa-clock-rotate-left::before { - content: "\f1da"; } +.fa-award { + --fa: "\f559"; } -.fa-history::before { - content: "\f1da"; } +.fa-ticket-simple { + --fa: "\f3ff"; } -.fa-face-grin-beam-sweat::before { - content: "\f583"; } +.fa-ticket-alt { + --fa: "\f3ff"; } -.fa-grin-beam-sweat::before { - content: "\f583"; } +.fa-building { + --fa: "\f1ad"; } -.fa-file-export::before { - content: "\f56e"; } +.fa-angles-left { + --fa: "\f100"; } -.fa-arrow-right-from-file::before { - content: "\f56e"; } +.fa-angle-double-left { + --fa: "\f100"; } -.fa-shield::before { - content: "\f132"; } +.fa-qrcode { + --fa: "\f029"; } -.fa-shield-blank::before { - content: "\f132"; } +.fa-clock-rotate-left { + --fa: "\f1da"; } -.fa-arrow-up-short-wide::before { - content: "\f885"; } +.fa-history { + --fa: "\f1da"; } -.fa-sort-amount-up-alt::before { - content: "\f885"; } +.fa-face-grin-beam-sweat { + --fa: "\f583"; } -.fa-house-medical::before { - content: "\e3b2"; } +.fa-grin-beam-sweat { + --fa: "\f583"; } -.fa-golf-ball-tee::before { - content: "\f450"; } +.fa-file-export { + --fa: "\f56e"; } -.fa-golf-ball::before { - content: "\f450"; } +.fa-arrow-right-from-file { + --fa: "\f56e"; } -.fa-circle-chevron-left::before { - content: "\f137"; } +.fa-shield { + --fa: "\f132"; } -.fa-chevron-circle-left::before { - content: "\f137"; } +.fa-shield-blank { + --fa: "\f132"; } -.fa-house-chimney-window::before { - content: "\e00d"; } +.fa-arrow-up-short-wide { + --fa: "\f885"; } -.fa-pen-nib::before { - content: "\f5ad"; } +.fa-sort-amount-up-alt { + --fa: "\f885"; } -.fa-tent-arrow-turn-left::before { - content: "\e580"; } +.fa-comment-nodes { + --fa: "\e696"; } -.fa-tents::before { - content: "\e582"; } +.fa-house-medical { + --fa: "\e3b2"; } -.fa-wand-magic::before { - content: "\f0d0"; } +.fa-golf-ball-tee { + --fa: "\f450"; } -.fa-magic::before { - content: "\f0d0"; } +.fa-golf-ball { + --fa: "\f450"; } -.fa-dog::before { - content: "\f6d3"; } +.fa-circle-chevron-left { + --fa: "\f137"; } -.fa-carrot::before { - content: "\f787"; } +.fa-chevron-circle-left { + --fa: "\f137"; } -.fa-moon::before { - content: "\f186"; } +.fa-house-chimney-window { + --fa: "\e00d"; } -.fa-wine-glass-empty::before { - content: "\f5ce"; } +.fa-pen-nib { + --fa: "\f5ad"; } -.fa-wine-glass-alt::before { - content: "\f5ce"; } +.fa-tent-arrow-turn-left { + --fa: "\e580"; } -.fa-cheese::before { - content: "\f7ef"; } +.fa-tents { + --fa: "\e582"; } -.fa-yin-yang::before { - content: "\f6ad"; } +.fa-wand-magic { + --fa: "\f0d0"; } -.fa-music::before { - content: "\f001"; } +.fa-magic { + --fa: "\f0d0"; } -.fa-code-commit::before { - content: "\f386"; } +.fa-dog { + --fa: "\f6d3"; } -.fa-temperature-low::before { - content: "\f76b"; } +.fa-carrot { + --fa: "\f787"; } -.fa-person-biking::before { - content: "\f84a"; } +.fa-moon { + --fa: "\f186"; } -.fa-biking::before { - content: "\f84a"; } +.fa-wine-glass-empty { + --fa: "\f5ce"; } -.fa-broom::before { - content: "\f51a"; } +.fa-wine-glass-alt { + --fa: "\f5ce"; } -.fa-shield-heart::before { - content: "\e574"; } +.fa-cheese { + --fa: "\f7ef"; } -.fa-gopuram::before { - content: "\f664"; } +.fa-yin-yang { + --fa: "\f6ad"; } -.fa-earth-oceania::before { - content: "\e47b"; } +.fa-music { + --fa: "\f001"; } -.fa-globe-oceania::before { - content: "\e47b"; } +.fa-code-commit { + --fa: "\f386"; } -.fa-square-xmark::before { - content: "\f2d3"; } +.fa-temperature-low { + --fa: "\f76b"; } -.fa-times-square::before { - content: "\f2d3"; } +.fa-person-biking { + --fa: "\f84a"; } -.fa-xmark-square::before { - content: "\f2d3"; } +.fa-biking { + --fa: "\f84a"; } -.fa-hashtag::before { - content: "\23"; } +.fa-broom { + --fa: "\f51a"; } -.fa-up-right-and-down-left-from-center::before { - content: "\f424"; } +.fa-shield-heart { + --fa: "\e574"; } -.fa-expand-alt::before { - content: "\f424"; } +.fa-gopuram { + --fa: "\f664"; } -.fa-oil-can::before { - content: "\f613"; } +.fa-earth-oceania { + --fa: "\e47b"; } -.fa-t::before { - content: "\54"; } +.fa-globe-oceania { + --fa: "\e47b"; } -.fa-hippo::before { - content: "\f6ed"; } +.fa-square-xmark { + --fa: "\f2d3"; } -.fa-chart-column::before { - content: "\e0e3"; } +.fa-times-square { + --fa: "\f2d3"; } -.fa-infinity::before { - content: "\f534"; } +.fa-xmark-square { + --fa: "\f2d3"; } -.fa-vial-circle-check::before { - content: "\e596"; } +.fa-hashtag { + --fa: "\23"; } -.fa-person-arrow-down-to-line::before { - content: "\e538"; } +.fa-up-right-and-down-left-from-center { + --fa: "\f424"; } -.fa-voicemail::before { - content: "\f897"; } +.fa-expand-alt { + --fa: "\f424"; } -.fa-fan::before { - content: "\f863"; } +.fa-oil-can { + --fa: "\f613"; } -.fa-person-walking-luggage::before { - content: "\e554"; } +.fa-t { + --fa: "\54"; } -.fa-up-down::before { - content: "\f338"; } +.fa-hippo { + --fa: "\f6ed"; } -.fa-arrows-alt-v::before { - content: "\f338"; } +.fa-chart-column { + --fa: "\e0e3"; } -.fa-cloud-moon-rain::before { - content: "\f73c"; } +.fa-infinity { + --fa: "\f534"; } -.fa-calendar::before { - content: "\f133"; } +.fa-vial-circle-check { + --fa: "\e596"; } -.fa-trailer::before { - content: "\e041"; } +.fa-person-arrow-down-to-line { + --fa: "\e538"; } -.fa-bahai::before { - content: "\f666"; } +.fa-voicemail { + --fa: "\f897"; } -.fa-haykal::before { - content: "\f666"; } +.fa-fan { + --fa: "\f863"; } -.fa-sd-card::before { - content: "\f7c2"; } +.fa-person-walking-luggage { + --fa: "\e554"; } -.fa-dragon::before { - content: "\f6d5"; } +.fa-up-down { + --fa: "\f338"; } -.fa-shoe-prints::before { - content: "\f54b"; } +.fa-arrows-alt-v { + --fa: "\f338"; } -.fa-circle-plus::before { - content: "\f055"; } +.fa-cloud-moon-rain { + --fa: "\f73c"; } -.fa-plus-circle::before { - content: "\f055"; } +.fa-calendar { + --fa: "\f133"; } -.fa-face-grin-tongue-wink::before { - content: "\f58b"; } +.fa-trailer { + --fa: "\e041"; } -.fa-grin-tongue-wink::before { - content: "\f58b"; } +.fa-bahai { + --fa: "\f666"; } -.fa-hand-holding::before { - content: "\f4bd"; } +.fa-haykal { + --fa: "\f666"; } -.fa-plug-circle-exclamation::before { - content: "\e55d"; } +.fa-sd-card { + --fa: "\f7c2"; } -.fa-link-slash::before { - content: "\f127"; } +.fa-dragon { + --fa: "\f6d5"; } -.fa-chain-broken::before { - content: "\f127"; } +.fa-shoe-prints { + --fa: "\f54b"; } -.fa-chain-slash::before { - content: "\f127"; } +.fa-circle-plus { + --fa: "\f055"; } -.fa-unlink::before { - content: "\f127"; } +.fa-plus-circle { + --fa: "\f055"; } -.fa-clone::before { - content: "\f24d"; } +.fa-face-grin-tongue-wink { + --fa: "\f58b"; } -.fa-person-walking-arrow-loop-left::before { - content: "\e551"; } +.fa-grin-tongue-wink { + --fa: "\f58b"; } -.fa-arrow-up-z-a::before { - content: "\f882"; } +.fa-hand-holding { + --fa: "\f4bd"; } -.fa-sort-alpha-up-alt::before { - content: "\f882"; } +.fa-plug-circle-exclamation { + --fa: "\e55d"; } -.fa-fire-flame-curved::before { - content: "\f7e4"; } +.fa-link-slash { + --fa: "\f127"; } -.fa-fire-alt::before { - content: "\f7e4"; } +.fa-chain-broken { + --fa: "\f127"; } -.fa-tornado::before { - content: "\f76f"; } +.fa-chain-slash { + --fa: "\f127"; } -.fa-file-circle-plus::before { - content: "\e494"; } +.fa-unlink { + --fa: "\f127"; } -.fa-book-quran::before { - content: "\f687"; } +.fa-clone { + --fa: "\f24d"; } -.fa-quran::before { - content: "\f687"; } +.fa-person-walking-arrow-loop-left { + --fa: "\e551"; } -.fa-anchor::before { - content: "\f13d"; } +.fa-arrow-up-z-a { + --fa: "\f882"; } -.fa-border-all::before { - content: "\f84c"; } +.fa-sort-alpha-up-alt { + --fa: "\f882"; } -.fa-face-angry::before { - content: "\f556"; } +.fa-fire-flame-curved { + --fa: "\f7e4"; } -.fa-angry::before { - content: "\f556"; } +.fa-fire-alt { + --fa: "\f7e4"; } -.fa-cookie-bite::before { - content: "\f564"; } +.fa-tornado { + --fa: "\f76f"; } -.fa-arrow-trend-down::before { - content: "\e097"; } +.fa-file-circle-plus { + --fa: "\e494"; } -.fa-rss::before { - content: "\f09e"; } +.fa-book-quran { + --fa: "\f687"; } -.fa-feed::before { - content: "\f09e"; } +.fa-quran { + --fa: "\f687"; } -.fa-draw-polygon::before { - content: "\f5ee"; } +.fa-anchor { + --fa: "\f13d"; } -.fa-scale-balanced::before { - content: "\f24e"; } +.fa-border-all { + --fa: "\f84c"; } -.fa-balance-scale::before { - content: "\f24e"; } +.fa-face-angry { + --fa: "\f556"; } -.fa-gauge-simple-high::before { - content: "\f62a"; } +.fa-angry { + --fa: "\f556"; } -.fa-tachometer::before { - content: "\f62a"; } +.fa-cookie-bite { + --fa: "\f564"; } -.fa-tachometer-fast::before { - content: "\f62a"; } +.fa-arrow-trend-down { + --fa: "\e097"; } -.fa-shower::before { - content: "\f2cc"; } +.fa-rss { + --fa: "\f09e"; } -.fa-desktop::before { - content: "\f390"; } +.fa-feed { + --fa: "\f09e"; } -.fa-desktop-alt::before { - content: "\f390"; } +.fa-draw-polygon { + --fa: "\f5ee"; } -.fa-m::before { - content: "\4d"; } +.fa-scale-balanced { + --fa: "\f24e"; } -.fa-table-list::before { - content: "\f00b"; } +.fa-balance-scale { + --fa: "\f24e"; } -.fa-th-list::before { - content: "\f00b"; } +.fa-gauge-simple-high { + --fa: "\f62a"; } -.fa-comment-sms::before { - content: "\f7cd"; } +.fa-tachometer { + --fa: "\f62a"; } -.fa-sms::before { - content: "\f7cd"; } +.fa-tachometer-fast { + --fa: "\f62a"; } -.fa-book::before { - content: "\f02d"; } +.fa-shower { + --fa: "\f2cc"; } -.fa-user-plus::before { - content: "\f234"; } +.fa-desktop { + --fa: "\f390"; } -.fa-check::before { - content: "\f00c"; } +.fa-desktop-alt { + --fa: "\f390"; } -.fa-battery-three-quarters::before { - content: "\f241"; } +.fa-m { + --fa: "\4d"; } -.fa-battery-4::before { - content: "\f241"; } +.fa-table-list { + --fa: "\f00b"; } -.fa-house-circle-check::before { - content: "\e509"; } +.fa-th-list { + --fa: "\f00b"; } -.fa-angle-left::before { - content: "\f104"; } +.fa-comment-sms { + --fa: "\f7cd"; } -.fa-diagram-successor::before { - content: "\e47a"; } +.fa-sms { + --fa: "\f7cd"; } -.fa-truck-arrow-right::before { - content: "\e58b"; } +.fa-book { + --fa: "\f02d"; } -.fa-arrows-split-up-and-left::before { - content: "\e4bc"; } +.fa-user-plus { + --fa: "\f234"; } -.fa-hand-fist::before { - content: "\f6de"; } +.fa-check { + --fa: "\f00c"; } -.fa-fist-raised::before { - content: "\f6de"; } +.fa-battery-three-quarters { + --fa: "\f241"; } -.fa-cloud-moon::before { - content: "\f6c3"; } +.fa-battery-4 { + --fa: "\f241"; } -.fa-briefcase::before { - content: "\f0b1"; } +.fa-house-circle-check { + --fa: "\e509"; } -.fa-person-falling::before { - content: "\e546"; } +.fa-angle-left { + --fa: "\f104"; } -.fa-image-portrait::before { - content: "\f3e0"; } +.fa-diagram-successor { + --fa: "\e47a"; } -.fa-portrait::before { - content: "\f3e0"; } +.fa-truck-arrow-right { + --fa: "\e58b"; } -.fa-user-tag::before { - content: "\f507"; } +.fa-arrows-split-up-and-left { + --fa: "\e4bc"; } -.fa-rug::before { - content: "\e569"; } +.fa-hand-fist { + --fa: "\f6de"; } -.fa-earth-europe::before { - content: "\f7a2"; } +.fa-fist-raised { + --fa: "\f6de"; } -.fa-globe-europe::before { - content: "\f7a2"; } +.fa-cloud-moon { + --fa: "\f6c3"; } -.fa-cart-flatbed-suitcase::before { - content: "\f59d"; } +.fa-briefcase { + --fa: "\f0b1"; } -.fa-luggage-cart::before { - content: "\f59d"; } +.fa-person-falling { + --fa: "\e546"; } -.fa-rectangle-xmark::before { - content: "\f410"; } +.fa-image-portrait { + --fa: "\f3e0"; } -.fa-rectangle-times::before { - content: "\f410"; } +.fa-portrait { + --fa: "\f3e0"; } -.fa-times-rectangle::before { - content: "\f410"; } +.fa-user-tag { + --fa: "\f507"; } -.fa-window-close::before { - content: "\f410"; } +.fa-rug { + --fa: "\e569"; } -.fa-baht-sign::before { - content: "\e0ac"; } +.fa-earth-europe { + --fa: "\f7a2"; } -.fa-book-open::before { - content: "\f518"; } +.fa-globe-europe { + --fa: "\f7a2"; } -.fa-book-journal-whills::before { - content: "\f66a"; } +.fa-cart-flatbed-suitcase { + --fa: "\f59d"; } -.fa-journal-whills::before { - content: "\f66a"; } +.fa-luggage-cart { + --fa: "\f59d"; } -.fa-handcuffs::before { - content: "\e4f8"; } +.fa-rectangle-xmark { + --fa: "\f410"; } -.fa-triangle-exclamation::before { - content: "\f071"; } +.fa-rectangle-times { + --fa: "\f410"; } -.fa-exclamation-triangle::before { - content: "\f071"; } +.fa-times-rectangle { + --fa: "\f410"; } -.fa-warning::before { - content: "\f071"; } +.fa-window-close { + --fa: "\f410"; } -.fa-database::before { - content: "\f1c0"; } +.fa-baht-sign { + --fa: "\e0ac"; } -.fa-share::before { - content: "\f064"; } +.fa-book-open { + --fa: "\f518"; } -.fa-mail-forward::before { - content: "\f064"; } +.fa-book-journal-whills { + --fa: "\f66a"; } -.fa-bottle-droplet::before { - content: "\e4c4"; } +.fa-journal-whills { + --fa: "\f66a"; } -.fa-mask-face::before { - content: "\e1d7"; } +.fa-handcuffs { + --fa: "\e4f8"; } -.fa-hill-rockslide::before { - content: "\e508"; } +.fa-triangle-exclamation { + --fa: "\f071"; } -.fa-right-left::before { - content: "\f362"; } +.fa-exclamation-triangle { + --fa: "\f071"; } -.fa-exchange-alt::before { - content: "\f362"; } +.fa-warning { + --fa: "\f071"; } -.fa-paper-plane::before { - content: "\f1d8"; } +.fa-database { + --fa: "\f1c0"; } -.fa-road-circle-exclamation::before { - content: "\e565"; } +.fa-share { + --fa: "\f064"; } -.fa-dungeon::before { - content: "\f6d9"; } +.fa-mail-forward { + --fa: "\f064"; } -.fa-align-right::before { - content: "\f038"; } +.fa-bottle-droplet { + --fa: "\e4c4"; } -.fa-money-bill-1-wave::before { - content: "\f53b"; } +.fa-mask-face { + --fa: "\e1d7"; } -.fa-money-bill-wave-alt::before { - content: "\f53b"; } +.fa-hill-rockslide { + --fa: "\e508"; } -.fa-life-ring::before { - content: "\f1cd"; } +.fa-right-left { + --fa: "\f362"; } -.fa-hands::before { - content: "\f2a7"; } +.fa-exchange-alt { + --fa: "\f362"; } -.fa-sign-language::before { - content: "\f2a7"; } +.fa-paper-plane { + --fa: "\f1d8"; } -.fa-signing::before { - content: "\f2a7"; } +.fa-road-circle-exclamation { + --fa: "\e565"; } -.fa-calendar-day::before { - content: "\f783"; } +.fa-dungeon { + --fa: "\f6d9"; } -.fa-water-ladder::before { - content: "\f5c5"; } +.fa-align-right { + --fa: "\f038"; } -.fa-ladder-water::before { - content: "\f5c5"; } +.fa-money-bill-1-wave { + --fa: "\f53b"; } -.fa-swimming-pool::before { - content: "\f5c5"; } +.fa-money-bill-wave-alt { + --fa: "\f53b"; } -.fa-arrows-up-down::before { - content: "\f07d"; } +.fa-life-ring { + --fa: "\f1cd"; } -.fa-arrows-v::before { - content: "\f07d"; } +.fa-hands { + --fa: "\f2a7"; } -.fa-face-grimace::before { - content: "\f57f"; } +.fa-sign-language { + --fa: "\f2a7"; } -.fa-grimace::before { - content: "\f57f"; } +.fa-signing { + --fa: "\f2a7"; } -.fa-wheelchair-move::before { - content: "\e2ce"; } +.fa-calendar-day { + --fa: "\f783"; } -.fa-wheelchair-alt::before { - content: "\e2ce"; } +.fa-water-ladder { + --fa: "\f5c5"; } -.fa-turn-down::before { - content: "\f3be"; } +.fa-ladder-water { + --fa: "\f5c5"; } -.fa-level-down-alt::before { - content: "\f3be"; } +.fa-swimming-pool { + --fa: "\f5c5"; } -.fa-person-walking-arrow-right::before { - content: "\e552"; } +.fa-arrows-up-down { + --fa: "\f07d"; } -.fa-square-envelope::before { - content: "\f199"; } +.fa-arrows-v { + --fa: "\f07d"; } -.fa-envelope-square::before { - content: "\f199"; } +.fa-face-grimace { + --fa: "\f57f"; } -.fa-dice::before { - content: "\f522"; } +.fa-grimace { + --fa: "\f57f"; } -.fa-bowling-ball::before { - content: "\f436"; } +.fa-wheelchair-move { + --fa: "\e2ce"; } -.fa-brain::before { - content: "\f5dc"; } +.fa-wheelchair-alt { + --fa: "\e2ce"; } -.fa-bandage::before { - content: "\f462"; } +.fa-turn-down { + --fa: "\f3be"; } -.fa-band-aid::before { - content: "\f462"; } +.fa-level-down-alt { + --fa: "\f3be"; } -.fa-calendar-minus::before { - content: "\f272"; } +.fa-person-walking-arrow-right { + --fa: "\e552"; } -.fa-circle-xmark::before { - content: "\f057"; } +.fa-square-envelope { + --fa: "\f199"; } -.fa-times-circle::before { - content: "\f057"; } +.fa-envelope-square { + --fa: "\f199"; } -.fa-xmark-circle::before { - content: "\f057"; } +.fa-dice { + --fa: "\f522"; } -.fa-gifts::before { - content: "\f79c"; } +.fa-bowling-ball { + --fa: "\f436"; } -.fa-hotel::before { - content: "\f594"; } +.fa-brain { + --fa: "\f5dc"; } -.fa-earth-asia::before { - content: "\f57e"; } +.fa-bandage { + --fa: "\f462"; } -.fa-globe-asia::before { - content: "\f57e"; } +.fa-band-aid { + --fa: "\f462"; } -.fa-id-card-clip::before { - content: "\f47f"; } +.fa-calendar-minus { + --fa: "\f272"; } -.fa-id-card-alt::before { - content: "\f47f"; } +.fa-circle-xmark { + --fa: "\f057"; } -.fa-magnifying-glass-plus::before { - content: "\f00e"; } +.fa-times-circle { + --fa: "\f057"; } -.fa-search-plus::before { - content: "\f00e"; } +.fa-xmark-circle { + --fa: "\f057"; } -.fa-thumbs-up::before { - content: "\f164"; } +.fa-gifts { + --fa: "\f79c"; } -.fa-user-clock::before { - content: "\f4fd"; } +.fa-hotel { + --fa: "\f594"; } -.fa-hand-dots::before { - content: "\f461"; } +.fa-earth-asia { + --fa: "\f57e"; } -.fa-allergies::before { - content: "\f461"; } +.fa-globe-asia { + --fa: "\f57e"; } -.fa-file-invoice::before { - content: "\f570"; } +.fa-id-card-clip { + --fa: "\f47f"; } -.fa-window-minimize::before { - content: "\f2d1"; } +.fa-id-card-alt { + --fa: "\f47f"; } -.fa-mug-saucer::before { - content: "\f0f4"; } +.fa-magnifying-glass-plus { + --fa: "\f00e"; } -.fa-coffee::before { - content: "\f0f4"; } +.fa-search-plus { + --fa: "\f00e"; } -.fa-brush::before { - content: "\f55d"; } +.fa-thumbs-up { + --fa: "\f164"; } -.fa-mask::before { - content: "\f6fa"; } +.fa-user-clock { + --fa: "\f4fd"; } -.fa-magnifying-glass-minus::before { - content: "\f010"; } +.fa-hand-dots { + --fa: "\f461"; } -.fa-search-minus::before { - content: "\f010"; } +.fa-allergies { + --fa: "\f461"; } -.fa-ruler-vertical::before { - content: "\f548"; } +.fa-file-invoice { + --fa: "\f570"; } -.fa-user-large::before { - content: "\f406"; } +.fa-window-minimize { + --fa: "\f2d1"; } -.fa-user-alt::before { - content: "\f406"; } +.fa-mug-saucer { + --fa: "\f0f4"; } -.fa-train-tram::before { - content: "\e5b4"; } +.fa-coffee { + --fa: "\f0f4"; } -.fa-user-nurse::before { - content: "\f82f"; } +.fa-brush { + --fa: "\f55d"; } -.fa-syringe::before { - content: "\f48e"; } +.fa-file-half-dashed { + --fa: "\e698"; } -.fa-cloud-sun::before { - content: "\f6c4"; } +.fa-mask { + --fa: "\f6fa"; } -.fa-stopwatch-20::before { - content: "\e06f"; } +.fa-magnifying-glass-minus { + --fa: "\f010"; } -.fa-square-full::before { - content: "\f45c"; } +.fa-search-minus { + --fa: "\f010"; } -.fa-magnet::before { - content: "\f076"; } +.fa-ruler-vertical { + --fa: "\f548"; } -.fa-jar::before { - content: "\e516"; } +.fa-user-large { + --fa: "\f406"; } -.fa-note-sticky::before { - content: "\f249"; } +.fa-user-alt { + --fa: "\f406"; } -.fa-sticky-note::before { - content: "\f249"; } +.fa-train-tram { + --fa: "\e5b4"; } -.fa-bug-slash::before { - content: "\e490"; } +.fa-user-nurse { + --fa: "\f82f"; } -.fa-arrow-up-from-water-pump::before { - content: "\e4b6"; } +.fa-syringe { + --fa: "\f48e"; } -.fa-bone::before { - content: "\f5d7"; } +.fa-cloud-sun { + --fa: "\f6c4"; } -.fa-user-injured::before { - content: "\f728"; } +.fa-stopwatch-20 { + --fa: "\e06f"; } -.fa-face-sad-tear::before { - content: "\f5b4"; } +.fa-square-full { + --fa: "\f45c"; } -.fa-sad-tear::before { - content: "\f5b4"; } +.fa-magnet { + --fa: "\f076"; } -.fa-plane::before { - content: "\f072"; } +.fa-jar { + --fa: "\e516"; } -.fa-tent-arrows-down::before { - content: "\e581"; } +.fa-note-sticky { + --fa: "\f249"; } -.fa-exclamation::before { - content: "\21"; } +.fa-sticky-note { + --fa: "\f249"; } -.fa-arrows-spin::before { - content: "\e4bb"; } +.fa-bug-slash { + --fa: "\e490"; } -.fa-print::before { - content: "\f02f"; } +.fa-arrow-up-from-water-pump { + --fa: "\e4b6"; } -.fa-turkish-lira-sign::before { - content: "\e2bb"; } +.fa-bone { + --fa: "\f5d7"; } -.fa-try::before { - content: "\e2bb"; } +.fa-table-cells-row-unlock { + --fa: "\e691"; } -.fa-turkish-lira::before { - content: "\e2bb"; } +.fa-user-injured { + --fa: "\f728"; } -.fa-dollar-sign::before { - content: "\24"; } +.fa-face-sad-tear { + --fa: "\f5b4"; } -.fa-dollar::before { - content: "\24"; } +.fa-sad-tear { + --fa: "\f5b4"; } -.fa-usd::before { - content: "\24"; } +.fa-plane { + --fa: "\f072"; } -.fa-x::before { - content: "\58"; } +.fa-tent-arrows-down { + --fa: "\e581"; } -.fa-magnifying-glass-dollar::before { - content: "\f688"; } +.fa-exclamation { + --fa: "\21"; } -.fa-search-dollar::before { - content: "\f688"; } +.fa-arrows-spin { + --fa: "\e4bb"; } -.fa-users-gear::before { - content: "\f509"; } +.fa-print { + --fa: "\f02f"; } -.fa-users-cog::before { - content: "\f509"; } +.fa-turkish-lira-sign { + --fa: "\e2bb"; } -.fa-person-military-pointing::before { - content: "\e54a"; } +.fa-try { + --fa: "\e2bb"; } -.fa-building-columns::before { - content: "\f19c"; } +.fa-turkish-lira { + --fa: "\e2bb"; } -.fa-bank::before { - content: "\f19c"; } +.fa-dollar-sign { + --fa: "\24"; } -.fa-institution::before { - content: "\f19c"; } +.fa-dollar { + --fa: "\24"; } -.fa-museum::before { - content: "\f19c"; } +.fa-usd { + --fa: "\24"; } -.fa-university::before { - content: "\f19c"; } +.fa-x { + --fa: "\58"; } -.fa-umbrella::before { - content: "\f0e9"; } +.fa-magnifying-glass-dollar { + --fa: "\f688"; } -.fa-trowel::before { - content: "\e589"; } +.fa-search-dollar { + --fa: "\f688"; } -.fa-d::before { - content: "\44"; } +.fa-users-gear { + --fa: "\f509"; } -.fa-stapler::before { - content: "\e5af"; } +.fa-users-cog { + --fa: "\f509"; } -.fa-masks-theater::before { - content: "\f630"; } +.fa-person-military-pointing { + --fa: "\e54a"; } -.fa-theater-masks::before { - content: "\f630"; } +.fa-building-columns { + --fa: "\f19c"; } -.fa-kip-sign::before { - content: "\e1c4"; } +.fa-bank { + --fa: "\f19c"; } -.fa-hand-point-left::before { - content: "\f0a5"; } +.fa-institution { + --fa: "\f19c"; } -.fa-handshake-simple::before { - content: "\f4c6"; } +.fa-museum { + --fa: "\f19c"; } -.fa-handshake-alt::before { - content: "\f4c6"; } +.fa-university { + --fa: "\f19c"; } -.fa-jet-fighter::before { - content: "\f0fb"; } +.fa-umbrella { + --fa: "\f0e9"; } -.fa-fighter-jet::before { - content: "\f0fb"; } +.fa-trowel { + --fa: "\e589"; } -.fa-square-share-nodes::before { - content: "\f1e1"; } +.fa-d { + --fa: "\44"; } -.fa-share-alt-square::before { - content: "\f1e1"; } +.fa-stapler { + --fa: "\e5af"; } -.fa-barcode::before { - content: "\f02a"; } +.fa-masks-theater { + --fa: "\f630"; } -.fa-plus-minus::before { - content: "\e43c"; } +.fa-theater-masks { + --fa: "\f630"; } -.fa-video::before { - content: "\f03d"; } +.fa-kip-sign { + --fa: "\e1c4"; } -.fa-video-camera::before { - content: "\f03d"; } +.fa-hand-point-left { + --fa: "\f0a5"; } -.fa-graduation-cap::before { - content: "\f19d"; } +.fa-handshake-simple { + --fa: "\f4c6"; } -.fa-mortar-board::before { - content: "\f19d"; } +.fa-handshake-alt { + --fa: "\f4c6"; } -.fa-hand-holding-medical::before { - content: "\e05c"; } +.fa-jet-fighter { + --fa: "\f0fb"; } -.fa-person-circle-check::before { - content: "\e53e"; } +.fa-fighter-jet { + --fa: "\f0fb"; } -.fa-turn-up::before { - content: "\f3bf"; } +.fa-square-share-nodes { + --fa: "\f1e1"; } -.fa-level-up-alt::before { - content: "\f3bf"; } +.fa-share-alt-square { + --fa: "\f1e1"; } + +.fa-barcode { + --fa: "\f02a"; } + +.fa-plus-minus { + --fa: "\e43c"; } + +.fa-video { + --fa: "\f03d"; } + +.fa-video-camera { + --fa: "\f03d"; } + +.fa-graduation-cap { + --fa: "\f19d"; } + +.fa-mortar-board { + --fa: "\f19d"; } + +.fa-hand-holding-medical { + --fa: "\e05c"; } + +.fa-person-circle-check { + --fa: "\e53e"; } + +.fa-turn-up { + --fa: "\f3bf"; } + +.fa-level-up-alt { + --fa: "\f3bf"; } .sr-only, .fa-sr-only { @@ -6388,1580 +6256,1595 @@ readers do not read off random characters that represent icons */ .fa-brands { font-weight: 400; } -.fa-monero:before { - content: "\f3d0"; } +.fa-monero { + --fa: "\f3d0"; } + +.fa-hooli { + --fa: "\f427"; } + +.fa-yelp { + --fa: "\f1e9"; } + +.fa-cc-visa { + --fa: "\f1f0"; } + +.fa-lastfm { + --fa: "\f202"; } + +.fa-shopware { + --fa: "\f5b5"; } -.fa-hooli:before { - content: "\f427"; } +.fa-creative-commons-nc { + --fa: "\f4e8"; } -.fa-yelp:before { - content: "\f1e9"; } +.fa-aws { + --fa: "\f375"; } -.fa-cc-visa:before { - content: "\f1f0"; } +.fa-redhat { + --fa: "\f7bc"; } -.fa-lastfm:before { - content: "\f202"; } +.fa-yoast { + --fa: "\f2b1"; } -.fa-shopware:before { - content: "\f5b5"; } +.fa-cloudflare { + --fa: "\e07d"; } -.fa-creative-commons-nc:before { - content: "\f4e8"; } +.fa-ups { + --fa: "\f7e0"; } -.fa-aws:before { - content: "\f375"; } +.fa-pixiv { + --fa: "\e640"; } -.fa-redhat:before { - content: "\f7bc"; } +.fa-wpexplorer { + --fa: "\f2de"; } -.fa-yoast:before { - content: "\f2b1"; } +.fa-dyalog { + --fa: "\f399"; } -.fa-cloudflare:before { - content: "\e07d"; } +.fa-bity { + --fa: "\f37a"; } -.fa-ups:before { - content: "\f7e0"; } +.fa-stackpath { + --fa: "\f842"; } -.fa-pixiv:before { - content: "\e640"; } +.fa-buysellads { + --fa: "\f20d"; } -.fa-wpexplorer:before { - content: "\f2de"; } +.fa-first-order { + --fa: "\f2b0"; } -.fa-dyalog:before { - content: "\f399"; } +.fa-modx { + --fa: "\f285"; } -.fa-bity:before { - content: "\f37a"; } +.fa-guilded { + --fa: "\e07e"; } -.fa-stackpath:before { - content: "\f842"; } +.fa-vnv { + --fa: "\f40b"; } -.fa-buysellads:before { - content: "\f20d"; } +.fa-square-js { + --fa: "\f3b9"; } -.fa-first-order:before { - content: "\f2b0"; } +.fa-js-square { + --fa: "\f3b9"; } -.fa-modx:before { - content: "\f285"; } +.fa-microsoft { + --fa: "\f3ca"; } -.fa-guilded:before { - content: "\e07e"; } +.fa-qq { + --fa: "\f1d6"; } -.fa-vnv:before { - content: "\f40b"; } +.fa-orcid { + --fa: "\f8d2"; } -.fa-square-js:before { - content: "\f3b9"; } +.fa-java { + --fa: "\f4e4"; } -.fa-js-square:before { - content: "\f3b9"; } +.fa-invision { + --fa: "\f7b0"; } -.fa-microsoft:before { - content: "\f3ca"; } +.fa-creative-commons-pd-alt { + --fa: "\f4ed"; } -.fa-qq:before { - content: "\f1d6"; } +.fa-centercode { + --fa: "\f380"; } -.fa-orcid:before { - content: "\f8d2"; } +.fa-glide-g { + --fa: "\f2a6"; } -.fa-java:before { - content: "\f4e4"; } +.fa-drupal { + --fa: "\f1a9"; } -.fa-invision:before { - content: "\f7b0"; } +.fa-jxl { + --fa: "\e67b"; } -.fa-creative-commons-pd-alt:before { - content: "\f4ed"; } +.fa-dart-lang { + --fa: "\e693"; } -.fa-centercode:before { - content: "\f380"; } +.fa-hire-a-helper { + --fa: "\f3b0"; } -.fa-glide-g:before { - content: "\f2a6"; } +.fa-creative-commons-by { + --fa: "\f4e7"; } -.fa-drupal:before { - content: "\f1a9"; } +.fa-unity { + --fa: "\e049"; } -.fa-jxl:before { - content: "\e67b"; } +.fa-whmcs { + --fa: "\f40d"; } -.fa-hire-a-helper:before { - content: "\f3b0"; } +.fa-rocketchat { + --fa: "\f3e8"; } -.fa-creative-commons-by:before { - content: "\f4e7"; } +.fa-vk { + --fa: "\f189"; } -.fa-unity:before { - content: "\e049"; } +.fa-untappd { + --fa: "\f405"; } -.fa-whmcs:before { - content: "\f40d"; } +.fa-mailchimp { + --fa: "\f59e"; } -.fa-rocketchat:before { - content: "\f3e8"; } +.fa-css3-alt { + --fa: "\f38b"; } -.fa-vk:before { - content: "\f189"; } +.fa-square-reddit { + --fa: "\f1a2"; } -.fa-untappd:before { - content: "\f405"; } +.fa-reddit-square { + --fa: "\f1a2"; } -.fa-mailchimp:before { - content: "\f59e"; } +.fa-vimeo-v { + --fa: "\f27d"; } -.fa-css3-alt:before { - content: "\f38b"; } +.fa-contao { + --fa: "\f26d"; } -.fa-square-reddit:before { - content: "\f1a2"; } +.fa-square-font-awesome { + --fa: "\e5ad"; } -.fa-reddit-square:before { - content: "\f1a2"; } +.fa-deskpro { + --fa: "\f38f"; } -.fa-vimeo-v:before { - content: "\f27d"; } +.fa-brave { + --fa: "\e63c"; } -.fa-contao:before { - content: "\f26d"; } +.fa-sistrix { + --fa: "\f3ee"; } -.fa-square-font-awesome:before { - content: "\e5ad"; } +.fa-square-instagram { + --fa: "\e055"; } -.fa-deskpro:before { - content: "\f38f"; } +.fa-instagram-square { + --fa: "\e055"; } -.fa-brave:before { - content: "\e63c"; } +.fa-battle-net { + --fa: "\f835"; } -.fa-sistrix:before { - content: "\f3ee"; } +.fa-the-red-yeti { + --fa: "\f69d"; } -.fa-square-instagram:before { - content: "\e055"; } +.fa-square-hacker-news { + --fa: "\f3af"; } -.fa-instagram-square:before { - content: "\e055"; } +.fa-hacker-news-square { + --fa: "\f3af"; } -.fa-battle-net:before { - content: "\f835"; } +.fa-edge { + --fa: "\f282"; } -.fa-the-red-yeti:before { - content: "\f69d"; } +.fa-threads { + --fa: "\e618"; } -.fa-square-hacker-news:before { - content: "\f3af"; } +.fa-napster { + --fa: "\f3d2"; } -.fa-hacker-news-square:before { - content: "\f3af"; } +.fa-square-snapchat { + --fa: "\f2ad"; } -.fa-edge:before { - content: "\f282"; } +.fa-snapchat-square { + --fa: "\f2ad"; } -.fa-threads:before { - content: "\e618"; } +.fa-google-plus-g { + --fa: "\f0d5"; } -.fa-napster:before { - content: "\f3d2"; } +.fa-artstation { + --fa: "\f77a"; } -.fa-square-snapchat:before { - content: "\f2ad"; } +.fa-markdown { + --fa: "\f60f"; } -.fa-snapchat-square:before { - content: "\f2ad"; } +.fa-sourcetree { + --fa: "\f7d3"; } -.fa-google-plus-g:before { - content: "\f0d5"; } +.fa-google-plus { + --fa: "\f2b3"; } -.fa-artstation:before { - content: "\f77a"; } +.fa-diaspora { + --fa: "\f791"; } -.fa-markdown:before { - content: "\f60f"; } +.fa-foursquare { + --fa: "\f180"; } -.fa-sourcetree:before { - content: "\f7d3"; } +.fa-stack-overflow { + --fa: "\f16c"; } -.fa-google-plus:before { - content: "\f2b3"; } +.fa-github-alt { + --fa: "\f113"; } -.fa-diaspora:before { - content: "\f791"; } +.fa-phoenix-squadron { + --fa: "\f511"; } -.fa-foursquare:before { - content: "\f180"; } +.fa-pagelines { + --fa: "\f18c"; } -.fa-stack-overflow:before { - content: "\f16c"; } +.fa-algolia { + --fa: "\f36c"; } -.fa-github-alt:before { - content: "\f113"; } +.fa-red-river { + --fa: "\f3e3"; } -.fa-phoenix-squadron:before { - content: "\f511"; } +.fa-creative-commons-sa { + --fa: "\f4ef"; } -.fa-pagelines:before { - content: "\f18c"; } +.fa-safari { + --fa: "\f267"; } -.fa-algolia:before { - content: "\f36c"; } +.fa-google { + --fa: "\f1a0"; } -.fa-red-river:before { - content: "\f3e3"; } +.fa-square-font-awesome-stroke { + --fa: "\f35c"; } -.fa-creative-commons-sa:before { - content: "\f4ef"; } +.fa-font-awesome-alt { + --fa: "\f35c"; } -.fa-safari:before { - content: "\f267"; } +.fa-atlassian { + --fa: "\f77b"; } -.fa-google:before { - content: "\f1a0"; } +.fa-linkedin-in { + --fa: "\f0e1"; } -.fa-square-font-awesome-stroke:before { - content: "\f35c"; } +.fa-digital-ocean { + --fa: "\f391"; } -.fa-font-awesome-alt:before { - content: "\f35c"; } +.fa-nimblr { + --fa: "\f5a8"; } -.fa-atlassian:before { - content: "\f77b"; } +.fa-chromecast { + --fa: "\f838"; } -.fa-linkedin-in:before { - content: "\f0e1"; } +.fa-evernote { + --fa: "\f839"; } -.fa-digital-ocean:before { - content: "\f391"; } +.fa-hacker-news { + --fa: "\f1d4"; } -.fa-nimblr:before { - content: "\f5a8"; } +.fa-creative-commons-sampling { + --fa: "\f4f0"; } -.fa-chromecast:before { - content: "\f838"; } +.fa-adversal { + --fa: "\f36a"; } -.fa-evernote:before { - content: "\f839"; } +.fa-creative-commons { + --fa: "\f25e"; } -.fa-hacker-news:before { - content: "\f1d4"; } +.fa-watchman-monitoring { + --fa: "\e087"; } -.fa-creative-commons-sampling:before { - content: "\f4f0"; } +.fa-fonticons { + --fa: "\f280"; } -.fa-adversal:before { - content: "\f36a"; } +.fa-weixin { + --fa: "\f1d7"; } -.fa-creative-commons:before { - content: "\f25e"; } +.fa-shirtsinbulk { + --fa: "\f214"; } -.fa-watchman-monitoring:before { - content: "\e087"; } +.fa-codepen { + --fa: "\f1cb"; } -.fa-fonticons:before { - content: "\f280"; } +.fa-git-alt { + --fa: "\f841"; } -.fa-weixin:before { - content: "\f1d7"; } +.fa-lyft { + --fa: "\f3c3"; } -.fa-shirtsinbulk:before { - content: "\f214"; } +.fa-rev { + --fa: "\f5b2"; } -.fa-codepen:before { - content: "\f1cb"; } +.fa-windows { + --fa: "\f17a"; } -.fa-git-alt:before { - content: "\f841"; } +.fa-wizards-of-the-coast { + --fa: "\f730"; } -.fa-lyft:before { - content: "\f3c3"; } +.fa-square-viadeo { + --fa: "\f2aa"; } -.fa-rev:before { - content: "\f5b2"; } +.fa-viadeo-square { + --fa: "\f2aa"; } -.fa-windows:before { - content: "\f17a"; } +.fa-meetup { + --fa: "\f2e0"; } -.fa-wizards-of-the-coast:before { - content: "\f730"; } +.fa-centos { + --fa: "\f789"; } -.fa-square-viadeo:before { - content: "\f2aa"; } +.fa-adn { + --fa: "\f170"; } -.fa-viadeo-square:before { - content: "\f2aa"; } +.fa-cloudsmith { + --fa: "\f384"; } -.fa-meetup:before { - content: "\f2e0"; } +.fa-opensuse { + --fa: "\e62b"; } -.fa-centos:before { - content: "\f789"; } +.fa-pied-piper-alt { + --fa: "\f1a8"; } -.fa-adn:before { - content: "\f170"; } +.fa-square-dribbble { + --fa: "\f397"; } -.fa-cloudsmith:before { - content: "\f384"; } +.fa-dribbble-square { + --fa: "\f397"; } -.fa-opensuse:before { - content: "\e62b"; } +.fa-codiepie { + --fa: "\f284"; } -.fa-pied-piper-alt:before { - content: "\f1a8"; } +.fa-node { + --fa: "\f419"; } -.fa-square-dribbble:before { - content: "\f397"; } +.fa-mix { + --fa: "\f3cb"; } -.fa-dribbble-square:before { - content: "\f397"; } +.fa-steam { + --fa: "\f1b6"; } -.fa-codiepie:before { - content: "\f284"; } +.fa-cc-apple-pay { + --fa: "\f416"; } -.fa-node:before { - content: "\f419"; } +.fa-scribd { + --fa: "\f28a"; } -.fa-mix:before { - content: "\f3cb"; } +.fa-debian { + --fa: "\e60b"; } -.fa-steam:before { - content: "\f1b6"; } +.fa-openid { + --fa: "\f19b"; } -.fa-cc-apple-pay:before { - content: "\f416"; } +.fa-instalod { + --fa: "\e081"; } -.fa-scribd:before { - content: "\f28a"; } +.fa-files-pinwheel { + --fa: "\e69f"; } -.fa-debian:before { - content: "\e60b"; } +.fa-expeditedssl { + --fa: "\f23e"; } -.fa-openid:before { - content: "\f19b"; } +.fa-sellcast { + --fa: "\f2da"; } -.fa-instalod:before { - content: "\e081"; } +.fa-square-twitter { + --fa: "\f081"; } -.fa-expeditedssl:before { - content: "\f23e"; } +.fa-twitter-square { + --fa: "\f081"; } -.fa-sellcast:before { - content: "\f2da"; } +.fa-r-project { + --fa: "\f4f7"; } -.fa-square-twitter:before { - content: "\f081"; } +.fa-delicious { + --fa: "\f1a5"; } -.fa-twitter-square:before { - content: "\f081"; } +.fa-freebsd { + --fa: "\f3a4"; } -.fa-r-project:before { - content: "\f4f7"; } +.fa-vuejs { + --fa: "\f41f"; } -.fa-delicious:before { - content: "\f1a5"; } +.fa-accusoft { + --fa: "\f369"; } -.fa-freebsd:before { - content: "\f3a4"; } +.fa-ioxhost { + --fa: "\f208"; } -.fa-vuejs:before { - content: "\f41f"; } +.fa-fonticons-fi { + --fa: "\f3a2"; } -.fa-accusoft:before { - content: "\f369"; } +.fa-app-store { + --fa: "\f36f"; } -.fa-ioxhost:before { - content: "\f208"; } +.fa-cc-mastercard { + --fa: "\f1f1"; } -.fa-fonticons-fi:before { - content: "\f3a2"; } +.fa-itunes-note { + --fa: "\f3b5"; } -.fa-app-store:before { - content: "\f36f"; } +.fa-golang { + --fa: "\e40f"; } -.fa-cc-mastercard:before { - content: "\f1f1"; } +.fa-kickstarter { + --fa: "\f3bb"; } -.fa-itunes-note:before { - content: "\f3b5"; } +.fa-square-kickstarter { + --fa: "\f3bb"; } -.fa-golang:before { - content: "\e40f"; } +.fa-grav { + --fa: "\f2d6"; } -.fa-kickstarter:before { - content: "\f3bb"; } +.fa-weibo { + --fa: "\f18a"; } -.fa-square-kickstarter:before { - content: "\f3bb"; } +.fa-uncharted { + --fa: "\e084"; } -.fa-grav:before { - content: "\f2d6"; } +.fa-firstdraft { + --fa: "\f3a1"; } -.fa-weibo:before { - content: "\f18a"; } +.fa-square-youtube { + --fa: "\f431"; } -.fa-uncharted:before { - content: "\e084"; } +.fa-youtube-square { + --fa: "\f431"; } -.fa-firstdraft:before { - content: "\f3a1"; } +.fa-wikipedia-w { + --fa: "\f266"; } -.fa-square-youtube:before { - content: "\f431"; } +.fa-wpressr { + --fa: "\f3e4"; } -.fa-youtube-square:before { - content: "\f431"; } +.fa-rendact { + --fa: "\f3e4"; } -.fa-wikipedia-w:before { - content: "\f266"; } +.fa-angellist { + --fa: "\f209"; } -.fa-wpressr:before { - content: "\f3e4"; } +.fa-galactic-republic { + --fa: "\f50c"; } -.fa-rendact:before { - content: "\f3e4"; } +.fa-nfc-directional { + --fa: "\e530"; } -.fa-angellist:before { - content: "\f209"; } +.fa-skype { + --fa: "\f17e"; } -.fa-galactic-republic:before { - content: "\f50c"; } +.fa-joget { + --fa: "\f3b7"; } -.fa-nfc-directional:before { - content: "\e530"; } +.fa-fedora { + --fa: "\f798"; } -.fa-skype:before { - content: "\f17e"; } +.fa-stripe-s { + --fa: "\f42a"; } -.fa-joget:before { - content: "\f3b7"; } +.fa-meta { + --fa: "\e49b"; } -.fa-fedora:before { - content: "\f798"; } +.fa-laravel { + --fa: "\f3bd"; } -.fa-stripe-s:before { - content: "\f42a"; } +.fa-hotjar { + --fa: "\f3b1"; } -.fa-meta:before { - content: "\e49b"; } +.fa-bluetooth-b { + --fa: "\f294"; } -.fa-laravel:before { - content: "\f3bd"; } +.fa-square-letterboxd { + --fa: "\e62e"; } -.fa-hotjar:before { - content: "\f3b1"; } +.fa-sticker-mule { + --fa: "\f3f7"; } -.fa-bluetooth-b:before { - content: "\f294"; } +.fa-creative-commons-zero { + --fa: "\f4f3"; } -.fa-square-letterboxd:before { - content: "\e62e"; } +.fa-hips { + --fa: "\f452"; } -.fa-sticker-mule:before { - content: "\f3f7"; } +.fa-css { + --fa: "\e6a2"; } -.fa-creative-commons-zero:before { - content: "\f4f3"; } +.fa-behance { + --fa: "\f1b4"; } -.fa-hips:before { - content: "\f452"; } +.fa-reddit { + --fa: "\f1a1"; } -.fa-behance:before { - content: "\f1b4"; } +.fa-discord { + --fa: "\f392"; } -.fa-reddit:before { - content: "\f1a1"; } +.fa-chrome { + --fa: "\f268"; } -.fa-discord:before { - content: "\f392"; } +.fa-app-store-ios { + --fa: "\f370"; } -.fa-chrome:before { - content: "\f268"; } +.fa-cc-discover { + --fa: "\f1f2"; } -.fa-app-store-ios:before { - content: "\f370"; } +.fa-wpbeginner { + --fa: "\f297"; } -.fa-cc-discover:before { - content: "\f1f2"; } +.fa-confluence { + --fa: "\f78d"; } -.fa-wpbeginner:before { - content: "\f297"; } +.fa-shoelace { + --fa: "\e60c"; } -.fa-confluence:before { - content: "\f78d"; } +.fa-mdb { + --fa: "\f8ca"; } -.fa-shoelace:before { - content: "\e60c"; } +.fa-dochub { + --fa: "\f394"; } -.fa-mdb:before { - content: "\f8ca"; } +.fa-accessible-icon { + --fa: "\f368"; } -.fa-dochub:before { - content: "\f394"; } +.fa-ebay { + --fa: "\f4f4"; } -.fa-accessible-icon:before { - content: "\f368"; } +.fa-amazon { + --fa: "\f270"; } -.fa-ebay:before { - content: "\f4f4"; } +.fa-unsplash { + --fa: "\e07c"; } -.fa-amazon:before { - content: "\f270"; } +.fa-yarn { + --fa: "\f7e3"; } -.fa-unsplash:before { - content: "\e07c"; } +.fa-square-steam { + --fa: "\f1b7"; } -.fa-yarn:before { - content: "\f7e3"; } +.fa-steam-square { + --fa: "\f1b7"; } -.fa-square-steam:before { - content: "\f1b7"; } +.fa-500px { + --fa: "\f26e"; } -.fa-steam-square:before { - content: "\f1b7"; } +.fa-square-vimeo { + --fa: "\f194"; } -.fa-500px:before { - content: "\f26e"; } +.fa-vimeo-square { + --fa: "\f194"; } -.fa-square-vimeo:before { - content: "\f194"; } +.fa-asymmetrik { + --fa: "\f372"; } -.fa-vimeo-square:before { - content: "\f194"; } +.fa-font-awesome { + --fa: "\f2b4"; } -.fa-asymmetrik:before { - content: "\f372"; } +.fa-font-awesome-flag { + --fa: "\f2b4"; } -.fa-font-awesome:before { - content: "\f2b4"; } +.fa-font-awesome-logo-full { + --fa: "\f2b4"; } -.fa-font-awesome-flag:before { - content: "\f2b4"; } +.fa-gratipay { + --fa: "\f184"; } -.fa-font-awesome-logo-full:before { - content: "\f2b4"; } +.fa-apple { + --fa: "\f179"; } -.fa-gratipay:before { - content: "\f184"; } +.fa-hive { + --fa: "\e07f"; } -.fa-apple:before { - content: "\f179"; } +.fa-gitkraken { + --fa: "\f3a6"; } -.fa-hive:before { - content: "\e07f"; } +.fa-keybase { + --fa: "\f4f5"; } -.fa-gitkraken:before { - content: "\f3a6"; } +.fa-apple-pay { + --fa: "\f415"; } -.fa-keybase:before { - content: "\f4f5"; } +.fa-padlet { + --fa: "\e4a0"; } -.fa-apple-pay:before { - content: "\f415"; } +.fa-amazon-pay { + --fa: "\f42c"; } -.fa-padlet:before { - content: "\e4a0"; } +.fa-square-github { + --fa: "\f092"; } -.fa-amazon-pay:before { - content: "\f42c"; } +.fa-github-square { + --fa: "\f092"; } -.fa-square-github:before { - content: "\f092"; } +.fa-stumbleupon { + --fa: "\f1a4"; } -.fa-github-square:before { - content: "\f092"; } +.fa-fedex { + --fa: "\f797"; } -.fa-stumbleupon:before { - content: "\f1a4"; } +.fa-phoenix-framework { + --fa: "\f3dc"; } -.fa-fedex:before { - content: "\f797"; } +.fa-shopify { + --fa: "\e057"; } -.fa-phoenix-framework:before { - content: "\f3dc"; } +.fa-neos { + --fa: "\f612"; } -.fa-shopify:before { - content: "\e057"; } +.fa-square-threads { + --fa: "\e619"; } -.fa-neos:before { - content: "\f612"; } +.fa-hackerrank { + --fa: "\f5f7"; } -.fa-square-threads:before { - content: "\e619"; } +.fa-researchgate { + --fa: "\f4f8"; } -.fa-hackerrank:before { - content: "\f5f7"; } +.fa-swift { + --fa: "\f8e1"; } -.fa-researchgate:before { - content: "\f4f8"; } +.fa-angular { + --fa: "\f420"; } -.fa-swift:before { - content: "\f8e1"; } +.fa-speakap { + --fa: "\f3f3"; } -.fa-angular:before { - content: "\f420"; } +.fa-angrycreative { + --fa: "\f36e"; } -.fa-speakap:before { - content: "\f3f3"; } +.fa-y-combinator { + --fa: "\f23b"; } -.fa-angrycreative:before { - content: "\f36e"; } +.fa-empire { + --fa: "\f1d1"; } -.fa-y-combinator:before { - content: "\f23b"; } +.fa-envira { + --fa: "\f299"; } -.fa-empire:before { - content: "\f1d1"; } +.fa-google-scholar { + --fa: "\e63b"; } -.fa-envira:before { - content: "\f299"; } +.fa-square-gitlab { + --fa: "\e5ae"; } -.fa-google-scholar:before { - content: "\e63b"; } +.fa-gitlab-square { + --fa: "\e5ae"; } -.fa-square-gitlab:before { - content: "\e5ae"; } +.fa-studiovinari { + --fa: "\f3f8"; } -.fa-gitlab-square:before { - content: "\e5ae"; } +.fa-pied-piper { + --fa: "\f2ae"; } -.fa-studiovinari:before { - content: "\f3f8"; } +.fa-wordpress { + --fa: "\f19a"; } -.fa-pied-piper:before { - content: "\f2ae"; } +.fa-product-hunt { + --fa: "\f288"; } -.fa-wordpress:before { - content: "\f19a"; } +.fa-firefox { + --fa: "\f269"; } -.fa-product-hunt:before { - content: "\f288"; } +.fa-linode { + --fa: "\f2b8"; } -.fa-firefox:before { - content: "\f269"; } +.fa-goodreads { + --fa: "\f3a8"; } -.fa-linode:before { - content: "\f2b8"; } +.fa-square-odnoklassniki { + --fa: "\f264"; } -.fa-goodreads:before { - content: "\f3a8"; } +.fa-odnoklassniki-square { + --fa: "\f264"; } -.fa-square-odnoklassniki:before { - content: "\f264"; } +.fa-jsfiddle { + --fa: "\f1cc"; } -.fa-odnoklassniki-square:before { - content: "\f264"; } +.fa-sith { + --fa: "\f512"; } -.fa-jsfiddle:before { - content: "\f1cc"; } +.fa-themeisle { + --fa: "\f2b2"; } -.fa-sith:before { - content: "\f512"; } +.fa-page4 { + --fa: "\f3d7"; } -.fa-themeisle:before { - content: "\f2b2"; } +.fa-hashnode { + --fa: "\e499"; } -.fa-page4:before { - content: "\f3d7"; } +.fa-react { + --fa: "\f41b"; } -.fa-hashnode:before { - content: "\e499"; } +.fa-cc-paypal { + --fa: "\f1f4"; } -.fa-react:before { - content: "\f41b"; } +.fa-squarespace { + --fa: "\f5be"; } -.fa-cc-paypal:before { - content: "\f1f4"; } +.fa-cc-stripe { + --fa: "\f1f5"; } -.fa-squarespace:before { - content: "\f5be"; } +.fa-creative-commons-share { + --fa: "\f4f2"; } -.fa-cc-stripe:before { - content: "\f1f5"; } +.fa-bitcoin { + --fa: "\f379"; } -.fa-creative-commons-share:before { - content: "\f4f2"; } +.fa-keycdn { + --fa: "\f3ba"; } -.fa-bitcoin:before { - content: "\f379"; } +.fa-opera { + --fa: "\f26a"; } -.fa-keycdn:before { - content: "\f3ba"; } +.fa-itch-io { + --fa: "\f83a"; } -.fa-opera:before { - content: "\f26a"; } +.fa-umbraco { + --fa: "\f8e8"; } -.fa-itch-io:before { - content: "\f83a"; } +.fa-galactic-senate { + --fa: "\f50d"; } -.fa-umbraco:before { - content: "\f8e8"; } +.fa-ubuntu { + --fa: "\f7df"; } -.fa-galactic-senate:before { - content: "\f50d"; } +.fa-draft2digital { + --fa: "\f396"; } -.fa-ubuntu:before { - content: "\f7df"; } +.fa-stripe { + --fa: "\f429"; } -.fa-draft2digital:before { - content: "\f396"; } +.fa-houzz { + --fa: "\f27c"; } -.fa-stripe:before { - content: "\f429"; } +.fa-gg { + --fa: "\f260"; } -.fa-houzz:before { - content: "\f27c"; } +.fa-dhl { + --fa: "\f790"; } -.fa-gg:before { - content: "\f260"; } +.fa-square-pinterest { + --fa: "\f0d3"; } -.fa-dhl:before { - content: "\f790"; } +.fa-pinterest-square { + --fa: "\f0d3"; } -.fa-square-pinterest:before { - content: "\f0d3"; } +.fa-xing { + --fa: "\f168"; } -.fa-pinterest-square:before { - content: "\f0d3"; } +.fa-blackberry { + --fa: "\f37b"; } -.fa-xing:before { - content: "\f168"; } +.fa-creative-commons-pd { + --fa: "\f4ec"; } -.fa-blackberry:before { - content: "\f37b"; } +.fa-playstation { + --fa: "\f3df"; } -.fa-creative-commons-pd:before { - content: "\f4ec"; } +.fa-quinscape { + --fa: "\f459"; } -.fa-playstation:before { - content: "\f3df"; } +.fa-less { + --fa: "\f41d"; } -.fa-quinscape:before { - content: "\f459"; } +.fa-blogger-b { + --fa: "\f37d"; } -.fa-less:before { - content: "\f41d"; } +.fa-opencart { + --fa: "\f23d"; } -.fa-blogger-b:before { - content: "\f37d"; } +.fa-vine { + --fa: "\f1ca"; } -.fa-opencart:before { - content: "\f23d"; } +.fa-signal-messenger { + --fa: "\e663"; } -.fa-vine:before { - content: "\f1ca"; } +.fa-paypal { + --fa: "\f1ed"; } -.fa-signal-messenger:before { - content: "\e663"; } +.fa-gitlab { + --fa: "\f296"; } -.fa-paypal:before { - content: "\f1ed"; } +.fa-typo3 { + --fa: "\f42b"; } -.fa-gitlab:before { - content: "\f296"; } +.fa-reddit-alien { + --fa: "\f281"; } -.fa-typo3:before { - content: "\f42b"; } +.fa-yahoo { + --fa: "\f19e"; } -.fa-reddit-alien:before { - content: "\f281"; } +.fa-dailymotion { + --fa: "\e052"; } -.fa-yahoo:before { - content: "\f19e"; } +.fa-affiliatetheme { + --fa: "\f36b"; } -.fa-dailymotion:before { - content: "\e052"; } +.fa-pied-piper-pp { + --fa: "\f1a7"; } -.fa-affiliatetheme:before { - content: "\f36b"; } +.fa-bootstrap { + --fa: "\f836"; } -.fa-pied-piper-pp:before { - content: "\f1a7"; } +.fa-odnoklassniki { + --fa: "\f263"; } -.fa-bootstrap:before { - content: "\f836"; } +.fa-nfc-symbol { + --fa: "\e531"; } -.fa-odnoklassniki:before { - content: "\f263"; } +.fa-mintbit { + --fa: "\e62f"; } -.fa-nfc-symbol:before { - content: "\e531"; } +.fa-ethereum { + --fa: "\f42e"; } -.fa-mintbit:before { - content: "\e62f"; } +.fa-speaker-deck { + --fa: "\f83c"; } -.fa-ethereum:before { - content: "\f42e"; } +.fa-creative-commons-nc-eu { + --fa: "\f4e9"; } -.fa-speaker-deck:before { - content: "\f83c"; } +.fa-patreon { + --fa: "\f3d9"; } -.fa-creative-commons-nc-eu:before { - content: "\f4e9"; } +.fa-avianex { + --fa: "\f374"; } -.fa-patreon:before { - content: "\f3d9"; } +.fa-ello { + --fa: "\f5f1"; } -.fa-avianex:before { - content: "\f374"; } +.fa-gofore { + --fa: "\f3a7"; } -.fa-ello:before { - content: "\f5f1"; } +.fa-bimobject { + --fa: "\f378"; } -.fa-gofore:before { - content: "\f3a7"; } +.fa-brave-reverse { + --fa: "\e63d"; } -.fa-bimobject:before { - content: "\f378"; } +.fa-facebook-f { + --fa: "\f39e"; } -.fa-brave-reverse:before { - content: "\e63d"; } +.fa-square-google-plus { + --fa: "\f0d4"; } -.fa-facebook-f:before { - content: "\f39e"; } +.fa-google-plus-square { + --fa: "\f0d4"; } -.fa-square-google-plus:before { - content: "\f0d4"; } +.fa-web-awesome { + --fa: "\e682"; } -.fa-google-plus-square:before { - content: "\f0d4"; } +.fa-mandalorian { + --fa: "\f50f"; } -.fa-web-awesome:before { - content: "\e682"; } +.fa-first-order-alt { + --fa: "\f50a"; } -.fa-mandalorian:before { - content: "\f50f"; } +.fa-osi { + --fa: "\f41a"; } -.fa-first-order-alt:before { - content: "\f50a"; } +.fa-google-wallet { + --fa: "\f1ee"; } -.fa-osi:before { - content: "\f41a"; } +.fa-d-and-d-beyond { + --fa: "\f6ca"; } -.fa-google-wallet:before { - content: "\f1ee"; } +.fa-periscope { + --fa: "\f3da"; } -.fa-d-and-d-beyond:before { - content: "\f6ca"; } +.fa-fulcrum { + --fa: "\f50b"; } -.fa-periscope:before { - content: "\f3da"; } +.fa-cloudscale { + --fa: "\f383"; } -.fa-fulcrum:before { - content: "\f50b"; } +.fa-forumbee { + --fa: "\f211"; } -.fa-cloudscale:before { - content: "\f383"; } +.fa-mizuni { + --fa: "\f3cc"; } -.fa-forumbee:before { - content: "\f211"; } +.fa-schlix { + --fa: "\f3ea"; } -.fa-mizuni:before { - content: "\f3cc"; } +.fa-square-xing { + --fa: "\f169"; } -.fa-schlix:before { - content: "\f3ea"; } +.fa-xing-square { + --fa: "\f169"; } -.fa-square-xing:before { - content: "\f169"; } +.fa-bandcamp { + --fa: "\f2d5"; } -.fa-xing-square:before { - content: "\f169"; } +.fa-wpforms { + --fa: "\f298"; } -.fa-bandcamp:before { - content: "\f2d5"; } +.fa-cloudversify { + --fa: "\f385"; } -.fa-wpforms:before { - content: "\f298"; } +.fa-usps { + --fa: "\f7e1"; } -.fa-cloudversify:before { - content: "\f385"; } +.fa-megaport { + --fa: "\f5a3"; } -.fa-usps:before { - content: "\f7e1"; } +.fa-magento { + --fa: "\f3c4"; } -.fa-megaport:before { - content: "\f5a3"; } +.fa-spotify { + --fa: "\f1bc"; } -.fa-magento:before { - content: "\f3c4"; } +.fa-optin-monster { + --fa: "\f23c"; } -.fa-spotify:before { - content: "\f1bc"; } +.fa-fly { + --fa: "\f417"; } -.fa-optin-monster:before { - content: "\f23c"; } +.fa-square-bluesky { + --fa: "\e6a3"; } -.fa-fly:before { - content: "\f417"; } +.fa-aviato { + --fa: "\f421"; } -.fa-aviato:before { - content: "\f421"; } +.fa-itunes { + --fa: "\f3b4"; } -.fa-itunes:before { - content: "\f3b4"; } +.fa-cuttlefish { + --fa: "\f38c"; } -.fa-cuttlefish:before { - content: "\f38c"; } +.fa-blogger { + --fa: "\f37c"; } -.fa-blogger:before { - content: "\f37c"; } +.fa-flickr { + --fa: "\f16e"; } -.fa-flickr:before { - content: "\f16e"; } +.fa-viber { + --fa: "\f409"; } -.fa-viber:before { - content: "\f409"; } +.fa-soundcloud { + --fa: "\f1be"; } -.fa-soundcloud:before { - content: "\f1be"; } +.fa-digg { + --fa: "\f1a6"; } -.fa-digg:before { - content: "\f1a6"; } +.fa-tencent-weibo { + --fa: "\f1d5"; } -.fa-tencent-weibo:before { - content: "\f1d5"; } +.fa-letterboxd { + --fa: "\e62d"; } -.fa-letterboxd:before { - content: "\e62d"; } +.fa-symfony { + --fa: "\f83d"; } -.fa-symfony:before { - content: "\f83d"; } +.fa-maxcdn { + --fa: "\f136"; } -.fa-maxcdn:before { - content: "\f136"; } +.fa-etsy { + --fa: "\f2d7"; } -.fa-etsy:before { - content: "\f2d7"; } +.fa-facebook-messenger { + --fa: "\f39f"; } -.fa-facebook-messenger:before { - content: "\f39f"; } +.fa-audible { + --fa: "\f373"; } -.fa-audible:before { - content: "\f373"; } +.fa-think-peaks { + --fa: "\f731"; } -.fa-think-peaks:before { - content: "\f731"; } +.fa-bilibili { + --fa: "\e3d9"; } -.fa-bilibili:before { - content: "\e3d9"; } +.fa-erlang { + --fa: "\f39d"; } -.fa-erlang:before { - content: "\f39d"; } +.fa-x-twitter { + --fa: "\e61b"; } -.fa-x-twitter:before { - content: "\e61b"; } +.fa-cotton-bureau { + --fa: "\f89e"; } -.fa-cotton-bureau:before { - content: "\f89e"; } +.fa-dashcube { + --fa: "\f210"; } -.fa-dashcube:before { - content: "\f210"; } +.fa-42-group { + --fa: "\e080"; } -.fa-42-group:before { - content: "\e080"; } +.fa-innosoft { + --fa: "\e080"; } -.fa-innosoft:before { - content: "\e080"; } +.fa-stack-exchange { + --fa: "\f18d"; } -.fa-stack-exchange:before { - content: "\f18d"; } +.fa-elementor { + --fa: "\f430"; } -.fa-elementor:before { - content: "\f430"; } +.fa-square-pied-piper { + --fa: "\e01e"; } -.fa-square-pied-piper:before { - content: "\e01e"; } +.fa-pied-piper-square { + --fa: "\e01e"; } -.fa-pied-piper-square:before { - content: "\e01e"; } +.fa-creative-commons-nd { + --fa: "\f4eb"; } -.fa-creative-commons-nd:before { - content: "\f4eb"; } +.fa-palfed { + --fa: "\f3d8"; } -.fa-palfed:before { - content: "\f3d8"; } +.fa-superpowers { + --fa: "\f2dd"; } -.fa-superpowers:before { - content: "\f2dd"; } +.fa-resolving { + --fa: "\f3e7"; } -.fa-resolving:before { - content: "\f3e7"; } +.fa-xbox { + --fa: "\f412"; } -.fa-xbox:before { - content: "\f412"; } +.fa-square-web-awesome-stroke { + --fa: "\e684"; } -.fa-square-web-awesome-stroke:before { - content: "\e684"; } +.fa-searchengin { + --fa: "\f3eb"; } -.fa-searchengin:before { - content: "\f3eb"; } +.fa-tiktok { + --fa: "\e07b"; } -.fa-tiktok:before { - content: "\e07b"; } +.fa-square-facebook { + --fa: "\f082"; } -.fa-square-facebook:before { - content: "\f082"; } +.fa-facebook-square { + --fa: "\f082"; } -.fa-facebook-square:before { - content: "\f082"; } +.fa-renren { + --fa: "\f18b"; } -.fa-renren:before { - content: "\f18b"; } +.fa-linux { + --fa: "\f17c"; } -.fa-linux:before { - content: "\f17c"; } +.fa-glide { + --fa: "\f2a5"; } -.fa-glide:before { - content: "\f2a5"; } +.fa-linkedin { + --fa: "\f08c"; } -.fa-linkedin:before { - content: "\f08c"; } +.fa-hubspot { + --fa: "\f3b2"; } -.fa-hubspot:before { - content: "\f3b2"; } +.fa-deploydog { + --fa: "\f38e"; } -.fa-deploydog:before { - content: "\f38e"; } +.fa-twitch { + --fa: "\f1e8"; } -.fa-twitch:before { - content: "\f1e8"; } +.fa-flutter { + --fa: "\e694"; } -.fa-ravelry:before { - content: "\f2d9"; } +.fa-ravelry { + --fa: "\f2d9"; } -.fa-mixer:before { - content: "\e056"; } +.fa-mixer { + --fa: "\e056"; } -.fa-square-lastfm:before { - content: "\f203"; } +.fa-square-lastfm { + --fa: "\f203"; } -.fa-lastfm-square:before { - content: "\f203"; } +.fa-lastfm-square { + --fa: "\f203"; } -.fa-vimeo:before { - content: "\f40a"; } +.fa-vimeo { + --fa: "\f40a"; } -.fa-mendeley:before { - content: "\f7b3"; } +.fa-mendeley { + --fa: "\f7b3"; } -.fa-uniregistry:before { - content: "\f404"; } +.fa-uniregistry { + --fa: "\f404"; } -.fa-figma:before { - content: "\f799"; } +.fa-figma { + --fa: "\f799"; } -.fa-creative-commons-remix:before { - content: "\f4ee"; } +.fa-creative-commons-remix { + --fa: "\f4ee"; } -.fa-cc-amazon-pay:before { - content: "\f42d"; } +.fa-cc-amazon-pay { + --fa: "\f42d"; } -.fa-dropbox:before { - content: "\f16b"; } +.fa-dropbox { + --fa: "\f16b"; } -.fa-instagram:before { - content: "\f16d"; } +.fa-instagram { + --fa: "\f16d"; } -.fa-cmplid:before { - content: "\e360"; } +.fa-cmplid { + --fa: "\e360"; } -.fa-upwork:before { - content: "\e641"; } +.fa-upwork { + --fa: "\e641"; } -.fa-facebook:before { - content: "\f09a"; } +.fa-facebook { + --fa: "\f09a"; } -.fa-gripfire:before { - content: "\f3ac"; } +.fa-gripfire { + --fa: "\f3ac"; } -.fa-jedi-order:before { - content: "\f50e"; } +.fa-jedi-order { + --fa: "\f50e"; } -.fa-uikit:before { - content: "\f403"; } +.fa-uikit { + --fa: "\f403"; } -.fa-fort-awesome-alt:before { - content: "\f3a3"; } +.fa-fort-awesome-alt { + --fa: "\f3a3"; } -.fa-phabricator:before { - content: "\f3db"; } +.fa-phabricator { + --fa: "\f3db"; } -.fa-ussunnah:before { - content: "\f407"; } +.fa-ussunnah { + --fa: "\f407"; } -.fa-earlybirds:before { - content: "\f39a"; } +.fa-earlybirds { + --fa: "\f39a"; } -.fa-trade-federation:before { - content: "\f513"; } +.fa-trade-federation { + --fa: "\f513"; } -.fa-autoprefixer:before { - content: "\f41c"; } +.fa-autoprefixer { + --fa: "\f41c"; } -.fa-whatsapp:before { - content: "\f232"; } +.fa-whatsapp { + --fa: "\f232"; } -.fa-square-upwork:before { - content: "\e67c"; } +.fa-square-upwork { + --fa: "\e67c"; } -.fa-slideshare:before { - content: "\f1e7"; } +.fa-slideshare { + --fa: "\f1e7"; } -.fa-google-play:before { - content: "\f3ab"; } +.fa-google-play { + --fa: "\f3ab"; } -.fa-viadeo:before { - content: "\f2a9"; } +.fa-viadeo { + --fa: "\f2a9"; } -.fa-line:before { - content: "\f3c0"; } +.fa-line { + --fa: "\f3c0"; } -.fa-google-drive:before { - content: "\f3aa"; } +.fa-google-drive { + --fa: "\f3aa"; } -.fa-servicestack:before { - content: "\f3ec"; } +.fa-servicestack { + --fa: "\f3ec"; } -.fa-simplybuilt:before { - content: "\f215"; } +.fa-simplybuilt { + --fa: "\f215"; } -.fa-bitbucket:before { - content: "\f171"; } +.fa-bitbucket { + --fa: "\f171"; } -.fa-imdb:before { - content: "\f2d8"; } +.fa-imdb { + --fa: "\f2d8"; } -.fa-deezer:before { - content: "\e077"; } +.fa-deezer { + --fa: "\e077"; } -.fa-raspberry-pi:before { - content: "\f7bb"; } +.fa-raspberry-pi { + --fa: "\f7bb"; } -.fa-jira:before { - content: "\f7b1"; } +.fa-jira { + --fa: "\f7b1"; } -.fa-docker:before { - content: "\f395"; } +.fa-docker { + --fa: "\f395"; } -.fa-screenpal:before { - content: "\e570"; } +.fa-screenpal { + --fa: "\e570"; } -.fa-bluetooth:before { - content: "\f293"; } +.fa-bluetooth { + --fa: "\f293"; } -.fa-gitter:before { - content: "\f426"; } +.fa-gitter { + --fa: "\f426"; } -.fa-d-and-d:before { - content: "\f38d"; } +.fa-d-and-d { + --fa: "\f38d"; } -.fa-microblog:before { - content: "\e01a"; } +.fa-microblog { + --fa: "\e01a"; } -.fa-cc-diners-club:before { - content: "\f24c"; } +.fa-cc-diners-club { + --fa: "\f24c"; } -.fa-gg-circle:before { - content: "\f261"; } +.fa-gg-circle { + --fa: "\f261"; } -.fa-pied-piper-hat:before { - content: "\f4e5"; } +.fa-pied-piper-hat { + --fa: "\f4e5"; } -.fa-kickstarter-k:before { - content: "\f3bc"; } +.fa-kickstarter-k { + --fa: "\f3bc"; } -.fa-yandex:before { - content: "\f413"; } +.fa-yandex { + --fa: "\f413"; } -.fa-readme:before { - content: "\f4d5"; } +.fa-readme { + --fa: "\f4d5"; } -.fa-html5:before { - content: "\f13b"; } +.fa-html5 { + --fa: "\f13b"; } -.fa-sellsy:before { - content: "\f213"; } +.fa-sellsy { + --fa: "\f213"; } -.fa-square-web-awesome:before { - content: "\e683"; } +.fa-square-web-awesome { + --fa: "\e683"; } -.fa-sass:before { - content: "\f41e"; } +.fa-sass { + --fa: "\f41e"; } -.fa-wirsindhandwerk:before { - content: "\e2d0"; } +.fa-wirsindhandwerk { + --fa: "\e2d0"; } -.fa-wsh:before { - content: "\e2d0"; } +.fa-wsh { + --fa: "\e2d0"; } -.fa-buromobelexperte:before { - content: "\f37f"; } +.fa-buromobelexperte { + --fa: "\f37f"; } -.fa-salesforce:before { - content: "\f83b"; } +.fa-salesforce { + --fa: "\f83b"; } -.fa-octopus-deploy:before { - content: "\e082"; } +.fa-octopus-deploy { + --fa: "\e082"; } -.fa-medapps:before { - content: "\f3c6"; } +.fa-medapps { + --fa: "\f3c6"; } -.fa-ns8:before { - content: "\f3d5"; } +.fa-ns8 { + --fa: "\f3d5"; } -.fa-pinterest-p:before { - content: "\f231"; } +.fa-pinterest-p { + --fa: "\f231"; } -.fa-apper:before { - content: "\f371"; } +.fa-apper { + --fa: "\f371"; } -.fa-fort-awesome:before { - content: "\f286"; } +.fa-fort-awesome { + --fa: "\f286"; } -.fa-waze:before { - content: "\f83f"; } +.fa-waze { + --fa: "\f83f"; } -.fa-bluesky:before { - content: "\e671"; } +.fa-bluesky { + --fa: "\e671"; } -.fa-cc-jcb:before { - content: "\f24b"; } +.fa-cc-jcb { + --fa: "\f24b"; } -.fa-snapchat:before { - content: "\f2ab"; } +.fa-snapchat { + --fa: "\f2ab"; } -.fa-snapchat-ghost:before { - content: "\f2ab"; } +.fa-snapchat-ghost { + --fa: "\f2ab"; } -.fa-fantasy-flight-games:before { - content: "\f6dc"; } +.fa-fantasy-flight-games { + --fa: "\f6dc"; } -.fa-rust:before { - content: "\e07a"; } +.fa-rust { + --fa: "\e07a"; } -.fa-wix:before { - content: "\f5cf"; } +.fa-wix { + --fa: "\f5cf"; } -.fa-square-behance:before { - content: "\f1b5"; } +.fa-square-behance { + --fa: "\f1b5"; } -.fa-behance-square:before { - content: "\f1b5"; } +.fa-behance-square { + --fa: "\f1b5"; } -.fa-supple:before { - content: "\f3f9"; } +.fa-supple { + --fa: "\f3f9"; } -.fa-webflow:before { - content: "\e65c"; } +.fa-webflow { + --fa: "\e65c"; } -.fa-rebel:before { - content: "\f1d0"; } +.fa-rebel { + --fa: "\f1d0"; } -.fa-css3:before { - content: "\f13c"; } +.fa-css3 { + --fa: "\f13c"; } -.fa-staylinked:before { - content: "\f3f5"; } +.fa-staylinked { + --fa: "\f3f5"; } -.fa-kaggle:before { - content: "\f5fa"; } +.fa-kaggle { + --fa: "\f5fa"; } -.fa-space-awesome:before { - content: "\e5ac"; } +.fa-space-awesome { + --fa: "\e5ac"; } -.fa-deviantart:before { - content: "\f1bd"; } +.fa-deviantart { + --fa: "\f1bd"; } -.fa-cpanel:before { - content: "\f388"; } +.fa-cpanel { + --fa: "\f388"; } -.fa-goodreads-g:before { - content: "\f3a9"; } +.fa-goodreads-g { + --fa: "\f3a9"; } -.fa-square-git:before { - content: "\f1d2"; } +.fa-square-git { + --fa: "\f1d2"; } -.fa-git-square:before { - content: "\f1d2"; } +.fa-git-square { + --fa: "\f1d2"; } -.fa-square-tumblr:before { - content: "\f174"; } +.fa-square-tumblr { + --fa: "\f174"; } -.fa-tumblr-square:before { - content: "\f174"; } +.fa-tumblr-square { + --fa: "\f174"; } -.fa-trello:before { - content: "\f181"; } +.fa-trello { + --fa: "\f181"; } -.fa-creative-commons-nc-jp:before { - content: "\f4ea"; } +.fa-creative-commons-nc-jp { + --fa: "\f4ea"; } -.fa-get-pocket:before { - content: "\f265"; } +.fa-get-pocket { + --fa: "\f265"; } -.fa-perbyte:before { - content: "\e083"; } +.fa-perbyte { + --fa: "\e083"; } -.fa-grunt:before { - content: "\f3ad"; } +.fa-grunt { + --fa: "\f3ad"; } -.fa-weebly:before { - content: "\f5cc"; } +.fa-weebly { + --fa: "\f5cc"; } -.fa-connectdevelop:before { - content: "\f20e"; } +.fa-connectdevelop { + --fa: "\f20e"; } -.fa-leanpub:before { - content: "\f212"; } +.fa-leanpub { + --fa: "\f212"; } -.fa-black-tie:before { - content: "\f27e"; } +.fa-black-tie { + --fa: "\f27e"; } -.fa-themeco:before { - content: "\f5c6"; } +.fa-themeco { + --fa: "\f5c6"; } -.fa-python:before { - content: "\f3e2"; } +.fa-python { + --fa: "\f3e2"; } -.fa-android:before { - content: "\f17b"; } +.fa-android { + --fa: "\f17b"; } -.fa-bots:before { - content: "\e340"; } +.fa-bots { + --fa: "\e340"; } -.fa-free-code-camp:before { - content: "\f2c5"; } +.fa-free-code-camp { + --fa: "\f2c5"; } -.fa-hornbill:before { - content: "\f592"; } +.fa-hornbill { + --fa: "\f592"; } -.fa-js:before { - content: "\f3b8"; } +.fa-js { + --fa: "\f3b8"; } -.fa-ideal:before { - content: "\e013"; } +.fa-ideal { + --fa: "\e013"; } -.fa-git:before { - content: "\f1d3"; } +.fa-git { + --fa: "\f1d3"; } -.fa-dev:before { - content: "\f6cc"; } +.fa-dev { + --fa: "\f6cc"; } -.fa-sketch:before { - content: "\f7c6"; } +.fa-sketch { + --fa: "\f7c6"; } -.fa-yandex-international:before { - content: "\f414"; } +.fa-yandex-international { + --fa: "\f414"; } -.fa-cc-amex:before { - content: "\f1f3"; } +.fa-cc-amex { + --fa: "\f1f3"; } -.fa-uber:before { - content: "\f402"; } +.fa-uber { + --fa: "\f402"; } -.fa-github:before { - content: "\f09b"; } +.fa-github { + --fa: "\f09b"; } -.fa-php:before { - content: "\f457"; } +.fa-php { + --fa: "\f457"; } -.fa-alipay:before { - content: "\f642"; } +.fa-alipay { + --fa: "\f642"; } -.fa-youtube:before { - content: "\f167"; } +.fa-youtube { + --fa: "\f167"; } -.fa-skyatlas:before { - content: "\f216"; } +.fa-skyatlas { + --fa: "\f216"; } -.fa-firefox-browser:before { - content: "\e007"; } +.fa-firefox-browser { + --fa: "\e007"; } -.fa-replyd:before { - content: "\f3e6"; } +.fa-replyd { + --fa: "\f3e6"; } -.fa-suse:before { - content: "\f7d6"; } +.fa-suse { + --fa: "\f7d6"; } -.fa-jenkins:before { - content: "\f3b6"; } +.fa-jenkins { + --fa: "\f3b6"; } -.fa-twitter:before { - content: "\f099"; } +.fa-twitter { + --fa: "\f099"; } -.fa-rockrms:before { - content: "\f3e9"; } +.fa-rockrms { + --fa: "\f3e9"; } -.fa-pinterest:before { - content: "\f0d2"; } +.fa-pinterest { + --fa: "\f0d2"; } -.fa-buffer:before { - content: "\f837"; } +.fa-buffer { + --fa: "\f837"; } -.fa-npm:before { - content: "\f3d4"; } +.fa-npm { + --fa: "\f3d4"; } -.fa-yammer:before { - content: "\f840"; } +.fa-yammer { + --fa: "\f840"; } -.fa-btc:before { - content: "\f15a"; } +.fa-btc { + --fa: "\f15a"; } -.fa-dribbble:before { - content: "\f17d"; } +.fa-dribbble { + --fa: "\f17d"; } -.fa-stumbleupon-circle:before { - content: "\f1a3"; } +.fa-stumbleupon-circle { + --fa: "\f1a3"; } -.fa-internet-explorer:before { - content: "\f26b"; } +.fa-internet-explorer { + --fa: "\f26b"; } -.fa-stubber:before { - content: "\e5c7"; } +.fa-stubber { + --fa: "\e5c7"; } -.fa-telegram:before { - content: "\f2c6"; } +.fa-telegram { + --fa: "\f2c6"; } -.fa-telegram-plane:before { - content: "\f2c6"; } +.fa-telegram-plane { + --fa: "\f2c6"; } -.fa-old-republic:before { - content: "\f510"; } +.fa-old-republic { + --fa: "\f510"; } -.fa-odysee:before { - content: "\e5c6"; } +.fa-odysee { + --fa: "\e5c6"; } -.fa-square-whatsapp:before { - content: "\f40c"; } +.fa-square-whatsapp { + --fa: "\f40c"; } -.fa-whatsapp-square:before { - content: "\f40c"; } +.fa-whatsapp-square { + --fa: "\f40c"; } -.fa-node-js:before { - content: "\f3d3"; } +.fa-node-js { + --fa: "\f3d3"; } -.fa-edge-legacy:before { - content: "\e078"; } +.fa-edge-legacy { + --fa: "\e078"; } -.fa-slack:before { - content: "\f198"; } +.fa-slack { + --fa: "\f198"; } -.fa-slack-hash:before { - content: "\f198"; } +.fa-slack-hash { + --fa: "\f198"; } -.fa-medrt:before { - content: "\f3c8"; } +.fa-medrt { + --fa: "\f3c8"; } -.fa-usb:before { - content: "\f287"; } +.fa-usb { + --fa: "\f287"; } -.fa-tumblr:before { - content: "\f173"; } +.fa-tumblr { + --fa: "\f173"; } -.fa-vaadin:before { - content: "\f408"; } +.fa-vaadin { + --fa: "\f408"; } -.fa-quora:before { - content: "\f2c4"; } +.fa-quora { + --fa: "\f2c4"; } -.fa-square-x-twitter:before { - content: "\e61a"; } +.fa-square-x-twitter { + --fa: "\e61a"; } -.fa-reacteurope:before { - content: "\f75d"; } +.fa-reacteurope { + --fa: "\f75d"; } -.fa-medium:before { - content: "\f23a"; } +.fa-medium { + --fa: "\f23a"; } -.fa-medium-m:before { - content: "\f23a"; } +.fa-medium-m { + --fa: "\f23a"; } -.fa-amilia:before { - content: "\f36d"; } +.fa-amilia { + --fa: "\f36d"; } -.fa-mixcloud:before { - content: "\f289"; } +.fa-mixcloud { + --fa: "\f289"; } -.fa-flipboard:before { - content: "\f44d"; } +.fa-flipboard { + --fa: "\f44d"; } -.fa-viacoin:before { - content: "\f237"; } +.fa-viacoin { + --fa: "\f237"; } -.fa-critical-role:before { - content: "\f6c9"; } +.fa-critical-role { + --fa: "\f6c9"; } -.fa-sitrox:before { - content: "\e44a"; } +.fa-sitrox { + --fa: "\e44a"; } -.fa-discourse:before { - content: "\f393"; } +.fa-discourse { + --fa: "\f393"; } -.fa-joomla:before { - content: "\f1aa"; } +.fa-joomla { + --fa: "\f1aa"; } -.fa-mastodon:before { - content: "\f4f6"; } +.fa-mastodon { + --fa: "\f4f6"; } -.fa-airbnb:before { - content: "\f834"; } +.fa-airbnb { + --fa: "\f834"; } -.fa-wolf-pack-battalion:before { - content: "\f514"; } +.fa-wolf-pack-battalion { + --fa: "\f514"; } -.fa-buy-n-large:before { - content: "\f8a6"; } +.fa-buy-n-large { + --fa: "\f8a6"; } -.fa-gulp:before { - content: "\f3ae"; } +.fa-gulp { + --fa: "\f3ae"; } -.fa-creative-commons-sampling-plus:before { - content: "\f4f1"; } +.fa-creative-commons-sampling-plus { + --fa: "\f4f1"; } -.fa-strava:before { - content: "\f428"; } +.fa-strava { + --fa: "\f428"; } -.fa-ember:before { - content: "\f423"; } +.fa-ember { + --fa: "\f423"; } -.fa-canadian-maple-leaf:before { - content: "\f785"; } +.fa-canadian-maple-leaf { + --fa: "\f785"; } -.fa-teamspeak:before { - content: "\f4f9"; } +.fa-teamspeak { + --fa: "\f4f9"; } -.fa-pushed:before { - content: "\f3e1"; } +.fa-pushed { + --fa: "\f3e1"; } -.fa-wordpress-simple:before { - content: "\f411"; } +.fa-wordpress-simple { + --fa: "\f411"; } -.fa-nutritionix:before { - content: "\f3d6"; } +.fa-nutritionix { + --fa: "\f3d6"; } -.fa-wodu:before { - content: "\e088"; } +.fa-wodu { + --fa: "\e088"; } -.fa-google-pay:before { - content: "\e079"; } +.fa-google-pay { + --fa: "\e079"; } -.fa-intercom:before { - content: "\f7af"; } +.fa-intercom { + --fa: "\f7af"; } -.fa-zhihu:before { - content: "\f63f"; } +.fa-zhihu { + --fa: "\f63f"; } -.fa-korvue:before { - content: "\f42f"; } +.fa-korvue { + --fa: "\f42f"; } -.fa-pix:before { - content: "\e43a"; } +.fa-pix { + --fa: "\e43a"; } -.fa-steam-symbol:before { - content: "\f3f6"; } +.fa-steam-symbol { + --fa: "\f3f6"; } :root, :host { --fa-style-family-classic: 'Font Awesome 6 Free'; --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; } diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css index ea60ea4d7..7ed4af7d2 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css @@ -1,174 +1,174 @@ /*! - * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */ -.fa.fa-glass:before { - content: "\f000"; } +.fa.fa-glass { + --fa: "\f000"; } .fa.fa-envelope-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-envelope-o:before { - content: "\f0e0"; } +.fa.fa-envelope-o { + --fa: "\f0e0"; } .fa.fa-star-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-star-o:before { - content: "\f005"; } +.fa.fa-star-o { + --fa: "\f005"; } -.fa.fa-remove:before { - content: "\f00d"; } +.fa.fa-remove { + --fa: "\f00d"; } -.fa.fa-close:before { - content: "\f00d"; } +.fa.fa-close { + --fa: "\f00d"; } -.fa.fa-gear:before { - content: "\f013"; } +.fa.fa-gear { + --fa: "\f013"; } .fa.fa-trash-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-trash-o:before { - content: "\f2ed"; } +.fa.fa-trash-o { + --fa: "\f2ed"; } -.fa.fa-home:before { - content: "\f015"; } +.fa.fa-home { + --fa: "\f015"; } .fa.fa-file-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-o:before { - content: "\f15b"; } +.fa.fa-file-o { + --fa: "\f15b"; } .fa.fa-clock-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-clock-o:before { - content: "\f017"; } +.fa.fa-clock-o { + --fa: "\f017"; } .fa.fa-arrow-circle-o-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-arrow-circle-o-down:before { - content: "\f358"; } +.fa.fa-arrow-circle-o-down { + --fa: "\f358"; } .fa.fa-arrow-circle-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-arrow-circle-o-up:before { - content: "\f35b"; } +.fa.fa-arrow-circle-o-up { + --fa: "\f35b"; } .fa.fa-play-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-play-circle-o:before { - content: "\f144"; } +.fa.fa-play-circle-o { + --fa: "\f144"; } -.fa.fa-repeat:before { - content: "\f01e"; } +.fa.fa-repeat { + --fa: "\f01e"; } -.fa.fa-rotate-right:before { - content: "\f01e"; } +.fa.fa-rotate-right { + --fa: "\f01e"; } -.fa.fa-refresh:before { - content: "\f021"; } +.fa.fa-refresh { + --fa: "\f021"; } .fa.fa-list-alt { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-list-alt:before { - content: "\f022"; } +.fa.fa-list-alt { + --fa: "\f022"; } -.fa.fa-dedent:before { - content: "\f03b"; } +.fa.fa-dedent { + --fa: "\f03b"; } -.fa.fa-video-camera:before { - content: "\f03d"; } +.fa.fa-video-camera { + --fa: "\f03d"; } .fa.fa-picture-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-picture-o:before { - content: "\f03e"; } +.fa.fa-picture-o { + --fa: "\f03e"; } .fa.fa-photo { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-photo:before { - content: "\f03e"; } +.fa.fa-photo { + --fa: "\f03e"; } .fa.fa-image { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-image:before { - content: "\f03e"; } +.fa.fa-image { + --fa: "\f03e"; } -.fa.fa-map-marker:before { - content: "\f3c5"; } +.fa.fa-map-marker { + --fa: "\f3c5"; } .fa.fa-pencil-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-pencil-square-o:before { - content: "\f044"; } +.fa.fa-pencil-square-o { + --fa: "\f044"; } .fa.fa-edit { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-edit:before { - content: "\f044"; } +.fa.fa-edit { + --fa: "\f044"; } -.fa.fa-share-square-o:before { - content: "\f14d"; } +.fa.fa-share-square-o { + --fa: "\f14d"; } .fa.fa-check-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-check-square-o:before { - content: "\f14a"; } +.fa.fa-check-square-o { + --fa: "\f14a"; } -.fa.fa-arrows:before { - content: "\f0b2"; } +.fa.fa-arrows { + --fa: "\f0b2"; } .fa.fa-times-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-times-circle-o:before { - content: "\f057"; } +.fa.fa-times-circle-o { + --fa: "\f057"; } .fa.fa-check-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-check-circle-o:before { - content: "\f058"; } +.fa.fa-check-circle-o { + --fa: "\f058"; } -.fa.fa-mail-forward:before { - content: "\f064"; } +.fa.fa-mail-forward { + --fa: "\f064"; } -.fa.fa-expand:before { - content: "\f424"; } +.fa.fa-expand { + --fa: "\f424"; } -.fa.fa-compress:before { - content: "\f422"; } +.fa.fa-compress { + --fa: "\f422"; } .fa.fa-eye { font-family: 'Font Awesome 6 Free'; @@ -178,108 +178,108 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-warning:before { - content: "\f071"; } +.fa.fa-warning { + --fa: "\f071"; } -.fa.fa-calendar:before { - content: "\f073"; } +.fa.fa-calendar { + --fa: "\f073"; } -.fa.fa-arrows-v:before { - content: "\f338"; } +.fa.fa-arrows-v { + --fa: "\f338"; } -.fa.fa-arrows-h:before { - content: "\f337"; } +.fa.fa-arrows-h { + --fa: "\f337"; } -.fa.fa-bar-chart:before { - content: "\e0e3"; } +.fa.fa-bar-chart { + --fa: "\e0e3"; } -.fa.fa-bar-chart-o:before { - content: "\e0e3"; } +.fa.fa-bar-chart-o { + --fa: "\e0e3"; } .fa.fa-twitter-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-twitter-square:before { - content: "\f081"; } +.fa.fa-twitter-square { + --fa: "\f081"; } .fa.fa-facebook-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-facebook-square:before { - content: "\f082"; } +.fa.fa-facebook-square { + --fa: "\f082"; } -.fa.fa-gears:before { - content: "\f085"; } +.fa.fa-gears { + --fa: "\f085"; } .fa.fa-thumbs-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-thumbs-o-up:before { - content: "\f164"; } +.fa.fa-thumbs-o-up { + --fa: "\f164"; } .fa.fa-thumbs-o-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-thumbs-o-down:before { - content: "\f165"; } +.fa.fa-thumbs-o-down { + --fa: "\f165"; } .fa.fa-heart-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-heart-o:before { - content: "\f004"; } +.fa.fa-heart-o { + --fa: "\f004"; } -.fa.fa-sign-out:before { - content: "\f2f5"; } +.fa.fa-sign-out { + --fa: "\f2f5"; } .fa.fa-linkedin-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-linkedin-square:before { - content: "\f08c"; } +.fa.fa-linkedin-square { + --fa: "\f08c"; } -.fa.fa-thumb-tack:before { - content: "\f08d"; } +.fa.fa-thumb-tack { + --fa: "\f08d"; } -.fa.fa-external-link:before { - content: "\f35d"; } +.fa.fa-external-link { + --fa: "\f35d"; } -.fa.fa-sign-in:before { - content: "\f2f6"; } +.fa.fa-sign-in { + --fa: "\f2f6"; } .fa.fa-github-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-github-square:before { - content: "\f092"; } +.fa.fa-github-square { + --fa: "\f092"; } .fa.fa-lemon-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-lemon-o:before { - content: "\f094"; } +.fa.fa-lemon-o { + --fa: "\f094"; } .fa.fa-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-square-o:before { - content: "\f0c8"; } +.fa.fa-square-o { + --fa: "\f0c8"; } .fa.fa-bookmark-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-bookmark-o:before { - content: "\f02e"; } +.fa.fa-bookmark-o { + --fa: "\f02e"; } .fa.fa-twitter { font-family: 'Font Awesome 6 Brands'; @@ -289,15 +289,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-facebook:before { - content: "\f39e"; } +.fa.fa-facebook { + --fa: "\f39e"; } .fa.fa-facebook-f { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-facebook-f:before { - content: "\f39e"; } +.fa.fa-facebook-f { + --fa: "\f39e"; } .fa.fa-github { font-family: 'Font Awesome 6 Brands'; @@ -307,91 +307,91 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-feed:before { - content: "\f09e"; } +.fa.fa-feed { + --fa: "\f09e"; } .fa.fa-hdd-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hdd-o:before { - content: "\f0a0"; } +.fa.fa-hdd-o { + --fa: "\f0a0"; } .fa.fa-hand-o-right { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-o-right:before { - content: "\f0a4"; } +.fa.fa-hand-o-right { + --fa: "\f0a4"; } .fa.fa-hand-o-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-o-left:before { - content: "\f0a5"; } +.fa.fa-hand-o-left { + --fa: "\f0a5"; } .fa.fa-hand-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-o-up:before { - content: "\f0a6"; } +.fa.fa-hand-o-up { + --fa: "\f0a6"; } .fa.fa-hand-o-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-o-down:before { - content: "\f0a7"; } +.fa.fa-hand-o-down { + --fa: "\f0a7"; } -.fa.fa-globe:before { - content: "\f57d"; } +.fa.fa-globe { + --fa: "\f57d"; } -.fa.fa-tasks:before { - content: "\f828"; } +.fa.fa-tasks { + --fa: "\f828"; } -.fa.fa-arrows-alt:before { - content: "\f31e"; } +.fa.fa-arrows-alt { + --fa: "\f31e"; } -.fa.fa-group:before { - content: "\f0c0"; } +.fa.fa-group { + --fa: "\f0c0"; } -.fa.fa-chain:before { - content: "\f0c1"; } +.fa.fa-chain { + --fa: "\f0c1"; } -.fa.fa-cut:before { - content: "\f0c4"; } +.fa.fa-cut { + --fa: "\f0c4"; } .fa.fa-files-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-files-o:before { - content: "\f0c5"; } +.fa.fa-files-o { + --fa: "\f0c5"; } .fa.fa-floppy-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-floppy-o:before { - content: "\f0c7"; } +.fa.fa-floppy-o { + --fa: "\f0c7"; } .fa.fa-save { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-save:before { - content: "\f0c7"; } +.fa.fa-save { + --fa: "\f0c7"; } -.fa.fa-navicon:before { - content: "\f0c9"; } +.fa.fa-navicon { + --fa: "\f0c9"; } -.fa.fa-reorder:before { - content: "\f0c9"; } +.fa.fa-reorder { + --fa: "\f0c9"; } -.fa.fa-magic:before { - content: "\e2ca"; } +.fa.fa-magic { + --fa: "\e2ca"; } .fa.fa-pinterest { font-family: 'Font Awesome 6 Brands'; @@ -401,139 +401,139 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-pinterest-square:before { - content: "\f0d3"; } +.fa.fa-pinterest-square { + --fa: "\f0d3"; } .fa.fa-google-plus-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-google-plus-square:before { - content: "\f0d4"; } +.fa.fa-google-plus-square { + --fa: "\f0d4"; } .fa.fa-google-plus { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-google-plus:before { - content: "\f0d5"; } +.fa.fa-google-plus { + --fa: "\f0d5"; } -.fa.fa-money:before { - content: "\f3d1"; } +.fa.fa-money { + --fa: "\f3d1"; } -.fa.fa-unsorted:before { - content: "\f0dc"; } +.fa.fa-unsorted { + --fa: "\f0dc"; } -.fa.fa-sort-desc:before { - content: "\f0dd"; } +.fa.fa-sort-desc { + --fa: "\f0dd"; } -.fa.fa-sort-asc:before { - content: "\f0de"; } +.fa.fa-sort-asc { + --fa: "\f0de"; } .fa.fa-linkedin { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-linkedin:before { - content: "\f0e1"; } +.fa.fa-linkedin { + --fa: "\f0e1"; } -.fa.fa-rotate-left:before { - content: "\f0e2"; } +.fa.fa-rotate-left { + --fa: "\f0e2"; } -.fa.fa-legal:before { - content: "\f0e3"; } +.fa.fa-legal { + --fa: "\f0e3"; } -.fa.fa-tachometer:before { - content: "\f625"; } +.fa.fa-tachometer { + --fa: "\f625"; } -.fa.fa-dashboard:before { - content: "\f625"; } +.fa.fa-dashboard { + --fa: "\f625"; } .fa.fa-comment-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-comment-o:before { - content: "\f075"; } +.fa.fa-comment-o { + --fa: "\f075"; } .fa.fa-comments-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-comments-o:before { - content: "\f086"; } +.fa.fa-comments-o { + --fa: "\f086"; } -.fa.fa-flash:before { - content: "\f0e7"; } +.fa.fa-flash { + --fa: "\f0e7"; } -.fa.fa-clipboard:before { - content: "\f0ea"; } +.fa.fa-clipboard { + --fa: "\f0ea"; } .fa.fa-lightbulb-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-lightbulb-o:before { - content: "\f0eb"; } +.fa.fa-lightbulb-o { + --fa: "\f0eb"; } -.fa.fa-exchange:before { - content: "\f362"; } +.fa.fa-exchange { + --fa: "\f362"; } -.fa.fa-cloud-download:before { - content: "\f0ed"; } +.fa.fa-cloud-download { + --fa: "\f0ed"; } -.fa.fa-cloud-upload:before { - content: "\f0ee"; } +.fa.fa-cloud-upload { + --fa: "\f0ee"; } .fa.fa-bell-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-bell-o:before { - content: "\f0f3"; } +.fa.fa-bell-o { + --fa: "\f0f3"; } -.fa.fa-cutlery:before { - content: "\f2e7"; } +.fa.fa-cutlery { + --fa: "\f2e7"; } .fa.fa-file-text-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-text-o:before { - content: "\f15c"; } +.fa.fa-file-text-o { + --fa: "\f15c"; } .fa.fa-building-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-building-o:before { - content: "\f1ad"; } +.fa.fa-building-o { + --fa: "\f1ad"; } .fa.fa-hospital-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hospital-o:before { - content: "\f0f8"; } +.fa.fa-hospital-o { + --fa: "\f0f8"; } -.fa.fa-tablet:before { - content: "\f3fa"; } +.fa.fa-tablet { + --fa: "\f3fa"; } -.fa.fa-mobile:before { - content: "\f3cd"; } +.fa.fa-mobile { + --fa: "\f3cd"; } -.fa.fa-mobile-phone:before { - content: "\f3cd"; } +.fa.fa-mobile-phone { + --fa: "\f3cd"; } .fa.fa-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-circle-o:before { - content: "\f111"; } +.fa.fa-circle-o { + --fa: "\f111"; } -.fa.fa-mail-reply:before { - content: "\f3e5"; } +.fa.fa-mail-reply { + --fa: "\f3e5"; } .fa.fa-github-alt { font-family: 'Font Awesome 6 Brands'; @@ -543,90 +543,90 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-folder-o:before { - content: "\f07b"; } +.fa.fa-folder-o { + --fa: "\f07b"; } .fa.fa-folder-open-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-folder-open-o:before { - content: "\f07c"; } +.fa.fa-folder-open-o { + --fa: "\f07c"; } .fa.fa-smile-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-smile-o:before { - content: "\f118"; } +.fa.fa-smile-o { + --fa: "\f118"; } .fa.fa-frown-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-frown-o:before { - content: "\f119"; } +.fa.fa-frown-o { + --fa: "\f119"; } .fa.fa-meh-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-meh-o:before { - content: "\f11a"; } +.fa.fa-meh-o { + --fa: "\f11a"; } .fa.fa-keyboard-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-keyboard-o:before { - content: "\f11c"; } +.fa.fa-keyboard-o { + --fa: "\f11c"; } .fa.fa-flag-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-flag-o:before { - content: "\f024"; } +.fa.fa-flag-o { + --fa: "\f024"; } -.fa.fa-mail-reply-all:before { - content: "\f122"; } +.fa.fa-mail-reply-all { + --fa: "\f122"; } .fa.fa-star-half-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-star-half-o:before { - content: "\f5c0"; } +.fa.fa-star-half-o { + --fa: "\f5c0"; } .fa.fa-star-half-empty { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-star-half-empty:before { - content: "\f5c0"; } +.fa.fa-star-half-empty { + --fa: "\f5c0"; } .fa.fa-star-half-full { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-star-half-full:before { - content: "\f5c0"; } +.fa.fa-star-half-full { + --fa: "\f5c0"; } -.fa.fa-code-fork:before { - content: "\f126"; } +.fa.fa-code-fork { + --fa: "\f126"; } -.fa.fa-chain-broken:before { - content: "\f127"; } +.fa.fa-chain-broken { + --fa: "\f127"; } -.fa.fa-unlink:before { - content: "\f127"; } +.fa.fa-unlink { + --fa: "\f127"; } .fa.fa-calendar-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-o:before { - content: "\f133"; } +.fa.fa-calendar-o { + --fa: "\f133"; } .fa.fa-maxcdn { font-family: 'Font Awesome 6 Brands'; @@ -640,27 +640,27 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-unlock-alt:before { - content: "\f09c"; } +.fa.fa-unlock-alt { + --fa: "\f09c"; } .fa.fa-minus-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-minus-square-o:before { - content: "\f146"; } +.fa.fa-minus-square-o { + --fa: "\f146"; } -.fa.fa-level-up:before { - content: "\f3bf"; } +.fa.fa-level-up { + --fa: "\f3bf"; } -.fa.fa-level-down:before { - content: "\f3be"; } +.fa.fa-level-down { + --fa: "\f3be"; } -.fa.fa-pencil-square:before { - content: "\f14b"; } +.fa.fa-pencil-square { + --fa: "\f14b"; } -.fa.fa-external-link-square:before { - content: "\f360"; } +.fa.fa-external-link-square { + --fa: "\f360"; } .fa.fa-compass { font-family: 'Font Awesome 6 Free'; @@ -670,91 +670,91 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-caret-square-o-down:before { - content: "\f150"; } +.fa.fa-caret-square-o-down { + --fa: "\f150"; } .fa.fa-toggle-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-toggle-down:before { - content: "\f150"; } +.fa.fa-toggle-down { + --fa: "\f150"; } .fa.fa-caret-square-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-caret-square-o-up:before { - content: "\f151"; } +.fa.fa-caret-square-o-up { + --fa: "\f151"; } .fa.fa-toggle-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-toggle-up:before { - content: "\f151"; } +.fa.fa-toggle-up { + --fa: "\f151"; } .fa.fa-caret-square-o-right { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-caret-square-o-right:before { - content: "\f152"; } +.fa.fa-caret-square-o-right { + --fa: "\f152"; } .fa.fa-toggle-right { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-toggle-right:before { - content: "\f152"; } +.fa.fa-toggle-right { + --fa: "\f152"; } -.fa.fa-eur:before { - content: "\f153"; } +.fa.fa-eur { + --fa: "\f153"; } -.fa.fa-euro:before { - content: "\f153"; } +.fa.fa-euro { + --fa: "\f153"; } -.fa.fa-gbp:before { - content: "\f154"; } +.fa.fa-gbp { + --fa: "\f154"; } -.fa.fa-usd:before { - content: "\24"; } +.fa.fa-usd { + --fa: "\24"; } -.fa.fa-dollar:before { - content: "\24"; } +.fa.fa-dollar { + --fa: "\24"; } -.fa.fa-inr:before { - content: "\e1bc"; } +.fa.fa-inr { + --fa: "\e1bc"; } -.fa.fa-rupee:before { - content: "\e1bc"; } +.fa.fa-rupee { + --fa: "\e1bc"; } -.fa.fa-jpy:before { - content: "\f157"; } +.fa.fa-jpy { + --fa: "\f157"; } -.fa.fa-cny:before { - content: "\f157"; } +.fa.fa-cny { + --fa: "\f157"; } -.fa.fa-rmb:before { - content: "\f157"; } +.fa.fa-rmb { + --fa: "\f157"; } -.fa.fa-yen:before { - content: "\f157"; } +.fa.fa-yen { + --fa: "\f157"; } -.fa.fa-rub:before { - content: "\f158"; } +.fa.fa-rub { + --fa: "\f158"; } -.fa.fa-ruble:before { - content: "\f158"; } +.fa.fa-ruble { + --fa: "\f158"; } -.fa.fa-rouble:before { - content: "\f158"; } +.fa.fa-rouble { + --fa: "\f158"; } -.fa.fa-krw:before { - content: "\f159"; } +.fa.fa-krw { + --fa: "\f159"; } -.fa.fa-won:before { - content: "\f159"; } +.fa.fa-won { + --fa: "\f159"; } .fa.fa-btc { font-family: 'Font Awesome 6 Brands'; @@ -764,36 +764,36 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-bitcoin:before { - content: "\f15a"; } +.fa.fa-bitcoin { + --fa: "\f15a"; } -.fa.fa-file-text:before { - content: "\f15c"; } +.fa.fa-file-text { + --fa: "\f15c"; } -.fa.fa-sort-alpha-asc:before { - content: "\f15d"; } +.fa.fa-sort-alpha-asc { + --fa: "\f15d"; } -.fa.fa-sort-alpha-desc:before { - content: "\f881"; } +.fa.fa-sort-alpha-desc { + --fa: "\f881"; } -.fa.fa-sort-amount-asc:before { - content: "\f884"; } +.fa.fa-sort-amount-asc { + --fa: "\f884"; } -.fa.fa-sort-amount-desc:before { - content: "\f160"; } +.fa.fa-sort-amount-desc { + --fa: "\f160"; } -.fa.fa-sort-numeric-asc:before { - content: "\f162"; } +.fa.fa-sort-numeric-asc { + --fa: "\f162"; } -.fa.fa-sort-numeric-desc:before { - content: "\f886"; } +.fa.fa-sort-numeric-desc { + --fa: "\f886"; } .fa.fa-youtube-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-youtube-square:before { - content: "\f431"; } +.fa.fa-youtube-square { + --fa: "\f431"; } .fa.fa-youtube { font-family: 'Font Awesome 6 Brands'; @@ -807,15 +807,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-xing-square:before { - content: "\f169"; } +.fa.fa-xing-square { + --fa: "\f169"; } .fa.fa-youtube-play { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-youtube-play:before { - content: "\f167"; } +.fa.fa-youtube-play { + --fa: "\f167"; } .fa.fa-dropbox { font-family: 'Font Awesome 6 Brands'; @@ -845,8 +845,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-bitbucket-square:before { - content: "\f171"; } +.fa.fa-bitbucket-square { + --fa: "\f171"; } .fa.fa-tumblr { font-family: 'Font Awesome 6 Brands'; @@ -856,20 +856,20 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-tumblr-square:before { - content: "\f174"; } +.fa.fa-tumblr-square { + --fa: "\f174"; } -.fa.fa-long-arrow-down:before { - content: "\f309"; } +.fa.fa-long-arrow-down { + --fa: "\f309"; } -.fa.fa-long-arrow-up:before { - content: "\f30c"; } +.fa.fa-long-arrow-up { + --fa: "\f30c"; } -.fa.fa-long-arrow-left:before { - content: "\f30a"; } +.fa.fa-long-arrow-left { + --fa: "\f30a"; } -.fa.fa-long-arrow-right:before { - content: "\f30b"; } +.fa.fa-long-arrow-right { + --fa: "\f30b"; } .fa.fa-apple { font-family: 'Font Awesome 6 Brands'; @@ -911,22 +911,22 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-gittip:before { - content: "\f184"; } +.fa.fa-gittip { + --fa: "\f184"; } .fa.fa-sun-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-sun-o:before { - content: "\f185"; } +.fa.fa-sun-o { + --fa: "\f185"; } .fa.fa-moon-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-moon-o:before { - content: "\f186"; } +.fa.fa-moon-o { + --fa: "\f186"; } .fa.fa-vk { font-family: 'Font Awesome 6 Brands'; @@ -952,56 +952,56 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-arrow-circle-o-right:before { - content: "\f35a"; } +.fa.fa-arrow-circle-o-right { + --fa: "\f35a"; } .fa.fa-arrow-circle-o-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-arrow-circle-o-left:before { - content: "\f359"; } +.fa.fa-arrow-circle-o-left { + --fa: "\f359"; } .fa.fa-caret-square-o-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-caret-square-o-left:before { - content: "\f191"; } +.fa.fa-caret-square-o-left { + --fa: "\f191"; } .fa.fa-toggle-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-toggle-left:before { - content: "\f191"; } +.fa.fa-toggle-left { + --fa: "\f191"; } .fa.fa-dot-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-dot-circle-o:before { - content: "\f192"; } +.fa.fa-dot-circle-o { + --fa: "\f192"; } .fa.fa-vimeo-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-vimeo-square:before { - content: "\f194"; } +.fa.fa-vimeo-square { + --fa: "\f194"; } -.fa.fa-try:before { - content: "\e2bb"; } +.fa.fa-try { + --fa: "\e2bb"; } -.fa.fa-turkish-lira:before { - content: "\e2bb"; } +.fa.fa-turkish-lira { + --fa: "\e2bb"; } .fa.fa-plus-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-plus-square-o:before { - content: "\f0fe"; } +.fa.fa-plus-square-o { + --fa: "\f0fe"; } .fa.fa-slack { font-family: 'Font Awesome 6 Brands'; @@ -1015,14 +1015,14 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-institution:before { - content: "\f19c"; } +.fa.fa-institution { + --fa: "\f19c"; } -.fa.fa-bank:before { - content: "\f19c"; } +.fa.fa-bank { + --fa: "\f19c"; } -.fa.fa-mortar-board:before { - content: "\f19d"; } +.fa.fa-mortar-board { + --fa: "\f19d"; } .fa.fa-yahoo { font-family: 'Font Awesome 6 Brands'; @@ -1040,8 +1040,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-reddit-square:before { - content: "\f1a2"; } +.fa.fa-reddit-square { + --fa: "\f1a2"; } .fa.fa-stumbleupon-circle { font-family: 'Font Awesome 6 Brands'; @@ -1083,8 +1083,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-behance-square:before { - content: "\f1b5"; } +.fa.fa-behance-square { + --fa: "\f1b5"; } .fa.fa-steam { font-family: 'Font Awesome 6 Brands'; @@ -1094,14 +1094,14 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-steam-square:before { - content: "\f1b7"; } +.fa.fa-steam-square { + --fa: "\f1b7"; } -.fa.fa-automobile:before { - content: "\f1b9"; } +.fa.fa-automobile { + --fa: "\f1b9"; } -.fa.fa-cab:before { - content: "\f1ba"; } +.fa.fa-cab { + --fa: "\f1ba"; } .fa.fa-spotify { font-family: 'Font Awesome 6 Brands'; @@ -1119,99 +1119,99 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-pdf-o:before { - content: "\f1c1"; } +.fa.fa-file-pdf-o { + --fa: "\f1c1"; } .fa.fa-file-word-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-word-o:before { - content: "\f1c2"; } +.fa.fa-file-word-o { + --fa: "\f1c2"; } .fa.fa-file-excel-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-excel-o:before { - content: "\f1c3"; } +.fa.fa-file-excel-o { + --fa: "\f1c3"; } .fa.fa-file-powerpoint-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-powerpoint-o:before { - content: "\f1c4"; } +.fa.fa-file-powerpoint-o { + --fa: "\f1c4"; } .fa.fa-file-image-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-image-o:before { - content: "\f1c5"; } +.fa.fa-file-image-o { + --fa: "\f1c5"; } .fa.fa-file-photo-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-photo-o:before { - content: "\f1c5"; } +.fa.fa-file-photo-o { + --fa: "\f1c5"; } .fa.fa-file-picture-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-picture-o:before { - content: "\f1c5"; } +.fa.fa-file-picture-o { + --fa: "\f1c5"; } .fa.fa-file-archive-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-archive-o:before { - content: "\f1c6"; } +.fa.fa-file-archive-o { + --fa: "\f1c6"; } .fa.fa-file-zip-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-zip-o:before { - content: "\f1c6"; } +.fa.fa-file-zip-o { + --fa: "\f1c6"; } .fa.fa-file-audio-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-audio-o:before { - content: "\f1c7"; } +.fa.fa-file-audio-o { + --fa: "\f1c7"; } .fa.fa-file-sound-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-sound-o:before { - content: "\f1c7"; } +.fa.fa-file-sound-o { + --fa: "\f1c7"; } .fa.fa-file-video-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-video-o:before { - content: "\f1c8"; } +.fa.fa-file-video-o { + --fa: "\f1c8"; } .fa.fa-file-movie-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-movie-o:before { - content: "\f1c8"; } +.fa.fa-file-movie-o { + --fa: "\f1c8"; } .fa.fa-file-code-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-code-o:before { - content: "\f1c9"; } +.fa.fa-file-code-o { + --fa: "\f1c9"; } .fa.fa-vine { font-family: 'Font Awesome 6 Brands'; @@ -1225,20 +1225,20 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-life-bouy:before { - content: "\f1cd"; } +.fa.fa-life-bouy { + --fa: "\f1cd"; } -.fa.fa-life-buoy:before { - content: "\f1cd"; } +.fa.fa-life-buoy { + --fa: "\f1cd"; } -.fa.fa-life-saver:before { - content: "\f1cd"; } +.fa.fa-life-saver { + --fa: "\f1cd"; } -.fa.fa-support:before { - content: "\f1cd"; } +.fa.fa-support { + --fa: "\f1cd"; } -.fa.fa-circle-o-notch:before { - content: "\f1ce"; } +.fa.fa-circle-o-notch { + --fa: "\f1ce"; } .fa.fa-rebel { font-family: 'Font Awesome 6 Brands'; @@ -1248,15 +1248,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-ra:before { - content: "\f1d0"; } +.fa.fa-ra { + --fa: "\f1d0"; } .fa.fa-resistance { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-resistance:before { - content: "\f1d0"; } +.fa.fa-resistance { + --fa: "\f1d0"; } .fa.fa-empire { font-family: 'Font Awesome 6 Brands'; @@ -1266,15 +1266,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-ge:before { - content: "\f1d1"; } +.fa.fa-ge { + --fa: "\f1d1"; } .fa.fa-git-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-git-square:before { - content: "\f1d2"; } +.fa.fa-git-square { + --fa: "\f1d2"; } .fa.fa-git { font-family: 'Font Awesome 6 Brands'; @@ -1288,15 +1288,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-y-combinator-square:before { - content: "\f1d4"; } +.fa.fa-y-combinator-square { + --fa: "\f1d4"; } .fa.fa-yc-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-yc-square:before { - content: "\f1d4"; } +.fa.fa-yc-square { + --fa: "\f1d4"; } .fa.fa-tencent-weibo { font-family: 'Font Awesome 6 Brands'; @@ -1314,49 +1314,49 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-wechat:before { - content: "\f1d7"; } +.fa.fa-wechat { + --fa: "\f1d7"; } -.fa.fa-send:before { - content: "\f1d8"; } +.fa.fa-send { + --fa: "\f1d8"; } .fa.fa-paper-plane-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-paper-plane-o:before { - content: "\f1d8"; } +.fa.fa-paper-plane-o { + --fa: "\f1d8"; } .fa.fa-send-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-send-o:before { - content: "\f1d8"; } +.fa.fa-send-o { + --fa: "\f1d8"; } .fa.fa-circle-thin { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-circle-thin:before { - content: "\f111"; } +.fa.fa-circle-thin { + --fa: "\f111"; } -.fa.fa-header:before { - content: "\f1dc"; } +.fa.fa-header { + --fa: "\f1dc"; } .fa.fa-futbol-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-futbol-o:before { - content: "\f1e3"; } +.fa.fa-futbol-o { + --fa: "\f1e3"; } .fa.fa-soccer-ball-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-soccer-ball-o:before { - content: "\f1e3"; } +.fa.fa-soccer-ball-o { + --fa: "\f1e3"; } .fa.fa-slideshare { font-family: 'Font Awesome 6 Brands'; @@ -1374,8 +1374,8 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-newspaper-o:before { - content: "\f1ea"; } +.fa.fa-newspaper-o { + --fa: "\f1ea"; } .fa.fa-paypal { font-family: 'Font Awesome 6 Brands'; @@ -1413,27 +1413,27 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-bell-slash-o:before { - content: "\f1f6"; } +.fa.fa-bell-slash-o { + --fa: "\f1f6"; } -.fa.fa-trash:before { - content: "\f2ed"; } +.fa.fa-trash { + --fa: "\f2ed"; } .fa.fa-copyright { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-eyedropper:before { - content: "\f1fb"; } +.fa.fa-eyedropper { + --fa: "\f1fb"; } -.fa.fa-area-chart:before { - content: "\f1fe"; } +.fa.fa-area-chart { + --fa: "\f1fe"; } -.fa.fa-pie-chart:before { - content: "\f200"; } +.fa.fa-pie-chart { + --fa: "\f200"; } -.fa.fa-line-chart:before { - content: "\f201"; } +.fa.fa-line-chart { + --fa: "\f201"; } .fa.fa-lastfm { font-family: 'Font Awesome 6 Brands'; @@ -1443,8 +1443,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-lastfm-square:before { - content: "\f203"; } +.fa.fa-lastfm-square { + --fa: "\f203"; } .fa.fa-ioxhost { font-family: 'Font Awesome 6 Brands'; @@ -1458,17 +1458,17 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-cc:before { - content: "\f20a"; } +.fa.fa-cc { + --fa: "\f20a"; } -.fa.fa-ils:before { - content: "\f20b"; } +.fa.fa-ils { + --fa: "\f20b"; } -.fa.fa-shekel:before { - content: "\f20b"; } +.fa.fa-shekel { + --fa: "\f20b"; } -.fa.fa-sheqel:before { - content: "\f20b"; } +.fa.fa-sheqel { + --fa: "\f20b"; } .fa.fa-buysellads { font-family: 'Font Awesome 6 Brands'; @@ -1510,24 +1510,24 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-diamond:before { - content: "\f3a5"; } +.fa.fa-diamond { + --fa: "\f3a5"; } -.fa.fa-transgender:before { - content: "\f224"; } +.fa.fa-transgender { + --fa: "\f224"; } -.fa.fa-intersex:before { - content: "\f224"; } +.fa.fa-intersex { + --fa: "\f224"; } -.fa.fa-transgender-alt:before { - content: "\f225"; } +.fa.fa-transgender-alt { + --fa: "\f225"; } .fa.fa-facebook-official { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-facebook-official:before { - content: "\f09a"; } +.fa.fa-facebook-official { + --fa: "\f09a"; } .fa.fa-pinterest-p { font-family: 'Font Awesome 6 Brands'; @@ -1537,8 +1537,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-hotel:before { - content: "\f236"; } +.fa.fa-hotel { + --fa: "\f236"; } .fa.fa-viacoin { font-family: 'Font Awesome 6 Brands'; @@ -1556,8 +1556,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-yc:before { - content: "\f23b"; } +.fa.fa-yc { + --fa: "\f23b"; } .fa.fa-optin-monster { font-family: 'Font Awesome 6 Brands'; @@ -1571,23 +1571,23 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-battery-4:before { - content: "\f240"; } +.fa.fa-battery-4 { + --fa: "\f240"; } -.fa.fa-battery:before { - content: "\f240"; } +.fa.fa-battery { + --fa: "\f240"; } -.fa.fa-battery-3:before { - content: "\f241"; } +.fa.fa-battery-3 { + --fa: "\f241"; } -.fa.fa-battery-2:before { - content: "\f242"; } +.fa.fa-battery-2 { + --fa: "\f242"; } -.fa.fa-battery-1:before { - content: "\f243"; } +.fa.fa-battery-1 { + --fa: "\f243"; } -.fa.fa-battery-0:before { - content: "\f244"; } +.fa.fa-battery-0 { + --fa: "\f244"; } .fa.fa-object-group { font-family: 'Font Awesome 6 Free'; @@ -1601,8 +1601,8 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-sticky-note-o:before { - content: "\f249"; } +.fa.fa-sticky-note-o { + --fa: "\f249"; } .fa.fa-cc-jcb { font-family: 'Font Awesome 6 Brands'; @@ -1616,80 +1616,80 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hourglass-o:before { - content: "\f254"; } +.fa.fa-hourglass-o { + --fa: "\f254"; } -.fa.fa-hourglass-1:before { - content: "\f251"; } +.fa.fa-hourglass-1 { + --fa: "\f251"; } -.fa.fa-hourglass-2:before { - content: "\f252"; } +.fa.fa-hourglass-2 { + --fa: "\f252"; } -.fa.fa-hourglass-3:before { - content: "\f253"; } +.fa.fa-hourglass-3 { + --fa: "\f253"; } .fa.fa-hand-rock-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-rock-o:before { - content: "\f255"; } +.fa.fa-hand-rock-o { + --fa: "\f255"; } .fa.fa-hand-grab-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-grab-o:before { - content: "\f255"; } +.fa.fa-hand-grab-o { + --fa: "\f255"; } .fa.fa-hand-paper-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-paper-o:before { - content: "\f256"; } +.fa.fa-hand-paper-o { + --fa: "\f256"; } .fa.fa-hand-stop-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-stop-o:before { - content: "\f256"; } +.fa.fa-hand-stop-o { + --fa: "\f256"; } .fa.fa-hand-scissors-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-scissors-o:before { - content: "\f257"; } +.fa.fa-hand-scissors-o { + --fa: "\f257"; } .fa.fa-hand-lizard-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-lizard-o:before { - content: "\f258"; } +.fa.fa-hand-lizard-o { + --fa: "\f258"; } .fa.fa-hand-spock-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-spock-o:before { - content: "\f259"; } +.fa.fa-hand-spock-o { + --fa: "\f259"; } .fa.fa-hand-pointer-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-pointer-o:before { - content: "\f25a"; } +.fa.fa-hand-pointer-o { + --fa: "\f25a"; } .fa.fa-hand-peace-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-peace-o:before { - content: "\f25b"; } +.fa.fa-hand-peace-o { + --fa: "\f25b"; } .fa.fa-registered { font-family: 'Font Awesome 6 Free'; @@ -1715,8 +1715,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-odnoklassniki-square:before { - content: "\f264"; } +.fa.fa-odnoklassniki-square { + --fa: "\f264"; } .fa.fa-get-pocket { font-family: 'Font Awesome 6 Brands'; @@ -1746,8 +1746,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-television:before { - content: "\f26c"; } +.fa.fa-television { + --fa: "\f26c"; } .fa.fa-contao { font-family: 'Font Awesome 6 Brands'; @@ -1765,46 +1765,46 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-plus-o:before { - content: "\f271"; } +.fa.fa-calendar-plus-o { + --fa: "\f271"; } .fa.fa-calendar-minus-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-minus-o:before { - content: "\f272"; } +.fa.fa-calendar-minus-o { + --fa: "\f272"; } .fa.fa-calendar-times-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-times-o:before { - content: "\f273"; } +.fa.fa-calendar-times-o { + --fa: "\f273"; } .fa.fa-calendar-check-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-check-o:before { - content: "\f274"; } +.fa.fa-calendar-check-o { + --fa: "\f274"; } .fa.fa-map-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-map-o:before { - content: "\f279"; } +.fa.fa-map-o { + --fa: "\f279"; } -.fa.fa-commenting:before { - content: "\f4ad"; } +.fa.fa-commenting { + --fa: "\f4ad"; } .fa.fa-commenting-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-commenting-o:before { - content: "\f4ad"; } +.fa.fa-commenting-o { + --fa: "\f4ad"; } .fa.fa-houzz { font-family: 'Font Awesome 6 Brands'; @@ -1814,8 +1814,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-vimeo:before { - content: "\f27d"; } +.fa.fa-vimeo { + --fa: "\f27d"; } .fa.fa-black-tie { font-family: 'Font Awesome 6 Brands'; @@ -1833,8 +1833,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-credit-card-alt:before { - content: "\f09d"; } +.fa.fa-credit-card-alt { + --fa: "\f09d"; } .fa.fa-codiepie { font-family: 'Font Awesome 6 Brands'; @@ -1868,15 +1868,15 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-pause-circle-o:before { - content: "\f28b"; } +.fa.fa-pause-circle-o { + --fa: "\f28b"; } .fa.fa-stop-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-stop-circle-o:before { - content: "\f28d"; } +.fa.fa-stop-circle-o { + --fa: "\f28d"; } .fa.fa-bluetooth { font-family: 'Font Awesome 6 Brands'; @@ -1906,27 +1906,27 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-wheelchair-alt:before { - content: "\f368"; } +.fa.fa-wheelchair-alt { + --fa: "\f368"; } .fa.fa-question-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-question-circle-o:before { - content: "\f059"; } +.fa.fa-question-circle-o { + --fa: "\f059"; } -.fa.fa-volume-control-phone:before { - content: "\f2a0"; } +.fa.fa-volume-control-phone { + --fa: "\f2a0"; } -.fa.fa-asl-interpreting:before { - content: "\f2a3"; } +.fa.fa-asl-interpreting { + --fa: "\f2a3"; } -.fa.fa-deafness:before { - content: "\f2a4"; } +.fa.fa-deafness { + --fa: "\f2a4"; } -.fa.fa-hard-of-hearing:before { - content: "\f2a4"; } +.fa.fa-hard-of-hearing { + --fa: "\f2a4"; } .fa.fa-glide { font-family: 'Font Awesome 6 Brands'; @@ -1936,8 +1936,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-signing:before { - content: "\f2a7"; } +.fa.fa-signing { + --fa: "\f2a7"; } .fa.fa-viadeo { font-family: 'Font Awesome 6 Brands'; @@ -1947,8 +1947,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-viadeo-square:before { - content: "\f2aa"; } +.fa.fa-viadeo-square { + --fa: "\f2aa"; } .fa.fa-snapchat { font-family: 'Font Awesome 6 Brands'; @@ -1958,15 +1958,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-snapchat-ghost:before { - content: "\f2ab"; } +.fa.fa-snapchat-ghost { + --fa: "\f2ab"; } .fa.fa-snapchat-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-snapchat-square:before { - content: "\f2ad"; } +.fa.fa-snapchat-square { + --fa: "\f2ad"; } .fa.fa-pied-piper { font-family: 'Font Awesome 6 Brands'; @@ -1988,15 +1988,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-google-plus-official:before { - content: "\f2b3"; } +.fa.fa-google-plus-official { + --fa: "\f2b3"; } .fa.fa-google-plus-circle { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-google-plus-circle:before { - content: "\f2b3"; } +.fa.fa-google-plus-circle { + --fa: "\f2b3"; } .fa.fa-font-awesome { font-family: 'Font Awesome 6 Brands'; @@ -2006,22 +2006,22 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-fa:before { - content: "\f2b4"; } +.fa.fa-fa { + --fa: "\f2b4"; } .fa.fa-handshake-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-handshake-o:before { - content: "\f2b5"; } +.fa.fa-handshake-o { + --fa: "\f2b5"; } .fa.fa-envelope-open-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-envelope-open-o:before { - content: "\f2b6"; } +.fa.fa-envelope-open-o { + --fa: "\f2b6"; } .fa.fa-linode { font-family: 'Font Awesome 6 Brands'; @@ -2031,60 +2031,60 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-address-book-o:before { - content: "\f2b9"; } +.fa.fa-address-book-o { + --fa: "\f2b9"; } -.fa.fa-vcard:before { - content: "\f2bb"; } +.fa.fa-vcard { + --fa: "\f2bb"; } .fa.fa-address-card-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-address-card-o:before { - content: "\f2bb"; } +.fa.fa-address-card-o { + --fa: "\f2bb"; } .fa.fa-vcard-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-vcard-o:before { - content: "\f2bb"; } +.fa.fa-vcard-o { + --fa: "\f2bb"; } .fa.fa-user-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-user-circle-o:before { - content: "\f2bd"; } +.fa.fa-user-circle-o { + --fa: "\f2bd"; } .fa.fa-user-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-user-o:before { - content: "\f007"; } +.fa.fa-user-o { + --fa: "\f007"; } .fa.fa-id-badge { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-drivers-license:before { - content: "\f2c2"; } +.fa.fa-drivers-license { + --fa: "\f2c2"; } .fa.fa-id-card-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-id-card-o:before { - content: "\f2c2"; } +.fa.fa-id-card-o { + --fa: "\f2c2"; } .fa.fa-drivers-license-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-drivers-license-o:before { - content: "\f2c2"; } +.fa.fa-drivers-license-o { + --fa: "\f2c2"; } .fa.fa-quora { font-family: 'Font Awesome 6 Brands'; @@ -2098,29 +2098,29 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-thermometer-4:before { - content: "\f2c7"; } +.fa.fa-thermometer-4 { + --fa: "\f2c7"; } -.fa.fa-thermometer:before { - content: "\f2c7"; } +.fa.fa-thermometer { + --fa: "\f2c7"; } -.fa.fa-thermometer-3:before { - content: "\f2c8"; } +.fa.fa-thermometer-3 { + --fa: "\f2c8"; } -.fa.fa-thermometer-2:before { - content: "\f2c9"; } +.fa.fa-thermometer-2 { + --fa: "\f2c9"; } -.fa.fa-thermometer-1:before { - content: "\f2ca"; } +.fa.fa-thermometer-1 { + --fa: "\f2ca"; } -.fa.fa-thermometer-0:before { - content: "\f2cb"; } +.fa.fa-thermometer-0 { + --fa: "\f2cb"; } -.fa.fa-bathtub:before { - content: "\f2cd"; } +.fa.fa-bathtub { + --fa: "\f2cd"; } -.fa.fa-s15:before { - content: "\f2cd"; } +.fa.fa-s15 { + --fa: "\f2cd"; } .fa.fa-window-maximize { font-family: 'Font Awesome 6 Free'; @@ -2130,22 +2130,22 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-times-rectangle:before { - content: "\f410"; } +.fa.fa-times-rectangle { + --fa: "\f410"; } .fa.fa-window-close-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-window-close-o:before { - content: "\f410"; } +.fa.fa-window-close-o { + --fa: "\f410"; } .fa.fa-times-rectangle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-times-rectangle-o:before { - content: "\f410"; } +.fa.fa-times-rectangle-o { + --fa: "\f410"; } .fa.fa-bandcamp { font-family: 'Font Awesome 6 Brands'; @@ -2171,15 +2171,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-eercast:before { - content: "\f2da"; } +.fa.fa-eercast { + --fa: "\f2da"; } .fa.fa-snowflake-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-snowflake-o:before { - content: "\f2dc"; } +.fa.fa-snowflake-o { + --fa: "\f2dc"; } .fa.fa-superpowers { font-family: 'Font Awesome 6 Brands'; diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf index 1fbb1f7c3..0f82a8360 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 index 5d2802169..3c5cf97ec 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf index 549d68dc0..9ee1919dc 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 index 18400d7fa..57d917965 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf index bb2a86956..1c10972ec 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 index 758dd4f60..16721020f 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf index 8c5864c42..3bcb67ffc 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 index f94bec227..fbafb2222 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/abp/core/abp.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/abp/core/abp.js index ad1d23844..021d3a86f 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/abp/core/abp.js +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/abp/core/abp.js @@ -480,7 +480,11 @@ var abp = abp || {}; var args = Array.prototype.slice.call(arguments, 1); for (var i = 0; i < callbacks.length; i++) { - callbacks[i].apply(this, args); + try { + callbacks[i].apply(this, args); + } catch(e) { + console.error(e); + } } }; diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js new file mode 100644 index 000000000..635baffa8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hi={days:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],daysShort:["सूर्य","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],daysMin:["र","सो","मं","बु","गु","शु","श"],months:["जनवरी","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्टूबर","नवंबर","दिसम्बर"],monthsShort:["जन","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितं","अक्टूबर","नवं","दिसम्बर"],today:"आज",monthsTitle:"महीने",clear:"साफ",weekStart:1,format:"dd / mm / yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js new file mode 100644 index 000000000..8b34bce0f --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js new file mode 100644 index 000000000..f9decf9a2 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hu={days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],daysShort:["vas","hét","ked","sze","csü","pén","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"töröl",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js new file mode 100644 index 000000000..a1cf653d3 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"],daysShort:["Կիր","Երկ","Երե","Չոր","Հին","Ուրբ","Շաբ"],daysMin:["Կի","Եկ","Եք","Չո","Հի","Ու","Շա"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հնվ","Փետ","Մար","Ապր","Մայ","Հուն","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ամիսնէր"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js new file mode 100644 index 000000000..bc9258d65 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],daysShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],daysMin:["Mg","Sn","Sl","Rb","Km","Jm","Sb"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],today:"Hari Ini",monthsTitle:"Bulan",clear:"Kosongkan",weekStart:0,format:"dd-mm-yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js new file mode 100644 index 000000000..f49bd18cc --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js new file mode 100644 index 000000000..7e1adbb95 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js new file mode 100644 index 000000000..cc30766ff --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",monthsTitle:"Mesi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js new file mode 100644 index 000000000..e321f04ff --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"],daysShort:["日","月","火","水","木","金","土"],daysMin:["日","月","火","水","木","金","土"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",titleFormat:"yyyy年mm月",clear:"クリア"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js new file mode 100644 index 000000000..84f14c0e9 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js new file mode 100644 index 000000000..bf2abc5d8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kh={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"},a.fn.datepicker.deprecated('The language code "kh" is deprecated and will be removed in 2.0. For Khmer support use "km" instead.')}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js new file mode 100644 index 000000000..f4e2f3f1a --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kk={days:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],daysShort:["Жек","Дүй","Сей","Сәр","Бей","Жұм","Сен"],daysMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],months:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthsShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],today:"Бүгін",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js new file mode 100644 index 000000000..648d83f84 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.km={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js new file mode 100644 index 000000000..9751ee5c2 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ko={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],today:"오늘",clear:"삭제",format:"yyyy-mm-dd",titleFormat:"yyyy년mm월",weekStart:0}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js new file mode 100644 index 000000000..43393409e --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kr={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},a.fn.datepicker.deprecated('The language code "kr" is deprecated and will be removed in 2.0. For korean support use "ko" instead.')}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js new file mode 100644 index 000000000..da78ea85f --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.lt={days:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"],daysShort:["S","Pr","A","T","K","Pn","Š"],daysMin:["Sk","Pr","An","Tr","Ke","Pn","Št"],months:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthsShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],today:"Šiandien",monthsTitle:"Mėnesiai",clear:"Išvalyti",weekStart:1,format:"yyyy-mm-dd"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js new file mode 100644 index 000000000..89cea00f8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.lv={days:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],daysShort:["Sv","P","O","T","C","Pk","S"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],months:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],monthsTitle:"Mēneši",today:"Šodien",clear:"Nodzēst",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js new file mode 100644 index 000000000..c65a89164 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbriši",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js new file mode 100644 index 000000000..46423f758 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mk={days:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],daysShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],daysMin:["Не","По","Вт","Ср","Че","Пе","Са"],months:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],today:"Денес",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js new file mode 100644 index 000000000..6ebaec9d8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mn={days:["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],daysShort:["Ням","Дав","Мяг","Лха","Пүр","Баа","Бям"],daysMin:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],months:["Хулгана","Үхэр","Бар","Туулай","Луу","Могой","Морь","Хонь","Бич","Тахиа","Нохой","Гахай"],monthsShort:["Хул","Үхэ","Бар","Туу","Луу","Мог","Мор","Хон","Бич","Тах","Нох","Гах"],today:"Өнөөдөр",clear:"Тодорхой",format:"yyyy.mm.dd",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js new file mode 100644 index 000000000..2f25159da --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mar={days:["रविवार","सोमवार","मंगळवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],daysShort:["रवि","सोम","मंगळ","बुध","गुरु","शुक्र","शनि"],daysMin:["र","सो","मं","बु","गु","शु","श"],months:["जानेवारी","फेब्रुवारी","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टेंबर","ऑक्टोबर","नोव्हेंबर","डिसेंबर"],monthsShort:["जाने.","फेब्रु.","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टें.","ऑक्टो.","नोव्हें.","डिसें."],today:"आज",monthsTitle:"महीने",clear:"हटवा",weekStart:1,format:"dd / mm / yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js new file mode 100644 index 000000000..47efafdc2 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini",clear:"Bersihkan"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js new file mode 100644 index 000000000..85d3146df --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js new file mode 100644 index 000000000..af977b71e --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js new file mode 100644 index 000000000..0c5136e44 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.no={days:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],daysShort:["søn","man","tir","ons","tor","fre","lør"],daysMin:["sø","ma","ti","on","to","fr","lø"],months:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthsShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],today:"i dag",monthsTitle:"Måneder",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js new file mode 100644 index 000000000..630fa16b9 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.oc={days:["Dimenge","Diluns","Dimars","Dimècres","Dijòus","Divendres","Dissabte"],daysShort:["Dim","Dil","Dmr","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dr","dc","dj","dv","ds"],months:["Genièr","Febrièr","Març","Abrial","Mai","Junh","Julhet","Agost","Setembre","Octobre","Novembre","Decembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Dec"],today:"Uèi",monthsTitle:"Meses",clear:"Escafar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js new file mode 100644 index 000000000..ffb30ec8b --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.pl={days:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],daysShort:["Niedz.","Pon.","Wt.","Śr.","Czw.","Piąt.","Sob."],daysMin:["Ndz.","Pn.","Wt.","Śr.","Czw.","Pt.","Sob."],months:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthsShort:["Sty.","Lut.","Mar.","Kwi.","Maj","Cze.","Lip.","Sie.","Wrz.","Paź.","Lis.","Gru."],today:"Dzisiaj",weekStart:1,clear:"Wyczyść",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js new file mode 100644 index 000000000..2d3f8afda --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js new file mode 100644 index 000000000..e2b4e64d7 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js new file mode 100644 index 000000000..5fff2986d --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js new file mode 100644 index 000000000..e520c9573 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["rs-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"},a.fn.datepicker.deprecated('This language code "rs-latin" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian latin support use "sr-latin" instead.')}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js new file mode 100644 index 000000000..ba95ae298 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.rs={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"},a.fn.datepicker.deprecated('This language code "rs" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian support use "sr" instead.')}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js new file mode 100644 index 000000000..52bc010b9 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Месяцы"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js new file mode 100644 index 000000000..b9746b8fc --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.si={days:["ඉරිදා","සඳුදා","අඟහරුවාදා","බදාදා","බ්‍රහස්පතින්දා","සිකුරාදා","සෙනසුරාදා"],daysShort:["ඉරි","සඳු","අඟ","බදා","බ්‍රහ","සිකු","සෙන"],daysMin:["ඉ","ස","අ","බ","බ්‍ර","සි","සෙ"],months:["ජනවාරි","පෙබරවාරි","මාර්තු","අප්‍රේල්","මැයි","ජුනි","ජූලි","අගෝස්තු","සැප්තැම්බර්","ඔක්තෝබර්","නොවැම්බර්","දෙසැම්බර්"],monthsShort:["ජන","පෙබ","මාර්","අප්‍රේ","මැයි","ජුනි","ජූලි","අගෝ","සැප්","ඔක්","නොවැ","දෙසැ"],today:"අද",monthsTitle:"මාස",clear:"මකන්න",weekStart:0,format:"yyyy-mm-dd"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js new file mode 100644 index 000000000..79a9267fd --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],daysMin:["Ne","Po","Ut","St","Št","Pia","So"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes",clear:"Vymazať",weekStart:1,format:"d.m.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js new file mode 100644 index 000000000..831cf7390 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],daysShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],daysMin:["Ne","Po","To","Sr","Če","Pe","So"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js new file mode 100644 index 000000000..8c586055a --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sq={days:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"],daysShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],daysMin:["Di","Hë","Ma","Më","En","Pr","Sht"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","Nën","Dhjet"],monthsTitle:"Muaj",today:"Sot",weekStart:1,format:"dd/mm/yyyy",clear:"Pastro"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js new file mode 100644 index 000000000..c6b7001ac --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js new file mode 100644 index 000000000..4e46dbf64 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sr={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js new file mode 100644 index 000000000..7ab6becb9 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sv={days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],daysShort:["sön","mån","tis","ons","tor","fre","lör"],daysMin:["sö","må","ti","on","to","fr","lö"],months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js new file mode 100644 index 000000000..e7909494a --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ta={days:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],daysShort:["ஞாயி","திங்","செவ்","புத","வியா","வெள்","சனி"],daysMin:["ஞா","தி","செ","பு","வி","வெ","ச"],months:["ஜனவரி","பிப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்டு","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்"],monthsShort:["ஜன","பிப்","மார்","ஏப்","மே","ஜூன்","ஜூலை","ஆக","செப்","அக்","நவ","டிச"],today:"இன்று",monthsTitle:"மாதங்கள்",clear:"நீக்கு",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js new file mode 100644 index 000000000..104b6dd95 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tg={days:["Якшанбе","Душанбе","Сешанбе","Чоршанбе","Панҷшанбе","Ҷумъа","Шанбе"],daysShort:["Яшб","Дшб","Сшб","Чшб","Пшб","Ҷум","Шнб"],daysMin:["Яш","Дш","Сш","Чш","Пш","Ҷм","Шб"],months:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Имрӯз",monthsTitle:"Моҳҳо",clear:"Тоза намудан",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js new file mode 100644 index 000000000..1e398ba8b --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.th={days:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"],daysShort:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],daysMin:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],today:"วันนี้"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js new file mode 100644 index 000000000..716edef2e --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tk={days:["Ýekşenbe","Duşenbe","Sişenbe","Çarşenbe","Penşenbe","Anna","Şenbe"],daysShort:["Ýek","Duş","Siş","Çar","Pen","Ann","Şen"],daysMin:["Ýe","Du","Si","Ça","Pe","An","Şe"],months:["Ýanwar","Fewral","Mart","Aprel","Maý","Iýun","Iýul","Awgust","Sentýabr","Oktýabr","Noýabr","Dekabr"],monthsShort:["Ýan","Few","Mar","Apr","Maý","Iýn","Iýl","Awg","Sen","Okt","Noý","Dek"],today:"Bu gün",monthsTitle:"Aýlar",clear:"Aýyr",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js new file mode 100644 index 000000000..7889b1135 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js new file mode 100644 index 000000000..a555be800 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js new file mode 100644 index 000000000..a0a8f213c --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["uz-cyrl"]={days:["Якшанба","Душанба","Сешанба","Чоршанба","Пайшанба","Жума","Шанба"],daysShort:["Якш","Ду","Се","Чор","Пай","Жу","Ша"],daysMin:["Як","Ду","Се","Чо","Па","Жу","Ша"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Бугун",clear:"Ўчириш",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ойлар"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js new file mode 100644 index 000000000..2f58e343e --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["uz-latn"]={days:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"],daysShort:["Yak","Du","Se","Chor","Pay","Ju","Sha"],daysMin:["Ya","Du","Se","Cho","Pa","Ju","Sha"],months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","Iyn","Iyl","Avg","Sen","Okt","Noy","Dek"],today:"Bugun",clear:"O'chirish",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Oylar"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js new file mode 100644 index 000000000..3311d23f8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],daysMin:["CN","T2","T3","T4","T5","T6","T7"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js new file mode 100644 index 000000000..8e6920b0c --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"选择月份",clear:"清除",format:"yyyy-mm-dd",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js new file mode 100644 index 000000000..5d2c0b55a --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["zh-TW"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["週日","週一","週二","週三","週四","週五","週六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"月份",format:"yyyy/mm/dd",weekStart:0,titleFormat:"yyyy年mm月",clear:"清除"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js index a3becee53..a372d5eb5 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js @@ -305,8 +305,8 @@ end = moment(val, this.locale.format); } if (start !== null && end !== null) { - this.setStartDate(start); - this.setEndDate(end); + this.setStartDate(start.startOf('day')); + this.setEndDate(end.startOf('day')); } } } @@ -370,10 +370,6 @@ this.container.find('.calendar-time').hide(); } - //can't be used together for now - if (this.timePicker && this.autoApply) - this.autoApply = false; - if (this.autoApply) { this.container.addClass('auto-apply'); } @@ -386,9 +382,7 @@ this.container.find('.drp-calendar.left').addClass('single'); this.container.find('.drp-calendar.left').show(); this.container.find('.drp-calendar.right').hide(); - if (!this.timePicker && this.autoApply) { - this.container.addClass('auto-apply'); - } + } if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) { @@ -898,6 +892,7 @@ // hours // + html = 's in some browsers, due to the limited stylability of `s in some browsers, due to the limited stylability of `