Authorization functioning

This commit is contained in:
kdeng00
2021-12-24 16:45:40 -05:00
parent 471fa71789
commit f8d9c8e4a7
8 changed files with 44 additions and 64 deletions
+5 -8
View File
@@ -168,10 +168,7 @@ namespace Icarus.Controllers.Managers
public async Task SaveSongToFileSystem(IFormFile songFile/**, SongRepository songStore,
AlbumRepository albumStore, ArtistRepository artistStore,
GenreRepository genreStore, YearRepository yearStore,
CoverArtRepository coverArtStore*/)
public async Task SaveSongToFileSystem(IFormFile songFile)
{
try
{
@@ -208,9 +205,8 @@ namespace Icarus.Controllers.Managers
var coverMgr = new CoverArtManager(_config);
var coverArt = coverMgr.SaveCoverArt(song);
coverMgr.SaveCoverArtToDatabase(ref song, ref coverArt);//,
SaveSongToDatabase(song);/**, songStore, albumStore, artistStore, genreStore,
yearStore);*/
coverMgr.SaveCoverArtToDatabase(ref song, ref coverArt);
SaveSongToDatabase(song);
}
catch (Exception ex)
{
@@ -242,7 +238,7 @@ namespace Icarus.Controllers.Managers
private async Task<SongData> RetrieveSongFromFileSystem(Song details)
{
byte[] uncompressedSong = System.IO.File.ReadAllBytes(details.SongPath);
byte[] uncompressedSong = await System.IO.File.ReadAllBytesAsync(details.SongPath);
return new SongData
{
@@ -265,6 +261,7 @@ namespace Icarus.Controllers.Managers
_logger.Info("Assigning song filename");
song.Filename = songFile.FileName;
song.DateCreated = DateTime.Now;
return song;
}
+1 -1
View File
@@ -52,7 +52,7 @@ namespace Icarus.Controllers.Utilities
var archivePath = RetrieveCompressesSongPath(song);
Console.WriteLine($"Compressed song saved to: {archivePath}");
songData.Data = System.IO.File.ReadAllBytes(archivePath);
songData.Data = await System.IO.File.ReadAllBytesAsync(archivePath);
}
catch(Exception ex)
{
+1
View File
@@ -61,6 +61,7 @@ namespace Icarus.Controllers.V1
}
[HttpPost]
[Route("private-scoped")]
[Authorize("upload:songs")]
public async Task Post([FromForm(Name = "file")] List<IFormFile> songData)
{
-2
View File
@@ -10,9 +10,7 @@
<PackageReference Include="DotNetZip" Version="1.15.0" />
<PackageReference Include="EntityFramework" Version="6.4.4" />
<PackageReference Include="ID3" Version="0.6.0" />
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.8">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
+5
View File
@@ -12,6 +12,7 @@ namespace Icarus.Models
[JsonProperty("title")]
public string Title { get; set; }
[JsonProperty("album")]
[Column("Album")]
public string AlbumTitle { get; set; }
[JsonProperty("artist")]
public string Artist { get; set; }
@@ -25,6 +26,10 @@ namespace Icarus.Models
public string Filename { get; set; }
[JsonProperty("song_path")]
public string SongPath { get; set; }
[JsonProperty("track")]
public int Track { get; set; } = 0;
[JsonProperty("disc")]
public int Disc { get; set; } = 0;
// [JsonIgnore]
// public Album Album { get; set; }
+10 -31
View File
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
@@ -15,6 +16,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.EntityFrameworkCore;
using Microsoft.IdentityModel.Tokens;
using NLog;
using NLog.Web;
using NLog.Web.AspNetCore;
@@ -22,7 +24,6 @@ using NLog.Web.AspNetCore;
using Icarus.Authorization;
using Icarus.Authorization.Handlers;
using Icarus.Database.Contexts;
// using Icarus.Database.Repositories;
namespace Icarus
{
@@ -40,16 +41,16 @@ namespace Icarus
{
services.AddControllers();
string domain = $"https://{Configuration["Auth0:Domain"]}/";
var auth_id = Configuration["Auth0:Domain"];
var domain = $"https://{auth_id}/";
var audience = Configuration["Auth0:ApiIdentifier"];
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = domain;
options.Audience = Configuration["Auth0:ApiIdentifier"];
options.Audience = audience;
});
services.AddAuthorization(options =>
@@ -104,35 +105,12 @@ namespace Icarus
var connString = Configuration.GetConnectionString("DefaultConnection");
/**
services.Add(new ServiceDescriptor(typeof(SongRepository),
new SongRepository(connString)));
services.Add(new ServiceDescriptor(typeof(AlbumRepository),
new AlbumRepository(connString)));
services.Add(new ServiceDescriptor(typeof(ArtistRepository),
new ArtistRepository(connString)));
services.Add(new ServiceDescriptor(typeof(GenreRepository),
new GenreRepository(connString)));
services.Add(new ServiceDescriptor(typeof(YearRepository),
new YearRepository(connString)));
services.Add(new ServiceDescriptor(typeof(CoverArtRepository),
new CoverArtRepository(connString)));
services.Add(new ServiceDescriptor(typeof(UserRepository),
new UserRepository(connString)));
*/
services.AddDbContext<SongContext>(options => options.UseMySQL(connString));
services.AddDbContext<AlbumContext>(options => options.UseMySQL(connString));
services.AddDbContext<ArtistContext>(options => options.UseMySQL(connString));
services.AddDbContext<UserContext>(options => options.UseMySQL(connString));
services.AddDbContext<GenreContext>(options => options.UseMySQL(connString));
// services.AddDbContext<YearContext>(options => options.UseMySQL(connString));
services.AddDbContext<CoverArtContext>(options => options.UseMySQL(connString));
}
@@ -142,6 +120,7 @@ namespace Icarus
// NOTE: Dev-related configuration can be done when env.IsDevelopment() evaluated to true
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{