@ -0,0 +1,2 @@ |
|||||
|
[*.csproj] |
||||
|
indent_size = 2 |
||||
@ -0,0 +1 @@ |
|||||
|
**/wwwroot/libs/** linguist-vendored |
||||
@ -0,0 +1,274 @@ |
|||||
|
## Ignore Visual Studio temporary files, build results, and |
||||
|
## files generated by popular Visual Studio add-ons. |
||||
|
|
||||
|
# User-specific files |
||||
|
*.suo |
||||
|
*.user |
||||
|
*.userosscache |
||||
|
*.sln.docstates |
||||
|
|
||||
|
# User-specific files (MonoDevelop/Xamarin Studio) |
||||
|
*.userprefs |
||||
|
|
||||
|
# Build results |
||||
|
[Dd]ebug/ |
||||
|
[Dd]ebugPublic/ |
||||
|
[Rr]elease/ |
||||
|
[Rr]eleases/ |
||||
|
x64/ |
||||
|
x86/ |
||||
|
bld/ |
||||
|
[Bb]in/ |
||||
|
[Oo]bj/ |
||||
|
[Ll]og/ |
||||
|
|
||||
|
# Visual Studio 2015 cache/options directory |
||||
|
.vs/ |
||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot |
||||
|
#wwwroot/ |
||||
|
|
||||
|
# MSTest test Results |
||||
|
[Tt]est[Rr]esult*/ |
||||
|
[Bb]uild[Ll]og.* |
||||
|
|
||||
|
# NUNIT |
||||
|
*.VisualState.xml |
||||
|
TestResult.xml |
||||
|
|
||||
|
# Build Results of an ATL Project |
||||
|
[Dd]ebugPS/ |
||||
|
[Rr]eleasePS/ |
||||
|
dlldata.c |
||||
|
|
||||
|
# DNX |
||||
|
project.lock.json |
||||
|
artifacts/ |
||||
|
|
||||
|
*_i.c |
||||
|
*_p.c |
||||
|
*_i.h |
||||
|
*.ilk |
||||
|
*.meta |
||||
|
*.obj |
||||
|
*.pch |
||||
|
*.pdb |
||||
|
*.pgc |
||||
|
*.pgd |
||||
|
*.rsp |
||||
|
*.sbr |
||||
|
*.tlb |
||||
|
*.tli |
||||
|
*.tlh |
||||
|
*.tmp |
||||
|
*.tmp_proj |
||||
|
*.log |
||||
|
*.vspscc |
||||
|
*.vssscc |
||||
|
.builds |
||||
|
*.pidb |
||||
|
*.svclog |
||||
|
*.scc |
||||
|
|
||||
|
# Chutzpah Test files |
||||
|
_Chutzpah* |
||||
|
|
||||
|
# Visual C++ cache files |
||||
|
ipch/ |
||||
|
*.aps |
||||
|
*.ncb |
||||
|
*.opendb |
||||
|
*.opensdf |
||||
|
*.sdf |
||||
|
*.cachefile |
||||
|
*.VC.db |
||||
|
*.VC.VC.opendb |
||||
|
|
||||
|
# Visual Studio profiler |
||||
|
*.psess |
||||
|
*.vsp |
||||
|
*.vspx |
||||
|
*.sap |
||||
|
|
||||
|
# TFS 2012 Local Workspace |
||||
|
$tf/ |
||||
|
|
||||
|
# Guidance Automation Toolkit |
||||
|
*.gpState |
||||
|
|
||||
|
# ReSharper is a .NET coding add-in |
||||
|
_ReSharper*/ |
||||
|
*.[Rr]e[Ss]harper |
||||
|
*.DotSettings.user |
||||
|
|
||||
|
# JustCode is a .NET coding add-in |
||||
|
.JustCode |
||||
|
|
||||
|
# TeamCity is a build add-in |
||||
|
_TeamCity* |
||||
|
|
||||
|
# DotCover is a Code Coverage Tool |
||||
|
*.dotCover |
||||
|
|
||||
|
# NCrunch |
||||
|
_NCrunch_* |
||||
|
.*crunch*.local.xml |
||||
|
nCrunchTemp_* |
||||
|
|
||||
|
# MightyMoose |
||||
|
*.mm.* |
||||
|
AutoTest.Net/ |
||||
|
|
||||
|
# Web workbench (sass) |
||||
|
.sass-cache/ |
||||
|
|
||||
|
# Installshield output folder |
||||
|
[Ee]xpress/ |
||||
|
|
||||
|
# DocProject is a documentation generator add-in |
||||
|
DocProject/buildhelp/ |
||||
|
DocProject/Help/*.HxT |
||||
|
DocProject/Help/*.HxC |
||||
|
DocProject/Help/*.hhc |
||||
|
DocProject/Help/*.hhk |
||||
|
DocProject/Help/*.hhp |
||||
|
DocProject/Help/Html2 |
||||
|
DocProject/Help/html |
||||
|
|
||||
|
# Click-Once directory |
||||
|
publish/ |
||||
|
|
||||
|
# Publish Web Output |
||||
|
*.[Pp]ublish.xml |
||||
|
*.azurePubxml |
||||
|
# TODO: Comment the next line if you want to checkin your web deploy settings |
||||
|
# but database connection strings (with potential passwords) will be unencrypted |
||||
|
*.pubxml |
||||
|
*.publishproj |
||||
|
|
||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to |
||||
|
# checkin your Azure Web App publish settings, but sensitive information contained |
||||
|
# in these scripts will be unencrypted |
||||
|
PublishScripts/ |
||||
|
|
||||
|
# NuGet Packages |
||||
|
*.nupkg |
||||
|
# The packages folder can be ignored because of Package Restore |
||||
|
**/packages/* |
||||
|
# except build/, which is used as an MSBuild target. |
||||
|
!**/packages/build/ |
||||
|
# Uncomment if necessary however generally it will be regenerated when needed |
||||
|
#!**/packages/repositories.config |
||||
|
# NuGet v3's project.json files produces more ignoreable files |
||||
|
*.nuget.props |
||||
|
*.nuget.targets |
||||
|
|
||||
|
# Microsoft Azure Build Output |
||||
|
csx/ |
||||
|
*.build.csdef |
||||
|
|
||||
|
# Microsoft Azure Emulator |
||||
|
ecf/ |
||||
|
rcf/ |
||||
|
|
||||
|
# Windows Store app package directories and files |
||||
|
AppPackages/ |
||||
|
BundleArtifacts/ |
||||
|
Package.StoreAssociation.xml |
||||
|
_pkginfo.txt |
||||
|
|
||||
|
# Visual Studio cache files |
||||
|
# files ending in .cache can be ignored |
||||
|
*.[Cc]ache |
||||
|
# but keep track of directories ending in .cache |
||||
|
!*.[Cc]ache/ |
||||
|
|
||||
|
# Others |
||||
|
ClientBin/ |
||||
|
~$* |
||||
|
*~ |
||||
|
*.dbmdl |
||||
|
*.dbproj.schemaview |
||||
|
*.pfx |
||||
|
*.publishsettings |
||||
|
node_modules/ |
||||
|
orleans.codegen.cs |
||||
|
|
||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components |
||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) |
||||
|
#bower_components/ |
||||
|
|
||||
|
# RIA/Silverlight projects |
||||
|
Generated_Code/ |
||||
|
|
||||
|
# Backup & report files from converting an old project file |
||||
|
# to a newer Visual Studio version. Backup files are not needed, |
||||
|
# because we have git ;-) |
||||
|
_UpgradeReport_Files/ |
||||
|
Backup*/ |
||||
|
UpgradeLog*.XML |
||||
|
UpgradeLog*.htm |
||||
|
|
||||
|
# SQL Server files |
||||
|
*.mdf |
||||
|
*.ldf |
||||
|
|
||||
|
# Business Intelligence projects |
||||
|
*.rdl.data |
||||
|
*.bim.layout |
||||
|
*.bim_*.settings |
||||
|
|
||||
|
# Microsoft Fakes |
||||
|
FakesAssemblies/ |
||||
|
|
||||
|
# GhostDoc plugin setting file |
||||
|
*.GhostDoc.xml |
||||
|
|
||||
|
# Node.js Tools for Visual Studio |
||||
|
.ntvs_analysis.dat |
||||
|
|
||||
|
# Visual Studio 6 build log |
||||
|
*.plg |
||||
|
|
||||
|
# Visual Studio 6 workspace options file |
||||
|
*.opt |
||||
|
|
||||
|
# Visual Studio LightSwitch build output |
||||
|
**/*.HTMLClient/GeneratedArtifacts |
||||
|
**/*.DesktopClient/GeneratedArtifacts |
||||
|
**/*.DesktopClient/ModelManifest.xml |
||||
|
**/*.Server/GeneratedArtifacts |
||||
|
**/*.Server/ModelManifest.xml |
||||
|
_Pvt_Extensions |
||||
|
|
||||
|
# Paket dependency manager |
||||
|
.paket/paket.exe |
||||
|
paket-files/ |
||||
|
|
||||
|
# FAKE - F# Make |
||||
|
.fake/ |
||||
|
|
||||
|
# JetBrains Rider |
||||
|
**/.idea/ |
||||
|
*.sln.iml |
||||
|
|
||||
|
# ABP Studio |
||||
|
**/.abpstudio/ |
||||
|
|
||||
|
# BookStore |
||||
|
src/BookStore.Web/Logs/* |
||||
|
src/BookStore.Web.Host/Logs/* |
||||
|
src/BookStore.Web.Public/Logs/* |
||||
|
src/BookStore.Web.Public.Host/Logs/* |
||||
|
src/BookStore.AuthServer/Logs/* |
||||
|
src/BookStore.HttpApi.Host/Logs/* |
||||
|
src/BookStore.HttpApi.Host/Logs/* |
||||
|
src/BookStore.DbMigrator/Logs/* |
||||
|
src/BookStore.Blazor.Server/Logs/* |
||||
|
src/BookStore.Blazor.Server.Tiered/Logs/* |
||||
|
|
||||
|
# Use abp install-libs to restore. |
||||
|
**/wwwroot/libs/* |
||||
|
|
||||
|
# IdentityServer temp files |
||||
|
tempkey.rsa |
||||
|
tempkey.jwk |
||||
@ -0,0 +1,109 @@ |
|||||
|
{ |
||||
|
"template": "app", |
||||
|
"imports": { |
||||
|
"Volo.Abp.LeptonXLiteTheme": { |
||||
|
"version": "4.2.0", |
||||
|
"isInstalled": true |
||||
|
}, |
||||
|
"Volo.Abp.Account": { |
||||
|
"version": "9.2.0", |
||||
|
"isInstalled": true |
||||
|
}, |
||||
|
"Volo.Abp.OpenIddict": { |
||||
|
"version": "9.2.0", |
||||
|
"isInstalled": true |
||||
|
}, |
||||
|
"Volo.Abp.Identity": { |
||||
|
"version": "9.2.0", |
||||
|
"isInstalled": true |
||||
|
}, |
||||
|
"Volo.Abp.TenantManagement": { |
||||
|
"version": "9.2.0", |
||||
|
"isInstalled": true |
||||
|
}, |
||||
|
"Volo.Abp.SettingManagement": { |
||||
|
"version": "9.2.0", |
||||
|
"isInstalled": true |
||||
|
}, |
||||
|
"Volo.Abp.PermissionManagement": { |
||||
|
"version": "9.2.0", |
||||
|
"isInstalled": true |
||||
|
}, |
||||
|
"Volo.Abp.FeatureManagement": { |
||||
|
"version": "9.2.0", |
||||
|
"isInstalled": true |
||||
|
} |
||||
|
}, |
||||
|
"folders": { |
||||
|
"items": { |
||||
|
"src": {}, |
||||
|
"test": {} |
||||
|
} |
||||
|
}, |
||||
|
"packages": { |
||||
|
"BookStore.Application": { |
||||
|
"path": "src/BookStore.Application/BookStore.Application.abppkg", |
||||
|
"folder": "src" |
||||
|
}, |
||||
|
"BookStore.Application.Tests": { |
||||
|
"path": "test/BookStore.Application.Tests/BookStore.Application.Tests.abppkg", |
||||
|
"folder": "test" |
||||
|
}, |
||||
|
"BookStore.MongoDB": { |
||||
|
"path": "src/BookStore.MongoDB/BookStore.MongoDB.abppkg", |
||||
|
"folder": "src" |
||||
|
}, |
||||
|
"BookStore.MongoDB.Tests": { |
||||
|
"path": "test/BookStore.MongoDB.Tests/BookStore.MongoDB.Tests.abppkg", |
||||
|
"folder": "test" |
||||
|
}, |
||||
|
"BookStore.Domain.Shared": { |
||||
|
"path": "src/BookStore.Domain.Shared/BookStore.Domain.Shared.abppkg", |
||||
|
"folder": "src" |
||||
|
}, |
||||
|
"BookStore.Application.Contracts": { |
||||
|
"path": "src/BookStore.Application.Contracts/BookStore.Application.Contracts.abppkg", |
||||
|
"folder": "src" |
||||
|
}, |
||||
|
"BookStore.HttpApi": { |
||||
|
"path": "src/BookStore.HttpApi/BookStore.HttpApi.abppkg", |
||||
|
"folder": "src" |
||||
|
}, |
||||
|
"BookStore.HttpApi.Client": { |
||||
|
"path": "src/BookStore.HttpApi.Client/BookStore.HttpApi.Client.abppkg", |
||||
|
"folder": "src" |
||||
|
}, |
||||
|
"BookStore.TestBase": { |
||||
|
"path": "test/BookStore.TestBase/BookStore.TestBase.abppkg", |
||||
|
"folder": "test" |
||||
|
}, |
||||
|
"BookStore.Domain.Tests": { |
||||
|
"path": "test/BookStore.Domain.Tests/BookStore.Domain.Tests.abppkg", |
||||
|
"folder": "test" |
||||
|
}, |
||||
|
"BookStore.HttpApi.Client.ConsoleTestApp": { |
||||
|
"path": "test/BookStore.HttpApi.Client.ConsoleTestApp/BookStore.HttpApi.Client.ConsoleTestApp.abppkg", |
||||
|
"folder": "test" |
||||
|
}, |
||||
|
"BookStore.DbMigrator": { |
||||
|
"path": "src/BookStore.DbMigrator/BookStore.DbMigrator.abppkg", |
||||
|
"folder": "src" |
||||
|
}, |
||||
|
"BookStore.HttpApi.Host": { |
||||
|
"path": "src/BookStore.HttpApi.Host/BookStore.HttpApi.Host.abppkg", |
||||
|
"folder": "src" |
||||
|
}, |
||||
|
"BookStore.Blazor": { |
||||
|
"path": "src/BookStore.Blazor/BookStore.Blazor.abppkg", |
||||
|
"folder": "src" |
||||
|
}, |
||||
|
"BookStore.Blazor.Client": { |
||||
|
"path": "src/BookStore.Blazor.Client/BookStore.Blazor.Client.abppkg", |
||||
|
"folder": "src" |
||||
|
}, |
||||
|
"BookStore.Domain": { |
||||
|
"path": "src/BookStore.Domain/BookStore.Domain.abppkg", |
||||
|
"folder": "src" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,53 @@ |
|||||
|
{ |
||||
|
"id": "9776757a-16f5-4a1a-8449-62909978bb39", |
||||
|
"template": "app", |
||||
|
"versions": { |
||||
|
"AbpFramework": "9.2.0", |
||||
|
"AbpStudio": "1.0.1", |
||||
|
"TargetDotnetFramework": "net9.0" |
||||
|
}, |
||||
|
"modules": { |
||||
|
"BookStore": { |
||||
|
"path": "BookStore.abpmdl" |
||||
|
} |
||||
|
}, |
||||
|
"runProfiles": { |
||||
|
"Default": { |
||||
|
"path": "etc/abp-studio/run-profiles/Default.abprun.json" |
||||
|
} |
||||
|
}, |
||||
|
"options": { |
||||
|
"httpRequests": { |
||||
|
"ignoredUrls": [ |
||||
|
|
||||
|
] |
||||
|
} |
||||
|
}, |
||||
|
"creatingStudioConfiguration": { |
||||
|
"template": "app", |
||||
|
"createdAbpStudioVersion": "1.0.1", |
||||
|
"tiered": "false", |
||||
|
"runInstallLibs": "true", |
||||
|
"runBundling": "true", |
||||
|
"useLocalReferences": "false", |
||||
|
"multiTenancy": "true", |
||||
|
"includeTests": "true", |
||||
|
"kubernetesConfiguration": "false", |
||||
|
"uiFramework": "blazor", |
||||
|
"mobileFramework": "none", |
||||
|
"distributedEventBus": "none", |
||||
|
"databaseProvider": "mongodb", |
||||
|
"runDbMigrator": "true", |
||||
|
"theme": "leptonx-lite", |
||||
|
"themeStyle": "", |
||||
|
"themeMenuPlacement": "", |
||||
|
"mobileFramework": "none", |
||||
|
"progressiveWebApp": "false", |
||||
|
"runProgressiveWebAppSupport": "false", |
||||
|
"publicWebsite": "false", |
||||
|
"socialLogin": "true", |
||||
|
"selectedLanguages": ["English", "English (United Kingdom)", "简体中文", "Español", "العربية", "हिन्दी", "Português (Brasil)", "Français", "Русский", "Deutsch (Deuthschland)", "Türkçe", "Italiano", "Čeština", "Magyar", "Română (România)", "Svenska", "Suomi", "Slovenčina", "Íslenska", "繁體中z文", ], |
||||
|
"defaultLanguage": "English", |
||||
|
"createCommand": "abp new BookStore -t app --ui-framework blazor --database-provider mongodb --theme leptonx-lite --skip-migration --without-cms-kit -no-file-management" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,137 @@ |
|||||
|
|
||||
|
Microsoft Visual Studio Solution File, Format Version 12.00 |
||||
|
# Visual Studio Version 17 |
||||
|
VisualStudioVersion = 17.3.32611.2 |
||||
|
MinimumVisualStudioVersion = 10.0.40219.1 |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.Domain", "src\BookStore.Domain\BookStore.Domain.csproj", "{554AD327-6DBA-4F8F-96F8-81CE7A0C863F}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.Application", "src\BookStore.Application\BookStore.Application.csproj", "{1A94A50E-06DC-43C1-80B5-B662820EC3EB}" |
||||
|
EndProject |
||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{CA9AC87F-097E-4F15-8393-4BC07735A5B0}" |
||||
|
EndProject |
||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{04DBDB01-70F4-4E06-B468-8F87850B22BE}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.Application.Tests", "test\BookStore.Application.Tests\BookStore.Application.Tests.csproj", "{50B2631D-129C-47B3-A587-029CCD6099BC}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.MongoDB", "src\BookStore.MongoDB\BookStore.MongoDB.csproj", "{E3444355-D47E-431E-BDD0-DD3A7113B2AE}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.Domain.Shared", "src\BookStore.Domain.Shared\BookStore.Domain.Shared.csproj", "{42F719ED-8413-4895-B5B4-5AB56079BC66}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.Application.Contracts", "src\BookStore.Application.Contracts\BookStore.Application.Contracts.csproj", "{520659C8-C734-4298-A3DA-B539DB9DFC0B}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.HttpApi", "src\BookStore.HttpApi\BookStore.HttpApi.csproj", "{4164BDF7-F527-4E85-9CE6-E3C2D7426A27}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.HttpApi.Client", "src\BookStore.HttpApi.Client\BookStore.HttpApi.Client.csproj", "{3B5A0094-670D-4BB1-BFDD-61B88A8773DC}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.TestBase", "test\BookStore.TestBase\BookStore.TestBase.csproj", "{91853F21-9CD9-4132-BC29-A7D5D84FFFE7}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.Domain.Tests", "test\BookStore.Domain.Tests\BookStore.Domain.Tests.csproj", "{E512F4D9-9375-480F-A2F6-A46509F9D824}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.MongoDB.Tests", "test\BookStore.MongoDB.Tests\BookStore.MongoDB.Tests.csproj", "{6015D17B-104B-4EC2-A9B7-D8A40C891458}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.HttpApi.Client.ConsoleTestApp", "test\BookStore.HttpApi.Client.ConsoleTestApp\BookStore.HttpApi.Client.ConsoleTestApp.csproj", "{EF480016-9127-4916-8735-D2466BDBC582}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.DbMigrator", "src\BookStore.DbMigrator\BookStore.DbMigrator.csproj", "{70680696-BB1E-4383-BCB2-42C3767171FB}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.HttpApi.Host", "src\BookStore.HttpApi.Host\BookStore.HttpApi.Host.csproj", "{96E5259E-59A3-4FAF-BCD1-5BF8E74EF82C}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.Blazor", "src\BookStore.Blazor\BookStore.Blazor.csproj", "{2DC842B5-1705-4097-AD37-E889C1B97950}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BookStore.Blazor.Client", "src\BookStore.Blazor.Client\BookStore.Blazor.Client.csproj", "{9df63919-581a-488b-bfe3-0622a500a56c}" |
||||
|
EndProject |
||||
|
Global |
||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
||||
|
Debug|Any CPU = Debug|Any CPU |
||||
|
Release|Any CPU = Release|Any CPU |
||||
|
EndGlobalSection |
||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
||||
|
{554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{50B2631D-129C-47B3-A587-029CCD6099BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{50B2631D-129C-47B3-A587-029CCD6099BC}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{50B2631D-129C-47B3-A587-029CCD6099BC}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{50B2631D-129C-47B3-A587-029CCD6099BC}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{E3444355-D47E-431E-BDD0-DD3A7113B2AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{E3444355-D47E-431E-BDD0-DD3A7113B2AE}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{E3444355-D47E-431E-BDD0-DD3A7113B2AE}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{E3444355-D47E-431E-BDD0-DD3A7113B2AE}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{520659C8-C734-4298-A3DA-B539DB9DFC0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{520659C8-C734-4298-A3DA-B539DB9DFC0B}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{520659C8-C734-4298-A3DA-B539DB9DFC0B}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{520659C8-C734-4298-A3DA-B539DB9DFC0B}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{91853F21-9CD9-4132-BC29-A7D5D84FFFE7}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{E512F4D9-9375-480F-A2F6-A46509F9D824}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{E512F4D9-9375-480F-A2F6-A46509F9D824}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{E512F4D9-9375-480F-A2F6-A46509F9D824}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{E512F4D9-9375-480F-A2F6-A46509F9D824}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{6015D17B-104B-4EC2-A9B7-D8A40C891458}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{6015D17B-104B-4EC2-A9B7-D8A40C891458}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{6015D17B-104B-4EC2-A9B7-D8A40C891458}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{6015D17B-104B-4EC2-A9B7-D8A40C891458}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{EF480016-9127-4916-8735-D2466BDBC582}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{EF480016-9127-4916-8735-D2466BDBC582}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{EF480016-9127-4916-8735-D2466BDBC582}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{EF480016-9127-4916-8735-D2466BDBC582}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{70680696-BB1E-4383-BCB2-42C3767171FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{70680696-BB1E-4383-BCB2-42C3767171FB}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{70680696-BB1E-4383-BCB2-42C3767171FB}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{70680696-BB1E-4383-BCB2-42C3767171FB}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{96E5259E-59A3-4FAF-BCD1-5BF8E74EF82C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{96E5259E-59A3-4FAF-BCD1-5BF8E74EF82C}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{96E5259E-59A3-4FAF-BCD1-5BF8E74EF82C}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{96E5259E-59A3-4FAF-BCD1-5BF8E74EF82C}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{2DC842B5-1705-4097-AD37-E889C1B97950}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{2DC842B5-1705-4097-AD37-E889C1B97950}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{2DC842B5-1705-4097-AD37-E889C1B97950}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{2DC842B5-1705-4097-AD37-E889C1B97950}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{9df63919-581a-488b-bfe3-0622a500a56c}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{9df63919-581a-488b-bfe3-0622a500a56c}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{9df63919-581a-488b-bfe3-0622a500a56c}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{9df63919-581a-488b-bfe3-0622a500a56c}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
EndGlobalSection |
||||
|
GlobalSection(SolutionProperties) = preSolution |
||||
|
HideSolutionNode = FALSE |
||||
|
EndGlobalSection |
||||
|
GlobalSection(NestedProjects) = preSolution |
||||
|
{554AD327-6DBA-4F8F-96F8-81CE7A0C863F} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} |
||||
|
{1A94A50E-06DC-43C1-80B5-B662820EC3EB} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} |
||||
|
{50B2631D-129C-47B3-A587-029CCD6099BC} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} |
||||
|
{E3444355-D47E-431E-BDD0-DD3A7113B2AE} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} |
||||
|
{42F719ED-8413-4895-B5B4-5AB56079BC66} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} |
||||
|
{520659C8-C734-4298-A3DA-B539DB9DFC0B} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} |
||||
|
{4164BDF7-F527-4E85-9CE6-E3C2D7426A27} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} |
||||
|
{3B5A0094-670D-4BB1-BFDD-61B88A8773DC} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} |
||||
|
{91853F21-9CD9-4132-BC29-A7D5D84FFFE7} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} |
||||
|
{E512F4D9-9375-480F-A2F6-A46509F9D824} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} |
||||
|
{6015D17B-104B-4EC2-A9B7-D8A40C891458} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} |
||||
|
{EF480016-9127-4916-8735-D2466BDBC582} = {04DBDB01-70F4-4E06-B468-8F87850B22BE} |
||||
|
{70680696-BB1E-4383-BCB2-42C3767171FB} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} |
||||
|
{96E5259E-59A3-4FAF-BCD1-5BF8E74EF82C} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} |
||||
|
{2DC842B5-1705-4097-AD37-E889C1B97950} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} |
||||
|
{9df63919-581a-488b-bfe3-0622a500a56c} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} |
||||
|
EndGlobalSection |
||||
|
GlobalSection(ExtensibilityGlobals) = postSolution |
||||
|
SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F} |
||||
|
EndGlobalSection |
||||
|
EndGlobal |
||||
@ -0,0 +1,23 @@ |
|||||
|
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> |
||||
|
<s:Boolean x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/IntelliSenseCompletingCharacters/CSharpCompletingCharacters/UpgradedFromVSSettings/@EntryValue">True</s:Boolean> |
||||
|
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceDoWhileStatementBraces/@EntryIndexedValue">WARNING</s:String> |
||||
|
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceFixedStatementBraces/@EntryIndexedValue">WARNING</s:String> |
||||
|
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceForeachStatementBraces/@EntryIndexedValue">WARNING</s:String> |
||||
|
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceForStatementBraces/@EntryIndexedValue">WARNING</s:String> |
||||
|
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceIfStatementBraces/@EntryIndexedValue">WARNING</s:String> |
||||
|
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceLockStatementBraces/@EntryIndexedValue">WARNING</s:String> |
||||
|
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceUsingStatementBraces/@EntryIndexedValue">WARNING</s:String> |
||||
|
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceWhileStatementBraces/@EntryIndexedValue">WARNING</s:String> |
||||
|
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOR/@EntryValue">Required</s:String> |
||||
|
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_FOREACH/@EntryValue">Required</s:String> |
||||
|
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_IFELSE/@EntryValue">Required</s:String> |
||||
|
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_FOR_WHILE/@EntryValue">Required</s:String> |
||||
|
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/BRACES_REDUNDANT/@EntryValue">False</s:Boolean> |
||||
|
<s:Boolean x:Key="/Default/CodeStyle/Generate/=Implementations/@KeyIndexDefined">True</s:Boolean> |
||||
|
<s:String x:Key="/Default/CodeStyle/Generate/=Implementations/Options/=Async/@EntryIndexedValue">False</s:String> |
||||
|
<s:String x:Key="/Default/CodeStyle/Generate/=Implementations/Options/=Mutable/@EntryIndexedValue">False</s:String> |
||||
|
<s:Boolean x:Key="/Default/CodeStyle/Generate/=Overrides/@KeyIndexDefined">True</s:Boolean> |
||||
|
<s:String x:Key="/Default/CodeStyle/Generate/=Overrides/Options/=Async/@EntryIndexedValue">False</s:String> |
||||
|
<s:String x:Key="/Default/CodeStyle/Generate/=Overrides/Options/=Mutable/@EntryIndexedValue">False</s:String> |
||||
|
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SQL/@EntryIndexedValue">SQL</s:String> |
||||
|
</wpf:ResourceDictionary> |
||||
@ -0,0 +1,13 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<configuration> |
||||
|
<packageSources> |
||||
|
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" /> |
||||
|
</packageSources> |
||||
|
<packageSourceMapping> |
||||
|
<packageSource key="nuget.org"> |
||||
|
<package pattern="*" /> |
||||
|
<package pattern="Microsoft.*" /> |
||||
|
<package pattern="Volo.*" /> |
||||
|
</packageSource> |
||||
|
</packageSourceMapping> |
||||
|
</configuration> |
||||
@ -0,0 +1,59 @@ |
|||||
|
# BookStore |
||||
|
|
||||
|
## About this solution |
||||
|
|
||||
|
This is a layered startup solution based on [Domain Driven Design (DDD)](https://abp.io/docs/latest/framework/architecture/domain-driven-design) practises. All the fundamental ABP modules are already installed. Check the [Application Startup Template](https://abp.io/docs/latest/solution-templates/layered-web-application) documentation for more info. |
||||
|
|
||||
|
### Pre-requirements |
||||
|
|
||||
|
* [.NET9.0+ SDK](https://dotnet.microsoft.com/download/dotnet) |
||||
|
* [Node v18 or 20](https://nodejs.org/en) |
||||
|
|
||||
|
### Configurations |
||||
|
|
||||
|
The solution comes with a default configuration that works out of the box. However, you may consider to change the following configuration before running your solution: |
||||
|
|
||||
|
* Check the `ConnectionStrings` in `appsettings.json` files under the `BookStore.HttpApi.Host` and `BookStore.DbMigrator` projects and change it if you need. |
||||
|
|
||||
|
### Before running the application |
||||
|
|
||||
|
* Run `abp install-libs` command on your solution folder to install client-side package dependencies. This step is automatically done when you create a new solution, if you didn't especially disabled it. However, you should run it yourself if you have first cloned this solution from your source control, or added a new client-side package dependency to your solution. |
||||
|
* Run `BookStore.DbMigrator` to create the initial database. This step is also automatically done when you create a new solution, if you didn't especially disabled it. This should be done in the first run. It is also needed if a new database migration is added to the solution later. |
||||
|
|
||||
|
#### Generating a Signing Certificate |
||||
|
|
||||
|
In the production environment, you need to use a production signing certificate. ABP Framework sets up signing and encryption certificates in your application and expects an `openiddict.pfx` file in your application. |
||||
|
|
||||
|
To generate a signing certificate, you can use the following command: |
||||
|
|
||||
|
```bash |
||||
|
dotnet dev-certs https -v -ep openiddict.pfx -p 2dae3a4f-9e73-4cb7-b7b9-7ec95c44e1a3 |
||||
|
``` |
||||
|
|
||||
|
> `2dae3a4f-9e73-4cb7-b7b9-7ec95c44e1a3` is the password of the certificate, you can change it to any password you want. |
||||
|
|
||||
|
It is recommended to use **two** RSA certificates, distinct from the certificate(s) used for HTTPS: one for encryption, one for signing. |
||||
|
|
||||
|
For more information, please refer to: [OpenIddict Certificate Configuration](https://documentation.openiddict.com/configuration/encryption-and-signing-credentials.html#registering-a-certificate-recommended-for-production-ready-scenarios) |
||||
|
|
||||
|
> Also, see the [Configuring OpenIddict](https://abp.io/docs/latest/Deployment/Configuring-OpenIddict#production-environment) documentation for more information. |
||||
|
|
||||
|
### Solution structure |
||||
|
|
||||
|
This is a layered monolith application that consists of the following applications: |
||||
|
|
||||
|
* `BookStore.DbMigrator`: A console application which applies the migrations and also seeds the initial data. It is useful on development as well as on production environment. |
||||
|
* `BookStore.HttpApi.Host`: ASP.NET Core API application that is used to expose the APIs to the clients. |
||||
|
* `BookStore.Blazor`: ASP.NET Core Blazor Server application that is the essential web application of the solution. |
||||
|
|
||||
|
|
||||
|
## Deploying the application |
||||
|
|
||||
|
Deploying an ABP application follows the same process as deploying any .NET or ASP.NET Core application. However, there are important considerations to keep in mind. For detailed guidance, refer to ABP's [deployment documentation](https://abp.io/docs/latest/Deployment/Index). |
||||
|
|
||||
|
### Additional resources |
||||
|
|
||||
|
You can see the following resources to learn more about your solution and the ABP Framework: |
||||
|
|
||||
|
* [Web Application Development Tutorial](https://abp.io/docs/latest/tutorials/book-store/part-1) |
||||
|
* [Application Startup Template](https://abp.io/docs/latest/startup-templates/application/index) |
||||
@ -0,0 +1,19 @@ |
|||||
|
<Project> |
||||
|
<PropertyGroup> |
||||
|
<LangVersion>latest</LangVersion> |
||||
|
<Version>1.0.0</Version> |
||||
|
<NoWarn>$(NoWarn);CS1591</NoWarn> |
||||
|
<AbpProjectType>app</AbpProjectType> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<Target Name="NoWarnOnRazorViewImportedTypeConflicts" BeforeTargets="RazorCoreCompile"> |
||||
|
<PropertyGroup> |
||||
|
<NoWarn>$(NoWarn);0436</NoWarn> |
||||
|
</PropertyGroup> |
||||
|
</Target> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<Content Remove="$(UserProfile)\.nuget\packages\*\*\contentFiles\any\*\*.abppkg*" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
||||
@ -0,0 +1,28 @@ |
|||||
|
{ |
||||
|
"applications": { |
||||
|
"BookStore.HttpApi.Host": { |
||||
|
"type": "dotnet-project", |
||||
|
"launchUrl": "https://localhost:44318", |
||||
|
"path": "../../../src/BookStore.HttpApi.Host/BookStore.HttpApi.Host.csproj", |
||||
|
"kubernetesService": ".*-httpapihost$", |
||||
|
"healthCheckEndpoint": "/health-status", |
||||
|
"healthUiEndpoint": "/health-ui", |
||||
|
"execution": { |
||||
|
"order": 4 |
||||
|
} |
||||
|
}, |
||||
|
"BookStore.Blazor": { |
||||
|
"type": "dotnet-project", |
||||
|
"launchUrl": "https://localhost:44376", |
||||
|
"path": "../../../src/BookStore.Blazor/BookStore.Blazor.csproj", |
||||
|
"healthCheckEndpoint": "/", |
||||
|
"kubernetesService": ".*-blazor$", |
||||
|
"execution": { |
||||
|
"order": 2 |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
"containers": { |
||||
|
"serviceName": "BookStore-Containers", |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,3 @@ |
|||||
|
{ |
||||
|
"role": "lib.application-contracts" |
||||
|
} |
||||
@ -0,0 +1,118 @@ |
|||||
|
{ |
||||
|
"name": "BookStore.Application.Contracts", |
||||
|
"hash": "", |
||||
|
"contents": [ |
||||
|
{ |
||||
|
"namespace": "BookStore", |
||||
|
"dependsOnModules": [ |
||||
|
{ |
||||
|
"declaringAssemblyName": "BookStore.Domain.Shared", |
||||
|
"namespace": "BookStore", |
||||
|
"name": "BookStoreDomainSharedModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.FeatureManagement.Application.Contracts", |
||||
|
"namespace": "Volo.Abp.FeatureManagement", |
||||
|
"name": "AbpFeatureManagementApplicationContractsModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.SettingManagement.Application.Contracts", |
||||
|
"namespace": "Volo.Abp.SettingManagement", |
||||
|
"name": "AbpSettingManagementApplicationContractsModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.Identity.Pro.Application.Contracts", |
||||
|
"namespace": "Volo.Abp.Identity", |
||||
|
"name": "AbpIdentityApplicationContractsModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.Account.Pro.Public.Application.Contracts", |
||||
|
"namespace": "Volo.Abp.Account", |
||||
|
"name": "AbpAccountPublicApplicationContractsModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.Account.Pro.Admin.Application.Contracts", |
||||
|
"namespace": "Volo.Abp.Account", |
||||
|
"name": "AbpAccountAdminApplicationContractsModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.AuditLogging.Application.Contracts", |
||||
|
"namespace": "Volo.Abp.AuditLogging", |
||||
|
"name": "AbpAuditLoggingApplicationContractsModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.OpenIddict.Pro.Application.Contracts", |
||||
|
"namespace": "Volo.Abp.OpenIddict", |
||||
|
"name": "AbpOpenIddictProApplicationContractsModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.TextTemplateManagement.Application.Contracts", |
||||
|
"namespace": "Volo.Abp.TextTemplateManagement", |
||||
|
"name": "TextTemplateManagementApplicationContractsModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.LanguageManagement.Application.Contracts", |
||||
|
"namespace": "Volo.Abp.LanguageManagement", |
||||
|
"name": "LanguageManagementApplicationContractsModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.Gdpr.Application.Contracts", |
||||
|
"namespace": "Volo.Abp.Gdpr", |
||||
|
"name": "AbpGdprApplicationContractsModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.PermissionManagement.Application.Contracts", |
||||
|
"namespace": "Volo.Abp.PermissionManagement", |
||||
|
"name": "AbpPermissionManagementApplicationContractsModule" |
||||
|
} |
||||
|
], |
||||
|
"implementingInterfaces": [ |
||||
|
{ |
||||
|
"name": "IAbpModule", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IAbpModule" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IOnPreApplicationInitialization", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IOnApplicationInitialization", |
||||
|
"namespace": "Volo.Abp", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.IOnApplicationInitialization" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IOnPostApplicationInitialization", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IOnApplicationShutdown", |
||||
|
"namespace": "Volo.Abp", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.IOnApplicationShutdown" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IPreConfigureServices", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IPreConfigureServices" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IPostConfigureServices", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IPostConfigureServices" |
||||
|
} |
||||
|
], |
||||
|
"contentType": "abpModule", |
||||
|
"name": "BookStoreApplicationContractsModule", |
||||
|
"summary": null |
||||
|
} |
||||
|
] |
||||
|
} |
||||
@ -0,0 +1,24 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk"> |
||||
|
|
||||
|
<Import Project="..\..\common.props" /> |
||||
|
|
||||
|
<PropertyGroup> |
||||
|
<TargetFramework>net9.0</TargetFramework> |
||||
|
<Nullable>enable</Nullable> |
||||
|
<RootNamespace>BookStore</RootNamespace> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<ProjectReference Include="..\BookStore.Domain.Shared\BookStore.Domain.Shared.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Volo.Abp.PermissionManagement.Application.Contracts" /> |
||||
|
<PackageReference Include="Volo.Abp.FeatureManagement.Application.Contracts" /> |
||||
|
<PackageReference Include="Volo.Abp.SettingManagement.Application.Contracts" /> |
||||
|
<PackageReference Include="Volo.Abp.Identity.Application.Contracts" /> |
||||
|
<PackageReference Include="Volo.Abp.Account.Application.Contracts" /> |
||||
|
<PackageReference Include="Volo.Abp.TenantManagement.Application.Contracts" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
||||
@ -0,0 +1,26 @@ |
|||||
|
using Volo.Abp.Account; |
||||
|
using Volo.Abp.Modularity; |
||||
|
using Volo.Abp.PermissionManagement; |
||||
|
using Volo.Abp.SettingManagement; |
||||
|
using Volo.Abp.FeatureManagement; |
||||
|
using Volo.Abp.Identity; |
||||
|
using Volo.Abp.TenantManagement; |
||||
|
|
||||
|
namespace BookStore; |
||||
|
|
||||
|
[DependsOn( |
||||
|
typeof(BookStoreDomainSharedModule), |
||||
|
typeof(AbpFeatureManagementApplicationContractsModule), |
||||
|
typeof(AbpSettingManagementApplicationContractsModule), |
||||
|
typeof(AbpIdentityApplicationContractsModule), |
||||
|
typeof(AbpAccountApplicationContractsModule), |
||||
|
typeof(AbpTenantManagementApplicationContractsModule), |
||||
|
typeof(AbpPermissionManagementApplicationContractsModule) |
||||
|
)] |
||||
|
public class BookStoreApplicationContractsModule : AbpModule |
||||
|
{ |
||||
|
public override void PreConfigureServices(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
BookStoreDtoExtensions.Configure(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,28 @@ |
|||||
|
using Volo.Abp.Identity; |
||||
|
using Volo.Abp.ObjectExtending; |
||||
|
using Volo.Abp.Threading; |
||||
|
|
||||
|
namespace BookStore; |
||||
|
|
||||
|
public static class BookStoreDtoExtensions |
||||
|
{ |
||||
|
private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); |
||||
|
|
||||
|
public static void Configure() |
||||
|
{ |
||||
|
OneTimeRunner.Run(() => |
||||
|
{ |
||||
|
/* You can add extension properties to DTOs |
||||
|
* defined in the depended modules. |
||||
|
* |
||||
|
* Example: |
||||
|
* |
||||
|
* ObjectExtensionManager.Instance |
||||
|
* .AddOrUpdateProperty<IdentityRoleDto, string>("Title"); |
||||
|
* |
||||
|
* See the documentation for more: |
||||
|
* https://docs.abp.io/en/abp/latest/Object-Extensions
|
||||
|
*/ |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,22 @@ |
|||||
|
using BookStore.Localization; |
||||
|
using Volo.Abp.Authorization.Permissions; |
||||
|
using Volo.Abp.Localization; |
||||
|
using Volo.Abp.MultiTenancy; |
||||
|
|
||||
|
namespace BookStore.Permissions; |
||||
|
|
||||
|
public class BookStorePermissionDefinitionProvider : PermissionDefinitionProvider |
||||
|
{ |
||||
|
public override void Define(IPermissionDefinitionContext context) |
||||
|
{ |
||||
|
var myGroup = context.AddGroup(BookStorePermissions.GroupName); |
||||
|
|
||||
|
//Define your own permissions here. Example:
|
||||
|
//myGroup.AddPermission(BookStorePermissions.MyPermission1, L("Permission:MyPermission1"));
|
||||
|
} |
||||
|
|
||||
|
private static LocalizableString L(string name) |
||||
|
{ |
||||
|
return LocalizableString.Create<BookStoreResource>(name); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,11 @@ |
|||||
|
namespace BookStore.Permissions; |
||||
|
|
||||
|
public static class BookStorePermissions |
||||
|
{ |
||||
|
public const string GroupName = "BookStore"; |
||||
|
|
||||
|
|
||||
|
|
||||
|
//Add your own permission names. Example:
|
||||
|
//public const string MyPermission1 = GroupName + ".MyPermission1";
|
||||
|
} |
||||
@ -0,0 +1,3 @@ |
|||||
|
{ |
||||
|
"role": "lib.application" |
||||
|
} |
||||
@ -0,0 +1,123 @@ |
|||||
|
{ |
||||
|
"name": "BookStore.Application", |
||||
|
"hash": "", |
||||
|
"contents": [ |
||||
|
{ |
||||
|
"namespace": "BookStore", |
||||
|
"dependsOnModules": [ |
||||
|
{ |
||||
|
"declaringAssemblyName": "BookStore.Domain", |
||||
|
"namespace": "BookStore", |
||||
|
"name": "BookStoreDomainModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "BookStore.Application.Contracts", |
||||
|
"namespace": "BookStore", |
||||
|
"name": "BookStoreApplicationContractsModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.PermissionManagement.Application", |
||||
|
"namespace": "Volo.Abp.PermissionManagement", |
||||
|
"name": "AbpPermissionManagementApplicationModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.FeatureManagement.Application", |
||||
|
"namespace": "Volo.Abp.FeatureManagement", |
||||
|
"name": "AbpFeatureManagementApplicationModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.Identity.Pro.Application", |
||||
|
"namespace": "Volo.Abp.Identity", |
||||
|
"name": "AbpIdentityApplicationModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.Account.Pro.Public.Application", |
||||
|
"namespace": "Volo.Abp.Account", |
||||
|
"name": "AbpAccountPublicApplicationModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.Account.Pro.Admin.Application", |
||||
|
"namespace": "Volo.Abp.Account", |
||||
|
"name": "AbpAccountAdminApplicationModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.AuditLogging.Application", |
||||
|
"namespace": "Volo.Abp.AuditLogging", |
||||
|
"name": "AbpAuditLoggingApplicationModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.TextTemplateManagement.Application", |
||||
|
"namespace": "Volo.Abp.TextTemplateManagement", |
||||
|
"name": "TextTemplateManagementApplicationModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.OpenIddict.Pro.Application", |
||||
|
"namespace": "Volo.Abp.OpenIddict", |
||||
|
"name": "AbpOpenIddictProApplicationModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.LanguageManagement.Application", |
||||
|
"namespace": "Volo.Abp.LanguageManagement", |
||||
|
"name": "LanguageManagementApplicationModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.Gdpr.Application", |
||||
|
"namespace": "Volo.Abp.Gdpr", |
||||
|
"name": "AbpGdprApplicationModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.SettingManagement.Application", |
||||
|
"namespace": "Volo.Abp.SettingManagement", |
||||
|
"name": "AbpSettingManagementApplicationModule" |
||||
|
} |
||||
|
], |
||||
|
"implementingInterfaces": [ |
||||
|
{ |
||||
|
"name": "IAbpModule", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IAbpModule" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IOnPreApplicationInitialization", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IOnApplicationInitialization", |
||||
|
"namespace": "Volo.Abp", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.IOnApplicationInitialization" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IOnPostApplicationInitialization", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IOnApplicationShutdown", |
||||
|
"namespace": "Volo.Abp", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.IOnApplicationShutdown" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IPreConfigureServices", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IPreConfigureServices" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IPostConfigureServices", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IPostConfigureServices" |
||||
|
} |
||||
|
], |
||||
|
"contentType": "abpModule", |
||||
|
"name": "BookStoreApplicationModule", |
||||
|
"summary": null |
||||
|
} |
||||
|
] |
||||
|
} |
||||
@ -0,0 +1,25 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk"> |
||||
|
|
||||
|
<Import Project="..\..\common.props" /> |
||||
|
|
||||
|
<PropertyGroup> |
||||
|
<TargetFramework>net9.0</TargetFramework> |
||||
|
<Nullable>enable</Nullable> |
||||
|
<RootNamespace>BookStore</RootNamespace> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<ProjectReference Include="..\BookStore.Domain\BookStore.Domain.csproj" /> |
||||
|
<ProjectReference Include="..\BookStore.Application.Contracts\BookStore.Application.Contracts.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Volo.Abp.PermissionManagement.Application" /> |
||||
|
<PackageReference Include="Volo.Abp.FeatureManagement.Application" /> |
||||
|
<PackageReference Include="Volo.Abp.SettingManagement.Application" /> |
||||
|
<PackageReference Include="Volo.Abp.Account.Application" /> |
||||
|
<PackageReference Include="Volo.Abp.Identity.Application" /> |
||||
|
<PackageReference Include="Volo.Abp.TenantManagement.Application" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
||||
@ -0,0 +1,14 @@ |
|||||
|
using BookStore.Localization; |
||||
|
using Volo.Abp.Application.Services; |
||||
|
|
||||
|
namespace BookStore; |
||||
|
|
||||
|
/* Inherit your application services from this class. |
||||
|
*/ |
||||
|
public abstract class BookStoreAppService : ApplicationService |
||||
|
{ |
||||
|
protected BookStoreAppService() |
||||
|
{ |
||||
|
LocalizationResource = typeof(BookStoreResource); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,13 @@ |
|||||
|
using AutoMapper; |
||||
|
|
||||
|
namespace BookStore; |
||||
|
|
||||
|
public class BookStoreApplicationAutoMapperProfile : Profile |
||||
|
{ |
||||
|
public BookStoreApplicationAutoMapperProfile() |
||||
|
{ |
||||
|
/* You can configure your AutoMapper mapping configuration here. |
||||
|
* Alternatively, you can split your mapping configurations |
||||
|
* into multiple profile classes for a better organization. */ |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,31 @@ |
|||||
|
using Volo.Abp.PermissionManagement; |
||||
|
using Volo.Abp.SettingManagement; |
||||
|
using Volo.Abp.Account; |
||||
|
using Volo.Abp.Identity; |
||||
|
using Volo.Abp.AutoMapper; |
||||
|
using Volo.Abp.FeatureManagement; |
||||
|
using Volo.Abp.Modularity; |
||||
|
using Volo.Abp.TenantManagement; |
||||
|
|
||||
|
namespace BookStore; |
||||
|
|
||||
|
[DependsOn( |
||||
|
typeof(BookStoreDomainModule), |
||||
|
typeof(BookStoreApplicationContractsModule), |
||||
|
typeof(AbpPermissionManagementApplicationModule), |
||||
|
typeof(AbpFeatureManagementApplicationModule), |
||||
|
typeof(AbpIdentityApplicationModule), |
||||
|
typeof(AbpAccountApplicationModule), |
||||
|
typeof(AbpTenantManagementApplicationModule), |
||||
|
typeof(AbpSettingManagementApplicationModule) |
||||
|
)] |
||||
|
public class BookStoreApplicationModule : AbpModule |
||||
|
{ |
||||
|
public override void ConfigureServices(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
Configure<AbpAutoMapperOptions>(options => |
||||
|
{ |
||||
|
options.AddMaps<BookStoreApplicationModule>(); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,2 @@ |
|||||
|
using System.Runtime.CompilerServices; |
||||
|
[assembly:InternalsVisibleToAttribute("BookStore.Application.Tests")] |
||||
@ -0,0 +1,3 @@ |
|||||
|
{ |
||||
|
"role": "lib.blazor-wasm-client" |
||||
|
} |
||||
@ -0,0 +1,38 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly"> |
||||
|
|
||||
|
<Import Project="..\..\common.props" /> |
||||
|
|
||||
|
<PropertyGroup> |
||||
|
<TargetFramework>net9.0</TargetFramework> |
||||
|
<Nullable>enable</Nullable> |
||||
|
<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<!-- <PackageReference Include="Blazorise.Bootstrap5" Version="1.7.6" /> |
||||
|
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="1.7.6" /> |
||||
|
<PackageReference Include="Blazorise.Components" Version="1.7.6" /> --> |
||||
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" /> |
||||
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Volo.Abp.Autofac.WebAssembly" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<ProjectReference Include="..\..\..\..\modules\AntDesignTheme\Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme\Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<ProjectReference Include="..\..\..\..\modules\IdentityManagement\Lsw.Abp.IdentityManagement.Blazor.WebAssembly.AntDesignUI\Lsw.Abp.IdentityManagement.Blazor.WebAssembly.AntDesignUI.csproj" /> |
||||
|
<ProjectReference Include="..\..\..\..\modules\SettingManagement\Lsw.Abp.SettingManagement.Blazor.WebAssembly.AntDesignUI\Lsw.Abp.SettingManagement.Blazor.WebAssembly.AntDesignUI.csproj" /> |
||||
|
<ProjectReference Include="..\..\..\..\modules\TenantManagement\Lsw.Abp.TenantManagement.Blazor.WebAssembly.AntDesignUI\Lsw.Abp.TenantManagement.Blazor.WebAssembly.AntDesignUI.csproj" /> |
||||
|
<ProjectReference Include="..\..\..\..\modules\FeatureManagement\Lsw.Abp.FeatureManagement.Blazor.WebAssembly.AntDesignUI\Lsw.Abp.FeatureManagement.Blazor.WebAssembly.AntDesignUI.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<ProjectReference Include="..\..\src\BookStore.HttpApi.Client\BookStore.HttpApi.Client.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
||||
@ -0,0 +1,11 @@ |
|||||
|
using AutoMapper; |
||||
|
|
||||
|
namespace BookStore.Blazor.Client; |
||||
|
|
||||
|
public class BookStoreBlazorAutoMapperProfile : Profile |
||||
|
{ |
||||
|
public BookStoreBlazorAutoMapperProfile() |
||||
|
{ |
||||
|
//Define your AutoMapper configuration here for the Blazor project.
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,112 @@ |
|||||
|
using System; |
||||
|
using System.Net.Http; |
||||
|
using Microsoft.AspNetCore.Components.WebAssembly.Hosting; |
||||
|
using Microsoft.Extensions.Configuration; |
||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
using BookStore.Blazor.Client.Navigation; |
||||
|
using Localization.Resources.AbpUi; |
||||
|
using Volo.Abp.Localization; |
||||
|
using BookStore.Localization; |
||||
|
using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Routing; |
||||
|
using Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme; |
||||
|
using Lsw.Abp.FeatureManagement.Blazor.WebAssembly.AntDesignUI; |
||||
|
using Lsw.Abp.IdentityManagement.Blazor.WebAssembly.AntDesignUI; |
||||
|
using Lsw.Abp.SettingManagement.Blazor.WebAssembly.AntDesignUI; |
||||
|
using Lsw.Abp.TenantManagement.Blazor.WebAssembly.AntDesignUI; |
||||
|
using OpenIddict.Abstractions; |
||||
|
using Volo.Abp.Autofac.WebAssembly; |
||||
|
using Volo.Abp.AutoMapper; |
||||
|
using Volo.Abp.Modularity; |
||||
|
using Volo.Abp.UI.Navigation; |
||||
|
|
||||
|
namespace BookStore.Blazor.Client; |
||||
|
|
||||
|
[DependsOn( |
||||
|
typeof(AbpAutofacWebAssemblyModule), |
||||
|
typeof(AbpIdentityBlazorWebAssemblyAntDesignModule), |
||||
|
typeof(AbpSettingManagementBlazorWebAssemblyAntDesignModule), |
||||
|
typeof(AbpFeatureManagementBlazorWebAssemblyAntDesignModule), |
||||
|
typeof(AbpTenantManagementBlazorWebAssemblyAntDesignModule), |
||||
|
typeof(AbpAspNetCoreComponentsWebAssemblyAntDesignThemeModule), |
||||
|
typeof(BookStoreHttpApiClientModule) |
||||
|
)] |
||||
|
public class BookStoreBlazorClientModule : AbpModule |
||||
|
{ |
||||
|
public override void ConfigureServices(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
var environment = context.Services.GetSingletonInstance<IWebAssemblyHostEnvironment>(); |
||||
|
var builder = context.Services.GetSingletonInstance<WebAssemblyHostBuilder>(); |
||||
|
|
||||
|
ConfigureLocalization(); |
||||
|
ConfigureAuthentication(builder); |
||||
|
ConfigureHttpClient(context, environment); |
||||
|
//ConfigureBlazorise(context);
|
||||
|
ConfigureRouter(context); |
||||
|
ConfigureMenu(context); |
||||
|
ConfigureAutoMapper(context); |
||||
|
} |
||||
|
|
||||
|
private void ConfigureLocalization() |
||||
|
{ |
||||
|
Configure<AbpLocalizationOptions>(options => |
||||
|
{ |
||||
|
options.Resources |
||||
|
.Get<BookStoreResource>() |
||||
|
.AddBaseTypes(typeof(AbpUiResource)); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
private void ConfigureRouter(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
Configure<AbpRouterOptions>(options => |
||||
|
{ |
||||
|
options.AppAssembly = typeof(BookStoreBlazorClientModule).Assembly; |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
private void ConfigureMenu(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
Configure<AbpNavigationOptions>(options => |
||||
|
{ |
||||
|
options.MenuContributors.Add(new BookStoreMenuContributor(context.Services.GetConfiguration())); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
// private void ConfigureBlazorise(ServiceConfigurationContext context)
|
||||
|
// {
|
||||
|
// context.Services
|
||||
|
// .AddBootstrap5Providers()
|
||||
|
// .AddFontAwesomeIcons();
|
||||
|
// }
|
||||
|
|
||||
|
private static void ConfigureAuthentication(WebAssemblyHostBuilder builder) |
||||
|
{ |
||||
|
builder.Services.AddOidcAuthentication(options => |
||||
|
{ |
||||
|
builder.Configuration.Bind("AuthServer", options.ProviderOptions); |
||||
|
options.UserOptions.NameClaim = OpenIddictConstants.Claims.Name; |
||||
|
options.UserOptions.RoleClaim = OpenIddictConstants.Claims.Role; |
||||
|
|
||||
|
options.ProviderOptions.DefaultScopes.Add("BookStore"); |
||||
|
options.ProviderOptions.DefaultScopes.Add("roles"); |
||||
|
options.ProviderOptions.DefaultScopes.Add("email"); |
||||
|
options.ProviderOptions.DefaultScopes.Add("phone"); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
private static void ConfigureHttpClient(ServiceConfigurationContext context, IWebAssemblyHostEnvironment environment) |
||||
|
{ |
||||
|
context.Services.AddTransient(sp => new HttpClient |
||||
|
{ |
||||
|
BaseAddress = new Uri(environment.BaseAddress) |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
private void ConfigureAutoMapper(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
Configure<AbpAutoMapperOptions>(options => |
||||
|
{ |
||||
|
options.AddMaps<BookStoreBlazorClientModule>(); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,21 @@ |
|||||
|
using Microsoft.Extensions.Localization; |
||||
|
using BookStore.Localization; |
||||
|
using Microsoft.Extensions.Localization; |
||||
|
using BookStore.Localization; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
using Volo.Abp.Ui.Branding; |
||||
|
|
||||
|
namespace BookStore.Blazor.Client; |
||||
|
|
||||
|
[Dependency(ReplaceServices = true)] |
||||
|
public class BookStoreBrandingProvider : DefaultBrandingProvider |
||||
|
{ |
||||
|
private IStringLocalizer<BookStoreResource> _localizer; |
||||
|
|
||||
|
public BookStoreBrandingProvider(IStringLocalizer<BookStoreResource> localizer) |
||||
|
{ |
||||
|
_localizer = localizer; |
||||
|
} |
||||
|
|
||||
|
public override string AppName => _localizer["AppName"]; |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
using BookStore.Localization; |
||||
|
using Volo.Abp.AspNetCore.Components; |
||||
|
|
||||
|
namespace BookStore.Blazor.Client; |
||||
|
|
||||
|
public abstract class BookStoreComponentBase : AbpComponentBase |
||||
|
{ |
||||
|
protected BookStoreComponentBase() |
||||
|
{ |
||||
|
LocalizationResource = typeof(BookStoreResource); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,81 @@ |
|||||
|
using System; |
||||
|
using System.Threading.Tasks; |
||||
|
using AntDesign; |
||||
|
using Microsoft.Extensions.Configuration; |
||||
|
using BookStore.Localization; |
||||
|
using BookStore.Permissions; |
||||
|
using BookStore.MultiTenancy; |
||||
|
using Lsw.Abp.IdentityManagement.Blazor.AntDesignUI; |
||||
|
using Lsw.Abp.SettingManagement.Blazor.AntDesignUI; |
||||
|
using Lsw.Abp.TenantManagement.Blazor.AntDesignUI; |
||||
|
using Volo.Abp.Account.Localization; |
||||
|
using Volo.Abp.UI.Navigation; |
||||
|
using Volo.Abp.Authorization.Permissions; |
||||
|
|
||||
|
namespace BookStore.Blazor.Client.Navigation; |
||||
|
|
||||
|
public class BookStoreMenuContributor : IMenuContributor |
||||
|
{ |
||||
|
private readonly IConfiguration _configuration; |
||||
|
|
||||
|
public BookStoreMenuContributor(IConfiguration configuration) |
||||
|
{ |
||||
|
_configuration = configuration; |
||||
|
} |
||||
|
|
||||
|
public async Task ConfigureMenuAsync(MenuConfigurationContext context) |
||||
|
{ |
||||
|
if (context.Menu.Name == StandardMenus.Main) |
||||
|
{ |
||||
|
await ConfigureMainMenuAsync(context); |
||||
|
} |
||||
|
else if (context.Menu.Name == StandardMenus.User) |
||||
|
{ |
||||
|
await ConfigureUserMenuAsync(context); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private static async Task ConfigureMainMenuAsync(MenuConfigurationContext context) |
||||
|
{ |
||||
|
var l = context.GetLocalizer<BookStoreResource>(); |
||||
|
|
||||
|
//Administration
|
||||
|
var administration = context.Menu.GetAdministration(); |
||||
|
administration.Order = 6; |
||||
|
|
||||
|
context.Menu.AddItem(new ApplicationMenuItem( |
||||
|
BookStoreMenus.Home, |
||||
|
l["Menu:Home"], |
||||
|
"/", |
||||
|
icon: IconType.Outline.Home, |
||||
|
order: 1 |
||||
|
)); |
||||
|
if (MultiTenancyConsts.IsEnabled) |
||||
|
{ |
||||
|
administration.SetSubItemOrder(TenantManagementMenuNames.GroupName, 1); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
administration.TryRemoveMenuItem(TenantManagementMenuNames.GroupName); |
||||
|
} |
||||
|
|
||||
|
administration.SetSubItemOrder(IdentityMenuNames.GroupName, 2); |
||||
|
administration.SetSubItemOrder(SettingManagementMenus.GroupName, 3); |
||||
|
} |
||||
|
|
||||
|
private async Task ConfigureUserMenuAsync(MenuConfigurationContext context) |
||||
|
{ |
||||
|
var accountStringLocalizer = context.GetLocalizer<AccountResource>(); |
||||
|
var authServerUrl = _configuration["AuthServer:Authority"] ?? ""; |
||||
|
|
||||
|
context.Menu.AddItem(new ApplicationMenuItem( |
||||
|
"Account.Manage", |
||||
|
accountStringLocalizer["MyAccount"], |
||||
|
$"{authServerUrl.EnsureEndsWith('/')}Account/Manage", |
||||
|
icon: IconType.Outline.Setting, |
||||
|
order: 1000, |
||||
|
target: "_blank").RequireAuthenticated()); |
||||
|
|
||||
|
await Task.CompletedTask; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace BookStore.Blazor.Client.Navigation; |
||||
|
|
||||
|
public class BookStoreMenus |
||||
|
{ |
||||
|
private const string Prefix = "BookStore"; |
||||
|
|
||||
|
public const string Home = Prefix + ".Home"; |
||||
|
} |
||||
@ -0,0 +1,17 @@ |
|||||
|
@page "/" |
||||
|
@inherits BookStoreComponentBase |
||||
|
|
||||
|
<AbpPageHeader Title="Index"></AbpPageHeader> |
||||
|
|
||||
|
<div class="page-content"> |
||||
|
<div style="text-align: center"> |
||||
|
|
||||
|
<Alert Type="@AlertType.Success" |
||||
|
Message="Success" |
||||
|
Description=" Congratulations, BookStore is successfully running!" |
||||
|
ShowIcon="true"/> |
||||
|
|
||||
|
<Divider/> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
@ -0,0 +1,6 @@ |
|||||
|
namespace BookStore.Blazor.Client.Pages; |
||||
|
|
||||
|
public partial class Index |
||||
|
{ |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,17 @@ |
|||||
|
/* Getting-Started */ |
||||
|
.card-bg-image { |
||||
|
pointer-events: none; |
||||
|
position: absolute; |
||||
|
width: 630px; |
||||
|
height: auto; |
||||
|
bottom: 0; |
||||
|
right: 0; |
||||
|
z-index: 1; |
||||
|
} |
||||
|
.starting-content { |
||||
|
position: relative; |
||||
|
z-index: 2; |
||||
|
} |
||||
|
/* Getting-Started End */ |
||||
|
|
||||
|
/* Write here your styles for the Index page */ |
||||
@ -0,0 +1,23 @@ |
|||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Components.WebAssembly.Hosting; |
||||
|
|
||||
|
namespace BookStore.Blazor.Client; |
||||
|
|
||||
|
public class Program |
||||
|
{ |
||||
|
public async static Task Main(string[] args) |
||||
|
{ |
||||
|
var builder = WebAssemblyHostBuilder.CreateDefault(args); |
||||
|
|
||||
|
var application = await builder.AddApplicationAsync<BookStoreBlazorClientModule>(options => |
||||
|
{ |
||||
|
options.UseAutofac(); |
||||
|
}); |
||||
|
|
||||
|
var host = builder.Build(); |
||||
|
|
||||
|
await application.InitializeApplicationAsync(host.Services); |
||||
|
|
||||
|
await host.RunAsync(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,14 @@ |
|||||
|
@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Routing |
||||
|
@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Themes.AntDesignTheme |
||||
|
@using Microsoft.Extensions.Options |
||||
|
@using Volo.Abp.AspNetCore.Components.WebAssembly.WebApp |
||||
|
|
||||
|
<Router AppAssembly="typeof(Program).Assembly" AdditionalAssemblies="WebAppAdditionalAssembliesHelper.GetAssemblies<BookStoreBlazorClientModule>()"> |
||||
|
<Found Context="routeData"> |
||||
|
<AuthorizeRouteView RouteData="routeData" DefaultLayout="typeof(DefaultLayout)"> |
||||
|
<NotAuthorized> |
||||
|
<RedirectToLogin /> |
||||
|
</NotAuthorized> |
||||
|
</AuthorizeRouteView> |
||||
|
</Found> |
||||
|
</Router> |
||||
@ -0,0 +1,16 @@ |
|||||
|
@using System.Net.Http |
||||
|
@using Microsoft.AspNetCore.Components.Authorization |
||||
|
@using Microsoft.AspNetCore.Components.Forms |
||||
|
@using Microsoft.AspNetCore.Components.Routing |
||||
|
@using Microsoft.AspNetCore.Components.Web |
||||
|
@using Microsoft.AspNetCore.Components.WebAssembly.Http |
||||
|
@using static Microsoft.AspNetCore.Components.Web.RenderMode |
||||
|
@using Microsoft.JSInterop |
||||
|
@using Volo.Abp.AspNetCore.Components |
||||
|
@using Volo.Abp.AspNetCore.Components.WebAssembly |
||||
|
@using BookStore.Blazor.Client |
||||
|
@using AntDesign |
||||
|
@using Lsw.Abp.AntDesignUI |
||||
|
@using Lsw.Abp.AntDesignUI.Components |
||||
|
@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Layout |
||||
|
@using Lsw.Abp.AspnetCore.Components.Web.AntDesignTheme.Bundling |
||||
@ -0,0 +1,3 @@ |
|||||
|
{ |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,18 @@ |
|||||
|
{ |
||||
|
"App": { |
||||
|
"SelfUrl": "https://localhost:44376" |
||||
|
}, |
||||
|
"AuthServer": { |
||||
|
"Authority": "https://localhost:44318", |
||||
|
"ClientId": "BookStore_Blazor", |
||||
|
"ResponseType": "code" |
||||
|
}, |
||||
|
"RemoteServices": { |
||||
|
"Default": { |
||||
|
"BaseUrl": "https://localhost:44318" |
||||
|
}, |
||||
|
"AbpAccountPublic": { |
||||
|
"BaseUrl": "https://localhost:44318" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 329 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 583 B |
|
After Width: | Height: | Size: 302 B |
|
After Width: | Height: | Size: 893 B |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 32 KiB |
@ -0,0 +1,45 @@ |
|||||
|
/* |
||||
|
loader |
||||
|
*/ |
||||
|
.loader { |
||||
|
position: fixed; |
||||
|
top: 0; |
||||
|
right: 0; |
||||
|
left: 0; |
||||
|
bottom: 0; |
||||
|
width: 100vw; |
||||
|
height: 100vh; |
||||
|
z-index: 999; |
||||
|
background-color: #f1f1f2; |
||||
|
} |
||||
|
|
||||
|
#ApplicationContainer > div:first-child:not(:only-child) { |
||||
|
display: none !important; |
||||
|
} |
||||
|
|
||||
|
#blazor-error-ui { |
||||
|
background: lightyellow; |
||||
|
bottom: 0; |
||||
|
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); |
||||
|
display: none; |
||||
|
left: 0; |
||||
|
padding: 0.6rem 1.25rem 0.7rem 1.25rem; |
||||
|
position: fixed; |
||||
|
width: 100%; |
||||
|
z-index: 1000; |
||||
|
} |
||||
|
|
||||
|
#blazor-error-ui .dismiss { |
||||
|
cursor: pointer; |
||||
|
position: absolute; |
||||
|
right: 0.75rem; |
||||
|
top: 0.5rem; |
||||
|
} |
||||
|
|
||||
|
:root { |
||||
|
--lpx-logo: url('/images/logo/leptonxlite/logo-light.png'); |
||||
|
--lpx-logo-icon: url('/images/logo/leptonxlite/logo-light-thumbnail.png'); |
||||
|
} |
||||
|
:root .abp-account-layout .lpx-brand-logo{ |
||||
|
--lpx-logo: url('/images/logo/leptonxlite/logo-dark.png'); |
||||
|
} |
||||
@ -0,0 +1,21 @@ |
|||||
|
{ |
||||
|
"name": "BookStore", |
||||
|
"short_name": "BookStore", |
||||
|
"start_url": "./", |
||||
|
"display": "standalone", |
||||
|
"background_color": "#ffffff", |
||||
|
"theme_color": "#03173d", |
||||
|
"prefer_related_applications": false, |
||||
|
"icons": [ |
||||
|
{ |
||||
|
"src": "icon-512.png", |
||||
|
"type": "image/png", |
||||
|
"sizes": "512x512" |
||||
|
}, |
||||
|
{ |
||||
|
"src": "icon-192.png", |
||||
|
"type": "image/png", |
||||
|
"sizes": "192x192" |
||||
|
} |
||||
|
] |
||||
|
} |
||||
@ -0,0 +1,4 @@ |
|||||
|
// In development, always fetch from the network and do not enable offline support.
|
||||
|
// This is because caching would make development more difficult (changes would not
|
||||
|
// be reflected on the first load after each change).
|
||||
|
self.addEventListener('fetch', () => { }); |
||||
@ -0,0 +1,48 @@ |
|||||
|
// Caution! Be sure you understand the caveats before publishing an application with
|
||||
|
// offline support. See https://aka.ms/blazor-offline-considerations
|
||||
|
|
||||
|
self.importScripts('./service-worker-assets.js'); |
||||
|
self.addEventListener('install', event => event.waitUntil(onInstall(event))); |
||||
|
self.addEventListener('activate', event => event.waitUntil(onActivate(event))); |
||||
|
self.addEventListener('fetch', event => event.respondWith(onFetch(event))); |
||||
|
|
||||
|
const cacheNamePrefix = 'offline-cache-'; |
||||
|
const cacheName = `${cacheNamePrefix}${self.assetsManifest.version}`; |
||||
|
const offlineAssetsInclude = [ /\.dll$/, /\.pdb$/, /\.wasm/, /\.html/, /\.js$/, /\.json$/, /\.css$/, /\.woff$/, /\.png$/, /\.jpe?g$/, /\.gif$/, /\.ico$/, /\.blat$/, /\.dat$/ ]; |
||||
|
const offlineAssetsExclude = [ /^service-worker\.js$/ ]; |
||||
|
|
||||
|
async function onInstall(event) { |
||||
|
console.info('Service worker: Install'); |
||||
|
|
||||
|
// Fetch and cache all matching items from the assets manifest
|
||||
|
const assetsRequests = self.assetsManifest.assets |
||||
|
.filter(asset => offlineAssetsInclude.some(pattern => pattern.test(asset.url))) |
||||
|
.filter(asset => !offlineAssetsExclude.some(pattern => pattern.test(asset.url))) |
||||
|
.map(asset => new Request(asset.url, { integrity: asset.hash, cache: 'no-cache' })); |
||||
|
await caches.open(cacheName).then(cache => cache.addAll(assetsRequests)); |
||||
|
} |
||||
|
|
||||
|
async function onActivate(event) { |
||||
|
console.info('Service worker: Activate'); |
||||
|
|
||||
|
// Delete unused caches
|
||||
|
const cacheKeys = await caches.keys(); |
||||
|
await Promise.all(cacheKeys |
||||
|
.filter(key => key.startsWith(cacheNamePrefix) && key !== cacheName) |
||||
|
.map(key => caches.delete(key))); |
||||
|
} |
||||
|
|
||||
|
async function onFetch(event) { |
||||
|
let cachedResponse = null; |
||||
|
if (event.request.method === 'GET') { |
||||
|
// For all navigation requests, try to serve index.html from cache
|
||||
|
// If you need some URLs to be server-rendered, edit the following check to exclude those URLs
|
||||
|
const shouldServeIndexHtml = event.request.mode === 'navigate'; |
||||
|
|
||||
|
const request = shouldServeIndexHtml ? 'index.html' : event.request; |
||||
|
const cache = await caches.open(cacheName); |
||||
|
cachedResponse = await cache.match(request); |
||||
|
} |
||||
|
|
||||
|
return cachedResponse || fetch(event.request); |
||||
|
} |
||||
@ -0,0 +1,3 @@ |
|||||
|
{ |
||||
|
"role": "host.blazor-wasm" |
||||
|
} |
||||
@ -0,0 +1,27 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk.Web"> |
||||
|
|
||||
|
<Import Project="..\..\common.props" /> |
||||
|
|
||||
|
<PropertyGroup> |
||||
|
<TargetFramework>net9.0</TargetFramework> |
||||
|
<Nullable>enable</Nullable> |
||||
|
<ImplicitUsings>enable</ImplicitUsings> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Serilog.AspNetCore" /> |
||||
|
<PackageReference Include="Serilog.Sinks.Async" /> |
||||
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" /> |
||||
|
<PackageReference Include="Volo.Abp.Autofac" /> |
||||
|
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Bundling" /> |
||||
|
<ProjectReference Include="..\BookStore.Blazor.Client\BookStore.Blazor.Client.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<ProjectReference Include="..\..\..\..\modules\AntDesignTheme\Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme.Bundling\Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme.Bundling.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
||||
@ -0,0 +1,76 @@ |
|||||
|
using BookStore.Blazor.Components; |
||||
|
using BookStore.Blazor.Client; |
||||
|
using Lsw.Abp.AspnetCore.Components.WebAssembly.AntDesignTheme.Bundling; |
||||
|
using Volo.Abp; |
||||
|
using Volo.Abp.AspNetCore.Components.WebAssembly.WebApp; |
||||
|
using Volo.Abp.AspNetCore.Mvc.UI.Bundling; |
||||
|
using Volo.Abp.AspNetCore.Mvc.Libs; |
||||
|
using Volo.Abp.Autofac; |
||||
|
using Volo.Abp.Modularity; |
||||
|
|
||||
|
namespace BookStore.Blazor; |
||||
|
|
||||
|
[DependsOn( |
||||
|
typeof(AbpAutofacModule), |
||||
|
typeof(AbpAspNetCoreComponentsWebAssemblyAntDesignThemeBundlingModule), |
||||
|
typeof(AbpAspNetCoreMvcUiBundlingModule) |
||||
|
)] |
||||
|
public class BookStoreBlazorModule : AbpModule |
||||
|
{ |
||||
|
public override void ConfigureServices(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
//https://github.com/dotnet/aspnetcore/issues/52530
|
||||
|
Configure<RouteOptions>(options => |
||||
|
{ |
||||
|
options.SuppressCheckForUnhandledSecurityMetadata = true; |
||||
|
}); |
||||
|
|
||||
|
// Add services to the container.
|
||||
|
context.Services.AddRazorComponents() |
||||
|
.AddInteractiveWebAssemblyComponents(); |
||||
|
|
||||
|
Configure<AbpMvcLibsOptions>(options => |
||||
|
{ |
||||
|
options.CheckLibs = false; |
||||
|
}); |
||||
|
|
||||
|
Configure<AbpBundlingOptions>(options => |
||||
|
{ |
||||
|
var globalStyles = options.StyleBundles.Get(BlazorWebAssemblyStandardBundles.Styles.Global); |
||||
|
globalStyles.AddContributors(typeof(BookStoreStyleBundleContributor)); |
||||
|
|
||||
|
var globalScripts = options.ScriptBundles.Get(BlazorWebAssemblyStandardBundles.Scripts.Global); |
||||
|
globalScripts.AddContributors(typeof(BookStoreScriptBundleContributor)); |
||||
|
|
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
public override void OnApplicationInitialization(ApplicationInitializationContext context) |
||||
|
{ |
||||
|
var env = context.GetEnvironment(); |
||||
|
var app = context.GetApplicationBuilder(); |
||||
|
|
||||
|
// Configure the HTTP request pipeline.
|
||||
|
if (env.IsDevelopment()) |
||||
|
{ |
||||
|
app.UseWebAssemblyDebugging(); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
|
||||
|
app.UseHsts(); |
||||
|
} |
||||
|
|
||||
|
app.UseHttpsRedirection(); |
||||
|
app.UseRouting(); |
||||
|
app.MapAbpStaticAssets(); |
||||
|
app.UseAntiforgery(); |
||||
|
|
||||
|
app.UseConfiguredEndpoints(builder => |
||||
|
{ |
||||
|
builder.MapRazorComponents<App>() |
||||
|
.AddInteractiveWebAssemblyRenderMode() |
||||
|
.AddAdditionalAssemblies(WebAppAdditionalAssembliesHelper.GetAssemblies<BookStoreBlazorClientModule>()); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,11 @@ |
|||||
|
using Volo.Abp.AspNetCore.Mvc.UI.Bundling; |
||||
|
|
||||
|
namespace BookStore.Blazor; |
||||
|
|
||||
|
public class BookStoreScriptBundleContributor : BundleContributor |
||||
|
{ |
||||
|
public override void ConfigureBundle(BundleConfigurationContext context) |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,11 @@ |
|||||
|
using Volo.Abp.AspNetCore.Mvc.UI.Bundling; |
||||
|
|
||||
|
namespace BookStore.Blazor; |
||||
|
|
||||
|
public class BookStoreStyleBundleContributor : BundleContributor |
||||
|
{ |
||||
|
public override void ConfigureBundle(BundleConfigurationContext context) |
||||
|
{ |
||||
|
context.Files.Add(new BundleFile("main.css", true)); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,38 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
|
||||
|
<head> |
||||
|
<meta charset="utf-8" /> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> |
||||
|
<title>MyCompanyName</title> |
||||
|
<base href="/" /> |
||||
|
|
||||
|
<!--ABP:Styles--> |
||||
|
<link href="global.css" rel="stylesheet"/> |
||||
|
<!--/ABP:Styles--> |
||||
|
|
||||
|
@* <link href="BookStore.Blazor.Client.styles.css" rel="stylesheet"/> *@ |
||||
|
|
||||
|
|
||||
|
<HeadOutlet @rendermode="new InteractiveWebAssemblyRenderMode(prerender: false)" /> |
||||
|
</head> |
||||
|
|
||||
|
<body class="abp-application-layout bg-light"> |
||||
|
|
||||
|
<script src="_framework/blazor.web.js"></script> |
||||
|
|
||||
|
<div id="ApplicationContainer"> |
||||
|
<div class="spinner"> |
||||
|
<div class="double-bounce1"></div> |
||||
|
<div class="double-bounce2"></div> |
||||
|
</div> |
||||
|
|
||||
|
<Routes @rendermode="new InteractiveWebAssemblyRenderMode(prerender: false)"/> |
||||
|
</div> |
||||
|
|
||||
|
<!--ABP:Scripts--> |
||||
|
<script src="global.js"></script> |
||||
|
<!--/ABP:Scripts--> |
||||
|
|
||||
|
</body> |
||||
|
</html> |
||||
@ -0,0 +1,5 @@ |
|||||
|
FROM mcr.microsoft.com/dotnet/aspnet:9.0 |
||||
|
COPY bin/Release/net9.0/publish/ app/ |
||||
|
WORKDIR /app |
||||
|
ENV ASPNETCORE_URLS=http://+:80 |
||||
|
ENTRYPOINT ["dotnet", "BookStore.Blazor.dll"] |
||||
@ -0,0 +1,8 @@ |
|||||
|
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS build |
||||
|
USER $APP_UID |
||||
|
EXPOSE 8080 |
||||
|
EXPOSE 8081 |
||||
|
|
||||
|
COPY bin/Release/net9.0/publish/ app/ |
||||
|
WORKDIR /app |
||||
|
ENTRYPOINT ["dotnet", "BookStore.Blazor.dll"] |
||||
@ -0,0 +1,56 @@ |
|||||
|
using System; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Builder; |
||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
using Microsoft.Extensions.Hosting; |
||||
|
using BookStore.Blazor; |
||||
|
using Serilog; |
||||
|
using Serilog.Events; |
||||
|
|
||||
|
namespace BookStore.Blazor; |
||||
|
|
||||
|
public class Program |
||||
|
{ |
||||
|
public async static Task<int> Main(string[] args) |
||||
|
{ |
||||
|
Log.Logger = new LoggerConfiguration() |
||||
|
#if DEBUG
|
||||
|
.MinimumLevel.Debug() |
||||
|
#else
|
||||
|
.MinimumLevel.Information() |
||||
|
#endif
|
||||
|
.MinimumLevel.Override("Microsoft", LogEventLevel.Information) |
||||
|
.Enrich.FromLogContext() |
||||
|
.WriteTo.Async(c => c.File("Logs/logs.txt")) |
||||
|
.WriteTo.Async(c => c.Console()) |
||||
|
.CreateLogger(); |
||||
|
|
||||
|
try |
||||
|
{ |
||||
|
Log.Information("Starting web host."); |
||||
|
var builder = WebApplication.CreateBuilder(args); |
||||
|
builder.Host.AddAppSettingsSecretsJson() |
||||
|
.UseAutofac() |
||||
|
.UseSerilog(); |
||||
|
await builder.AddApplicationAsync<BookStoreBlazorModule>(); |
||||
|
var app = builder.Build(); |
||||
|
await app.InitializeApplicationAsync(); |
||||
|
await app.RunAsync(); |
||||
|
return 0; |
||||
|
} |
||||
|
catch (Exception ex) |
||||
|
{ |
||||
|
if (ex is HostAbortedException) |
||||
|
{ |
||||
|
throw; |
||||
|
} |
||||
|
|
||||
|
Log.Fatal(ex, "Host terminated unexpectedly!"); |
||||
|
return 1; |
||||
|
} |
||||
|
finally |
||||
|
{ |
||||
|
Log.CloseAndFlush(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,29 @@ |
|||||
|
{ |
||||
|
"iisSettings": { |
||||
|
"windowsAuthentication": false, |
||||
|
"anonymousAuthentication": true, |
||||
|
"iisExpress": { |
||||
|
"applicationUrl": "https://localhost:44376", |
||||
|
"sslPort": 44376 |
||||
|
} |
||||
|
}, |
||||
|
"profiles": { |
||||
|
"IIS Express": { |
||||
|
"commandName": "IISExpress", |
||||
|
"launchBrowser": true, |
||||
|
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", |
||||
|
"environmentVariables": { |
||||
|
"ASPNETCORE_ENVIRONMENT": "Development" |
||||
|
} |
||||
|
}, |
||||
|
"BookStore.Blazor": { |
||||
|
"commandName": "Project", |
||||
|
"launchBrowser": true, |
||||
|
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", |
||||
|
"applicationUrl": "https://localhost:44376", |
||||
|
"environmentVariables": { |
||||
|
"ASPNETCORE_ENVIRONMENT": "Development" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
@using System.Net.Http |
||||
|
@using System.Net.Http.Json |
||||
|
@using Microsoft.AspNetCore.Components.Forms |
||||
|
@using Microsoft.AspNetCore.Components.Routing |
||||
|
@using Microsoft.AspNetCore.Components.Web |
||||
|
@using static Microsoft.AspNetCore.Components.Web.RenderMode |
||||
|
@using Microsoft.AspNetCore.Components.Web.Virtualization |
||||
|
@using Microsoft.JSInterop |
||||
|
@using BookStore.Blazor.Client |
||||
@ -0,0 +1 @@ |
|||||
|
{} |
||||
@ -0,0 +1,46 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk"> |
||||
|
|
||||
|
<Import Project="..\..\common.props" /> |
||||
|
|
||||
|
<PropertyGroup> |
||||
|
<OutputType>Exe</OutputType> |
||||
|
<TargetFramework>net9.0</TargetFramework> |
||||
|
<Nullable>enable</Nullable> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Serilog.Extensions.Logging" /> |
||||
|
<PackageReference Include="Serilog.Sinks.Async" /> |
||||
|
<PackageReference Include="Serilog.Sinks.File" /> |
||||
|
<PackageReference Include="Serilog.Sinks.Console" /> |
||||
|
<PackageReference Include="Microsoft.Extensions.Hosting" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Volo.Abp.Autofac" /> |
||||
|
<ProjectReference Include="..\BookStore.MongoDB\BookStore.MongoDB.csproj" /> |
||||
|
<ProjectReference Include="..\BookStore.Application.Contracts\BookStore.Application.Contracts.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<Compile Remove="Logs\**" /> |
||||
|
<Content Remove="Logs\**" /> |
||||
|
|
||||
|
<EmbeddedResource Remove="Logs\**" /> |
||||
|
<None Remove="Logs\**" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<None Remove="appsettings.json" /> |
||||
|
<Content Include="appsettings.json"> |
||||
|
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> |
||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory> |
||||
|
</Content> |
||||
|
<None Remove="appsettings.secrets.json" /> |
||||
|
<Content Include="appsettings.secrets.json"> |
||||
|
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> |
||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory> |
||||
|
</Content> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
||||
@ -0,0 +1,14 @@ |
|||||
|
using BookStore.MongoDB; |
||||
|
using Volo.Abp.Autofac; |
||||
|
using Volo.Abp.Modularity; |
||||
|
|
||||
|
namespace BookStore.DbMigrator; |
||||
|
|
||||
|
[DependsOn( |
||||
|
typeof(AbpAutofacModule), |
||||
|
typeof(BookStoreMongoDbModule), |
||||
|
typeof(BookStoreApplicationContractsModule) |
||||
|
)] |
||||
|
public class BookStoreDbMigratorModule : AbpModule |
||||
|
{ |
||||
|
} |
||||
@ -0,0 +1,51 @@ |
|||||
|
using System.Threading; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.Extensions.Configuration; |
||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
using Microsoft.Extensions.Hosting; |
||||
|
using BookStore.Data; |
||||
|
using Serilog; |
||||
|
using Volo.Abp; |
||||
|
using Volo.Abp.Data; |
||||
|
|
||||
|
namespace BookStore.DbMigrator; |
||||
|
|
||||
|
public class DbMigratorHostedService : IHostedService |
||||
|
{ |
||||
|
private readonly IHostApplicationLifetime _hostApplicationLifetime; |
||||
|
private readonly IConfiguration _configuration; |
||||
|
|
||||
|
public DbMigratorHostedService(IHostApplicationLifetime hostApplicationLifetime, IConfiguration configuration) |
||||
|
{ |
||||
|
_hostApplicationLifetime = hostApplicationLifetime; |
||||
|
_configuration = configuration; |
||||
|
} |
||||
|
|
||||
|
public async Task StartAsync(CancellationToken cancellationToken) |
||||
|
{ |
||||
|
using (var application = await AbpApplicationFactory.CreateAsync<BookStoreDbMigratorModule>(options => |
||||
|
{ |
||||
|
options.Services.ReplaceConfiguration(_configuration); |
||||
|
options.UseAutofac(); |
||||
|
options.Services.AddLogging(c => c.AddSerilog()); |
||||
|
options.AddDataMigrationEnvironment(); |
||||
|
})) |
||||
|
{ |
||||
|
await application.InitializeAsync(); |
||||
|
|
||||
|
await application |
||||
|
.ServiceProvider |
||||
|
.GetRequiredService<BookStoreDbMigrationService>() |
||||
|
.MigrateAsync(); |
||||
|
|
||||
|
await application.ShutdownAsync(); |
||||
|
|
||||
|
_hostApplicationLifetime.StopApplication(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public Task StopAsync(CancellationToken cancellationToken) |
||||
|
{ |
||||
|
return Task.CompletedTask; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,5 @@ |
|||||
|
FROM mcr.microsoft.com/dotnet/aspnet:9.0 |
||||
|
COPY bin/Release/net9.0/publish/ app/ |
||||
|
WORKDIR /app |
||||
|
ENV ASPNETCORE_URLS=http://+:80 |
||||
|
ENTRYPOINT ["dotnet", "BookStore.DbMigrator.dll"] |
||||
@ -0,0 +1,6 @@ |
|||||
|
FROM mcr.microsoft.com/dotnet/aspnet:9.0 |
||||
|
USER $APP_UID |
||||
|
|
||||
|
COPY bin/Release/net9.0/publish/ app/ |
||||
|
WORKDIR /app |
||||
|
ENTRYPOINT ["dotnet", "BookStore.DbMigrator.dll"] |
||||
@ -0,0 +1,39 @@ |
|||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
using Microsoft.Extensions.Hosting; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Serilog; |
||||
|
using Serilog.Events; |
||||
|
|
||||
|
namespace BookStore.DbMigrator; |
||||
|
|
||||
|
class Program |
||||
|
{ |
||||
|
static async Task Main(string[] args) |
||||
|
{ |
||||
|
Log.Logger = new LoggerConfiguration() |
||||
|
.MinimumLevel.Information() |
||||
|
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning) |
||||
|
.MinimumLevel.Override("Volo.Abp", LogEventLevel.Warning) |
||||
|
#if DEBUG
|
||||
|
.MinimumLevel.Override("BookStore", LogEventLevel.Debug) |
||||
|
#else
|
||||
|
.MinimumLevel.Override("BookStore", LogEventLevel.Information) |
||||
|
#endif
|
||||
|
.Enrich.FromLogContext() |
||||
|
.WriteTo.Async(c => c.File("Logs/logs.txt")) |
||||
|
.WriteTo.Async(c => c.Console()) |
||||
|
.CreateLogger(); |
||||
|
|
||||
|
await CreateHostBuilder(args).RunConsoleAsync(); |
||||
|
} |
||||
|
|
||||
|
public static IHostBuilder CreateHostBuilder(string[] args) => |
||||
|
Host.CreateDefaultBuilder(args) |
||||
|
.AddAppSettingsSecretsJson() |
||||
|
.ConfigureLogging((context, logging) => logging.ClearProviders()) |
||||
|
.ConfigureServices((hostContext, services) => |
||||
|
{ |
||||
|
services.AddHostedService<DbMigratorHostedService>(); |
||||
|
}); |
||||
|
} |
||||
@ -0,0 +1,19 @@ |
|||||
|
{ |
||||
|
"ConnectionStrings": { |
||||
|
"Default": "mongodb://localhost:27017/BookStore" |
||||
|
}, |
||||
|
"OpenIddict": { |
||||
|
"Applications": { |
||||
|
"BookStore_App": { |
||||
|
"ClientId": "BookStore_App" }, |
||||
|
"BookStore_Blazor": { |
||||
|
"ClientId": "BookStore_Blazor", |
||||
|
"RootUrl": "https://localhost:44376" |
||||
|
}, |
||||
|
"BookStore_Swagger": { |
||||
|
"ClientId": "BookStore_Swagger", |
||||
|
"RootUrl": "https://localhost:44318/" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,2 @@ |
|||||
|
{ |
||||
|
} |
||||
@ -0,0 +1,3 @@ |
|||||
|
{ |
||||
|
"role": "lib.domain-shared" |
||||
|
} |
||||
@ -0,0 +1,118 @@ |
|||||
|
{ |
||||
|
"name": "BookStore.Domain.Shared", |
||||
|
"hash": "", |
||||
|
"contents": [ |
||||
|
{ |
||||
|
"namespace": "BookStore", |
||||
|
"dependsOnModules": [ |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.AuditLogging.Domain.Shared", |
||||
|
"namespace": "Volo.Abp.AuditLogging", |
||||
|
"name": "AbpAuditLoggingDomainSharedModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.BackgroundJobs.Domain.Shared", |
||||
|
"namespace": "Volo.Abp.BackgroundJobs", |
||||
|
"name": "AbpBackgroundJobsDomainSharedModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.FeatureManagement.Domain.Shared", |
||||
|
"namespace": "Volo.Abp.FeatureManagement", |
||||
|
"name": "AbpFeatureManagementDomainSharedModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.PermissionManagement.Domain.Shared", |
||||
|
"namespace": "Volo.Abp.PermissionManagement", |
||||
|
"name": "AbpPermissionManagementDomainSharedModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.SettingManagement.Domain.Shared", |
||||
|
"namespace": "Volo.Abp.SettingManagement", |
||||
|
"name": "AbpSettingManagementDomainSharedModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.Identity.Pro.Domain.Shared", |
||||
|
"namespace": "Volo.Abp.Identity", |
||||
|
"name": "AbpIdentityProDomainSharedModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.OpenIddict.Pro.Domain.Shared", |
||||
|
"namespace": "Volo.Abp.OpenIddict", |
||||
|
"name": "AbpOpenIddictProDomainSharedModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.LanguageManagement.Domain.Shared", |
||||
|
"namespace": "Volo.Abp.LanguageManagement", |
||||
|
"name": "LanguageManagementDomainSharedModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.TextTemplateManagement.Domain.Shared", |
||||
|
"namespace": "Volo.Abp.TextTemplateManagement", |
||||
|
"name": "TextTemplateManagementDomainSharedModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.Gdpr.Domain.Shared", |
||||
|
"namespace": "Volo.Abp.Gdpr", |
||||
|
"name": "AbpGdprDomainSharedModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.GlobalFeatures", |
||||
|
"namespace": "Volo.Abp.GlobalFeatures", |
||||
|
"name": "AbpGlobalFeaturesModule" |
||||
|
}, |
||||
|
{ |
||||
|
"declaringAssemblyName": "Volo.Abp.BlobStoring.Database.Domain.Shared", |
||||
|
"namespace": "Volo.Abp.BlobStoring.Database", |
||||
|
"name": "BlobStoringDatabaseDomainSharedModule" |
||||
|
} |
||||
|
], |
||||
|
"implementingInterfaces": [ |
||||
|
{ |
||||
|
"name": "IAbpModule", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IAbpModule" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IOnPreApplicationInitialization", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IOnPreApplicationInitialization" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IOnApplicationInitialization", |
||||
|
"namespace": "Volo.Abp", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.IOnApplicationInitialization" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IOnPostApplicationInitialization", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IOnPostApplicationInitialization" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IOnApplicationShutdown", |
||||
|
"namespace": "Volo.Abp", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.IOnApplicationShutdown" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IPreConfigureServices", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IPreConfigureServices" |
||||
|
}, |
||||
|
{ |
||||
|
"name": "IPostConfigureServices", |
||||
|
"namespace": "Volo.Abp.Modularity", |
||||
|
"declaringAssemblyName": "Volo.Abp.Core", |
||||
|
"fullName": "Volo.Abp.Modularity.IPostConfigureServices" |
||||
|
} |
||||
|
], |
||||
|
"contentType": "abpModule", |
||||
|
"name": "BookStoreDomainSharedModule", |
||||
|
"summary": null |
||||
|
} |
||||
|
] |
||||
|
} |
||||
@ -0,0 +1,37 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk"> |
||||
|
|
||||
|
<Import Project="..\..\common.props" /> |
||||
|
|
||||
|
<PropertyGroup> |
||||
|
<TargetFramework>net9.0</TargetFramework> |
||||
|
<Nullable>enable</Nullable> |
||||
|
<RootNamespace>BookStore</RootNamespace> |
||||
|
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Volo.Abp.BackgroundJobs.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.AuditLogging.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.FeatureManagement.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.PermissionManagement.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.SettingManagement.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.BlobStoring.Database.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.GlobalFeatures" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Volo.Abp.OpenIddict.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.Identity.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.TenantManagement.Domain.Shared" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<EmbeddedResource Include="Localization\BookStore\*.json" /> |
||||
|
<Content Remove="Localization\BookStore\*.json" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
||||
@ -0,0 +1,6 @@ |
|||||
|
namespace BookStore; |
||||
|
|
||||
|
public static class BookStoreDomainErrorCodes |
||||
|
{ |
||||
|
/* You can add your business exception error codes here, as constants */ |
||||
|
} |
||||
@ -0,0 +1,82 @@ |
|||||
|
using BookStore.Localization; |
||||
|
using Volo.Abp.AuditLogging; |
||||
|
using Volo.Abp.BackgroundJobs; |
||||
|
using Volo.Abp.FeatureManagement; |
||||
|
using Volo.Abp.Identity; |
||||
|
using Volo.Abp.Localization; |
||||
|
using Volo.Abp.Localization.ExceptionHandling; |
||||
|
using Volo.Abp.Validation.Localization; |
||||
|
using Volo.Abp.Modularity; |
||||
|
using Volo.Abp.PermissionManagement; |
||||
|
using Volo.Abp.SettingManagement; |
||||
|
using Volo.Abp.VirtualFileSystem; |
||||
|
using Volo.Abp.OpenIddict; |
||||
|
using Volo.Abp.BlobStoring.Database; |
||||
|
using Volo.Abp.TenantManagement; |
||||
|
|
||||
|
namespace BookStore; |
||||
|
|
||||
|
[DependsOn( |
||||
|
typeof(AbpAuditLoggingDomainSharedModule), |
||||
|
typeof(AbpBackgroundJobsDomainSharedModule), |
||||
|
typeof(AbpFeatureManagementDomainSharedModule), |
||||
|
typeof(AbpPermissionManagementDomainSharedModule), |
||||
|
typeof(AbpSettingManagementDomainSharedModule), |
||||
|
typeof(AbpIdentityDomainSharedModule), |
||||
|
typeof(AbpOpenIddictDomainSharedModule), |
||||
|
typeof(AbpTenantManagementDomainSharedModule), |
||||
|
typeof(BlobStoringDatabaseDomainSharedModule) |
||||
|
)] |
||||
|
public class BookStoreDomainSharedModule : AbpModule |
||||
|
{ |
||||
|
public override void PreConfigureServices(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
BookStoreGlobalFeatureConfigurator.Configure(); |
||||
|
BookStoreModuleExtensionConfigurator.Configure(); |
||||
|
} |
||||
|
|
||||
|
public override void ConfigureServices(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
Configure<AbpVirtualFileSystemOptions>(options => |
||||
|
{ |
||||
|
options.FileSets.AddEmbedded<BookStoreDomainSharedModule>(); |
||||
|
}); |
||||
|
|
||||
|
Configure<AbpLocalizationOptions>(options => |
||||
|
{ |
||||
|
options.Resources |
||||
|
.Add<BookStoreResource>("en") |
||||
|
.AddBaseTypes(typeof(AbpValidationResource)) |
||||
|
.AddVirtualJson("/Localization/BookStore"); |
||||
|
|
||||
|
options.DefaultResourceType = typeof(BookStoreResource); |
||||
|
|
||||
|
options.Languages.Add(new LanguageInfo("en", "en", "English")); |
||||
|
options.Languages.Add(new LanguageInfo("en-GB", "en-GB", "English (United Kingdom)")); |
||||
|
options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); |
||||
|
options.Languages.Add(new LanguageInfo("es", "es", "Español")); |
||||
|
options.Languages.Add(new LanguageInfo("ar", "ar", "العربية")); |
||||
|
options.Languages.Add(new LanguageInfo("hi", "hi", "हिन्दी")); |
||||
|
options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português (Brasil)")); |
||||
|
options.Languages.Add(new LanguageInfo("fr", "fr", "Français")); |
||||
|
options.Languages.Add(new LanguageInfo("ru", "ru", "Русский")); |
||||
|
options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsch (Deuthschland)")); |
||||
|
options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); |
||||
|
options.Languages.Add(new LanguageInfo("it", "it", "Italiano")); |
||||
|
options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština")); |
||||
|
options.Languages.Add(new LanguageInfo("hu", "hu", "Magyar")); |
||||
|
options.Languages.Add(new LanguageInfo("ro-RO", "ro-RO", "Română (România)")); |
||||
|
options.Languages.Add(new LanguageInfo("sv", "sv", "Svenska")); |
||||
|
options.Languages.Add(new LanguageInfo("fi", "fi", "Suomi")); |
||||
|
options.Languages.Add(new LanguageInfo("sk", "sk", "Slovenčina")); |
||||
|
options.Languages.Add(new LanguageInfo("is", "is", "Íslenska")); |
||||
|
options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "繁體中z文")); |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
Configure<AbpExceptionLocalizationOptions>(options => |
||||
|
{ |
||||
|
options.MapCodeNamespace("BookStore", typeof(BookStoreResource)); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,20 @@ |
|||||
|
using Volo.Abp.GlobalFeatures; |
||||
|
using Volo.Abp.Threading; |
||||
|
|
||||
|
namespace BookStore; |
||||
|
|
||||
|
public static class BookStoreGlobalFeatureConfigurator |
||||
|
{ |
||||
|
private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); |
||||
|
|
||||
|
public static void Configure() |
||||
|
{ |
||||
|
OneTimeRunner.Run(() => |
||||
|
{ |
||||
|
/* You can configure (enable/disable) global features of the used modules here. |
||||
|
* Please refer to the documentation to learn more about the Global Features System: |
||||
|
* https://docs.abp.io/en/abp/latest/Global-Features
|
||||
|
*/ |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,71 @@ |
|||||
|
using System.ComponentModel.DataAnnotations; |
||||
|
using Volo.Abp.Identity; |
||||
|
using Volo.Abp.ObjectExtending; |
||||
|
using Volo.Abp.Threading; |
||||
|
|
||||
|
namespace BookStore; |
||||
|
|
||||
|
public static class BookStoreModuleExtensionConfigurator |
||||
|
{ |
||||
|
private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); |
||||
|
|
||||
|
public static void Configure() |
||||
|
{ |
||||
|
OneTimeRunner.Run(() => |
||||
|
{ |
||||
|
ConfigureExistingProperties(); |
||||
|
ConfigureExtraProperties(); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
private static void ConfigureExistingProperties() |
||||
|
{ |
||||
|
/* You can change max lengths for properties of the |
||||
|
* entities defined in the modules used by your application. |
||||
|
* |
||||
|
* Example: Change user and role name max lengths |
||||
|
|
||||
|
AbpUserConsts.MaxNameLength = 99; |
||||
|
IdentityRoleConsts.MaxNameLength = 99; |
||||
|
|
||||
|
* Notice: It is not suggested to change property lengths |
||||
|
* unless you really need it. Go with the standard values wherever possible. |
||||
|
* |
||||
|
* If you are using EF Core, you will need to run the add-migration command after your changes. |
||||
|
*/ |
||||
|
} |
||||
|
|
||||
|
private static void ConfigureExtraProperties() |
||||
|
{ |
||||
|
/* You can configure extra properties for the |
||||
|
* entities defined in the modules used by your application. |
||||
|
* |
||||
|
* This class can be used to define these extra properties |
||||
|
* with a high level, easy to use API. |
||||
|
* |
||||
|
* Example: Add a new property to the user entity of the identity module |
||||
|
|
||||
|
ObjectExtensionManager.Instance.Modules() |
||||
|
.ConfigureIdentity(identity => |
||||
|
{ |
||||
|
identity.ConfigureUser(user => |
||||
|
{ |
||||
|
user.AddOrUpdateProperty<string>( //property type: string
|
||||
|
"SocialSecurityNumber", //property name
|
||||
|
property => |
||||
|
{ |
||||
|
//validation rules
|
||||
|
property.Attributes.Add(new RequiredAttribute()); |
||||
|
property.Attributes.Add(new StringLengthAttribute(64) {MinimumLength = 4}); |
||||
|
|
||||
|
//...other configurations for this property
|
||||
|
} |
||||
|
); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
* See the documentation for more: |
||||
|
* https://docs.abp.io/en/abp/latest/Module-Entity-Extensions
|
||||
|
*/ |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,42 @@ |
|||||
|
{ |
||||
|
"culture": "ar", |
||||
|
"texts": { |
||||
|
"AppName": "BookStore", |
||||
|
"Menu:Home": "منزل، بيت", |
||||
|
"Menu:ContactUs": "اتصل بنا", |
||||
|
"Menu:ArticleSample": "عينة المادة", |
||||
|
"Home": "منزل، بيت", |
||||
|
"Welcome": "مرحبا", |
||||
|
"LongWelcomeMessage": "مرحبا بكم في التطبيق. هذا مشروع بدء التشغيل يعتمد على إطار عمل برنامج ABP. لمزيد من المعلومات قم بزيارة", |
||||
|
"Date": "تاريخ", |
||||
|
"Permission:Dashboard": "لوحة القيادة", |
||||
|
"Menu:Dashboard": "لوحة القيادة", |
||||
|
"Menu:HomePage": "الصفحة الرئيسية", |
||||
|
"Dashboard": "لوحة القيادة", |
||||
|
"ExternalProvider:Google": "جوجل", |
||||
|
"ExternalProvider:Google:ClientId": "معرف العميل", |
||||
|
"ExternalProvider:Google:ClientSecret": "سر العميل", |
||||
|
"ExternalProvider:Microsoft": "مايكروسوفت", |
||||
|
"ExternalProvider:Microsoft:ClientId": "معرف العميل", |
||||
|
"ExternalProvider:Microsoft:ClientSecret": "سر العميل", |
||||
|
"ExternalProvider:Twitter": "تويتر", |
||||
|
"ExternalProvider:Twitter:ConsumerKey": "مفتاح المستهلك", |
||||
|
"ExternalProvider:Twitter:ConsumerSecret": "سر المستهلك", |
||||
|
"NewsletterHeader": "اشترك في النشرة الإخبارية!", |
||||
|
"NewsletterInfo": "احصل على معلومات حول آخر الأحداث.", |
||||
|
"NewsletterPreference_Default": "النشرة الإخبارية الافتراضية", |
||||
|
"NewsletterPrivacyAcceptMessage": "أوافق على <a href='/privacy-policy'> سياسة الخصوصية </a>.", |
||||
|
"Language": "لغة", |
||||
|
"Search": "يبحث", |
||||
|
"LoadMore": "تحميل المزيد", |
||||
|
"Settings": "إعدادات", |
||||
|
"Theme": "سمة", |
||||
|
"DeviceTheme": "موضوع الجهاز", |
||||
|
"Dark": "مظلم", |
||||
|
"Light": "ضوء", |
||||
|
"Unspecified": "نظام", |
||||
|
"SeeAllUsers": "رؤية كافة المستخدمين", |
||||
|
"TakePhoto": "تصوير", |
||||
|
"ChoosePhoto": "اختر صورة" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
{ |
||||
|
"Culture": "cs", |
||||
|
"Texts": { |
||||
|
"AppName": "BookStore", |
||||
|
"Menu:Home": "Home", |
||||
|
"LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information visit", |
||||
|
"Welcome": "Welcome" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,42 @@ |
|||||
|
{ |
||||
|
"culture": "de-DE", |
||||
|
"texts": { |
||||
|
"AppName": "BookStore", |
||||
|
"Menu:Home": "Home", |
||||
|
"Menu:ContactUs": "Kontaktiere uns", |
||||
|
"Menu:ArticleSample": "Artikelmuster", |
||||
|
"Home": "Home", |
||||
|
"Welcome": "Willkommen", |
||||
|
"LongWelcomeMessage": "Willkommen in der Anwendung. Dies ist ein Startup-Projekt basierend auf dem ABP-Framework. Weitere Informationen finden Sie unter", |
||||
|
"Date": "Datum", |
||||
|
"Permission:Dashboard": "Dashboard", |
||||
|
"Menu:Dashboard": "Dashboard", |
||||
|
"Menu:HomePage": "Startseite", |
||||
|
"Dashboard": "Dashboard", |
||||
|
"ExternalProvider:Google": "Google", |
||||
|
"ExternalProvider:Google:ClientId": "Kunden ID", |
||||
|
"ExternalProvider:Google:ClientSecret": "Client-Geheimnis", |
||||
|
"ExternalProvider:Microsoft": "Microsoft", |
||||
|
"ExternalProvider:Microsoft:ClientId": "Kunden ID", |
||||
|
"ExternalProvider:Microsoft:ClientSecret": "Client-Geheimnis", |
||||
|
"ExternalProvider:Twitter": "Twitter", |
||||
|
"ExternalProvider:Twitter:ConsumerKey": "Verbraucherschlüssel", |
||||
|
"ExternalProvider:Twitter:ConsumerSecret": "Verbrauchergeheimnis", |
||||
|
"NewsletterHeader": "Abonnieren Sie den Newsletter!", |
||||
|
"NewsletterInfo": "Informieren Sie sich über aktuelle Ereignisse.", |
||||
|
"NewsletterPreference_Default": "Standard-Newsletter", |
||||
|
"NewsletterPrivacyAcceptMessage": "Ich akzeptiere die <a href='/privacy-policy'>Datenschutzerklärung</a>.", |
||||
|
"Language": "Sprache", |
||||
|
"Search": "Suchen", |
||||
|
"LoadMore": "Mehr laden", |
||||
|
"Settings": "Einstellungen", |
||||
|
"Theme": "Thema", |
||||
|
"DeviceTheme": "Gerätethema", |
||||
|
"Dark": "Dunkel", |
||||
|
"Light": "Licht", |
||||
|
"Unspecified": "System", |
||||
|
"SeeAllUsers": "Alle Benutzer anzeigen", |
||||
|
"TakePhoto": "Foto machen", |
||||
|
"ChoosePhoto": "Wähle ein Foto aus" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
{ |
||||
|
"Culture": "en-GB", |
||||
|
"Texts": { |
||||
|
"AppName": "BookStore", |
||||
|
"Menu:Home": "Home", |
||||
|
"LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information visit", |
||||
|
"Welcome": "Welcome" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
{ |
||||
|
"Culture": "en", |
||||
|
"Texts": { |
||||
|
"AppName": "BookStore", |
||||
|
"Menu:Home": "Home", |
||||
|
"LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information visit", |
||||
|
"Welcome": "Welcome" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,42 @@ |
|||||
|
{ |
||||
|
"culture": "es", |
||||
|
"texts": { |
||||
|
"AppName": "BookStore", |
||||
|
"Menu:Home": "Hogar", |
||||
|
"Menu:ContactUs": "Contáctenos", |
||||
|
"Menu:ArticleSample": "Muestra de artículo", |
||||
|
"Home": "Hogar", |
||||
|
"Welcome": "Bienvenido", |
||||
|
"LongWelcomeMessage": "Bienvenido a la aplicacion. Este es un proyecto de inicio basado en el marco ABP. Para obtener mas informacion, visite", |
||||
|
"Date": "Fecha", |
||||
|
"Permission:Dashboard": "Panel de control", |
||||
|
"Menu:Dashboard": "Panel de control", |
||||
|
"Menu:HomePage": "Página de inicio", |
||||
|
"Dashboard": "Panel de control", |
||||
|
"ExternalProvider:Google": "Google", |
||||
|
"ExternalProvider:Google:ClientId": "ID de cliente", |
||||
|
"ExternalProvider:Google:ClientSecret": "Client Secret", |
||||
|
"ExternalProvider:Microsoft": "Microsoft", |
||||
|
"ExternalProvider:Microsoft:ClientId": "ID de cliente", |
||||
|
"ExternalProvider:Microsoft:ClientSecret": "Client Secret", |
||||
|
"ExternalProvider:Twitter": "Twitter", |
||||
|
"ExternalProvider:Twitter:ConsumerKey": "Clave de consumidor", |
||||
|
"ExternalProvider:Twitter:ConsumerSecret": "Consumer Secret", |
||||
|
"NewsletterHeader": "Suscríbete a la newsletter!", |
||||
|
"NewsletterInfo": "Obtenga información sobre los últimos acontecimientos.", |
||||
|
"NewsletterPreference_Default": "Boletín de noticias predeterminado", |
||||
|
"NewsletterPrivacyAcceptMessage": "Acepto la <a href='/privacy-policy'> Política de privacidad </a>.", |
||||
|
"Language": "Idioma", |
||||
|
"Search": "Buscar", |
||||
|
"LoadMore": "Carga más", |
||||
|
"Settings": "Ajustes", |
||||
|
"Theme": "Tema", |
||||
|
"DeviceTheme": "Tema del dispositivo", |
||||
|
"Dark": "Oscuro", |
||||
|
"Light": "Luz", |
||||
|
"Unspecified": "Sistema", |
||||
|
"SeeAllUsers": "Ver todos los usuarios", |
||||
|
"TakePhoto": "Tomar foto", |
||||
|
"ChoosePhoto": "Escoge una foto" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,42 @@ |
|||||
|
{ |
||||
|
"culture": "fi", |
||||
|
"texts": { |
||||
|
"AppName": "BookStore", |
||||
|
"Menu:Home": "Koti", |
||||
|
"Menu:ContactUs": "Ota meihin yhteyttä", |
||||
|
"Menu:ArticleSample": "Artikkelinäyte", |
||||
|
"Home": "Koti", |
||||
|
"Welcome": "Tervetuloa", |
||||
|
"LongWelcomeMessage": "Tervetuloa sovellukseen. Tämä on ABP-kehykseen perustuva käynnistysprojekti. Lisätietoja on osoitteessa", |
||||
|
"Date": "Päivämäärä", |
||||
|
"Permission:Dashboard": "Kojelauta", |
||||
|
"Menu:Dashboard": "Kojelauta", |
||||
|
"Menu:HomePage": "Kotisivu", |
||||
|
"Dashboard": "Kojelauta", |
||||
|
"ExternalProvider:Google": "Google", |
||||
|
"ExternalProvider:Google:ClientId": "Asiakastunnus", |
||||
|
"ExternalProvider:Google:ClientSecret": "Asiakkaan salaisuus", |
||||
|
"ExternalProvider:Microsoft": "Microsoft", |
||||
|
"ExternalProvider:Microsoft:ClientId": "Asiakastunnus", |
||||
|
"ExternalProvider:Microsoft:ClientSecret": "Asiakkaan salaisuus", |
||||
|
"ExternalProvider:Twitter": "Viserrys", |
||||
|
"ExternalProvider:Twitter:ConsumerKey": "Kuluttaja-avain", |
||||
|
"ExternalProvider:Twitter:ConsumerSecret": "Kuluttajan salaisuus", |
||||
|
"NewsletterHeader": "Tilaa uutiskirje!", |
||||
|
"NewsletterInfo": "Hanki tietoa viimeisimmistä tapahtumista.", |
||||
|
"NewsletterPreference_Default": "Oletusuutiskirje", |
||||
|
"NewsletterPrivacyAcceptMessage": "Hyväksyn <a href='/privacy-policy'> tietosuojakäytännön </a>.", |
||||
|
"Language": "Kieli", |
||||
|
"Search": "Hae", |
||||
|
"LoadMore": "Lataa lisää", |
||||
|
"Settings": "asetukset", |
||||
|
"Theme": "Teema", |
||||
|
"DeviceTheme": "Laitteen teema", |
||||
|
"Dark": "Tumma", |
||||
|
"Light": "Kevyt", |
||||
|
"Unspecified": "Järjestelmä", |
||||
|
"SeeAllUsers": "Katso Kaikki käyttäjät", |
||||
|
"TakePhoto": "Ota valokuva", |
||||
|
"ChoosePhoto": "Valitse Valokuva" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,42 @@ |
|||||
|
{ |
||||
|
"culture": "fr", |
||||
|
"texts": { |
||||
|
"AppName": "BookStore", |
||||
|
"Menu:Home": "Acceuil", |
||||
|
"Menu:ContactUs": "Nous contacter", |
||||
|
"Menu:ArticleSample": "Échantillon d'article", |
||||
|
"Home": "Acceuil", |
||||
|
"Welcome": "Bienvenue", |
||||
|
"LongWelcomeMessage": "Bienvenue dans l'application. Il s'agit d'un projet de démarrage basé sur le framework ABP. Pour plus d'informations, visitez", |
||||
|
"Date": "Date", |
||||
|
"Permission:Dashboard": "Tableau de bord", |
||||
|
"Menu:Dashboard": "Tableau de bord", |
||||
|
"Menu:HomePage": "Page d'accueil", |
||||
|
"Dashboard": "Tableau de bord", |
||||
|
"ExternalProvider:Google": "Google", |
||||
|
"ExternalProvider:Google:ClientId": "identité du client", |
||||
|
"ExternalProvider:Google:ClientSecret": "Secret du client", |
||||
|
"ExternalProvider:Microsoft": "Microsoft", |
||||
|
"ExternalProvider:Microsoft:ClientId": "identité du client", |
||||
|
"ExternalProvider:Microsoft:ClientSecret": "Secret du client", |
||||
|
"ExternalProvider:Twitter": "Twitter", |
||||
|
"ExternalProvider:Twitter:ConsumerKey": "La clé du consommateur", |
||||
|
"ExternalProvider:Twitter:ConsumerSecret": "Secret du consommateur", |
||||
|
"NewsletterHeader": "Abonnez-vous à la newsletter!", |
||||
|
"NewsletterInfo": "Obtenez des informations sur les derniers événements.", |
||||
|
"NewsletterPreference_Default": "Newsletter par défaut", |
||||
|
"NewsletterPrivacyAcceptMessage": "J'accepte la <a href='/privacy-policy'> Politique de confidentialité </a>.", |
||||
|
"Language": "Langue", |
||||
|
"Search": "Recherche", |
||||
|
"LoadMore": "Charger plus", |
||||
|
"Settings": "Paramètres", |
||||
|
"Theme": "Thème", |
||||
|
"DeviceTheme": "Thème de l'appareil", |
||||
|
"Dark": "Sombre", |
||||
|
"Light": "Lumière", |
||||
|
"Unspecified": "Système", |
||||
|
"SeeAllUsers": "Voir tous les utilisateurs", |
||||
|
"TakePhoto": "Prendre une photo", |
||||
|
"ChoosePhoto": "Choisissez une photo" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,42 @@ |
|||||
|
{ |
||||
|
"culture": "hi", |
||||
|
"texts": { |
||||
|
"AppName": "BookStore", |
||||
|
"Menu:Home": "घर", |
||||
|
"Menu:ContactUs": "संपर्क करें", |
||||
|
"Menu:ArticleSample": "आलेख नमूना", |
||||
|
"Home": "घर", |
||||
|
"Welcome": "स्वागत हे", |
||||
|
"LongWelcomeMessage": "आवेदन करने के लिए आपका स्वागत है। यह एबीपी ढांचे पर आधारित एक स्टार्टअप परियोजना है। अधिक जानकारी के लिए पर जाएँ।", |
||||
|
"Date": "दिनांक", |
||||
|
"Permission:Dashboard": "डैशबोर्ड", |
||||
|
"Menu:Dashboard": "डैशबोर्ड", |
||||
|
"Menu:HomePage": "मुख पृष्ठ", |
||||
|
"Dashboard": "डैशबोर्ड", |
||||
|
"ExternalProvider:Google": "गूगल", |
||||
|
"ExternalProvider:Google:ClientId": "ग्राहक ID", |
||||
|
"ExternalProvider:Google:ClientSecret": "ग्राहक गुप्त", |
||||
|
"ExternalProvider:Microsoft": "माइक्रोसॉफ्ट", |
||||
|
"ExternalProvider:Microsoft:ClientId": "ग्राहक ID", |
||||
|
"ExternalProvider:Microsoft:ClientSecret": "ग्राहक गुप्त", |
||||
|
"ExternalProvider:Twitter": "ट्विटर", |
||||
|
"ExternalProvider:Twitter:ConsumerKey": "उपभोक्ता कुंजी", |
||||
|
"ExternalProvider:Twitter:ConsumerSecret": "उपभोक्ता रहस्य", |
||||
|
"NewsletterHeader": "न्यूज़लेटर की सदस्यता लें!", |
||||
|
"NewsletterInfo": "नवीनतम घटनाओं के बारे में जानकारी प्राप्त करें।", |
||||
|
"NewsletterPreference_Default": "डिफ़ॉल्ट न्यूज़लैटर", |
||||
|
"NewsletterPrivacyAcceptMessage": "मैं <a href='/privacy-policy'> गोपनीयता नीति </a> स्वीकार करता हूं।", |
||||
|
"Language": "भाषा", |
||||
|
"Search": "खोज", |
||||
|
"LoadMore": "और लोड करें", |
||||
|
"Settings": "समायोजन", |
||||
|
"Theme": "विषय", |
||||
|
"DeviceTheme": "डिवाइस थीम", |
||||
|
"Dark": "अँधेरा", |
||||
|
"Light": "रोशनी", |
||||
|
"Unspecified": "प्रणाली", |
||||
|
"SeeAllUsers": "सभी उपयोगकर्ता देखें", |
||||
|
"TakePhoto": "फोटो लो", |
||||
|
"ChoosePhoto": "तस्विर का चयन करो" |
||||
|
} |
||||
|
} |
||||