diff --git a/Controllers/LoginController.cs b/Controllers/LoginController.cs index e69de29..65c013f 100644 --- a/Controllers/LoginController.cs +++ b/Controllers/LoginController.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Linq; +using System.Threading.Tasks; + +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; + +using Icarus.Controllers.Managers; +using Icarus.Controllers.Utilities; +using Icarus.Models; +using Icarus.Models.Context; + +namespace Icarus.Controllers +{ + [Route("api/login")] + [ApiController] + public class LoginController : ControllerBase + { + #region Fields + private IConfiguration _config; + #endregion + + + #region Properties + #endregion + + + #region Contructors + public LoginController(IConfiguration config) + { + _config = config; + } + #endregion + + + #region HTTP endpoints + public IActionResult Post([FromBody] User user) + { + Console.WriteLine($"Username: {user.Username}"); + + TokenManager tk = new TokenManager(_config); + + LoginResult loginRes = tk.RetrieveLoginResult(user); + + return Ok(loginRes); + } + #endregion + } +} diff --git a/Controllers/Managers/TokenManager.cs b/Controllers/Managers/TokenManager.cs new file mode 100644 index 0000000..871004d --- /dev/null +++ b/Controllers/Managers/TokenManager.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using Microsoft.Extensions.Configuration; +using RestSharp; + +using Icarus.Models; + +namespace Icarus.Controllers.Managers +{ + public class TokenManager + { + #region Fields + private IConfiguration _config; + #endregion + + + #region Properties + #endregion + + + #region Constructors + public TokenManager(IConfiguration config) + { + _config = config; + InitializeValues(); + } + #endregion + + + #region Methods + public LoginResult RetrieveLoginResult(User user) + { + // TODO: Request a token from Auth0 + + return new LoginResult + { + UserId = 0, + Username = user.Username, + Token = "gggg", + Expiration = 500 + }; + } + + private void InitializeValues() + { + // TODO: implement parse values necessary to + // retrieve a token from the appSettings using + // the _config object + } + #endregion + } +} diff --git a/Icarus.csproj b/Icarus.csproj index a2860d1..f16d28e 100644 --- a/Icarus.csproj +++ b/Icarus.csproj @@ -22,6 +22,7 @@ + diff --git a/Models/LoginResult.cs b/Models/LoginResult.cs new file mode 100644 index 0000000..3edb3f2 --- /dev/null +++ b/Models/LoginResult.cs @@ -0,0 +1,18 @@ +using System; + +using Newtonsoft.Json; + +namespace Icarus.Models +{ + public class LoginResult + { + [JsonProperty("id")] + public int UserId { get; set; } + [JsonProperty("username")] + public string Username { get; set; } + [JsonProperty("token")] + public string Token { get; set; } + [JsonProperty("expiration")] + public int Expiration { get; set; } + } +}