Implement authorization against the Users database and issue token based on password validation.

This commit is contained in:
2025-02-23 18:06:44 -05:00
parent c258be0923
commit 9b774dc194
13 changed files with 34 additions and 15 deletions

View File

@@ -6,13 +6,15 @@ namespace MarketDataServer.Controllers
{
public class AuthorizationController : ApiController
{
public String GetToken(String user)
public String GetToken(String user, String password)
{
Console.WriteLine(String.Format("[{0:G}][AuthorizationController::Authorize]",DateTime.Now));
if(null==user)return null;
user=Authorizations.Xor(user,5);
password=Authorizations.Xor(password,5);
Console.WriteLine(String.Format("[{0:G}][Login requested for user '{1}']",DateTime.Now, user));
if(!Authorizations.GetInstance().IsValidUser(user))
if(!Authorizations.GetInstance().IsValidUser(user, password))
{
Console.WriteLine(String.Format("[{0:G}][User '{1}' is not authorized]", DateTime.Now,user));
return null;
@@ -20,7 +22,6 @@ namespace MarketDataServer.Controllers
String accessToken= Authorizations.GetInstance().GetAuthenticationToken();
Console.WriteLine(String.Format("[{0:G}][Access token granted for user {1} : {2}]",DateTime.Now ,user, accessToken));
return accessToken;
}
}
}

View File

@@ -1,8 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using MarketData.MarketDataModel;
using MarketData.DataAccess;
@@ -32,19 +29,22 @@ namespace MarketDataServer.Controllers
positionsWithDescription.Add(new PositionWithDescription(position,companyProfile.CompanyName, companyProfile.Description));
}
return positionsWithDescription;
}
}
public IEnumerable<String> GetAccounts(String token)
{
Console.WriteLine(String.Format("[{0:G}][PortfolioController::GetAccounts]",DateTime.Now));
if (!Authorizations.GetInstance().IsAuthorized(token)) return null;
return PortfolioDA.GetAccounts();
}
public IEnumerable<String> GetAccountsWithOpenTrades(String token)
{
Console.WriteLine(String.Format("[{0:G}][PortfolioController::GetAccountsWithOpenTrades]", DateTime.Now));
if (!Authorizations.GetInstance().IsAuthorized(token)) return null;
return PortfolioDA.GetAccountsWithOpenTrades();
}
public StopLimit GetStopLimit(String token,String symbol)
{
Console.WriteLine(String.Format("[{0:G}][PortfolioController::GetStopLimit]",DateTime.Now));
@@ -52,6 +52,7 @@ namespace MarketDataServer.Controllers
StopLimit stopLimit=PortfolioDA.GetStopLimit(symbol);
return stopLimit;
}
public PortfolioTradesWithParityPrice GetPortfolioTradesWithParityPrice(String token, String symbol)
{
Console.WriteLine(String.Format("[{0:G}][PortfolioController::GetPortfolioTradesWithParityPrice]", DateTime.Now));