Exemple #1
0
        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");
            }
        }