public IActionResult Login(BaseRequest <LoginRequest> data) { var sourceId = Guid.Parse(data.Request.SourceId); var source = _context.Sources.Find(sourceId); if (source == null || source.SecretKey != data.Request.SourceSecretKey) { ModelState.AddModelError("SourceSecretKey", "Invalid sourceSecretKey"); return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId, model: ModelState))); } var foundUser = _context.Users.FirstOrDefault(u => u.Email == data.Request.UserData.Email && u.Phone == data.Request.UserData.Phone); if (foundUser == null || !_hasher.VerifyPasswordHash(foundUser.PasswordHash, data.Request.UserData.Password)) { ModelState.AddModelError("Email or Password", "Wrong email or password"); return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId, model: ModelState))); } var response = new { userId = foundUser.Id, secretKey = foundUser.SecretKey }; return(Ok(_responseFactory.CreateSuccessfullyResponse(data.Request.SourceId, new { userData = response }))); }
public IActionResult UploadFile([FromBody] BaseRequest <UploadFileRequest> data) { if (!Guid.TryParse(data.Request.SourceId, out var sourceId)) { return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId))); } var source = _context.Sources.Find(sourceId); if (source == null || source.SecretKey != data.Request.SourceSecretKey) { return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId))); } if (data.Request == null) { return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId))); } if (data.Request.Files.ToArray().Length == 0) { return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId))); } var target = Path.Join(Directory.GetCurrentDirectory(), "Uploads"); Directory.CreateDirectory(target); var createdFiles = new List <File>(); foreach (var fileData in data.Request.Files) { System.IO.File.WriteAllBytes(Path.Join(target, fileData.Name), Convert.FromBase64String(fileData.ContentByte)); createdFiles.Add(new File() { Name = fileData.Name, Path = Path.Join(target, fileData.Name) }); } _context.Files.AddRange(createdFiles); _context.SaveChanges(); var uploadFilesDto = new List <UploadFileDto>(); foreach (var file in createdFiles) { uploadFilesDto.Add(new UploadFileDto() { Content = file.Content, Id = file.Id.ToString(), Name = file.Name }); } return(Ok(_responseFactory.CreateSuccessfullyResponse(data.Request.SourceId, new { files = uploadFilesDto }))); }
public IActionResult RegisterUser(BaseRequest <RegisterUserRequest> data) { Guid sourceId = Guid.Parse(data.Request.SourceId); var source = _context.Sources.Find(sourceId); if (source == null || source.SecretKey != data.Request.SourceSecretKey) { ModelState.AddModelError("SecretKey", "Wrong Secret key"); return(BadRequest(_responseFactory.CreateFailureResponse(data.Request.SourceId, model: ModelState))); } var userData = data.Request.UserData; var createdUser = new User() { Email = userData.Email, Phone = userData.Phone, Surname = userData.Surname, BirthDate = userData.BirthDate, GenderId = userData.GenderId, GivenName = userData.GivenName, MiddleName = userData.MiddleName, PasswordHash = _hasher.HashPassword(userData.Password), EmailSubscribeAgree = userData.EmailSubscribeAgree, PersonalDataAgree = userData.PersonalDataAgree, Source = source }; _context.Users.Add(createdUser); _context.SaveChanges(); return(Ok(_responseFactory.CreateSuccessfullyResponse(data.Request.SourceId, new { userData = new { userId = createdUser.Id, secretKey = createdUser.SecretKey } }))); }