Exemplo n.º 1
0
        public async Task <LoginResponse <AuthenticatedUserDTO> > LoginUser(PostUserDTO UserCredentials)
        {
            var user = await _userRepository.FindByEmail(UserCredentials.Email);

            if (user == null)
            {
                var errorMessage = $"Password or login is incorrect";
                Log.Error(errorMessage);
                return(new LoginResponse <AuthenticatedUserDTO> {
                    Message = errorMessage, Success = false
                });
            }

            if (!UserCredentials.Password.Equals(user.Password))
            {
                var errorMessage = $"Password or login is incorrect";
                Log.Error(errorMessage);
                return(new LoginResponse <AuthenticatedUserDTO> {
                    Message = errorMessage, Success = false
                });
            }

            var token = GenerateJwtToken(user);
            var authenticatedUserDTO = new AuthenticatedUserDTO()
            {
                Email = user.Email,
                Token = token
            };

            return(new LoginResponse <AuthenticatedUserDTO> {
                Data = authenticatedUserDTO
            });
        }
Exemplo n.º 2
0
        public AuthenticatedUserDTO ExchangeKeyForToken(string exchangeKey, string username)
        {
            AuthenticatedUserDTO returnUser   = new AuthenticatedUserDTO();
            UserProfileDTO       searchResult = _securityService.GetUserProfile(username);

            if (searchResult != null)
            {
                if (_securityService.VerifyAccessKey(exchangeKey))
                {
                    var claims = _securityService.GetUserClaims(username);
                    if (claims != null)
                    {
                        string userJWTToken = BuildUserJwtToken(username, claims);
                        if (!string.IsNullOrEmpty(userJWTToken))
                        {
                            returnUser = new AuthenticatedUserDTO();
                            returnUser.RefreshToken    = BuildRefreshToken(username);
                            returnUser.BearerToken     = userJWTToken;
                            returnUser.IsAuthenticated = true;
                            returnUser.Username        = username;

                            foreach (var claim in claims)
                            {
                                returnUser.UserClaims.Add(claim);
                            }
                        }
                    }
                }
            }
            return(returnUser);
        }
Exemplo n.º 3
0
        public async Task <AuthenticatedUserDTO> Authenticate(string login, string password)
        {
            var user = await _usersRepository.FindUserForAuthentication(login, password);

            // return null if user not found
            if (user == null)
            {
                return(null);
            }

            // authentication successful so generate jwt token
            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(_appSettings.Secret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Name, user.Id.ToString()),
                    new Claim(ClaimTypes.Role, user.Role.ToString()) //dzięki temu, że dałam tutaj tą role możemy autoryzować po tym kto strzela(w sensie czy admin czy laborant czy..)
                }),
                Expires            = DateTime.UtcNow.AddHours(5),    //data wygaśnięcia tokenu, ustawiłam na 5h
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token       = tokenHandler.CreateToken(tokenDescriptor);
            var tokenString = tokenHandler.WriteToken(token);

            var authenticatedUser = new AuthenticatedUserDTO(user.Id, user.Name, user.Surname, user.Login, user.Role, tokenString);

            return(authenticatedUser);
        }
Exemplo n.º 4
0
 public User CreateUserAuthenticateEntity(AuthenticatedUserDTO userDTO)
 {
     return(new User()
     {
         Id = userDTO.Id,
         //AuthToken = user.AuthToken
     });
 }
Exemplo n.º 5
0
        public void Admin_login_fail()
        {
            var adminStubRepository       = CreateAdminStubRepository();
            AuthenticationService service = new AuthenticationService(adminStubRepository);

            AuthenticatedUserDTO user = service.Authenticate("pera", "pera1978");

            user.ShouldBeNull();
        }
Exemplo n.º 6
0
        public void Admin_login_success()
        {
            var adminStubRepository       = CreateAdminStubRepository();
            AuthenticationService service = new AuthenticationService(adminStubRepository);

            AuthenticatedUserDTO user = service.Authenticate("markic", "marko1978");

            user.ShouldNotBeNull();
        }
Exemplo n.º 7
0
        public void Patient_login_fail()
        {
            var patientStubRepository     = CreatePatientStubRepository();
            AuthenticationService service = new AuthenticationService(patientStubRepository);

            AuthenticatedUserDTO user = service.Authenticate("markic", "marko1978");

            user.ShouldBeNull();
        }
Exemplo n.º 8
0
        public void Patient_login_success()
        {
            var patientStubRepository     = CreatePatientStubRepository();
            AuthenticationService service = new AuthenticationService(patientStubRepository);

            AuthenticatedUserDTO user = service.Authenticate("pera", "pera1978");

            user.ShouldNotBeNull();
        }
        public IActionResult Authenticate(AuthenticationDTO authenticationDTO)
        {
            AuthenticatedUserDTO auteAuthenticatedUserDto = _authenticationService.Authenticate(authenticationDTO.Username, authenticationDTO.Password);

            if (auteAuthenticatedUserDto == null)
            {
                return(BadRequest("Username or password is incorrect"));
            }



            return(Ok(auteAuthenticatedUserDto));
        }
Exemplo n.º 10
0
        public ActionResult <AuthenticatedUserDTO> TokenRefresh([FromBody] AuthenticatedUserDTO currentUser)
        {
            var returnUser = _securityManager.RefreshToken(currentUser);

            if (returnUser != null)
            {
                return(returnUser);
            }
            else
            {
                return(BadRequest());
            }
        }
Exemplo n.º 11
0
        public string Login(string username, string password)
        {
            string            token = null;
            AuthenticationDTO dto   = new AuthenticationDTO(username, password);

            using HttpClient client = _factoryUsers.CreateClient();
            AuthenticatedUserDTO auteAuthenticatedUserDto = null;
            StringContent        content = new StringContent(JsonConvert.SerializeObject(dto), System.Text.Encoding.UTF8, "application/json");
            var task = client.PostAsync(GetUsersDomain() + "/api/authentication/authenticate", content)
                       .ContinueWith((taskWithResponse) =>
            {
                var message = taskWithResponse.Result;
                var json    = message.Content.ReadAsStringAsync();
                json.Wait();
                auteAuthenticatedUserDto = JsonConvert.DeserializeObject <AuthenticatedUserDTO>(json.Result);
                token = auteAuthenticatedUserDto.Token;
            });

            task.Wait();

            return(token);
        }
Exemplo n.º 12
0
        public async Task <ActionResult <AuthenticatedUserDTO> > LoginAsync([FromBody] LoginDTO dto)
        {
            var user = await _appUsers.LoginAsync(dto.UserName, dto.Password);

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

            var loggedInUserDTO = new AuthenticatedUserDTO();

            loggedInUserDTO.User = Mappers.GetAppUserDTO(user);

            var claims = new List <Claim>
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                new Claim(ClaimTypes.Name, user.UserName),
                new Claim(ClaimTypes.Email, user.Email)
            };

            foreach (var role in user.GetRoles())
            {
                claims.Add(new Claim(ClaimTypes.Role, role));
            }

            if (!string.IsNullOrEmpty(user.FirstName))
            {
                claims.Add(new Claim(ClaimTypes.GivenName, user.FirstName));
            }

            if (!string.IsNullOrEmpty(user.LastName))
            {
                claims.Add(new Claim(ClaimTypes.Surname, user.LastName));
            }

            loggedInUserDTO.Token = BuildToken(claims);

            return(Ok(loggedInUserDTO));
        }
Exemplo n.º 13
0
        public AuthenticatedUserDTO RefreshToken(AuthenticatedUserDTO currentUser)
        {
            AuthenticatedUserDTO returnUser          = null;
            JwtSecurityToken     currentRefreshToken = new JwtSecurityToken(currentUser.RefreshToken);
            var claims = _securityService.GetUserClaims(currentUser.Username);

            if (claims != null)
            {
                string newUserToken = BuildUserJwtToken(currentUser.Username, claims);
                returnUser                 = new AuthenticatedUserDTO();
                returnUser.BearerToken     = newUserToken;
                returnUser.IsAuthenticated = true;
                returnUser.RefreshToken    = currentUser.RefreshToken;
                returnUser.Username        = currentUser.Username;

                foreach (var claim in claims)
                {
                    returnUser.UserClaims.Add(claim);
                }
            }
            return(returnUser);
        }