public async Task <IActionResult> Registration( CancellationToken cancellationToken, [FromBody] RegistrationBinding binding, [FromServices] IUserRepository userRepository, [FromServices] UserRegistrationService registrationService) { var user = await userRepository.FindByLogin(binding.Login, cancellationToken); if (user != null) { return(Conflict()); } user = await registrationService.CreateUser(binding.Email, binding.Login, binding.Password, 1, binding.NumberPhone, DateTime.Now, DateTime.Now, binding.FirstName, binding.LastName, binding.MiddleName, binding.Hobby, binding.DateOfBirth, (AuthType)binding.AuthTypeBinding, cancellationToken); try { await userRepository.Save(user); return(NoContent()); } catch (DbUpdateException exception) when(((Npgsql.PostgresException)exception.InnerException)?.SqlState == "23505") { return(Conflict()); } }
public async Task <IActionResult> Registration( CancellationToken cancellationToken, [FromForm] RegistrationBinding binding, [FromServices] IUserRepository userRepository, [FromServices] UserRegistrationService registrationService) { var user = await userRepository.FindByEmail(binding.Email, cancellationToken); if (user != null) { if (user.EmailState == EmailState.Unconfirmed) { return(NoContent()); } return(Conflict()); } user = await registrationService.CreateUser(binding.Email, binding.Password, cancellationToken); try { await userRepository.Save(user); return(NoContent()); } catch (DbUpdateException exception) when(((Npgsql.PostgresException)exception.InnerException)?.SqlState == "23505") // 23505 unique_violation { return(Conflict()); } }
public async Task <IActionResult> CreatePeople(DoctorBindingModel DoctorModel) { RegistrationBinding BindingModel = new RegistrationBinding(); BindingModel.DoctorModel = DoctorModel; Doctor doctor = new Doctor(); doctor.Email = BindingModel.DoctorModel.Email; doctor.Firstname = BindingModel.DoctorModel.Firstname; doctor.Lastname = BindingModel.DoctorModel.Lastname; doctor.Gender = BindingModel.DoctorModel.Gender; doctor.Specialty = BindingModel.DoctorModel.Specialty; doctor.Address = BindingModel.DoctorModel.Address; if (ModelState.IsValid) { IdentityUser doctorUser = new IdentityUser(); doctorUser.Email = doctor.Email; doctorUser.UserName = doctor.UserName; var Password = "******"; doctorUser.EmailConfirmed = true; doctorUser.PhoneNumberConfirmed = true; doctorUser.TwoFactorEnabled = false; doctorUser.LockoutEnabled = true; doctorUser.AccessFailedCount = 0; doctorUser.NormalizedEmail = doctor.Email.Normalize(); doctorUser.NormalizedUserName = doctor.UserName.Normalize(); doctorUser.PhoneNumber = doctor.PhoneNumber; PasswordHasher <IdentityUser> hasher = new PasswordHasher <IdentityUser>(); var PasswordHash = hasher.HashPassword(doctorUser, Password); doctorUser.PasswordHash = PasswordHash; var createDoctor = _userManager.CreateAsync(doctorUser); createDoctor.Wait(); if (createDoctor.Result.Succeeded) { var result = _userManager.AddToRoleAsync(doctorUser, "Doctor"); result.Wait(); doctor.UserId = doctorUser.Id; _context.Add(doctor); } await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View("Add", BindingModel)); }
public async Task <IActionResult> Registration( CancellationToken cancellationToken, [FromBody] RegistrationBinding binding, [FromServices] IUserRepository repository, [FromServices] UserRegistrar registrar) { try{ var user = await registrar.Registrate(binding.Login, binding.Name, binding.Password, cancellationToken); await repository.Save(user, cancellationToken); return(NoContent()); } catch (UserAlreadyExistsException) { throw new ApiException(HttpStatusCode.Conflict, ErrorCodes.UserAlreadyExists, "User already exists"); } }