private async Task <User> GetUser(LoginWebModel model)
        {
            var invalidModel = string.IsNullOrEmpty(model.UserName) || string.IsNullOrEmpty(model.Password);

            if (invalidModel)
            {
                return(null);
            }

            var user = await _userManager.FindByNameAsync(model.UserName);

            if (user == null)
            {
                return(null);
            }

            var passwordValid = await _userManager.CheckPasswordAsync(user, model.Password);

            if (!passwordValid)
            {
                return(null);
            }

            return(user);
        }
Exemple #2
0
        public async Task <IActionResult> Login(LoginWebModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            #region Лог
            _logger.LogInformation($"Вход пользователя в систему {model.UserName}");
            #endregion
            var result =
                await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe,
#if DEBUG
                                                         false
#else
                                                         true
#endif
                                                         );

            if (result.Succeeded)
            {
                return(LocalRedirect(model.ReturnUrl ?? "/"));
            }

            ModelState.AddModelError("", "Ошибка в имени пользователя, либо в пароле");
            #region Лог
            _logger.LogInformation($"Ошибка в имени пользователя, либо в пароле");
            #endregion
            return(View());
        }
Exemple #3
0
        public async Task TokenWeb([FromBody] LoginWebModel model)
        {
            var response = _authService.TokenWeb(model.email, model.password);

            Response.ContentType = "application/json";

            await Response.WriteAsync(JsonConvert.SerializeObject(response, new JsonSerializerSettings {
                Formatting = Formatting.Indented
            }));
        }
        public async Task <JwtSecurityToken> CreateToken(LoginWebModel model)
        {
            var user = await GetUser(model);

            if (user == null)
            {
                return(null);
            }

            var claims = new[]
            {
                new Claim("user_id", user.Id.ToString()),
                new Claim("some_type", "some_value")
            };

            return(_tokenFactory
                   .AddClaims(claims)
                   .Build());
        }
Exemple #5
0
        public async Task <IActionResult> Login([FromBody] LoginWebModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var token = await _authService.CreateToken(model);

            if (token == null)
            {
                ModelState.TryAddModelError("login_failure", "Invalid username or password.");
                return(new BadRequestObjectResult(JsonConvert.SerializeObject(ModelState)));
            }

            var response = new
            {
                id         = token.Claims.FirstOrDefault(x => x.Type == "user_id")?.Value,
                auth_token = new JwtSecurityTokenHandler().WriteToken(token)
            };

            return(new OkObjectResult(JsonConvert.SerializeObject(response)));
        }