Beispiel #1
0
        public async Task <ResultDTO> Register([FromBody] UserRegisterDTO model)
        {
            if (!ModelState.IsValid)
            {
                return(new ErrorResultDTO
                {
                    StatusCode = 401,
                    Message = "Error",
                    Errors = CustomValidator.GetErrorByModel(ModelState)
                });
            }
            var user = new User
            {
                UserName    = model.Email,
                Email       = model.Email,
                PhoneNumber = model.Phone
            };

            var userInfo = new UserInfo
            {
                Address  = model.Address,
                FullName = model.FullName,
                Id       = user.Id
            };

            var identityResult = _userManager.CreateAsync(user, model.Password).Result;

            if (!identityResult.Succeeded)
            {
                return new ErrorResultDTO
                       {
                           StatusCode = 500,
                           Message    = "Registration Error",
                           Errors     = CustomValidator.GetErrorByModel(ModelState)
                       }
            }
            ;
            var result = await _userManager.AddToRoleAsync(user, "User");

            _context.UserInfos.Add(userInfo);
            await _context.SaveChangesAsync();

            return(new ResultDTO
            {
                StatusCode = 200,
                Message = "OK"
            });
        }
Beispiel #2
0
        public async Task <ResultDTO> Login([FromBody] UserLoginDTO model)
        {
            if (!ModelState.IsValid)
            {
                return(new ErrorResultDTO
                {
                    StatusCode = 401,
                    Message = "Login Error",
                    Errors = CustomValidator.GetErrorByModel(ModelState)
                });
            }

            // Перевірка на успіх логіну та паролю
            var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, false);

            if (!result.Succeeded)
            {
                return(new ErrorResultDTO {
                    StatusCode = 402,
                    Message = "Login failed",
                    Errors = new System.Collections.Generic.List <string>
                    {
                        "Login or password error"
                    }
                });
            }
            else
            {
                var user = await _userManager.FindByEmailAsync(model.Email);

                // вхід
                await _signInManager.SignInAsync(user, false);

                return(new SuccessResultDTO
                {
                    StatusCode = 200,
                    Message = "Ok",
                    Token = _jwtTokenService.CreateToken(user)
                });
            }
        }