Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] main from fullstackhero:main #1

Open
wants to merge 68 commits into
base: main
Choose a base branch
from
Open

Conversation

pull[bot]
Copy link

@pull pull bot commented Aug 1, 2024

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

iammukeshm and others added 3 commits July 31, 2024 11:25
* cleanup

* update license

* add global.json

* add server project

* cleanup

* added framework project

* update namespace

* cleanup

* cleanup

* cleanup

* added abstractions

* domain changes

* removed .vscode

* update gitignore

* update pagination base

* add wolverine

* add api versioning

* updated wolverine code gen

* versioned swagger ui

* minor updates to versioning

* added fluent validation

* initial domain designs

* minor fixes

* add extra validation for testing

* minor fixes

* moved to mediatr and behaviours

* minor cleanup

* added carter for automatic minimal api registration

* added inital readme

* architecture changes / include both clean and vsa

* added todo vsa arch module

* namespace cleanup

* minor cleanup

* added efcore and inmemorydb as default

* update exception handler

* rearranged application code

* cleaner dbcontext registration

* added initial ddd and edd

* added custom exception and get endpoint

* cleanup

* cleanup

* added ardalis specification package

* cleanup

* added paging support

* default params

* update swagger doc

* updated swagger metadata

* added support for publishing domain events

* context cleanup + shared events & db context

* added docker / docker compose support

* added finbuckle + pg migrations

* cleanup

* add hosted services for auto db migration

* initial multitenancy changes

* cleanup

* multitenancy cleanup + bug fixes

* add keycloak to docker compose

* make entity support multitenancy

* minor changes

* initial identity changes

* added default migrations

* cleanup

* minor cleanups + version fix

* add user registration

* minor fix

* added seq + docker compose

* add update user handler

* added token generation

* cleanup

* updated user service

* update finbuckle package to 7.0.1
+ other package updates

* fix finbuckle issues

* g

* cleanup

* update mail service

* update packages

* cleanup

* update

* update readme

* cleanup

* add caching

* add catalog context

* add keyed service for irepository

* Create build.yml

* update build path

* fix path

* fix framework path

* update reference paths

* add docker compose

* update yml

* switch to ghcr

* update yml

* update

* pull compose image from ghcr

* add banner image

* update readme

* cleanup

* add jwt auth and default auth policy

* add permisions + fix swagger

* auth change + permissions

* update container labels

* update container label

* by default disable redis

* fix permission requirements

* switch to finbuckle claim strategy

* add swagger auth requirement + fixes to current user

* update readme

* update permissions for endpoints

* add tenant endpoints + postman collections

* life saver commit
caches the tenant resolution call that was happening at every request
much better performance now

* update docker-compose

* hangfire integration

* package update

* hangfire null reference handle

* update docker compose variables

* update cicd

* update cicd

* terraform folder setup

* fixed all warnings

* sync namespaces

* fix namespace references

* update banner

* update container name

* update container user

* terraform intial changes

* update

* update readme

* update

* update

* add get user by id (#937)

* Update cicd.yml

* Update cicd.yml

* add terraform readme

* add file storage service (#938)

* add file storage service

* change FileStorage into Storage/File

* change FileStorage into Storage/File

* fix build

* fix warnings

* added MSSQL Provider (#939)

* add sql server

* add migrations for MSSQL Provider

---------

Co-authored-by: Mukesh Murugan <[email protected]>

* initial blazor web app push

* update cicd

* update cicd

* cicd

* test cicd

* revert

* update

* update readme

* update cicd

* test update

* seperated cicd pipelines

* update

* update appsettings.json

* update blazor folder structure

* initial mudblazor setup

* added get profile user (#935)

* add get profile

* clean

* Removing permissions for get current profile

---------

Co-authored-by: Mukesh Murugan <[email protected]>

* update readme

* refresh blazor setup

* update docker tags

* add cors

* initial blazor changes

* added few user endpoints (#936)

* add delete endpoint

* clean

* added ForgotPassword & ResetPassword endpoint

* fix warnings

* replace hardDelete with softDelete

---------

Co-authored-by: Mukesh Murugan <[email protected]>

* added roles endpoints (#940)

* init roleService

* wip

* AddTransientrole service

* login changes

* cors changes

* moved to blazor standalone wasm

* rename folder

* docker publish

* dockerfile for blazor wasm

* update compose

* update ports

* update

* update ports

* update blazor

* layout fixes

* update wasm

* update mudblazor to 7 preview

* update packages

* fix warnings

* rename github workflows

* upgrade todo endpoints

* added product getbyid function (#933)

* added product getbyid

* renamed exception class

* removed handler for query

* Revert "removed handler for query"

This reverts commit 0fa4df0.

* removed product read handler

* reverting proj and settings file

* Added product get list method

* added update endpoint for product

* fixes to product update

* fix update mechanism

* Added delete endpoint for product

* changed response of delete to 204 and made endpoints async

* updated proj file

* Update launchSettings.json

* Update Server.csproj

---------

Co-authored-by: Vipul Malhotra <[email protected]>
Co-authored-by: Mukesh Murugan <[email protected]>
Co-authored-by: Mukesh Murugan <[email protected]>

* theme preferences

* Added update and delete endpoint (#942)

* Added put endpoint

* Added delete endpoint

* removed itemgroup from proj file

* removed build warning

* Fix Spelling UpradeSubscription => UpgradeSubscription (#943)

* minor updates

* add popup provider

* update auth container size

* add person card to nav

* added sorting and searching (#941)

* wip

* wip

* add search

* add sorting

* clean

* wip

* wip

* added sorting & searching

* fix build

---------

Co-authored-by: Mukesh Murugan <[email protected]>

* Fix header injection vulnerability in the forgot password endpoint (#951)

* Fix Header Injection Vulnerability in the Forgot Password Endpoint

* Obtain origin from appsettings

* fiw warnings

* fix build

* init health check endpoint (#955)

* added rate limiting by IP (#952)

* added rate limiting by IP

* Implement global rate limiting with Fixed Window strategy and custom rejection message

* [v2] Change rate limit to options and add sercurity headers (#957)

* change rate limit to options and add security header

* add default config options for rate limit and security header in appsettings

* Hangfire extend (#944)

* Fix Spelling UpradeSubscription => UpgradeSubscription

* Extend Hangfire Services
Add Option to use specific queue
Add email queue

---------

Co-authored-by: Mukesh Murugan <[email protected]>

* Blazor Entity Table Generic

* Products Grid

* style fix

* blazor fixes to api caller

* add permissions

* fix modal

* add token refresh

* added opentelemetry (#963)

* update OTEL

* OTEL Fixes

* cleanup OTEL

* fix 404

* add todo ui

* fix blazor docker ports

* update launch settings for blazor

* update cors

* remove title validation

* Add Aspire Support #965

* namespace rename #965

* remove Blazor SLN #965

* fix blazor publish yml

* move dockerfile

* Prometheus Exporter #965

* Prometheus / Grafana Config Cleanup #965

* removed root route #965

* update blazor pipeline

* add dummy Directory.Packages.props to fix Blazor Docker Build

* added blazor theme manager

* Added Tenant Management UI

* Ui fixes

* blazor restructure

* added auth pages

* update page title

* add profile management

* update readme

* update readme

* added role / permission management + other fixes

* update nugets

* update packages

* added profile picture

* fixes #970
removed private setter for fsh tenant info class

* fix blazor warning (#973)

* copy assets folder to build ouput.
relates to #974

* update packages

* fixes #980

---------

Co-authored-by: Maxime <[email protected]>
Co-authored-by: vipulm124 <[email protected]>
Co-authored-by: Vipul Malhotra <[email protected]>
Co-authored-by: Kallie <[email protected]>
Co-authored-by: Kien Cao <[email protected]>
Co-authored-by: Vladimir <[email protected]>
@pull pull bot added the ⤵️ pull label Aug 1, 2024
iammukeshm and others added 26 commits August 1, 2024 22:20
…990)

* -add nginx default config
-add otel missing config
-complete prometheous config
-improve docker-compose organizacion
-add base_path for change volumen folder (optional)
-added blazor feature to replace appsetting.json during container startup

* add missing appsetting template files & fix compose

* - add opentelemetry.instrumentation.ef
- add opentelemetry.instrumentation.process
- add default grafana dashboard
- try to fix jaeger traces
- add loki logs

* improve configuration

* Update Otel Config to Loki v3
Add Serilog Sink to OTL

* fix log dashboard loki

---------

Co-authored-by: Eduardo Jimenez <[email protected]>
* update cloudwatch

* update drafter

* feature : terraform support
iammukeshm and others added 30 commits August 24, 2024 02:57
* feature : Add Auditing Backend for #1016

* add api endpoint to get user audit

* blazor changes for #1016

* add audit trail to navmenu

* fix image url
* Refactor and consolidate Shared project structure

The project structure has been modified to remove the "Shared" project from the "api\modules" directory and add a new "Shared" project in the "Shared" directory. The solution configuration has been updated accordingly. References to the old "Shared" project have been replaced with references to the new "Shared" project.

The `TenantConstants` and `IdentityConstants` classes have been moved to the `FSH.Starter.Shared.Authorization` namespace. The `IdentityDbInitializer` and `TokenService` classes have been updated to use the new constants. The `ClaimsPrincipalExtensions` class has been removed.

Various endpoint and service classes have been updated to use the new `FSH.Starter.Shared.Authorization` namespace. The `Core.csproj` and `Infrastructure.csproj` files have been updated to reference the new "Shared" project.

The `FSH.Framework.Core.Tenant` and `FSH.Framework.Infrastructure.Tenant` namespaces and their associated classes have been removed, and the `FSH.Starter.Shared.Authorization` namespace has been added. Unused namespaces have been removed from multiple files.

The `Shared.csproj` file was updated to target .NET 8.0 and enable implicit usings and nullable reference types. New static classes for constants related to image formats, claims, actions, permissions, resources, roles, identity, and tenants have been added.

* Refactor: Rename FshAction and FshResource classes

Renamed `FshAction` to `FshActions` and `FshResource` to `FshResources` across multiple files for consistency:
- Updated class names in `FshActions.cs` and `FshResources.cs`.
- Modified references in `FshPermissions.cs`, `EntityTableContext.cs`, and various `.razor.cs` files.
- Ensured all permission checks and resource assignments use the new class names.
* Add Brand domain model with events and exception handling

Introduced the `Brand` class in the `FSH.Starter.WebApi.Catalog.Domain` namespace, inheriting from `AuditableEntity` and implementing `IAggregateRoot`. Added properties for `Name` and `Description`, and methods for creating and updating brand instances. Queued domain events `BrandCreated` and `BrandUpdated` during these operations.

Added `BrandCreated` and `BrandUpdated` classes in the `FSH.Starter.WebApi.Catalog.Domain.Events` namespace, both inheriting from `DomainEvent` and including a property for the `Brand` instance.

Added `BrandNotFoundException` class in the `FSH.Starter.WebApi.Catalog.Domain.Exceptions` namespace, inheriting from `NotFoundException` to handle cases where a brand with a specified ID is not found.

* Add brand management commands and handlers

Added commands and handlers for brand management:
- CreateBrandCommand, CreateBrandCommandValidator, CreateBrandHandler, and CreateBrandResponse for creating brands.
- DeleteBrandCommand and DeleteBrandHandler for deleting brands.
- BrandCreatedEventHandler for handling brand creation events.
- BrandResponse and GetBrandHandler for retrieving brand details.
- GetBrandRequest for brand retrieval requests.
- SearchBrandSpecs, SearchBrandsCommand, and SearchBrandsHandler for searching brands with pagination.
- UpdateBrandCommand, UpdateBrandCommandValidator, UpdateBrandHandler, and UpdateBrandResponse for updating brand details.

* Add brand-related endpoints in API version 1

Introduce new endpoints for brand operations in the
FSH.Starter.WebApi.Catalog.Infrastructure.Endpoints.v1 namespace.
Endpoints include CreateBrand, DeleteBrand, GetBrand,
SearchBrands, and UpdateBrand, each secured with specific
permissions and mapped to appropriate routes. Handlers use
MediatR for request handling and response production.

* Add BrandConfiguration for EF Core in Catalog project

Introduce BrandConfiguration class to configure the Brand entity
for Entity Framework Core. This includes enabling multi-tenancy,
setting the primary key, and specifying maximum lengths for the
Name (100 characters) and Description (1000 characters) properties.

* Add permissions for managing Brands in FshPermissions

The changes introduce new permissions related to the "Brands" resource in the `FshPermissions` class. Specifically, the following permissions are added:
- View Brands (with `IsBasic` set to true)
- Search Brands (with `IsBasic` set to true)
- Create Brands
- Update Brands
- Delete Brands
- Export Brands

The "View Brands" and "Search Brands" permissions are marked as basic, indicating they might be available to users with basic access rights.

* Refactor product handling to include brand details

- Modified GetProductHandler to use specification pattern
- Added GetProductSpecs for flexible product querying
- Updated ProductResponse to include BrandResponse
- Enhanced SearchProductSpecs to include brand details
- Updated Product class to establish brand relationship
- Modified Create and Update methods to accept brandId

* Add brand management endpoints and services

Introduce new endpoints in CatalogModule for brand creation, retrieval, listing, updating, and deletion. Register scoped services for Brand in RegisterCatalogServices method. Add DbSet<Brand> property in CatalogDbContext for managing Brand entities.

* Add BrandId property to product commands and handlers

- Updated CreateProductCommand and UpdateProductCommand to include BrandId with a default value of null.
- Modified CreateProductHandler and UpdateProductHandler to pass BrandId when creating or updating a product.
- Added BrandId filter condition in SearchProductSpecs.
- Updated CatalogDbInitializer to include BrandId when seeding the database.

* Add Brands table and update Catalog schema

Removed old migration and added new migration to create Brands table alongside Products table. Updated Designer and DbContext snapshot to reflect new schema. Updated project file to include new Catalog folder.

* Add cancellation tokens, brand methods, and update runtime

Enhanced ApiClient with cancellation tokens and new brand methods.
Updated serialization to use JsonSerializerSettings. Upgraded
NJsonSchema and NSwag to 14.1.0.0. Changed runtime in nswag.json
from WinX64 to Net80.

* Add Brands management feature with navigation and CRUD

Introduced a new "Brands" section in the application:
- Added a navigation link for "Brands" in `NavMenu.razor`.
- Implemented permission checks for viewing Brands in `NavMenu.razor.cs`.
- Created `Brands.razor` page with route `/catalog/brands`.
- Set up `EntityTable` component for managing brands.
- Added `Brands` class and dependency injection in `Brands.razor.cs`.
- Defined `BrandViewModel` for CRUD operations in `Brands.razor.cs`.

* Add brand selection to Products component

Added a `MudSelect` component in `Products.razor` for brand selection, bound to `context.BrandId` and populated with a list of brands. Introduced a private `_brands` field in `Products.razor.cs` to store the list of brands. Modified `OnInitialized` to `OnInitializedAsync` and added `LoadBrandsAsync` to fetch brands from the server. Updated `EntityServerTableContext` initialization to include the brand name field.

* Add brand filter dropdown to advanced search

Added a dropdown (`MudSelect`) for selecting a brand in the advanced
search section of the `Products.razor` file, allowing users to filter
products by brand with an "All Brands" option. Updated the search
function in `Products.razor.cs` to include the selected brand ID
(`SearchBrandId`). Changed the type of `SearchBrandId` from `Guid` to
`Guid?` to support the nullable brand ID for the "All Brands" option.

* Remove Catalog folder reference from PostgreSQL.csproj

The `ItemGroup` containing the `<Folder Include="Catalog\" />` line was removed from the `PostgreSQL.csproj` file. This change eliminates the folder reference to `Catalog` from the project file.
Replaced JwtRegisteredClaimNames with ClaimTypes for NameIdentifier, Email, and Name in the GetClaims method. Added a new claim for ClaimTypes.MobilePhone to include the user's phone number.
Updated `AuditableEntity` and `ISoftDeletable` to include `Deleted` and `DeletedBy` properties for soft deletion tracking. Modified `FshDbContext` to apply a global query filter for `ISoftDeletable` entities, ensuring deleted entities are excluded from queries. Enhanced `AuditInterceptor` to handle soft deletions, including setting `Deleted` and `DeletedBy` properties and updating entity states. Added `AppendGlobalQueryFilter` extension method to facilitate the application of global query filters to entities implementing specific interfaces.

Co-authored-by: Mukesh Murugan <[email protected]>
* update nuget and deps to 9.0

* update infra

* update to .net 9

* update docs

* fix issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants