xf 1 år sedan
förälder
incheckning
4ae4a6e4ae

+ 18 - 6
src/FileStorage.Host/Controllers/FileController.cs

@@ -1,11 +1,14 @@
 using FileStorage.Repository.SqlSugar;
+using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.StaticFiles;
 using Microsoft.Extensions.Options;
 using SqlSugar;
+using XF.Domain.Authentications;
 
 namespace FileStorage.Host.Controllers
 {
+    [Authorize]
     [ApiController]
     [Route("file")]
     public class FileController : ControllerBase
@@ -13,19 +16,28 @@ namespace FileStorage.Host.Controllers
         private readonly ILogger<FileController> _logger;
         private readonly IFileStorage _fileStorage;
         private readonly ISugarUnitOfWork<FileStorageDbContext> _uow;
+        private readonly ISessionContext _sessionContext;
 
-        public FileController(ILogger<FileController> logger,IFileStorage fileStorage,ISugarUnitOfWork<FileStorageDbContext> uow)
+        public FileController(
+            ILogger<FileController> logger,
+            IFileStorage fileStorage,
+            ISugarUnitOfWork<FileStorageDbContext> uow,
+            ISessionContext sessionContext
+            )
         {
             _logger = logger;
             _fileStorage = fileStorage;
             _uow = uow;
+            _sessionContext = sessionContext;
         }
 
         [HttpPost("upload")]
-        public IActionResult Upload([FromForm]IFormFile fileData)
+        public IActionResult Upload(IFormFile fileData)
         {
+            var clientId = _sessionContext.ClientId;
+
             //var fileData = Request.Form.Files[0];
-            var file = _fileStorage.Upload(fileData.FileName, fileData.Length, "", fileData.OpenReadStream(),"12345");
+            var file = _fileStorage.Upload(fileData.FileName, fileData.Length, "", fileData.OpenReadStream(), "12345");
             return Ok(new { Id = file.Id, fileName = file.FileName });
         }
 
@@ -40,8 +52,8 @@ namespace FileStorage.Host.Controllers
         [HttpGet("downloadfile/{id}")]
         public async Task<IActionResult> DownLoadFile(string id)
         {
-            var (stream,content,fileName) = _fileStorage.DownLoadFile(id);
-            if (stream!=null)
+            var (stream, content, fileName) = _fileStorage.DownLoadFile(id);
+            if (stream != null)
             {
                 return File(stream, content, fileName);
             }
@@ -53,7 +65,7 @@ namespace FileStorage.Host.Controllers
         {
             return await _fileStorage.DelFileAsync(id);
         }
-        
+
 
         [HttpGet("createdb")]
         public Task CreateDb()

+ 1 - 0
src/FileStorage.Host/FileStorage.Host.csproj

@@ -13,6 +13,7 @@
     <PackageReference Include="Mapster.DependencyInjection" Version="1.0.0" />
     <PackageReference Include="Serilog.Sinks.Grafana.Loki" Version="8.1.0" />
     <PackageReference Include="Serilog.Sinks.MongoDB" Version="5.3.1" />
+    <PackageReference Include="XF.Utility.Authorize" Version="1.0.1" />
   </ItemGroup>
 
   <ItemGroup>

+ 3 - 2
src/FileStorage.Host/Program.cs

@@ -5,12 +5,13 @@ Log.Logger = new LoggerConfiguration()
     .WriteTo.Console()
     .CreateBootstrapLogger();
 
-Log.Information("FileStorage service is Starting up");
 
 try
 {
-    var builder = WebApplication.CreateBuilder(args);
+    Log.Information("FileStorage service is Starting up");
 
+    var builder = WebApplication.CreateBuilder(args);
+    
     builder.Host
         .ConfigureAppConfiguration((hostBuilderContext, configBuilder) =>
         {

+ 25 - 18
src/FileStorage.Host/StartupExtensions.cs

@@ -1,8 +1,10 @@
 using FileStorage.Repository.SqlSugar.Extensions;
+using Microsoft.AspNetCore.Authentication;
 using Microsoft.Extensions.FileProviders;
 using Serilog;
 using XF.Domain.Dependency;
 using XF.Domain.Filters;
+using XF.Utility.Authorize;
 
 namespace FileStorage.Host;
 
@@ -24,14 +26,13 @@ internal static class StartupExtensions
         // Add services to the container.
         services.BatchInjectServices();
 
-
         services.AddScoped<IFileStorage, DefaultFileStorage>();
 
 
         //var storageConfig = configuration.GetSection(nameof(StorageConfiguration)).Get<StorageConfiguration>();
         //if(storageConfig == null || string.IsNullOrEmpty(storageConfig.Impt) || storageConfig.Impt == FileStorageConsts.LocalImpt)
         //{
-            
+
         //}
 
         services.AddControllers(options =>
@@ -43,23 +44,27 @@ internal static class StartupExtensions
         // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
         services.AddEndpointsApiExplorer();
 
-        //swagger
-        services.RegisterSwagger();
-        
-        /* CORS */
-        services.RegisterCors(configuration, CorsOrigins);
+        services
+            //swagger
+            .RegisterSwagger()
+            // CORS
+            .RegisterCors(configuration, CorsOrigins)
+            //mapster
+            .RegisterMapper()
+            //sqlsugar
+            .AddSqlSugar(configuration);
 
-        //mapster
-        services.RegisterMapper();
+        //auth
+        var ids4Options = configuration.GetSection(nameof(Ids4AuthorizeOptions)).Get<Ids4AuthorizeOptions>();
+        services.RegisterIds4Authorize(ids4Options);
 
         ////mediatr
         //services.AddMediatR(d =>
         //{
         //    d.RegisterServicesFromAssembly(typeof(ApplicationStartupExtensions).Assembly);
         //});
-        
-        //sqlsugar
-        services.AddSqlSugar(configuration);
+
+
         ////cache
         //services.AddCache(d =>
         //    {
@@ -74,14 +79,14 @@ internal static class StartupExtensions
         //    config.DisableDataAnnotationsValidation = true;
         //})
         //    .AddValidatorsFromAssembly(typeof(AppContractsStartupExtensions).Assembly);
-        
+
         return builder.Build();
     }
 
     internal static WebApplication ConfigurePipelines(this WebApplication app)
     {
         app.UseSerilogRequestLogging();
-        
+
         var swaggerEnable = app.Configuration.GetSection("Swagger").Get<bool>();
         // Configure the HTTP request pipeline.
         if (swaggerEnable)
@@ -94,16 +99,18 @@ internal static class StartupExtensions
         app.UseAuthentication();
         app.UseAuthorization();
 
-        app.MapControllers();
-
         if (!Directory.Exists(Path.Combine(Directory.GetCurrentDirectory(), "Uploads")))
         {
             Directory.CreateDirectory(Path.Combine(Directory.GetCurrentDirectory(), "Uploads"));
         };
-        app.UseStaticFiles(new StaticFileOptions { 
-            FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(),"Uploads")),
+        app.UseStaticFiles(new StaticFileOptions
+        {
+            FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "Uploads")),
             RequestPath = new PathString("/Uploads")
         });
+
+        app.MapControllers();
+
         return app;
     }
 }

+ 0 - 13
src/FileStorage.Host/WeatherForecast.cs

@@ -1,13 +0,0 @@
-namespace FileStorage.Host
-{
-    public class WeatherForecast
-    {
-        public DateOnly Date { get; set; }
-
-        public int TemperatureC { get; set; }
-
-        public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
-
-        public string? Summary { get; set; }
-    }
-}

+ 3 - 0
src/FileStorage.Host/config/appsettings.json

@@ -24,5 +24,8 @@
     "Ctyun": {
 
     }
+  },
+  "Ids4AuthorizeOptions": {
+    "Authority": "http://110.188.24.28:50200"
   }
 }

+ 1 - 1
src/FileStorage/FileStorage.csproj

@@ -10,7 +10,7 @@
     <PackageReference Include="Mapster" Version="7.3.0" />
     <PackageReference Include="MediatR" Version="12.0.1" />
     <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
-    <PackageReference Include="XF.Domain.Repository" Version="1.0.2" />
+    <PackageReference Include="XF.Domain.Repository" Version="1.0.4" />
   </ItemGroup>
 
 </Project>