public async Task <OperationDetails> Create(UserDTO item) { try { if (item.Name == "" || item.Name == null || item.Email == "" || item.Email == null || item.Password == "" || item.Password == null) { return(new OperationDetails(false, "Wrong input data")); } Console.WriteLine($"{item.Email} - {item.Password}"); ApplicationUser user = database.UserStore.FindByName(item.Email); if (user != null) { return(new OperationDetails(false, "Already exists", "Email")); } var hasher = new PasswordHasher(); user = new ApplicationUser { Email = item.Email, UserName = item.Email, Id = new IdGenerator().Generate(), Role = "User", NormalizedEmail = item.Email.ToUpper(), PasswordHash = hasher.GetHash(item.Password) }; UserProfile profile = new UserProfile { Id = user.Id, Bio = item.Bio, Photo = Convert.FromBase64String(item.Photo), Name = item.Name, ApplicationUser = user }; user.UserProfile = profile; await database.UserStore.CreateAsync(user); await database.UserProfiles.CreateAsync(profile); await database.Commit(); hasher.Dispose(); ApplicationUser user2 = database.UserStore.FindByName(item.Email); if (user2 == null) { System.Console.WriteLine("Failed"); } var claims = new List <Claim> { new Claim(ClaimsIdentity.DefaultNameClaimType, user.Email), new Claim(ClaimsIdentity.DefaultRoleClaimType, user.Role), }; var token = TokenCreator.Create(claims); Console.WriteLine($"Created new user: {item.Name}"); return(new OperationDetails(true, "Successfully created", null, new { token, userId = user.Id })); } catch (Exception e) { return(new OperationDetails(false, e.Message)); } }