예제 #1
0
        public async Task <ResponseDTO> Registration(RegistartionUserDTO registartionDTO)
        {
            var existingCode = await context.Codes.FirstOrDefaultAsync(code => code.PhoneNumber == registartionDTO.Phone && code.Code == registartionDTO.VerificationCode);

            if (existingCode == null)
            {
                return(new ResponseDTO()
                {
                    Message = "Данный верификационный код не найден либо не верен", Status = false
                });
            }
            else
            {
                context.Codes.Remove(existingCode);
                await context.SaveChangesAsync();
            }
            string password = BCrypt.Net.BCrypt.HashPassword(registartionDTO.Password);
            User   user     = new User()
            {
                Phone = registartionDTO.Phone, Password = password, Role = Role.User
            };

            context.Users.Add(user);
            await context.SaveChangesAsync();

            return(new ResponseDTO()
            {
                Message = "Вы успешно зарегистрировались", Status = true
            });
        }
예제 #2
0
        public async Task <IActionResult> Registration([FromBody] RegistartionUserDTO registartionDTO)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest());
                }


                ResponseDTO answer = await userAuthService.Registration(registartionDTO);

                if (answer.Status == false)
                {
                    return(StatusCode(400, answer));
                }

                AuthUserDTO authDTO = new AuthUserDTO()
                {
                    Phone = registartionDTO.Phone, Password = registartionDTO.Password
                };

                User user = await userAuthService.Authenticate(authDTO);

                if (string.IsNullOrEmpty(user.Token))
                {
                    return(Unauthorized(new { status = false }));
                }

                return(Ok(new { user, answer }));
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message);
                return(StatusCode(500, new ResponseDTO()
                {
                    Message = "На данный момент на стороне сервера ошибка, пожалуйста повторите попытку позже",
                    Status = false
                }));
            }
        }
예제 #3
0
        public async Task <ResponseDTO> PasswordChange(RegistartionUserDTO registartionDTO)
        {
            var existingCode = await context.Codes.FirstOrDefaultAsync(code => code.PhoneNumber == registartionDTO.Phone && code.Code == registartionDTO.VerificationCode);

            if (existingCode == null)
            {
                return(new ResponseDTO()
                {
                    Message = "Данный верификационный код не найден либо не верен", Status = false
                });
            }
            else
            {
                context.Codes.Remove(existingCode);
                await context.SaveChangesAsync();
            }
            User foundedUser = await context.Users.FirstOrDefaultAsync(user => user.Phone == registartionDTO.Phone);

            if (foundedUser == null)
            {
                return(new ResponseDTO()
                {
                    Message = "Данный пользователь не найден", Status = false
                });
            }
            User newPasswordUser = foundedUser;

            newPasswordUser.Password = registartionDTO.Password;
            context.Entry(foundedUser).CurrentValues.SetValues(newPasswordUser);
            await context.SaveChangesAsync();

            return(new ResponseDTO()
            {
                Message = "Пароль успешно изменён", Status = true
            });
        }