public async Task <ControllerResponse> SignInUser([FromBody] UserToSignInDto userDto) { if (!AuthorisationValidator.ValidateUserToSignIn(userDto)) { return(ControllerResponse.Warning( "Введенные данные некорректны, введите все данные и повторите запрос")); } var user = userDto.IsDoctor ? _authorizationServices.SignInDoctor(userDto.Name, userDto.Login, userDto.Password.GetPasswordHash()) : _authorizationServices.SignInUser(userDto.Name, userDto.Login, userDto.Password.GetPasswordHash()); var claims = new List <Claim> { new Claim(ClaimsIdentity.DefaultNameClaimType, user.Name), new Claim(ClaimsIdentity.DefaultRoleClaimType, user.Role.ToString()), new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()) }; var id = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); var principal = new ClaimsPrincipal(id); await HttpContext.SignInAsync(principal); return(ControllerResponse.Ok()); }
/// <summary> /// Техническая валидация данных для метода SignIn /// </summary> public static bool ValidateUserToSignIn(UserToSignInDto user) { return(user.ValidationOnNull() && !string.IsNullOrWhiteSpace(user.Name) && !string.IsNullOrWhiteSpace(user.Login) && !string.IsNullOrWhiteSpace(user.Password)); }