refact program.cs vineyardController, service e repo
This commit is contained in:
1 parent
a373201ca4
commit
3a1a0ca7ef
17 files changed
+769
-306
No files matched your search
@@ -0,0 +1,124 @@
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using Microsoft.OpenApi.Models;
|
||||
using System.Text;
|
||||
using uWine.Core.Domain.Repositories;
|
||||
using uWine.Core.Infrastructure.Repository;
|
||||
using uWine.Core.Infrastructure.Services;
|
||||
|
||||
namespace uWine.Api.Builder
|
||||
{
|
||||
public class Servicies
|
||||
{
|
||||
|
||||
public static WebApplicationBuilder? AddAuthentiction(WebApplicationBuilder? builder)
|
||||
{
|
||||
builder.Services.AddAuthentication(options =>
|
||||
{
|
||||
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
})
|
||||
.AddJwtBearer(options =>
|
||||
{
|
||||
var jwtSettings = builder.Configuration.GetSection("JwtSettings");
|
||||
options.TokenValidationParameters = new TokenValidationParameters
|
||||
{
|
||||
ValidateIssuer = true,
|
||||
ValidateAudience = true,
|
||||
ValidateLifetime = true,
|
||||
ValidateIssuerSigningKey = true,
|
||||
ValidIssuer = jwtSettings["Issuer"],
|
||||
ValidAudience = jwtSettings["Audience"],
|
||||
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings["Secret"]))
|
||||
};
|
||||
});
|
||||
return builder;
|
||||
}
|
||||
|
||||
public static WebApplicationBuilder? AddRepository(WebApplicationBuilder? builder)
|
||||
{
|
||||
builder.Services.AddTransient<IAuthenticationRepository, MariaDbAuthenticationRepository>();
|
||||
builder.Services.AddTransient<IOwnerRepository, MariadbOwnerRepository>();
|
||||
builder.Services.AddTransient<IAddressRepository, MariaDbAddressRepository>();
|
||||
builder.Services.AddTransient<IContactRepository, MariaDbContactRepository>();
|
||||
builder.Services.AddTransient<IVineyardRepository, MariaDbVineyardRepository>();
|
||||
builder.Services.AddTransient<IUserRepository, MariaDbUserRepository>();
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
public static WebApplicationBuilder? AddServices(WebApplicationBuilder? builder)
|
||||
{
|
||||
builder.Services.AddTransient<AuthenticationService>();
|
||||
builder.Services.AddTransient<OwnerService>();
|
||||
builder.Services.AddTransient<UserService>();
|
||||
builder.Services.AddTransient<CoordinatesService>();
|
||||
|
||||
return builder;
|
||||
}
|
||||
|
||||
public static WebApplicationBuilder? AddSwagger(WebApplicationBuilder? builder)
|
||||
{
|
||||
builder.Services.AddSwaggerGen(c =>
|
||||
{
|
||||
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Il tuo API", Version = "v1" });
|
||||
|
||||
// 1. Configurazione per JWT Bearer Token
|
||||
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
|
||||
{
|
||||
Description = "Inserisci il JWT Token nel campo 'Value' con il prefisso 'Bearer '. Esempio: 'Bearer your_token_here'",
|
||||
Name = "Authorization",
|
||||
In = ParameterLocation.Header,
|
||||
Type = SecuritySchemeType.ApiKey,
|
||||
Scheme = "Bearer"
|
||||
});
|
||||
|
||||
c.AddSecurityRequirement(new OpenApiSecurityRequirement
|
||||
{
|
||||
{
|
||||
new OpenApiSecurityScheme
|
||||
{
|
||||
Reference = new OpenApiReference
|
||||
{
|
||||
Type = ReferenceType.SecurityScheme,
|
||||
Id = "Bearer"
|
||||
}
|
||||
},
|
||||
new string[] {}
|
||||
}
|
||||
});
|
||||
|
||||
// 2. Configurazione per Basic Authentication
|
||||
c.AddSecurityDefinition("Basic", new OpenApiSecurityScheme
|
||||
{
|
||||
Description = "Basic authentication header",
|
||||
Name = "Authorization",
|
||||
In = ParameterLocation.Header,
|
||||
Type = SecuritySchemeType.Http,
|
||||
Scheme = "basic"
|
||||
});
|
||||
|
||||
c.AddSecurityRequirement(new OpenApiSecurityRequirement
|
||||
{
|
||||
{
|
||||
new OpenApiSecurityScheme
|
||||
{
|
||||
Reference = new OpenApiReference
|
||||
{
|
||||
Type = ReferenceType.SecurityScheme,
|
||||
Id = "Basic"
|
||||
}
|
||||
},
|
||||
new string[] {}
|
||||
}
|
||||
});
|
||||
|
||||
// Opzionale: per i commenti XML della documentazione
|
||||
// var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
|
||||
// var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
|
||||
// c.IncludeXmlComments(xmlPath);
|
||||
});
|
||||
return builder;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user