public async Task <IActionResult> DeleteFolder(string id) { try { Guid.TryParse(User.FindFirst(ClaimTypes.NameIdentifier).Value, out Guid userId); Guid folderForRepoId = new Guid(id); Folder folder = await _repo.GetFolder(folderForRepoId); if (userId != folder.UserId) { return(Unauthorized()); } _repo.Delete(folder); string folderName = "App_Data/" + userId.ToString() + "/" + id; string webRootPath = _hostingEnv.WebRootPath; string newPath = Path.Combine(webRootPath, folderName); Directory.Delete(newPath, true); if (await _repo.SaveAll()) { return(Ok()); } return(BadRequest("Failed to delete the folder")); } catch (Exception ex) { return(StatusCode(400, ex.Message)); } }
public async Task <IActionResult> Login(UserForLoginDto userForLoginDto) { var userFromRepo = await _authRepo.Login(userForLoginDto.Email, userForLoginDto.Password); if (userFromRepo == null) { return(Unauthorized()); } var claims = new[] { new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()), new Claim(ClaimTypes.Name, userFromRepo.Email) }; var key = new SymmetricSecurityKey(Encoding.UTF8 .GetBytes(_config.GetSection("AppSettings:Token").Value)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(1), SigningCredentials = creds }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); try { string folderName = "App_Data/" + userFromRepo.Id.ToString(); string webRootPath = _hostingEnv.WebRootPath; string newPath = Path.Combine(webRootPath, folderName); if (!Directory.Exists(newPath)) { Folder folder = new Folder { Id = Guid.NewGuid(), UserId = userFromRepo.Id, FolderName = userFromRepo.Id.ToString(), FolderDescription = "User Root" }; userFromRepo.Folders.Add(folder); if (await _fileRepo.SaveAll()) { Directory.CreateDirectory(newPath); } } } catch (Exception ex) { return(StatusCode(400, ex.Message)); } return(Ok(new { token = tokenHandler.WriteToken(token) })); }