#74: Songs will now contain the User Id when uploading
This commit is contained in:
@@ -7,6 +7,7 @@ using Newtonsoft.Json;
|
|||||||
using RestSharp;
|
using RestSharp;
|
||||||
|
|
||||||
using Icarus.Models;
|
using Icarus.Models;
|
||||||
|
using Microsoft.VisualBasic;
|
||||||
|
|
||||||
namespace Icarus.Controllers.Managers;
|
namespace Icarus.Controllers.Managers;
|
||||||
|
|
||||||
@@ -77,10 +78,7 @@ public class TokenManager : BaseManager
|
|||||||
|
|
||||||
public LoginResult LoginSymmetric(User user)
|
public LoginResult LoginSymmetric(User user)
|
||||||
{
|
{
|
||||||
var tokenResult = new TokenTierOne
|
var tokenResult = new TokenTierOne{ TokenType = "JWT" };
|
||||||
{
|
|
||||||
TokenType = "JWT"
|
|
||||||
};
|
|
||||||
|
|
||||||
var payload = Payload();
|
var payload = Payload();
|
||||||
payload.Add(new Claim("user_id", user.UserID.ToString(), ClaimValueTypes.Integer));
|
payload.Add(new Claim("user_id", user.UserID.ToString(), ClaimValueTypes.Integer));
|
||||||
@@ -100,7 +98,6 @@ public class TokenManager : BaseManager
|
|||||||
Audience = _config["Jwt:Audience"]
|
Audience = _config["Jwt:Audience"]
|
||||||
};
|
};
|
||||||
|
|
||||||
// var token =
|
|
||||||
tokenResult.AccessToken = tokenHandler.WriteToken(tokenHandler.CreateToken(tokenDescriptor));
|
tokenResult.AccessToken = tokenHandler.WriteToken(tokenHandler.CreateToken(tokenDescriptor));
|
||||||
|
|
||||||
var expClaim = payload.FirstOrDefault(cl =>
|
var expClaim = payload.FirstOrDefault(cl =>
|
||||||
@@ -112,8 +109,6 @@ public class TokenManager : BaseManager
|
|||||||
var exp = Math.Floor((expiredDate - DateTime.UnixEpoch).TotalSeconds);
|
var exp = Math.Floor((expiredDate - DateTime.UnixEpoch).TotalSeconds);
|
||||||
tokenResult.Expiration = Convert.ToInt32(exp);
|
tokenResult.Expiration = Convert.ToInt32(exp);
|
||||||
|
|
||||||
var userId = this.RetrieveUserIdFromToken(tokenResult.AccessToken);
|
|
||||||
|
|
||||||
return new LoginResult
|
return new LoginResult
|
||||||
{
|
{
|
||||||
UserID = user.UserID, Username = user.Username, Token = tokenResult.AccessToken,
|
UserID = user.UserID, Username = user.Username, Token = tokenResult.AccessToken,
|
||||||
@@ -124,6 +119,11 @@ public class TokenManager : BaseManager
|
|||||||
|
|
||||||
public int RetrieveUserIdFromToken(string token)
|
public int RetrieveUserIdFromToken(string token)
|
||||||
{
|
{
|
||||||
|
if (this.ContainsBearer(token))
|
||||||
|
{
|
||||||
|
token = this.StripBearer(token);
|
||||||
|
}
|
||||||
|
|
||||||
var tokenHandler = new JwtSecurityTokenHandler();
|
var tokenHandler = new JwtSecurityTokenHandler();
|
||||||
var readTok = tokenHandler.ReadJwtToken(token);
|
var readTok = tokenHandler.ReadJwtToken(token);
|
||||||
var userId = -1;
|
var userId = -1;
|
||||||
@@ -133,12 +133,26 @@ public class TokenManager : BaseManager
|
|||||||
if (item.Key == "user_id")
|
if (item.Key == "user_id")
|
||||||
{
|
{
|
||||||
userId = Convert.ToInt32(item.Value);
|
userId = Convert.ToInt32(item.Value);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return userId;
|
return userId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string StripBearer(string token)
|
||||||
|
{
|
||||||
|
var start = 6;
|
||||||
|
var strippedToken = token.Substring(start);
|
||||||
|
|
||||||
|
return Strings.Trim(strippedToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool ContainsBearer(string token)
|
||||||
|
{
|
||||||
|
return token.Contains("Bearer");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private string AllScopes()
|
private string AllScopes()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -104,6 +104,15 @@ public class SongDataController : BaseController
|
|||||||
if (up.SongData.Length > 0 && up.CoverArtData.Length > 0 && !string.IsNullOrEmpty(up.SongFile))
|
if (up.SongData.Length > 0 && up.CoverArtData.Length > 0 && !string.IsNullOrEmpty(up.SongFile))
|
||||||
{
|
{
|
||||||
var song = Newtonsoft.Json.JsonConvert.DeserializeObject<Song>(up.SongFile);
|
var song = Newtonsoft.Json.JsonConvert.DeserializeObject<Song>(up.SongFile);
|
||||||
|
var tokMgr = new TokenManager(this._config);
|
||||||
|
var accessToken = Request.Headers["Authorization"];
|
||||||
|
var userId = tokMgr.RetrieveUserIdFromToken(accessToken);
|
||||||
|
|
||||||
|
if (userId != -1)
|
||||||
|
{
|
||||||
|
song.UserID = userId;
|
||||||
|
}
|
||||||
|
|
||||||
_logger.LogInformation($"Song title: {song.Title}");
|
_logger.LogInformation($"Song title: {song.Title}");
|
||||||
|
|
||||||
_songMgr.SaveSongToFileSystem(up.SongData, up.CoverArtData, song);
|
_songMgr.SaveSongToFileSystem(up.SongData, up.CoverArtData, song);
|
||||||
|
|||||||
Reference in New Issue
Block a user