using DevExpress.Office.Crypto; using DevExpress.Xpo.DB; using DevExpress.XtraPrinting; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using System.Reflection.Metadata; using System.Text.Json; using TIAMWebApp.Shared.Application.Models; using TIAMWebApp.Shared.Application.Models.PageModels; namespace TIAMWebApp.Server.Controllers { [ApiController] [Route("[controller]")] public class UserAPIController : ControllerBase { PasswordHasher hasher = new PasswordHasher(); private User[] users = new User[] { new User("test@tiam.hu", "+36701234567", "asd123") }; private readonly ILogger _logger; public UserAPIController(ILogger logger) { _logger = logger; } [HttpPost] [Route("Auth")] public async Task AuthenticateUser([FromBody] JsonElement SerializedLoginModel) { Console.WriteLine("Auth called"); Console.WriteLine(SerializedLoginModel.GetRawText()); if (string.IsNullOrEmpty(SerializedLoginModel.GetRawText())) { return BadRequest("SerializedLoginModel is required"); } else { var user = JObject.Parse(SerializedLoginModel.GetRawText()).ToObject(); Console.WriteLine(user.Email); Console.WriteLine(user.Password); if (user.Email == "test@tiam.hu" && user.Password == "asd123") { Console.WriteLine("User authenticated"); return Ok("yes"); } else { Console.WriteLine("User NOT authenticated"); return Ok("no"); } } } [HttpPost] [Route("CreateUser")] public async Task CreateUser([FromBody] JsonElement SerializedRegistrationModel) { if (string.IsNullOrEmpty(SerializedRegistrationModel.GetRawText())) { return BadRequest("SerializedLoginModel is required"); } else { var user = JObject.Parse(SerializedRegistrationModel.GetRawText()).ToObject(); if (users != null) { //add user to users array Array.Resize(ref users, users.Length + 1); users[users.Length - 1] = new User(user.Email, user.PhoneNumber, user.Password); return Ok("yes"); } else { return Ok("no"); } } } [HttpPost] [Route("Test1")] public async Task TestEndpoint([FromBody] int testParam) { return Ok(testParam.ToString()); } [HttpGet] [Route("Test2")] public string TestEndpoint2(int testParam) { return testParam.ToString(); } [HttpGet] [Route("GetUsers")] public IEnumerable GetUsers() { throw new NotImplementedException(); } private bool VerifyPassword(string password, string hashedPassword) { bool isPasswordValid = hasher.VerifyPassword(password, hashedPassword); return isPasswordValid; } private string HashPassword(string password) { var hashedPassword = hasher.HashPassword(password); return hashedPassword; } } }