tsk-76: Added model and context for AccessLevel (#108)

* tsk-76: Added model and context for AccessLevel

* Formatted code

* AccessLevel migrations are working

* minor formatting

* tsk-#76: Saving AccessLevel when uploading song

* tsk-#76: Added endpoints

* tsk-#76: Warning fix

* tsk-#76: Adding more controller code

* Functionality to modify access levels is operational

* Formatting

* tsk-#76: Added functionality

* tsk-#76: Formatting code

* tsk-#76: Adding more code

* tsk-#76: Formatting
This commit was merged in pull request #108.
This commit is contained in:
KD
2025-03-11 21:45:32 -04:00
committed by GitHub
parent 9d90247bf8
commit dcb51448aa
11 changed files with 355 additions and 25 deletions
+30 -8
View File
@@ -121,27 +121,49 @@ public class TokenManager : BaseManager
};
}
public int RetrieveUserIdFromToken(string token)
public bool CanAccessSong(string token, Song song, AccessLevel accessLevel)
{
if (this.ContainsBearer(token))
if (accessLevel!.Level!.Equals(Models.AccessLevel.DefaultLevel().Level))
{
token = this.StripBearer(token);
return true;
}
var tokenUserId = this.RetrieveUserIdFromToken(token);
if (tokenUserId == null)
{
return false;
}
return tokenUserId.Value == song.UserId;
}
public string? GetBearerToken(HttpContext context)
{
string authorizationHeader = context.Request.Headers["Authorization"]!;
if (!authorizationHeader.IsNullOrEmpty() && authorizationHeader.StartsWith("Bearer", StringComparison.OrdinalIgnoreCase))
{
string token = authorizationHeader.Substring("Bearer ".Length).Trim();
return token;
}
return null;
}
public int? RetrieveUserIdFromToken(string token)
{
var parsedToken = this.ContainsBearer(token) ? this.StripBearer(token) : token;
var tokenHandler = new JwtSecurityTokenHandler();
var readTok = tokenHandler.ReadJwtToken(token);
var userId = -1;
var readTok = tokenHandler.ReadJwtToken(parsedToken);
foreach (var item in readTok.Payload)
{
if (item.Key == "user_id")
{
userId = Convert.ToInt32(item.Value);
break;
return Convert.ToInt32(item.Value);
}
}
return userId;
return null;
}
private string StripBearer(string token)