diff --git a/BCS.BMC/src/BCS.BMC.Web.Core/Controllers/TokenAuthController.cs b/BCS.BMC/src/BCS.BMC.Web.Core/Controllers/TokenAuthController.cs index e5cfe6e..437dfd9 100644 --- a/BCS.BMC/src/BCS.BMC.Web.Core/Controllers/TokenAuthController.cs +++ b/BCS.BMC/src/BCS.BMC.Web.Core/Controllers/TokenAuthController.cs @@ -28,6 +28,7 @@ using System.Runtime.Intrinsics.X86; using System.Text; using System.IO; using Abp.AutoMapper; +using Abp.Domain.Entities; namespace BCS.BMC.Controllers { @@ -248,42 +249,56 @@ namespace BCS.BMC.Controllers } [HttpPost] - public async Task ValidateTenancy([FromBody] GetUrlDto input) + public async Task ValidateTenancy([FromBody] GetUrlDto input) { Uri uri = new Uri(input.InputUrl, UriKind.Absolute); var domain = uri.Host; - if (input.InputUrl == null) + if (string.IsNullOrWhiteSpace(input.InputUrl)) { - return BadRequest(); + return BadRequest("Please Enter A Valid Url"); } - var company = await _companyMaster.FirstOrDefaultAsync(x => x.Url == input.InputUrl.ToString() || x.DomainName == domain); + var company = await _companyMaster.FirstOrDefaultAsync(x => x.DomainName == domain); if (company == null) { - return BadRequest(); + return BadRequest("Url Not Found"); } - return Ok(); + return Ok("Success"); } [HttpPost] public async Task Login([FromBody] LoginInputModel input) - { - if (input.CompanyUrl == null) - { - return BadRequest(); - } - - var company = await _companyMaster.FirstOrDefaultAsync(x => x.Url == input.CompanyUrl.ToString()); - if(company == null) + { + var subDomainName = ""; + var protocol = ""; + if (string.IsNullOrWhiteSpace(input.CompanyUrl)) { - return BadRequest(); + return BadRequest("Please Enter A Valid Url"); } - using (HttpClient client = new HttpClient()) { Uri uri = new Uri(input.CompanyUrl); - var baseUrl = uri + "api/BmcLogin"; - + var host = uri.Host; + protocol = uri.Scheme; + if (host.Split('.').Length > 2) + { + int lastIndex = host.LastIndexOf("."); + int index = host.LastIndexOf(".", lastIndex - 1); + var subdomain = host.Substring(0, index); + if (subdomain != "www") + { + subDomainName = subdomain; + } + } + + var company = await _companyMaster.FirstOrDefaultAsync(x => x.DomainName == host); + if (company == null) + { + return BadRequest("Invalid Company Url"); + } + + // var baseUrl = uri + "api/BmcLogin"; + var baseUrl = protocol + "://" + host + "/api/BmcLogin"; var data = new { usernameOrEmailAddress = input.UsernameOrEmailAddress, @@ -294,29 +309,36 @@ namespace BCS.BMC.Controllers requestContent.Headers.ContentType = new MediaTypeWithQualityHeaderValue("application/json"); HttpResponseMessage response = await client.PostAsync(baseUrl, requestContent); - response.EnsureSuccessStatusCode(); + if (response.IsSuccessStatusCode) { var responseStream = await response.Content.ReadAsStringAsync(); - return Ok(responseStream); + LoginOrRegisterResponseMessageModel result = JsonConvert.DeserializeObject(responseStream); + return Ok(result); + } + else if (response.StatusCode == HttpStatusCode.InternalServerError) + { + var contents = await response.Content.ReadAsStringAsync(); + ResponseMessageModel result = JsonConvert.DeserializeObject(contents); + + return BadRequest(result.error.message == "Login Failed" ? "Invalid Username Or Password" : result.error.message); } - return BadRequest(); + return Ok(); } - } + } [HttpPost] public async Task Registration([FromBody] RegistrationInput input) { - + using (HttpClient client = new HttpClient()) { - var baseUrl = input.Subdomain + "/api/services/bwac/employeeRegister/RegisterEmployeeAsNewUser"; - + var baseUrl = input.CompanyUrl + "/api/services/bwac/employeeRegister/RegisterEmployeeAsNewUser"; + var data = new { - tenancyName = "testmsnyc", phoneNo = input.Phoneno, - userName = input.Email, + userName = input.UserNameOrEmail, password = input.Password }; var requestJson = JsonConvert.SerializeObject(data); @@ -324,11 +346,13 @@ namespace BCS.BMC.Controllers requestContent.Headers.ContentType = new MediaTypeWithQualityHeaderValue("application/json"); HttpResponseMessage response = await client.PostAsync(baseUrl, requestContent); - + if (response.IsSuccessStatusCode) { - var responseStream = await response.Content.ReadAsStringAsync(); - return Ok(responseStream); + var responseStream = await response.Content.ReadAsStringAsync(); + LoginOrRegisterResponseMessageModel result = JsonConvert.DeserializeObject(responseStream); + // result.result.statusCode =; + return Ok(result); } else if (response.StatusCode == HttpStatusCode.InternalServerError) { diff --git a/BCS.BMC/src/BCS.BMC.Web.Core/Models/TokenAuth/LoginOrRegisterResponseMessageModel.cs b/BCS.BMC/src/BCS.BMC.Web.Core/Models/TokenAuth/LoginOrRegisterResponseMessageModel.cs new file mode 100644 index 0000000..c893678 --- /dev/null +++ b/BCS.BMC/src/BCS.BMC.Web.Core/Models/TokenAuth/LoginOrRegisterResponseMessageModel.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BCS.BMC.Models.TokenAuth +{ + public class LoginOrRegisterResponseMessageModel + { + public result result { get; set; } + } + + public class result + { + + public int statusCode { get; set; } + public string userName { get; set; } + public string userId { get; set; } + public string employeeId { get; set; } + public string phoneNo { get; set; } + public string profilePictureId { get; set; } + } +} diff --git a/BCS.BMC/src/BCS.BMC.Web.Core/Models/TokenAuth/RegistrationInput.cs b/BCS.BMC/src/BCS.BMC.Web.Core/Models/TokenAuth/RegistrationInput.cs index d79bc81..88145e9 100644 --- a/BCS.BMC/src/BCS.BMC.Web.Core/Models/TokenAuth/RegistrationInput.cs +++ b/BCS.BMC/src/BCS.BMC.Web.Core/Models/TokenAuth/RegistrationInput.cs @@ -10,11 +10,12 @@ namespace BCS.BMC.Models.TokenAuth { public string Firstname { get; set; } public string Lastname { get; set; } - public string Email { get; set; } + public string UserNameOrEmail { get; set; } public string Phoneno { get; set; } public string Password { get; set; } public string Status { get; set; } public string Protocol { get; set; } + public string CompanyUrl { get; set; } public string Subdomain { get; set; } public string Domain { get; set; } }