Example #1
0
        public async Task <IActionResult> Login(UserToLogin userToLogin)
        {
            var user = await _repo.Login(userToLogin.UserName, userToLogin.Password);

            if (user == null)
            {
                return(Unauthorized());
            }
            var claims = new []
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                new Claim(ClaimTypes.Name, user.UserName),
            };
            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_Config.GetSection("AppSetting:Token").Value));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

            var tokendescriper = new SecurityTokenDescriptor {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddSeconds(2 * 60),
                SigningCredentials = creds
            };

            var TokenHandler = new JwtSecurityTokenHandler();
            var token        = TokenHandler.CreateToken(tokendescriper);


            return(Ok(new { token = TokenHandler.WriteToken(token) }));
        }
        public async Task <Json> Delete(long id, [FromBody] UserToLogin user)
        {
            if (id <= 0 ||
                user == null)
            {
                return(Json.BadRequest("Este usuáro não é válido!", user));
            }

            var repository = UserRepository.GetInstance(_context);

            var userToDelete = repository.GetById(id);


            if (!repository.EmailValidation(user.Email) ||
                userToDelete == null)
            {
                return(Json.NotFound("Este usuáro não é válido!", user));
            }

            var result = await repository.Delete(user.Email, user.Password);

            if (result.Erro)
            {
                return(Json.BadRequest("Falha ao deletar usuário!", result.Description));
            }

            userToDelete = repository.GetById(id);

            if (userToDelete.Result.Active)
            {
                return(Json.BadRequest("Falha ao deletar usuário!", userToDelete));
            }

            return(Json.Ok("Usuário Apagado com sucesso!", null));
        }
Example #3
0
        public UserToLoginResponse loginUser(UserToLogin userToLogin)
        {
            var usrFromDb = _datingAppContext.Usuarios.FirstOrDefault(x => x.Username == userToLogin.Username);

            if (usrFromDb == null)
            {
                return(null);
            }
            if (!comparePasswords(userToLogin.Password, usrFromDb.PassHash, usrFromDb.PassSalt))
            {
                return(null);
            }
            var claims = new[] {
                new Claim(ClaimTypes.NameIdentifier, usrFromDb.Cedula),
                new Claim(ClaimTypes.Name, usrFromDb.Username)
            };
            var key             = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetSection("AddSection:myKey").Value));
            var creds           = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);
            var tokenDescriptor = new SecurityTokenDescriptor()
            {
                Subject            = new ClaimsIdentity(claims),
                SigningCredentials = creds,
                Expires            = DateTime.Now.AddDays(1)
            };
            var tokenHandler = new JwtSecurityTokenHandler();
            var token        = tokenHandler.CreateToken(tokenDescriptor);
            var myToken      = tokenHandler.WriteToken(token);
            UserToLoginResponse userToLoginResponse = new UserToLoginResponse()
            {
                Token = myToken
            };

            return(userToLoginResponse);
        }
        private async Task <LoginToResponse> Login(UserToLogin userLogin, SigningConfigurations signingConfigurations, TokenConfiguration tokenConfigurations)
        {
            if (userLogin.Email.IsEmail() && !string.IsNullOrEmpty(userLogin.Password))
            {
                var repository = UserRepository.GetInstance(_context);

                var user = await repository.GetUserLogin(userLogin.Email, userLogin.Password);

                if (user != null)
                {
                    var token = GenerateToken.TokenGenerate(user.Email, signingConfigurations, tokenConfigurations);

                    var userDisplay = user.ToDisplay();

                    if (user.Admin)
                    {
                        var repositoryBusiness = EstablishmmentRepository.GetInstance(_context);

                        userDisplay.Establishmments = repositoryBusiness.GetByAdmin(user.Id).ToDisplay();
                    }

                    return(LoginToResponse.Create(userDisplay, token));
                }
            }
            return(null);
        }
Example #5
0
        public IActionResult Authenticate([FromBody] UserToLogin userToLogin)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = _repository.Authenticate(userToLogin);

            if (user == null)
            {
                return(BadRequest("Incorrect combination of email and/or password"));
            }

            var tokenString   = _repository.CreateToken(user);
            var userWithToken = new UserWithToken {
                Id    = user.Id,
                Name  = user.Name,
                Email = user.Email,
                Token = tokenString,
                Role  = user.Role.ToString()
            };

            return(Ok(userWithToken));
        }
Example #6
0
        public LoginResult Login(UserToLogin user)
        {
            _logger.Info($"Attempt to login for '{user.Email}'");
            AdditionalLoginInfo additionalInfo = _securityRepository.GetAdditionalLoginInfo(user.Email);

            if (additionalInfo == null)
            {
                _logger.Info($"User was not found: '{user.Email}'");
                return(new LoginResult(ErrorCodeType.MemberNotFound));
            }

            if (!_membership.ValidateUser(additionalInfo.Username, user.Password))
            {
                _logger.Info($"User was not approved or password is not correct: '{user.Email}'");
                return(new LoginResult(ErrorCodeType.MemberIsNotApprovedOrInvalidCredentials));
            }

            if (!_securityRepository.IsEmailConfirmed(user.Email))
            {
                _logger.Info($"User has not confirmed an email: '{user.Email}'");
                return(new LoginResult(ErrorCodeType.MemberHasNotConfirmedEmail));
            }

            var type = (LoginType)additionalInfo.LoginType;

            if (type == LoginType.TwoFactorViaEmail)
            {
                var provider = _serviceContainer.GetInstance <ITwoFactorLoginProvider>(new ConstructorParameter("userEmail", user.Email));
                provider.Process(additionalInfo.UserId);
            }

            return(new LoginResult(additionalInfo.Username, type));
        }
        public async Task <ActionResult <UsertoDisplay> > Login(UserToLogin loginDto)
        {
            var user = await _userManager.Users
                       .SingleOrDefaultAsync(x => x.Email == loginDto.Email.ToLower());

            if (user == null)
            {
                return(Unauthorized("Pogrešan email"));
            }

            var result = await _signInManager
                         .CheckPasswordSignInAsync(user, loginDto.Password, false);

            if (!result.Succeeded)
            {
                return(Unauthorized());
            }

            return(new UsertoDisplay
            {
                Id = user.Id,
                Username = user.Ime + " " + user.Prezime,
                Role = (await _userManager.GetRolesAsync(user)).FirstOrDefault(),
                Token = await GenerateJwtToken(user),
            });
        }
Example #8
0
        public async Task <TokenToReturn> LoginAsync(UserToLogin userToLogin)
        {
            userToLogin.UserName = userToLogin.UserName.ToLower();

            var userFromRepo = await _userRepo.GetSingleAsync(userToLogin.UserName);

            if (userFromRepo == null)
            {
                throw new Exception("Wrong credentials.");
            }

            var result = await _signInManager
                         .CheckPasswordSignInAsync(userFromRepo, userToLogin.Password, false);

            if (!result.Succeeded)
            {
                throw new Exception("Error occurred");
            }

            var userToReturn = _mapper.Map <UserDetail>(userFromRepo);

            var tokenToReturn = new TokenToReturn
            {
                Token = await _tokenService.CreateTokenAsync(userFromRepo),
                User  = userToReturn
            };

            return(tokenToReturn);
        }
Example #9
0
        public async Task <IActionResult> Login([FromBody] UserToLogin userToLogin)
        {
            var userFromRepo = await _repo.Login(userToLogin.Username.ToLower(), userToLogin.Password);

            if (userFromRepo == null)
            {
                return(Unauthorized());
            }
            //generate token
            var tokenHandler = new JwtSecurityTokenHandler();
            //var key = Encoding.ASCII.GetBytes(_config.GetSection("AppSettings:Token").Value);
            var key = Encoding.ASCII.GetBytes("super secret key"); //zmiana bo testowy hostserver nie radzi sobie z czytaniem appsettings

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()),
                    new Claim(ClaimTypes.Name, userFromRepo.Username)
                }),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha512Signature)
            };
            var token       = tokenHandler.CreateToken(tokenDescriptor);
            var tokenString = tokenHandler.WriteToken(token);
            var toReturn    = new
            {
                TokenString = tokenString,
                User        = userFromRepo
            };


            return(Ok(toReturn));
        }
        public async Task <IActionResult> Login(UserToLogin userToLogin)
        {
            var user = await repository.Login(userToLogin.Username.ToLower(), userToLogin.Password);

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

            var claims = new [] {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                new Claim(ClaimTypes.Name, user.Username),
                new Claim(ClaimTypes.Email, user.EmailAddress),
                new Claim(ClaimTypes.GivenName, string.Format("{0} {1}", user.Firstname, user.Lastname))
            };

            var key             = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(config.GetSection("AppSettings:Token").Value));
            var credentials     = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);
            var tokenDescriptor = new SecurityTokenDescriptor {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = credentials
            };

            var tokenHandler = new JwtSecurityTokenHandler();
            var token        = tokenHandler.CreateToken(tokenDescriptor);

            return(Ok(new { token = tokenHandler.WriteToken(token) }));
        }
        public async Task <IActionResult> SignIn([FromBody] UserToLogin aUser)
        {
            if (ModelState.IsValid)
            {
                return(Ok(await _loginServices.SignIn(aUser)));
            }

            return(NotFound());
        }
        public IActionResult Login(UserToLogin userToLogin)
        {
            userToLogin.Username = userToLogin.Username.ToLower();
            var userLogged = _authRepository.loginUser(userToLogin);

            if (userLogged == null)
            {
                return(Unauthorized());
            }
            return(Ok(userLogged)); /* Returns Token */
        }
Example #13
0
 public async Task <IActionResult> LoginAsync(UserToLogin userToLogin)
 {
     try
     {
         return(Ok(await _service.LoginAsync(userToLogin)));
     }
     catch (Exception e)
     {
         return(Unauthorized(e.Message));
     }
 }
Example #14
0
        public async Task <IActionResult> LoginUser([FromBody] UserToLogin userToLogin)
        {
            var result = await _authService.LoginUser(userToLogin.Email, userToLogin.Password);

            if (!result.Success)
            {
                return(Unauthorized("User not found or password is invalid"));
            }

            return(Ok(result));
        }
Example #15
0
        public void AuthService_Login_UserDoesNotExist_Failure()
        {
            // Arrange
            ErrorCodeType expectedErrorCode = ErrorCodeType.MemberNotFound;
            UserToLogin   user = GetUserToLogin();

            // Act
            LoginResult loginResult = _authService.Login(user);

            // Assert
            AssertExpectedFailureResultForLogin(loginResult, expectedErrorCode);
        }
        public async Task <LoggedInUser> SignIn(UserToLogin aUser)
        {
            var result = await _userManager.FindByEmailAsync(aUser.Email);

            if (result != null)
            {
                var confirmed = await _userManager.CheckPasswordAsync(result, aUser.Password);

                if (!confirmed)
                {
                    throw new NullReferenceException("Wrong Password");
                }

                await _signInManager.PasswordSignInAsync(result, aUser.Password, true, true);

                var claims = new[]
                {
                    new Claim(ClaimTypes.NameIdentifier, result.Id),
                    new Claim(ClaimTypes.Name, result.LastName)
                };

                var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetSection("AppSettings:Token").Value));

                var credential = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

                var securityTokenDescriptor = new SecurityTokenDescriptor()
                {
                    Subject            = new ClaimsIdentity(claims),
                    Expires            = DateTime.Now.AddDays(1),
                    SigningCredentials = credential
                };

                var tokenHandler = new JwtSecurityTokenHandler();

                var token = tokenHandler.CreateToken(securityTokenDescriptor);

                var myToken = tokenHandler.WriteToken(token);

                var user = new LoggedInUser
                {
                    LastName   = result.LastName,
                    FirstName  = result.FirstName,
                    Email      = result.Email,
                    Photo      = result.Photo,
                    Token      = myToken,
                    ExpiryDate = securityTokenDescriptor.Expires
                };

                return(user);
            }
            throw new NullReferenceException("User not found");
        }
Example #17
0
        public object LoginUser(UserToLogin userToLogin)
        {
            var user = new
            {
                Id        = 1,
                UserName  = "******",
                FirstName = "Jason",
                LastName  = "John",
                Email     = "*****@*****.**"
            };

            return(user);
        }
        public async Task <IActionResult> Login([FromBody] UserToLogin userLoginDto)
        {
            var userFromRepo = await _repo.Login(userLoginDto.Email, userLoginDto.Password);

            if (userFromRepo.Status != "Approve")
            {
                return(Unauthorized("In Review"));
            }

            if (userFromRepo == null)
            {
                return(Unauthorized("No Record Found!"));
            }



            else
            {
                var claim = new[]
                {
                    new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()),
                    new Claim(ClaimTypes.Name, userFromRepo.Name),
                    new Claim(ClaimTypes.Email, userFromRepo.Email),
                    new Claim(ClaimTypes.Role, userFromRepo.Level),
                    new Claim(ClaimTypes.Authentication, userFromRepo.Status)
                };

                //Create Token
                var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSetting:Token").Value));
                var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject            = new ClaimsIdentity(claim),
                    Expires            = DateTime.Now.AddDays(60),
                    SigningCredentials = creds
                };


                var tokenHandler = new JwtSecurityTokenHandler();

                var token = tokenHandler.CreateToken(tokenDescriptor);


                return(Ok(new
                {
                    token = tokenHandler.WriteToken(token)
                }));
            }
        }
        public async Task <IActionResult> Login(UserToLogin user)
        {
            var userFromRepo = await _repo.Login(user.Name.ToLower(), user.Password);

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

            var secret = _config.GetSection("My_Custom_Settings:Token").Value;

            var token = new JWTToken(userFromRepo, secret);

            return(Ok(new { token = token.Build() }));
        }
Example #20
0
        public void AuthService_Login_ExistingUser_InvalidCredentialsOrUserIsNotApproved_Failure()
        {
            // Arrange
            ErrorCodeType expectedErrorCode = ErrorCodeType.MemberIsNotApprovedOrInvalidCredentials;
            UserToLogin   user = GetUserToLogin();

            ReturnExistingAdditionalInfo(user.Email);
            ReturnInvalidUserValue(Username, user.Password);

            // Act
            LoginResult loginResult = _authService.Login(user);

            // Assert
            AssertExpectedFailureResultForLogin(loginResult, expectedErrorCode);
        }
        public async Task <IActionResult> Login(UserToLogin user)
        {
            //throw new Exception("... Exception from 'controller/login' ...");

            var userFromRepo = await _repo.Login(user.Name.ToLower(), user.Password);

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

            var secret = _config.GetSection("Cembo_Settings:Token").Value;

            var token = new JWTToken(userFromRepo, secret);

            return(Ok(new { token = token.Build() }));
        }
Example #22
0
        public User Authenticate(UserToLogin userToLogin)
        {
            if (string.IsNullOrEmpty(userToLogin.Email) || string.IsNullOrEmpty(userToLogin.Password))
            {
                return(null);
            }
            var user = _context.Users.SingleOrDefault(u => u.Email == userToLogin.Email);

            if (user == null)
            {
                return(null);
            }
            if (!VerifyPasswordHash(userToLogin.Password, user.PasswordHash, user.PasswordSalt))
            {
                return(null);
            }
            return(user);
        }
Example #23
0
        private void AuthService_Login_ValidLoginProcess(LoginType type)
        {
            // Arrange
            LoginType   expectedLoginType = type;
            UserToLogin user = GetUserToLogin();

            ReturnExistingAdditionalInfo(user.Email, type);
            ReturnValidUserValue(Username, user.Password);
            ReturnConfirmedEmailValue(user.Email);

            // Act
            LoginResult loginResult = _authService.Login(user);

            // Assert
            Assert.IsNotNull(loginResult, Common.ShowResponseTypeMismatchMessage(typeof(LoginResult)));
            Assert.IsTrue(loginResult.IsSuccess, Common.ShowNotSatisfiedExpectationMessage(true, "loginResult.IsSuccess"));
            Assert.AreEqual(expectedLoginType, loginResult.Type, Common.ShowNotSatisfiedExpectationMessage(expectedLoginType, loginResult.Type));
            Assert.AreEqual(Username, loginResult.Username, Common.ShowNotSatisfiedExpectationMessage(Username, loginResult.Username));
        }
        public async Task <Json> PostLogin([FromBody] UserToLogin userLogin, [FromServices] SigningConfigurations signingConfigurations, [FromServices] TokenConfiguration tokenConfigurations)
        {
            var user = await Login(userLogin, signingConfigurations, tokenConfigurations);

            if (user != null)
            {
                var userResponse = LoginToResponse.Create(user.User, user.Token);

                return(Json.Ok("Usuário Validado e autenticado!.", userResponse));
            }
            else
            {
                if (Get(userLogin.Email).StatusCode.Value.Equals(200))
                {
                    return(Json.NotFound("Senha inválida", false));
                }

                return(Json.NotFound("Usuário não cadastrado!", false));
            }
        }
Example #25
0
        public async Task <IActionResult> Login(UserToLogin userToLogin)
        {
            if (userToLogin != null && !string.IsNullOrEmpty(userToLogin.Username))
            {
                var userFromRepo = await _repo.Login(userToLogin.Username.ToLower(), userToLogin.Password);

                if (userFromRepo == null)
                {
                    return(Unauthorized());
                }
                var claims = new[] {
                    new Claim(ClaimTypes.NameIdentifier, userFromRepo.id.ToString()),
                    new Claim(ClaimTypes.Name, userFromRepo.Username)
                };

                var key  = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSettings:Token").Value));
                var cred = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject            = new ClaimsIdentity(claims),
                    Expires            = DateTime.UtcNow.AddHours(1),
                    SigningCredentials = cred
                };

                var tokenHandler = new JwtSecurityTokenHandler();
                var token        = tokenHandler.CreateToken(tokenDescriptor);

                var currentUser = _mapper.Map <UserForListDto>(userFromRepo);

                return(Ok(new
                {
                    token = tokenHandler.WriteToken(token),
                    currentUser
                }));
            }
            else
            {
                return(Unauthorized());
            }
        }
Example #26
0
        public async Task <IActionResult> Login(UserToLogin userToLogin)
        {
            var user = await _userManager.FindByNameAsync(userToLogin.Username);

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

            var result = await _signInManager.CheckPasswordSignInAsync(user, userToLogin.Password, false);

            if (result.Succeeded)
            {
                return(Ok(
                           new {
                    token = GenerateJwtToken(user),
                    user = user
                }
                           ));
            }

            return(Unauthorized());
        }
Example #27
0
        public IActionResult Authenticate([FromBody] UserToLogin userToLogin)
        {
            var user = _repository.Authenticate(userToLogin);

            if (user != null)
            {
                if (userToLogin.IsAdmin)
                {
                    if (user.Role != Role.Admin)
                    {
                        return(BadRequest("User not allowed, Please login as a normal user"));
                    }
                }
                else
                {
                    if (user.Role != Role.User)
                    {
                        return(BadRequest("Please login as admin to get access"));
                    }
                }
            }

            if (user == null)
            {
                return(BadRequest("Incorrect combination of email and/or password"));
            }
            var tokenString   = _repository.CreateToken(user);
            var userWithToken = new UserWithToken {
                Id    = user.Id,
                Name  = user.Name,
                Email = user.Email,
                Token = tokenString,
                Role  = user.Role.ToString()
            };

            return(Ok(userWithToken));
        }
        public async Task <Json> PostCreate([FromBody] UserToCreate userSend, [FromServices] SigningConfigurations signingConfigurations, [FromServices] TokenConfiguration tokenConfigurations)
        {
            var repositoy = UserRepository.GetInstance(_context);

            if (repositoy.EmailValidation(userSend.Email))
            {
                return(Json.Conflit("Este email está sendo utilizado por outro usuário", userSend));
            }

            var userValidate = userSend.ToValidate();

            if (userValidate.Erro)
            {
                return(Json.Conflit("Erro ao validar usuário, verifique os erros", userValidate.Erros));
            }

            var userCreate = await repositoy.Create(userSend.ToUserData());

            if (userCreate.Erro)
            {
                return(Json.Conflit("Falha ao criar usuário!", userCreate.Description));
            }

            var userLogin = UserToLogin.Create(userSend.Email, userSend.Password);

            var login = await Login(userLogin, signingConfigurations, tokenConfigurations);

            if (login == null)
            {
                return(Json.BadRequest("Falha ao criar usuário", userSend));
            }

            var userResponse = LoginToResponse.Create(login.User, login.Token);

            return(Json.Ok("Ususário criado com sucesso!", userResponse));
        }
        public async Task <IActionResult> Login(UserToLogin userToLogin)
        {
            //throw new Exception("This is not Handled Exception");
            var loggedInUser = await _authRepository.Login(userToLogin.UserName.ToLower(), userToLogin.Password);

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

            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, loggedInUser.Id.ToString()),
                new Claim(ClaimTypes.Name, loggedInUser.UserName)
            };

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetSection("Authorization:Token").Value));

            var cred = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

            var tokenDesciptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = cred
            };

            var tokenHandler = new JwtSecurityTokenHandler();

            var token = tokenHandler.CreateToken(tokenDesciptor);

            return(Ok(new {
                token = tokenHandler.WriteToken(token),
                message = "Logged In Successull"
            }));
        }